{"version":3,"file":"vendor.91c48ccd6d5fcdef.js","mappings":"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AU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,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,SA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O,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,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,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,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEj2K,UAAW,OAAQjrC,SAAU,yBAC/B,CAAEirC,UAAW,OAAQjrC,SAAU,WAC/B,CAAEirC,UAAW,aAAcjrC,SAAU,+BACrC,CAAEirC,UAAW,QAASjrC,SAAU,0BAChC,CAAEirC,UAAW,QAASjrC,SAAU,0BAChC,CAAEirC,UAAW,OAAQjrC,SAAU,qCAE/BmhN,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBAEAC,GAA8C,WAC9C,cAA8B,CAE9BA,UAAmBC,eAAiB,WAChC,MAAO,CACHtmM,UAAW,CACPumM,KAAML,GACN9/I,WAAY+/I,MAIxBE,GAAmBtwK,SAAW,SAAU1jD,IACpC,GAAIw4K,GAAkBx4K,IAClB,OAAOA,GAEX,IAAIod,GAAO1hB,KAAKu4N,iBAEhB,OADav4N,KAAKy4N,eAAe/2M,GAAMpd,GAChCuvC,EAEXykL,GAAmBG,eAAiB,SAAU/2M,GAAMpd,IAChDtE,KAAKo4N,YAAc12M,GAAKuQ,UAAUomD,WAClCr4E,KAAKm4N,WAAaz2M,GAAKuQ,UAAUumM,KACjCx4N,KAAK04N,YAAc/uN,SAAS1C,cAAc,OAC1CjH,KAAK04N,YAAYngJ,UAAYj0E,GAC7BtE,KAAK24N,gBACL34N,KAAK44N,iBACL54N,KAAK64N,iBACL,IAAIC,GAAe94N,KAAK04N,YAAYngJ,UACpC,YAAKq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,2BAEJD,EAAWE,kBAAoB,CAC3B,uBACA,gCACA,6BACA,YACA,eACA,qBACA,wBACA,aACA,sBACA,mBACA,iCACA,8BACA,kBACA,eACA,mBACA,kBACA,2BACA,wBACA,0BACA,gCACA,mCACA,mBACA,yBACA,4BACA,UACA,qBAEJF,EAAWG,iBAAmB,CAC1B,WACA,eACA,kBACA,WACA,sBACA,iBACA,SAEJH,EAAWI,kBAAoB,CAC3B,WACA,YACA,mBACA,OACA,cACA,QACA,eACA,WACA,WACA,gBACA,uBACA,aACA,qBAEJJ,EAAWK,mBAAqB,CAC5B,oBACA,2BACA,2BACA,gBACA,gBACA,OACA,cACA,WACA,kBACA,QACA,eACA,oBACA,yBACA,0BACA,sCACA,eACA,kBACA,eACA,cACA,aACA,aACA,oBACA,mBACA,iBACA,cACA,cACA,WACA,gBACA,oBACA,wBACA,UACA,YACA,aACA,WACA,WACA,YACA,kBACA,iBACA,kBACA,qBACA,iBACA,oBAgCJL,EAAWM,eAhKuC,WAClD,QAASP,EAAK,GAAIlkP,EAAI,EAAGA,EAAIjC,UAAUvD,OAAQwF,IAAKkkP,EAAKA,EAAGp+N,OAAOk+N,GAASjmP,UAAUiC,KACtF,OAAOkkP,EA8JqBQ,CAAWP,EAAWG,iBAAkBH,EAAWE,kBAAmBF,EAAWC,kBAAmBD,EAAWI,kBA9B3IJ,EAAWQ,oBAAsB,CAC7B,qBACA,cACA,cACA,oBACA,aACA,wBACA,iBACA,0BACA,cACA,aACA,SACA,kBACA,wBACA,8BACA,UACA,UACA,qBACA,kBACA,qBACA,gBACA,sBACA,oBACA,cACA,qBACA,mBACA,4BACA,uBACA,sBAE0LR,EAAWK,oBAGzML,EAAWS,qBAAuB,CAC9B,SACA,WACA,eACA,yBACA,kBACA,WACA,8BAEGT,EAxKqB,GAiL5BU,GAA8C,SAAUp1K,EAAGjR,GAC3D,IAAI9nB,EAAsB,mBAAXi9B,QAAyBlE,EAAEkE,OAAOswK,UACjD,IAAKvtM,EAAG,OAAO+4B,EACf,IAAmB9O,EAAY11C,EAA3BjrB,EAAI02C,EAAE5vC,KAAK2oE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U,SACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,MACV,SAAU,EACV,SAAU,IACV,OAAS,SACT,QAAU,SACV,QAAU,EACV,QAAU,SACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,IACV,QAAU,EACV,QAAU,IACV,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAW,SACX,SAAW,MACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,OAEf,CACI,EAAK,WACL,MAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,KACT,OAAS,KACT,OAAS,WACT,MAAQ,WACR,MAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,WACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,QACT,QAAS,WACT,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,EACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,QACV,QAAU,WACV,QAAU,QACV,QAAU,GACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,EACV,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,WACV,QAAU,GACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,KACV,QAAU,WAC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MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,KAAK,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAClf,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MACvf,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MACxf,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MACxf,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,C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CV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IA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C,GAASC,IAAW,EAACh20B,QAAQgizB,EAAM,MAAQ5j4B,KAAKomM,gBAAkB,cAE7Fq0tB,EACA,OAAQ1p4B,EAAEssD,aACD460B,GACDuC,EAAavC,GACbln4B,EAAEssD,OAAS060B,GACX,WACCC,GACDwC,EAAaxC,GACbjn4B,EAAEssD,OAASy60B,GACX,WACCC,GACDyC,EAAazC,GACbhn4B,EAAEssD,OAAS460B,GACX,WACCH,GACD0C,EAAa1C,GACb/m4B,EAAEssD,OAAS,QACX,GAGHr9E,KAAKy+M,UACV,OAAQ1tL,EAAEssD,aACD260B,GACDyC,GAAe,EACfD,EAAaxC,GACbjn4B,EAAEssD,OAAS460B,GACX,WACCA,GACDwC,GAAe,EACfD,EAAavC,GACbln4B,EAAEssD,OAAS260B,GAIvB,OAAQjn4B,EAAEssD,aACD060B,QACAD,QACAK,QACAD,QACA/4mB,GACDn/S,KAAKwj4B,iBAAiBzy2B,GACtB,WACCkn4B,GACDj45B,KAAK265B,qBAAqB5p4B,GAC1B,WACCin4B,GACDh45B,KAAKu65B,kBAAkBxp4B,GACvB,WACCgG,GACG/2B,KAAKu55B,eAAkC,SAAjB31B,EAAKp9uB,SAAsBo9uB,EAAK183B,UAAU6H,SAAS,eACzE/O,KAAK455B,uBAAuB7o4B,GAG5B/wB,KAAK265B,qBAAqB5p4B,GAIlC0p4B,IACA1p4B,EAAEssD,OAASm90B,IAGnB7B,EAASrq3B,UAAUk11B,iBAAmB,SAAUzy2B,GAC5C,IAAI6p4B,EAAM565B,KAAK665B,gBACX96B,EAAchv2B,EAAEssD,SAAW060B,IAAahn4B,EAAEssD,SAAW660B,IAAQnn4B,EAAEssD,SAAW8hO,GAAO,EAAIy7mB,EAAI3xH,kBAAoB,EAC7G6xH,EAAS/6B,EACTg7B,EAAM/65B,KAAKg75B,aAAaJ,EAAKjD,IAC7BoD,IACIhq4B,EAAEssD,SAAW860B,IAAOpn4B,EAAEssD,SAAW660B,KACjC4C,EAAS965B,KAAKi75B,OAAOL,EAAKG,IAE9BA,EAAI7z5B,UAAUyH,OAAOgp5B,IACjB5m4B,EAAEssD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Aa,EACThS,QAAS,SACVs4vB,EAAa515B,UAAW,kBAAc,GACzCsvK,GAAa,EACThS,QAAS,OACVs4vB,EAAa515B,UAAW,mBAAe,GAC1CsvK,GAAa,EACThS,QAAS,OACVs4vB,EAAa515B,UAAW,4BAAwB,GACnDsvK,GAAa,EACThS,QAAS,KACVs4vB,EAAa515B,UAAW,sBAAkB,GAC7CsvK,GAAa,EACThS,QAAS,OACVs4vB,EAAa515B,UAAW,aAAS,GACpCsvK,GAAa,EACThS,QAAS,OACVs4vB,EAAa515B,UAAW,qBAAiB,GAC5CsvK,GAAa,EACThS,QAAS,OACVs4vB,EAAa515B,UAAW,sBAAkB,GAC7CsvK,GAAa,EACThS,QAAS,OACVs4vB,EAAa515B,UAAW,sBAAkB,GAC7CsvK,GAAa,EACThS,SAAS,IACVs4vB,EAAa515B,UAAW,sBAAkB,GAC7CsvK,GAAa,EACThS,SAAS,IACVs4vB,EAAa515B,UAAW,0BAAsB,GACjDsvK,GAAa,EACThS,SAAS,IACVs4vB,EAAa515B,UAAW,gBAAY,GACvCsvK,GAAa,EACThS,SAAS,IACVs4vB,EAAa515B,UAAW,4BAAwB,GACnDsvK,GAAa,EACThS,SAAS,IACVs4vB,EAAa515B,UAAW,mBAAe,GAC1CsvK,GAAa,EACThS,QAAS,OACVs4vB,EAAa515B,UAAW,YAAQ,GACnCsvK,GAAa,EACThS,QAAS,OACVs4vB,EAAa515B,UAAW,aAAS,GACpCsvK,GAAa,EACThS,SAAS,IACVs4vB,EAAa515B,UAAW,0BAAsB,GACjDsvK,GAAa,EACThS,QAAS,OACVs4vB,EAAa515B,UAAW,aAAS,GACpCsvK,GAAa,EACThS,QAAS,UACVs4vB,EAAa515B,UAAW,sBAAkB,GAC7CsvK,GAAa,EACThS,SAAS,IACVs4vB,EAAa515B,UAAW,uBAAmB,GAC9CsvK,GAAa,EACTjgC,WACDumxB,EAAa515B,UAAW,iBAAa,GACxCsvK,GAAa,EACTjgC,WACDumxB,EAAa515B,UAAW,cAAU,GACrCsvK,GAAa,EACTjgC,WACDumxB,EAAa515B,UAAW,kBAAc,GACzCsv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AS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,OAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,OAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,OAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,OAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,OAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAE7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAM,MAC7Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,MAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,MAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,MAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,MAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,MAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,MAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,MAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,KAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B,SAAS,MAAO,OAC9Cx3C,KAAKwygC,yBAAyBh79B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AAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,KAMTX,EAA8ByB,WAAa,CACvC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IA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","names":["InteractivityChecker","_platform","this","element","hasAttribute","offsetWidth","offsetHeight","getClientRects","length","hasGeometry","getComputedStyle","visibility","isBrowser","frameElement","window","_a","getFrameElement","node","ownerDocument","defaultView","getWindow","getTabIndexValue","isVisible","nodeName","toLowerCase","tabIndexValue","WEBKIT","IOS","inputType","type","isPotentiallyTabbableIOS","FIREFOX","tabIndex","config","isInputElement","isHiddenInput","isNativeFormElement","isAnchorElement","isAnchorWithHref","hasValidTabIndex","isPotentiallyFocusable","isDisabled","ignoreVisibility","ɵfac","t","ɵngcc0","ɵngcc1","ɵprov","i0","factory","i1","token","providedIn","undefined","getAttribute","isNaN","parseInt","FocusTrap","_element","_checker","_ngZone","_document","deferAnchors","arguments","_hasAttached","startAnchorListener","qn","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","_enabled","attachAnchors","value","_startAnchor","_endAnchor","_toggleAnchorTabIndex","startAnchor","endAnchor","removeEventListener","parentNode","removeChild","runOutsideAngular","Ve","_createAnchor","addEventListener","insertBefore","nextSibling","options","Promise","Dt","_executeOnStable","resolve","focusInitialElement","bound","markers","querySelectorAll","i","console","warn","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","querySelector","isFocusable","focusableChild","focus","_getRegionBoundary","root","isTabbable","children","childNodes","tabbableChild","nodeType","ELEMENT_NODE","anchor","createElement","classList","add","setAttribute","isEnabled","removeAttribute","enabled","fn","isStable","onStable","pipe","take","subscribe","FocusTrapFactory","deferCaptureElements","DOCUMENT","i2","event","offsetX","offsetY","touch","touches","changedTouches","identifier","radiusX","radiusY","Element","INPUT_MODALITY_DETECTOR_OPTIONS","InjectionToken","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","ALT","CONTROL","MAC_META","META","SHIFT","modalityEventListenerOptions","normalizePassiveListenerOptions","passive","capture","InputModalityDetector","ngZone","document","_mostRecentTarget","_modality","BehaviorSubject","_lastTouchMs","_onKeydown","_b","Bn","_options","some","keyCode","next","_getEventTarget","_onMousedown","Date","now","isFakeMousedownFromScreenReader","_onTouchstart","isFakeTouchstartFromScreenReader","Object","assign","modalityDetected","skip","modalityChanged","distinctUntilChanged","complete","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_inputModalityDetector","_origin","_windowFocused","_originFromTouchInteraction","_elementInfo","Map","_monitoredElementCount","_rootNodeFocusListenerCount","_windowFocusListener","Pn","_windowFocusTimeoutId","setTimeout","_stopInputModalityDetector","Subject","_rootNodeFocusAndBlurListener","target","handler","_onFocus","_onBlur","parentElement","call","_detectionMode","detectionMode","checkChildren","nativeElement","coerceElement","of","rootNode","_getShadowRoot","_getDocument","cachedInfo","get","subject","info","set","_registerGlobalListeners","elementInfo","_setClasses","delete","_removeGlobalListeners","origin","activeElement","_getClosestElementsInfo","forEach","_originChanged","rn","_setOrigin","_info","stopMonitoring","className","shouldSet","remove","focusEventTarget","_shouldBeAttributedToTouch","_lastFocusOrigin","contains","_toggleClass","isFromInteraction","Sn","clearTimeout","_originTimeoutId","ms","_getFocusOrigin","relatedTarget","Node","_emitOrigin","run","rootNodeFocusListeners","_getWindow","takeUntil","modality","has","results","currentElement","push","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","testElement","style","backgroundColor","position","body","appendChild","documentWindow","computedStyle","computedColor","replace","_hasCheckedHighContrastMode","bodyClasses","mode","getHighContrastMode","DIR_DOCUMENT","inject","Directionality","change","EventEmitter","dir","documentElement","BidiModule","ɵmod","ɵinj","PendingCopy","text","textarea","_textarea","styles","top","opacity","left","successful","currentFocus","select","setSelectionRange","execCommand","Clipboard","pendingCopy","beginCopy","copy","destroy","state","subscriber","counter","period","schedule","dest","source","importantProperties","key","hasOwnProperty","setProperty","removeProperty","enable","userSelect","extendStyles","transform","initialTransform","multiplier","indexOf","parseFloat","name","getPropertyValue","split","map","part","trim","clientRect","getBoundingClientRect","right","bottom","width","height","x","y","rect","threshold","pointerX","pointerY","xThreshold","yThreshold","ParentPositionTracker","_viewportRuler","positions","clear","elements","scrollPosition","getViewportScrollPosition","dt","scrollTop","scrollLeft","getMutableClientRect","cachedPosition","newTop","newLeft","scrolledParentNode","viewportScrollPosition","topDifference","leftDifference","adjustClientRect","clone","cloneNode","descendantsWithId","transferCanvasData","transferInputData","transferData","selector","callback","descendantElements","cloneElements","cloneUniqueId","context","getContext","drawImage","passiveEventListenerOptions","activeEventListenerOptions","dragImportantProperties","Set","DragRef","_config","_dragDropRegistry","_passiveTransform","_activeTransform","_hasStartedDragging","_moveEvents","_pointerMoveSubscription","Subscription","_pointerUpSubscription","_scrollSubscription","_resizeSubscription","_boundaryElement","_nativeInteractionsEnabled","_handles","_disabledHandles","_direction","dragStartDelay","_disabled","beforeStarted","started","released","ended","entered","exited","dropped","moved","_pointerDown","hn","targetHandle","find","handle","disabled","_initializeDragSequence","_rootElement","_pointerMove","pointerPosition","_getPointerPositionOnPage","_previewRect","_preview","preventDefault","constrainedPointerPosition","_getConstrainedPointerPosition","_hasMoved","_lastKnownPointerPosition","_updatePointerDirectionDelta","_dropContainer","_updateActiveDropContainer","activeTransform","_pickupPositionOnPage","_applyRootElementTransform","SVGElement","appliedTransform","observers","distance","_getDragDistance","delta","_pointerDirectionDelta","Math","abs","dragStartThreshold","isDelayElapsed","_dragStartTime","_getDragStartDelay","container","_endDragSequence","isDragging","isReceiving","_startDragSequence","_pointerUp","withRootElement","withParent","parentDragRef","_parentPositions","registerDragItem","newValue","coerceBooleanProperty","_toggleNativeDragInteractions","toggleNativeDragInteractions","_placeholder","getPlaceholderElement","getRootElement","handles","disabledHandles","template","_previewTemplate","_placeholderTemplate","rootElement","_removeRootElementListeners","_initialTransform","_ownerSVGElement","ownerSVGElement","boundaryElement","unsubscribe","_containInsideBoundaryOnResize","parent","_parentDragRef","removeNode","_anchor","_destroyPreview","_destroyPlaceholder","removeDragItem","_removeSubscriptions","direction","_previewContainer","_previewRef","_placeholderRef","stopDragging","webkitTapHighlightColor","_rootElementTapHighlight","_stopScrolling","_animatePreviewToPlaceholder","then","_cleanupDragArtifacts","_cleanupCachedDimensions","dropPoint","isTouchEvent","_lastTouchEventTime","dropContainer","placeholder","_createPlaceholderElement","createComment","shadowRoot","_createPreviewElement","toggleVisibility","replaceChild","_getPreviewInsertionPoint","start","_initialContainer","_initialIndex","getItemIndex","cache","getScrollableParents","referenceElement","stopPropagation","isTouchSequence","isAuxiliaryMouseButton","button","isSyntheticEvent","isFakeEvent","draggable","pointerMove","pointerUp","scrolled","_updateOnScroll","scrollEvent","_boundaryRect","previewTemplate","_pickupPositionInElement","matchSize","_getPointerPositionInElement","_pointerPositionAtLastDirectionChange","startDragging","currentIndex","isPointerOverContainer","_isOverContainer","item","previousIndex","previousContainer","drop","Ke","rawX","rawY","newContainer","_getSiblingContainerFromPosition","exit","enter","sortingDisabled","_startScrollingIfNecessary","_sortItem","_applyPreviewTransform","preview","previewConfig","previewClass","rootRect","viewRef","viewContainer","createEmbeddedView","detectChanges","getRootNode","matchElementSize","getTransform","deepCloneNode","margin","zIndex","Array","isArray","placeholderRect","duration","transitionedProperties","parseCssPropertyValue","property","prop","propertyIndex","rawDurations","rawDelays","parseCssTimeUnitsToMs","getTransformTransitionDurationInMs","propertyName","timeout","placeholderConfig","placeholderTemplate","elementRect","handleElement","referenceRect","point","targetTouches","_getViewportScrollPosition","pageX","pageY","svgMatrix","getScreenCTM","svgPoint","createSVGPoint","matrixTransform","inverse","dropContainerLock","lockAxis","constrainPosition","pickupX","pickupY","boundaryRect","previewRect","minY","maxY","clamp$1","pointerPositionOnPage","positionSinceLastChange","changeX","changeY","pointerDirectionChangeThreshold","shouldEnable","combineTransforms","currentPosition","pickupPosition","leftOverflow","rightOverflow","topOverflow","bottomOverflow","qt","setFreeDragPosition","mouse","scrollDifference","handleScroll","_cachedShadowRoot","initialParent","previewContainer","documentRef","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","round","min","max","rootNodes","wrapper","sourceRect","DropListRef","autoScrollDisabled","autoScrollStep","enterPredicate","sortPredicate","sorted","_isDragging","_itemPositions","_previousSwap","drag","overlaps","_draggables","_siblings","_orientation","_activeSiblings","_viewportScrollSubscription","_verticalScrollDirection","_horizontalScrollDirection","_stopScrollTimers","_startScrollInterval","ti","scheduler","async","isNumeric","Observable","dispatch","interval","animationFrameScheduler","_scrollNode","scrollStep","incrementVerticalScroll","incrementHorizontalScroll","withScrollableParents","registerDropContainer","removeDropContainer","_draggingStarted","_notifyReceivingSiblings","index","newIndex","_getItemIndexFromPointerPosition","activeDraggables","_activeDraggables","newPositionReference","splice","_shouldEnterAsFirstChild","reference","unshift","_cacheItemPositions","_cacheParentPositions","_reset","items","previousItems","_withDropContainer","filter","every","_cacheItems","connectedTo","slice","orientation","_scrollableElements","concat","findIndex","reverse","currentItem","size","pointerDelta","_clientRect","isPointerNearClientRect","siblings","isHorizontal","siblingAtNewPosition","newPosition","itemOffset","_getItemOffsetPx","siblingOffset","_getSiblingOffsetPx","oldOrder","array","fromIndex","toIndex","from","clamp","to","moveItemInArray","sibling","isDraggedItem","offset","elementToOffset","Kn","isInsideClientRect","scrollNode","verticalScrollDirection","horizontalScrollDirection","computedVertical","getVerticalScrollDirection","computedHorizontal","getHorizontalScrollDirection","scrollHeight","clientHeight","scrollWidth","clientWidth","getElementScrollDirections","fo","getViewportSize","_initialScrollSnap","msScrollSnapType","scrollSnapType","_listenToScrollEvents","elementToMeasure","getVisibleElement","sort","a","b","current","_stopReceiving","immediateSibling","end","itemPositions","lastItemRect","firstItemRect","_","Kt","floor","_canReceive","elementFromPoint","activeSiblings","_sortFromLastPointerPosition","draggedItems","_startReceiving","predicate","amount","scrollBy","activeCapturingEventOptions","DragDropRegistry","_dropInstances","_dragInstances","_activeDragInstances","_globalListeners","_draggingPredicate","scroll","_preventDefaultWhileDragging","_persistentTouchmoveListener","startsWith","e","_clearGlobalListeners","streams","observer","eventOptions","merge","instance","DEFAULT_CONFIG","DragDrop","CDK_DRAG_PARENT","CDK_DRAG_CONFIG","CDK_DROP_LIST","CDK_DRAG_HANDLE","CdkDragHandle","parentDrag","_stateChanges","_parentDrag","ɵdir","selectors","hostAttrs","inputs","features","provide","useExisting","CDK_DRAG_PLACEHOLDER","CDK_DRAG_PREVIEW","CdkDrag","_viewContainerRef","_dir","dragDrop","_changeDetectorRef","_selfHandle","_destroyed","subscription","Dr","_dragRef","movedEvent","createDrag","data","_assignDefaults","_dropListRef","addItem","_syncInputs","_handleEvents","reset","getFreeDragPosition","_updateRootElement","_setupHandlesListener","freeDragPosition","changes","rootSelectorChange","rootElementSelector","positionChange","firstChange","removeItem","dispose","getClosestMatchingAncestor","boundary","ref","templateRef","coerceNumberProperty","withBoundaryElement","_getBoundaryElement","withPlaceholderTemplate","withPreviewTemplate","withPreviewContainer","withDirection","emit","markForCheck","draggingDisabled","startWith","tap","childHandleElements","withHandles","switchMap","dragRef","handleInstance","disableHandle","enableHandle","ɵngcc2","contentQueries","rf","ctx","dirIndex","_t","first","hostVars","hostBindings","outputs","exportAs","matches","msMatchesSelector","DragDropModule","providers","imports","CdkScrollableModule","ENTER","ESCAPE","SPACE","modifiers","Vs","modifier","altKey","shiftKey","ctrlKey","metaKey","scrollBehaviorSupported","supportsScrollBehavior","BlockScrollStrategy","_previousHTMLStyles","_isEnabled","_canBeEnabled","_previousScrollPosition","coerceCssPixelValue","html","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","viewport","CloseScrollStrategy","_scrollDispatcher","_detach","Qn","disable","_overlayRef","hasAttached","detach","overlayRef","stream","_initialScrollPosition","Qe","updatePosition","NoopScrollStrategy","scrollContainers","containerBounds","outsideRight","scrollContainerRect","clippedRight","RepositionScrollStrategy","scrollThrottle","autoClose","overlayRect","overlayElement","isElementScrolledOutsideView","ScrollStrategyOptions","noop","close","Fi","block","reposition","i1$1","OverlayConfig","scrollStrategy","panelClass","hasBackdrop","backdropClass","disposeOnNavigation","keys","Tn","dn","ConnectionPositionPair","overlay","originX","originY","overlayX","overlayY","ConnectedOverlayPositionChange","connectionPair","scrollableViewProperties","BaseOverlayDispatcher","_attachedOverlays","OverlayKeyboardDispatcher","_keydownListener","overlays","_keydownEvents","_isAttached","OverlayOutsideClickDispatcher","_cursorStyleIsSet","_pointerDownListener","_pointerDownEventTarget","_clickListener","_outsidePointerEvents","_cursorOriginalValue","cursor","OverlayContainer","_containerElement","_createContainer","containerClass","_isTestEnvironment","oppositePlatformContainers","OverlayRef","_portalOutlet","_host","_pane","_keyboardDispatcher","_location","_outsideClickDispatcher","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","_backdropClickHandler","Gi","_scrollStrategy","attach","_positionStrategy","positionStrategy","portal","attachResult","_previousHostParent","_updateStackingOrder","_updateElementSize","_updateElementDirection","_togglePointerEvents","_attachBackdrop","_toggleClasses","detachBackdrop","detachmentResult","_detachContentWhenStable","isAttached","_disposeScrollStrategy","_disposeBackdrop","apply","strategy","sizeConfig","classes","getDirection","minWidth","minHeight","maxWidth","maxHeight","enablePointer","pointerEvents","showingClass","requestAnimationFrame","backdropToDetach","timeoutId","finishDetach","cssClasses","isAdd","coerceArray","cssClass","backdrop","boundingBoxClass","cssUnitPattern","FlexibleConnectedPositionStrategy","_overlayContainer","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_preferredPositions","_positionChanges","_offsetX","_offsetY","_appliedPanelClasses","positionChanges","setOrigin","_validatePositions","hostElement","_boundingBox","_isDisposed","_isInitialRender","_lastPosition","reapplyLastPosition","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_viewportRect","_getNarrowedViewportRect","_originRect","_getOriginRect","_overlayRect","fallback","$n","originRect","viewportRect","flexibleFits","Dn","pos","originPoint","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","Ht","Oo","bestFit","bestScore","io","fit","score","weight","_previousPushAmount","alignItems","justifyContent","lastPosition","scrollables","flexibleDimensions","growAfterOpen","canPush","isLocked","_transformOriginSelector","startX","_isRtl","endX","overlayStartX","overlayStartY","rawOverlayRect","getRoundedBoundingClientRect","_getOffset","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","availableWidth","getPixelValue","getConfig","horizontalFit","pushX","pushY","overflowRight","overflowBottom","overflowTop","overflowLeft","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","_getScrollVisibility","changeEvent","xOrigin","yOrigin","transformOrigin","isRtl","smallestDistanceToViewportEdge","previousHeight","previousWidth","_hasExactPosition","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","transformString","_pushOverlayOnScreen","virtualKeyboardOffset","getContainerElement","originBounds","overlayBounds","scrollContainerBounds","scrollable","getElementRef","isOriginClipped","isElementClippedByScrolling","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","overflows","reduce","currentValue","currentOverflow","axis","ElementRef","destination","input","units","ConnectedPositionStrategy","originPos","overlayPos","viewportRuler","platform","overlayContainer","withFlexibleDimensions","withPush","withViewportMargin","withFallbackPosition","onPositionChange","setDirection","withScrollableContainers","withPositions","withDefaultOffsetX","withDefaultOffsetY","withLockedPosition","wrapperClass","GlobalPositionStrategy","_cssPosition","_topOffset","_bottomOffset","_leftOffset","_rightOffset","_alignItems","_justifyContent","_width","_height","updateSize","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","marginLeft","marginTop","marginBottom","marginRight","hi","OverlayPositionBuilder","elementRef","nextUniqueId","Overlay","scrollStrategies","_componentFactoryResolver","_positionBuilder","_injector","_directionality","host","_createHostElement","pane","_createPaneElement","portalOutlet","_createPortalOutlet","overlayConfig","id","_appRef","ApplicationRef","DomPortalOutlet","ɵngcc3","ɵngcc4","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","deps","useFactory","OverlayModule","PortalModule","ScrollingModule","hasV8BreakIterator","Intl","v8BreakIterator","supportsPassiveEvents","rtlScrollAxisType","shadowDomIsSupported","Platform","_platformId","isPlatformBrowser","EDGE","test","navigator","userAgent","TRIDENT","BLINK","chrome","CSS","ANDROID","SAFARI","PLATFORM_ID","PlatformModule","defineProperty","supportsPassiveEventListeners","scrollToFunction","prototype","scrollTo","toString","scrollContainer","containerStyle","overflow","content","contentStyle","head","createShadowRoot","attachShadow","_supportsShadowDom","ShadowRoot","newActiveElement","composedPath","__karma__","jasmine","jest","Mocha","Portal","_attachedHost","ComponentPortal","component","viewContainerRef","injector","componentFactoryResolver","Mt","TemplatePortal","J","DomPortal","Me","BasePortalOutlet","attachDomPortal","_attachedPortal","attachComponentPortal","attachTemplatePortal","setAttachedHost","_invokeDisposeFn","_disposeFn","outletElement","_defaultInjector","Et","anchorNode","componentRef","Ee","componentFactory","resolveComponentFactory","createComponent","setDisposeFn","create","attachView","hostView","detachView","_getComponentRootNode","CdkPortalOutlet","ze","_isInitialized","attached","_getRootNode","_attachedRef","ScrollDispatcher","_scrolled","_globalSubscription","_scrolledCount","elementScrolled","Le","scrollableReference","auditTimeInMs","un","_addGlobalListener","auditTime","_removeGlobalListener","deregister","elementOrElementRef","ancestors","getAncestorScrollContainers","scrollingContainers","_subscription","_scrollableContainsElement","scrollableElement","fromEvent","ViewportRuler","_change","_changeListener","Yt","_viewportSize","_updateViewportSize","output","documentRect","scrollY","scrollX","throttleTime","innerWidth","innerHeight","fallbackValue","_isNumberValue","Number","elementOrRef","BROWSER_PROVIDER","APP_BOOTSTRAP_LISTENER","platformId","CLASS_NAME","classRegex","el","multi","CoreModule","MediaChange","mediaQuery","mqAlias","suffix","priority","StylesheetMap","stylesheet","styleName","ɵɵdefineInjectable","addFlexToParent","addOrientationBps","disableDefaultBps","disableVendorPrefixes","serverLoaded","useColumnBasisZero","printWithBreakpoints","mediaTriggerAutoRestore","ssrObserveBreakpoints","LAYOUT_CONFIG","SERVER_TOKEN","BREAKPOINT","alias","INLINE","LAYOUT_VALUES","wrap","inline","validateWrapValue","validateValue","display","buildCSS","isInline","BaseDirective2","styleBuilder","styler","marshal","DIRECTIVE_KEY","mru","destroySubject","styleCache","getValue","setValue","activatedAlias","bp","join","releaseElement","extraTriggers","init","updateWithValue","bind","clearStyles","builder","useCache","shouldCache","genStyles","buildStyles","applyStyleToElement","sideEffect","Pt","k","triggerUpdate","addIfMissing","getFlowDirection","hasInlineValue","buildLayoutCSS","applyStyleToElements","hasWrap","val","addStyles","DEFAULT_BREAKPOINTS","overlapping","HANDSET_PORTRAIT","HANDSET_LANDSCAPE","TABLET_PORTRAIT","TABLET_LANDSCAPE","WEB_PORTRAIT","WEB_LANDSCAPE","ScreenTypes","HANDSET","TABLET","WEB","ORIENTATION_BREAKPOINTS","TypeError","sources","ALIAS_DELIMITERS","charAt","remainder","toUpperCase","list","firstUpperCase","camelCase","BREAKPOINTS","breakpoints","layoutConfig","bpFlattenArray","v","defaults","custom","dict","extendObject","validateSuffixes","mergeByAlias","priorityA","pB","BreakPointRegistry","findByMap","sortAscendingPriority","findWithPredicate","query","it","searchFn","response","ɵɵinject","MatchMedia","_zone","registry","pendingRemoveListenerFns","_observable$","asObservable","mql","registerQuery","m","mqList","filterOthers","matchMedia$","registration$","lastChange","pop","buildQueryCss","mediaQueries","ALL_STYLES","styleEl","styleSheet","cssText","createTextNode","mq","error","onMQLEvent","buildMQL","addListener","removeListener","matchMedia","media","onchange","dispatchEvent","constructMql","NgZone","PRINT","BREAKPOINT_PRINT","PrintHook","registeredBeforeAfterPrintHooks","isPrintingBeforeAfterEvent","beforePrintEventListeners","afterPrintEventListeners","isPrinting","queue","PrintQueue","deactivations","queries","printAlias","findByAlias","findByQuery","printBreakPoints","sortDescendingPriority","isPrintEvent","getEventBreakpoints","mergeAlias","beforePrintListener","startPrinting","updateStyles","afterPrintListener","stopPrinting","registerBeforeAfterPrintHooks","collectActivations","bpList","activatedBreakpoints","addPrintBreakpoints","l","printBreakpoints","addBreakpoint","isPrintBreakPoint","MediaObserver","hook","filterOverlaps","destroyed$","_media$","watchActivations","media$","aliases","a1","a2","splitQueries","locator","toMediaQuery","isActive","buildObservable","observe","withPrintQuery","debounceTime","asapScheduler","findAllActivations","activations","updateEvent","order","StyleUtils","_serverStylesheet","_serverModuleLoaded","applyCssPrefixes","_applyMultiValueStyleToElement","lookupStyle","lookupInlineStyle","isPlatformServer","attribute","_getServerStyle","inlineOnly","immediateValue","getStyleForElement","values","_setServerStyle","addStyleToElement","styleValue","styleMap","_readStyleAttribute","_writeStyleAttribute","styleAttribute","styleList","colonIndex","Error","substr","styleAttrValue","StyleBuilder","_input","_styles","_parent","basis","grow","shrink","parts","j","_validateCalcValue","substring","calc","MediaMarshaller","elementMap","elementKeyMap","WeakMap","watcherMap","updateMap","clearMap","observeActivations","mc","updateFn","clearFn","initBuilderMap","buildElementKeyMap","watchExtraTriggers","bpMap","getActivatedValues","updateElement","keyMap","valueMap","clearElement","builders","s","triggers","watchers","newSubscription","lastHope","interceptEvents","blockPropagation","onMediaChange","map$$1","oldMap","ClassDirective","iterableDiffers","keyValueDiffers","renderer2","ngClassInstance","Vt","NgClass","klass","ngClass","ngDoCheck","inputs$1","DefaultClassDirective","Ge","ɵDefaultClassDirective_BaseFactory","NgStyleKeyValue","noQuotes","what","constructor","bn","vals","entry","StyleDirective","sanitizer","differs","ngStyleInstance","kn","NgStyle","fallbackStyles","buildStyleMap","isServer","ngStyle","Ce","sanitize","SecurityContext","getType","buildMapFromList$1","delimiter","String","buildRawList","stringToKeyValue","keyValuesToMap","buildMapFromList","buildMapFromSet","inputs$3","DefaultStyleDirective","ɵDefaultStyleDirective_BaseFactory","ExtendedModule","FlexModule","GridModule","FlexLayoutModule","serverModuleLoaded","configOptions","ngModule","useValue","_c0","MapEventManager","_pending","_listeners","_targetStream","Ie","zt","observable","listener","currentTarget","_clearListeners","DEFAULT_OPTIONS","center","lat","lng","zoom","mapTypeId","GoogleMap","_elementRef","_eventManager","authFailure","boundsChanged","getLazyEmitter","centerChanged","mapClick","mapDblclick","mapDrag","mapDragend","mapDragstart","headingChanged","idle","maptypeidChanged","mapMousemove","mapMouseout","mapMouseover","projectionChanged","mapRightclick","tilesloaded","tiltChanged","zoomChanged","_isBrowser","googleMapsWindow","_existingAuthFailureCallback","gm_authFailure","_center","_zoom","_setSize","googleMap","setOptions","_combineOptions","setCenter","setZoom","setMapTypeId","_mapEl","google","maps","setTarget","bounds","padding","_assertInitialized","fitBounds","panBy","latLng","panTo","latLngBounds","panToBounds","getBounds","getCenter","getClickableIcons","getHeading","getMapTypeId","getProjection","getStreetView","getTilt","getZoom","controls","mapTypes","overlayMapTypes","DEFAULT_WIDTH","ɵcmp","ngContentSelectors","decls","vars","consts","encapsulation","changeDetection","cssUnitsPattern","GoogleMapsModule","BrowserXhr","XMLHttpRequest","RequestMethod","Get","Post","Put","Delete","Options","Head","Patch","ReadyState","Unsent","Open","HeadersReceived","Loading","Done","Cancelled","ResponseType","Basic","Cors","Default","Opaque","ContentType","NONE","JSON","FORM","FORM_DATA","TEXT","BLOB","ARRAY_BUFFER","ResponseContentType","Text","Json","ArrayBuffer","Blob","Headers","headers","_headers","_normalizedNames","lt","append","getAll","lcName","vt","mayBeSetNormalizedName","serialized","headersString","line","ResponseOptions","opts","status","statusText","url","BaseResponseOptions","ConnectionBackend","XSRFStrategy","method","rawParams","params","param","eqIdx","QueryEncoder","standardEncoding","encodeURIComponent","URLSearchParams","queryEncoder","paramsMap","paramParser","appendAll","storedParam","searchParams","paramsList","encodeKey","encodeValue","Body","_body","parse","encodingHint","fromCharCode","Uint16Array","Uint8Array","stringify","view","strLen","charCodeAt","buffer","stringToArrayBuffer","Response","responseOptions","ok","XSSI_PREFIX","XHRConnection","req","browserXHR","baseResponseOptions","request","responseObserver","_xhr","build","open","withCredentials","onLoad","responseText","fromResponseHeaderString","getAllResponseHeaders","xhr","responseURL","getResponseHeader","getResponseURL","isSuccess","onError","err","setDetectedContentType","setRequestHeader","responseType","send","getBody","abort","contentType","blob","CookieXSRFStrategy","_cookieName","_headerName","xsrfToken","ɵgetDOM","getCookie","XHRBackend","_browserXHR","_baseResponseOptions","_xsrfStrategy","configureRequest","RequestOptions","search","normalizeMethodName","_mergeSearchParams","_parseParams","objParams","_appendParam","BaseRequestOptions","Request","requestOptions","paramsArg","urlEncodeParams","prefix","detectContentType","ArrayBuffer$1","detectContentTypeFromBody","FormData","Blob$1","arrayBuffer","w","backend","createConnection","defaultOpts","providedOpts","Http","_backend","_defaultOptions","responseObservable","httpRequest","mergeOptions","xhrBackend","HttpModule","httpFactory","useClass","_createDefaultCookieXSRFStrategy","VERSION","Version","MATERIAL_SANITY_CHECKS","MatCommonModule","highContrastModeDetector","sanityChecks","_hasDoneGlobalChecks","_applyBodyHighContrastModeCssClasses","_sanityChecks","_checkDoctypeIsDefined","_checkThemeIsPresent","_checkCdkVersionMatch","isDevMode","_checkIsEnabled","doctype","full","VERSION$2","base","defaultColor","args","color","_color","colorPalette","MatDialogConfig","role","disableClose","ariaDescribedBy","ariaLabelledBy","ariaLabel","autoFocus","restoreFocus","closeOnNavigation","matDialogAnimations","dialogContainer","trigger","transition","animate","_MatDialogContainerBase","_focusTrapFactory","_focusMonitor","Xn","_animationStateChanged","_elementFocusedBeforeDialogWasOpened","_closeInteractionType","_ariaLabelledBy","_setupFocusTrap","_capturePreviouslyFocusedElement","_focusDialogContainer","_containsFocus","_focusTrap","focusInitialElementWhenReady","previousElement","_getFocusedElementPierceShadowDom","focusVia","viewQuery","MatDialogContainer","_state","toState","totalTime","_trapFocus","_restoreFocus","ɵMatDialogContainer_BaseFactory","$event","_onAnimationStart","_onAnimationDone","_id","MatDialogContainer_ng_template_0_Template","directives","animation","uniqueId","MatDialogRef","_containerInstance","_afterOpened","_afterClosed","_beforeClosed","_e","_closeFallbackTimeout","_finishDialogClose","detachments","_result","componentInstance","keydownEvents","hasModifierKey","_closeDialogVia","backdropClick","_recaptureFocus","dialogResult","_startExitAnimation","_getPositionStrategy","centerHorizontally","centerVertically","addPanelClass","removePanelClass","interactionType","result","MAT_DIALOG_DATA","MAT_DIALOG_DEFAULT_OPTIONS","MAT_DIALOG_SCROLL_STRATEGY","MAT_DIALOG_SCROLL_STRATEGY_PROVIDER","_MatDialogBase","_overlay","_parentDialog","_dialogRefConstructor","_dialogContainerType","_dialogDataToken","_openDialogsAtThisLevel","_afterAllClosedAtThisLevel","_afterOpenedAtThisLevel","_ariaHiddenElements","afterAllClosed","defer","Wt","openDialogs","_getAfterAllClosed","afterOpened","componentOrTemplateRef","defaultOptions","_applyConfigDefaults","getDialogById","_createOverlay","_attachDialogContainer","dialogRef","_attachDialogContent","_hideNonDialogContentFromAssistiveTechnology","afterClosed","_removeOpenDialog","_initializeWithAttachedContent","_closeDialogs","dialog","_getOverlayConfig","dialogConfig","global","Injector","containerPortal","TemplateRef","$implicit","_createInjector","contentRef","userInjector","InjectFlags","previousValue","dialogs","MatDialog","location","parentDialog","MatDialogModule","MenuPackage","menu","MenuInjector","activeContextMenu","parentInjector","menuContext","notFoundValue","flags","ContextMenuService","menus","menuComponent","menuClose","menuAction","submenu","level","closeAll","clientY","clientX","flexibleConnectedTo","isMenuHovered","isTriggerHovered","menuInjector","componentPortal","res","idx","destroyMenu","Ze","lazy","_animationDone","menuIndex","Xe","St","n","INJECTOR","ContextMenuTriggerDirective","contextMenuService","holdToDisplay","beforeOpen","visible","preventOpen","show","contextMenuTrigger","mouseDownTimeoutId","xt","handleMenu","sub","handleMouseDown","handleMouseUp","ContextSubmenuTriggerDirective","hoverDelay","openDelay","getCurrentLevel","opentimer","closetimer","contextSubmenuTrigger","closeSubMenu","handleSubMenuClick","handleSubMenuEnter","handleSubMenuExit","MenuComponent","menuPackage","checkOutsideClick","handleMouseover","handleMouseleave","handleWindowClick","ContextMenuModule","il","r","jl","instances","LogLevel","DEBUG","VERBOSE","INFO","WARN","ERROR","SILENT","levelStringToEnum","debug","verbose","silent","defaultLogLevel","ConsoleMethod","defaultLogHandler","logType","_i","logLevel","toISOString","__spreadArrays","Logger","_logLevel","_logHandler","_userLogHandler","enumerable","configurable","setLogLevel","log","inst","_a$1","ERRORS","ERROR_FACTORY","ErrorFactory","name$c","DEFAULT_ENTRY_NAME","PLATFORM_LOG_STRING","logger","FirebaseAppImpl","firebase_","_this","isDeleted_","name_","automaticDataCollectionEnabled_","automaticDataCollectionEnabled","options_","deepCopy","ComponentContainer","_addComponent","Component","INTERNAL","components","checkDestroyed_","removeApp","all","getProviders","provider","_getService","instanceIdentifier","getProvider","isInitialized","getComponent","instantiationMode","initialize","getImmediate","_removeServiceInstance","clearInstance","addComponent","_addOrOverwriteComponent","addOrOverwriteComponent","toJSON","appName","firebase$1","namespace","firebaseAppImpl","apps","__esModule","initializeApp","rawConfig","app","registerVersion","libraryKeyOrName","version","variant","library","libraryMismatch","match","versionMismatch","warning","registerComponent","onLog","logCallback","_loop_1","customLogLevel","userLogHandler","message","arg","ignored","instances_1","setUserLogHandler","SDK_VERSION","useAsService","useService","componentName","serviceNamespace","appArg","serviceProps","deepExtend","multipleInstances","default","App","createFirebaseNamespaceCore","__assign","createFirebaseNamespace","extendNamespace","props","createSubscribe","PlatformLoggerService","getPlatformInfoString","isVersionServiceProvider","service","logString","self","firebase","sdkVersion","isNode","registerCoreComponents","instanceFactory","onInstanceCreated","setInstantiationMode","setMultipleInstances","setServiceProps","setInstanceCreatedCallback","Provider","instancesDeferred","instancesOptions","onInitCallbacks","normalizedIdentifier","normalizeInstanceIdentifier","deferred","Deferred","shouldAutoInitialize","getOrInitializeService","promise","optional","setComponent","e_1","isComponentEager","__values","entries","_c","done","_d","__read","instanceDeferred","e_1_1","return","__awaiter","services","__generator","label","__spreadArray","_delete","sent","isComponentSet","getOptions","e_2","e_2_1","onInit","existingCallbacks","existingInstance","invokeOnInitCallbacks","e_3","callbacks","callbacks_1","callbacks_1_1","e_3_1","normalizeIdentifierForFactory","getTime","isValidKey","reject","wrapCallback","catch","process","FirebaseError","_super","code","customData","setPrototypeOf","captureStackTrace","__extends","serviceName","errors","fullCode","replaceTemplate","fullMessage","PATTERN","obj","executor","onNoObservers","proxy","ObserverProxy","chain_","buf_","W_","pad_","inbuf_","total_","blockSize","Sha1","compress_","buf","W","f","c","d","tr","update","bytes","lengthMinusBlock","inbuf","digest","totalBits","unsubscribes","observerCount","task","finalized","forEachObserver","nextOrObserver","methods","methods_1","implementsAnyMethods","unsub","unsubscribeOne","finalError","sendOne","u","o","defaultProps","__k","__","__b","__e","__d","__c","__h","__v","vnode","g","__r","debounceRendering","__P","__n","z","h","C","p","A","N","M","$","T","I","H","contextType","__E","render","O","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","localName","createElementNS","is","dangerouslySetInnerHTML","attributes","__html","innerHTML","checked","L","diffed","unmount","componentWillUnmount","firstChild","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","shift","__H","__N","__V","cancelAnimationFrame","isPureReactComponent","__f","Symbol","for","U","__u","__a","__R","D","F","__O","revealOrder","P","V","B","Z","writable","G","cancelBubble","defaultPrevented","persist","isPropagationStopped","K","isDefaultPrevented","Q","nativeEvent","nn","class","tn","multiple","selected","defaultValue","$$typeof","en","globalObj","globalThis","FullCalendarVDom","preact","createRef","Fragment","createContext","ContextType","Consumer","origProvider","isNew","subs_1","_props","old","createPortal","containerInfo","flushToDom","oldDebounceRendering","callbackQ","FakeComponent","unmountComponentAtNode","Calendar","optionOverrides","isRendering","isRendered","currentClassNames","customContentRenderId","handleAction","action","renderRunner","tryDrain","handleData","currentData","calendarOptions","rerenderDelay","handleRenderRequest","currentData_1","CalendarRoot","theme","emitter","classNames","isHeightAuto","forPrint","setClassNames","setHeight","CustomContentRenderContext","CalendarContent","DelayedRunner","CalendarDataManager","calendarApi","onAction","onData","viewApi","wasRendering","batchRendering","func","pause","resume","pauseRendering","resumeRendering","resetOptions","currentDataManager","isArraysEqual","classNames_1","applyStyleProp","CalendarApi","valueOf","mapHash","OPTION_IS_DEEP","headerToolbar","footerToolbar","events","eventSources","resources","FullCalendarComponent","optionSnapshot","deepChangeDetection","optionVal","optionName","calendar","newOptions","newProcessedOptions","anyChanges","deepEqual","shallowCopy","_r","Kr","FullCalendarModule","plugins","globalPlugins","EventSourceApi","internalEventSource","sourceId","refetch","sourceIds","isRefetch","publicId","meta","format","closest","elementMatches","matchesSelector","PIXEL_PROP_RE","propName","ev","matchedChild","elementClosest","eventType","attachedHandler","buildDelegationHandler","transitionEventNames","realCallback","eventName","guidNumber","obj0","obj1","fieldSpec","localeCompare","flexibleCompare","field","len","cellEl","allWidthEl","contentWidthEl","DAY_IDS","dateToUtcArray","arrayToUtcDate","m0","m1","diffDays","timeAsMs","getUTCFullYear","getUTCMonth","getUTCDate","marker","year","dow","doy","firstWeekStart","firstWeekOffset","dayStart","startOfDay","days","fwd","getUTCDay","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","UTC","defId","range","forcedStartTzo","forcedEndTzo","instanceId","guid","propObjs","complexPropsMap","name_1","complexObjs","mergeProps","name_2","hash","filtered","newHash","a_1","oldProps","newProps","equalityFuncs","isObjValsEqual","val0","val1","comparator","eventStore","framingRange","dateEnv","pluginHooks","defs","filterHash","recurringDef","def","allDay","defaultAllDayEventDuration","defaultTimedEventDuration","starts_1","expandRecurringRanges","recurringTypes","createEventInstance","eventDef","typeId","expand","typeData","subtract","INTERNAL_UNITS","PARSE_RE","unit","exec","sign","years","months","milliseconds","parseString","parseObject","month","day","hours","hour","minutes","minute","seconds","second","millisecond","weeks","week","specifiedWeeks","d0","d1","dur","asRoughMs","numerator","denominator","localRes","isInt","timeZoneOffset","stripZeroTime","formatTimeZoneOffset","padStart","doIso","mins","a0","equalityFunc","workerFunc","resEquality","teardownFunc","currentArgs","currentRes","newArgs","currentArg","newArg","isPropsEqual","EXTENDED_SETTINGS_AND_SEVERITIES","separator","omitZeroMinute","meridiem","omitCommas","STANDARD_DATE_PROP_SEVERITIES","timeZoneName","era","weekday","MERIDIEM_RE","COMMA_RE","MULTI_SPACE_RE","LTR_RE","UTC_RE","NativeFormatter","formatSettings","standardDateProps","extendedSettings","severity","buildFormattingFunc","memoize","formatRange","betterDefaultSeparator","diffSeverity","ca","getMarkerYear","getMarkerMonth","getMarkerDay","computeMarkerDiffSeverity","calendarSystem","biggestUnitForPartial","full0","full1","partialDateProps","biggestUnit","partialOptions","computePartialFormattingOptions","partialFormattingFunc","partial0","partial1","insertion","found0","before0","after0","found1","before1","after1","before","after","findCommonInsertion","defaultSeparator","getLargestUnit","standardDatePropCnt","num","weekText","locale","simpleNumberFormat","formatWeekNumber","computeWeekNumber","sanitizeSettings","timeZone","zeroFormat","normalFormat","DateTimeFormat","codes","zeroProps","tzoStr","replaced","injectTzoStr","le","toLocaleLowerCase","postProcess","buildNativeFormattingFunc","dateInfo","markerToArray","startInfo","expandZonedMarker","localeCodes","CmdFormatter","cmdStr","cmdFormatter","createVerboseFormattingArg","FuncFormatter","BASE_OPTION_REFINERS","navLinkDayClick","identity","navLinkWeekClick","createDuration","bootstrapFontAwesome","buttonIcons","customButtons","nextDayThreshold","scrollTime","scrollTimeReset","Boolean","slotMinTime","slotMaxTime","dayPopoverFormat","createFormatter","slotDuration","snapDuration","defaultRangeSeparator","titleRangeSeparator","forceEventDuration","dayHeaders","dayHeaderFormat","dayHeaderClassNames","dayHeaderContent","dayHeaderDidMount","dayHeaderWillUnmount","dayCellClassNames","dayCellContent","dayCellDidMount","dayCellWillUnmount","initialView","aspectRatio","weekends","weekNumberCalculation","weekNumbers","weekNumberClassNames","weekNumberContent","weekNumberDidMount","weekNumberWillUnmount","editable","viewClassNames","viewDidMount","viewWillUnmount","nowIndicator","nowIndicatorClassNames","nowIndicatorContent","nowIndicatorDidMount","nowIndicatorWillUnmount","showNonCurrentDates","lazyFetching","startParam","endParam","timeZoneParam","locales","themeSystem","dragRevertDuration","dragScroll","allDayMaintainDuration","unselectAuto","dropAccept","eventOrder","specs","tokens","eventOrderStrict","handleWindowResize","windowResizeDelay","longPressDelay","eventDragMinDistance","expandRows","contentHeight","weekNumberFormat","eventResizableFromStart","displayEventTime","displayEventEnd","progressiveEventRendering","businessHours","initialDate","eventDataTransform","stickyHeaderDates","stickyFooterScrollbar","viewHeight","defaultAllDay","eventSourceFailure","eventSourceSuccess","eventDisplay","eventStartEditable","eventDurationEditable","eventOverlap","eventConstraint","eventAllow","eventBackgroundColor","eventBorderColor","eventTextColor","eventColor","eventClassNames","eventContent","eventDidMount","eventWillUnmount","selectConstraint","selectOverlap","selectAllow","droppable","unselectCancel","slotLabelFormat","slotLaneClassNames","slotLaneContent","slotLaneDidMount","slotLaneWillUnmount","slotLabelClassNames","slotLabelContent","slotLabelDidMount","slotLabelWillUnmount","dayMaxEvents","dayMaxEventRows","dayMinWidth","slotLabelInterval","allDayText","allDayClassNames","allDayContent","allDayDidMount","allDayWillUnmount","slotMinWidth","navLinks","eventTimeFormat","moreLinkText","selectMinDistance","selectable","selectLongPressDelay","eventLongPressDelay","selectMirror","eventMaxStack","eventMinHeight","eventMinWidth","eventShortHeight","slotEventOverlap","firstDay","dayCount","dateAlignment","dateIncrement","hiddenDays","monthMode","fixedWeekCount","validRange","visibleRange","titleFormat","noEventsText","moreLinkClick","moreLinkClassNames","moreLinkContent","moreLinkDidMount","moreLinkWillUnmount","BASE_OPTION_DEFAULTS","CALENDAR_LISTENER_REFINERS","datesSet","eventsSet","eventAdd","eventChange","eventRemove","windowResize","eventClick","eventMouseEnter","eventMouseLeave","unselect","loading","_unmount","_beforeprint","_afterprint","_noEventDrop","_noEventResize","_resize","_scrollRequest","CALENDAR_OPTION_REFINERS","buttonText","views","initialEvents","COMPLEX_OPTION_COMPARATORS","isBoolComplexEqual","VIEW_OPTION_REFINERS","buttonTextKey","dateProfileGeneratorClass","usesMinMaxTime","didMount","willUnmount","optionSets","refiners","refined","extra","raw","rawEvents","eventSource","allowOpenRange","eventRefiners","buildEventRefiners","rawEvents_1","tuple","parseEvent","eventTupleToStore","def_1","newStore","filterEventStoreDefs","lookDef","def0","def1","groupId","isEventDefsGrouped","createEmptyEventStore","store0","store1","filterFunc","EVENT_UI_REFINERS","startEditable","durationEditable","constraint","overlap","allow","parseClassNames","borderColor","textColor","EMPTY_EVENT_UI","constraints","allows","parseEvents","normalizeConstraint","uis","combineTwoEventUis","item0","item1","EVENT_NON_DATE_REFINERS","title","EVENT_DATE_REFINERS","EVENT_REFINERS","extendedProps","refineEventDef","computeIsDefaultAllDay","recurringRes","parsed","allDayGuess","parseRecurring","parseEventDef","singleRes","startMeta","endMeta","startMarker","hasEnd","endMarker","createMarkerMeta","isTimeUnspecified","Ii","forcedTzo","parseSingle","refineProps","ui","createEventUi","eventDefMemberAdders","memberAdder","freeze","timedRange","dayCnt","addDays","startDay","endDay","endTimeMS","computeVisibleDayRange","date0","date1","largeUnit","diffWholeYears","diffWholeMonths","m0day","m1day","diffDayAndTime","ranges","constraintRange","dateRange","invertedRanges","compareRanges","range0","range1","newRange","outerRange","innerRange","eventUiBases","inverseBgByGroupId","inverseBgByDefId","defByGroupId","bgRanges","fgRanges","eventUis","compileEventUis","origRange","normalRange","slicedRange","intersectRanges","Gr","isStart","isEnd","invertedRanges_1","invertRanges","invertedRanges_2","bg","fg","seg","fcSeg","eventDefs","compileEventUi","combineEventUis","segs","eventOrderSpecs","objs","buildSegCompareObj","fieldSpecs","cmp","compareByFieldSpec","compareByFieldSpecs","_seg","eventRange","transformers_1","isDraggableTransformers","transformer","timeFormat","defaultDisplayEventTime","defaultDisplayEventEnd","startOverride","endOverride","eventInstance","wholeEventStart","wholeEventEnd","segStart","segEnd","isStartDay","isEndDay","addMs","todayRange","nowDate","segRange","isPast","isFuture","isToday","rangeContainsMarker","STANDARD_PROPS","span0","span1","rangesEqual","isSpanPropsEqual","omitTime","buildRangeApi","toDate","startStr","formatIso","endStr","dateSpan","selection","pev","buildDateSpanApiWithContext","jsEvent","origEvent","dateSpanTransforms","span","buildDateSpanApi","eventConfigBase","mutation","eventConfigs","applyMutationToEventDef","applyMutationToEventInstance","eventConfig","standardProps","startDelta","endDelta","eventDefMutationAppliers","applier","forceAllDay","clearEnd","computeAlignedDayRange","datesDelta","getDefaultEventEnd","ViewApi","getCurrentData","viewTitle","dateProfile","activeRange","currentRange","getOption","EVENT_SOURCE_REFINERS","success","failure","rawObj","buildEventSourceRefiners","metaRes","eventSourceDefs","parseMeta","sourceDefId","buildEventSourceMeta","_raw","isFetching","latestFetchId","fetchRange","eventSourceRefiners","nowInput","createNowMarker","createMarker","setOption","rawOptionValue","currentCalendarOptionsInput","getAvailableLocaleCodes","availableRawLocales","on","handlerName","currentCalendarOptionsRefiners","off","changeView","viewType","dateOrRange","dateMarker","zoomTo","spec","viewSpecs","getUnitViewSpec","Fe","viewTypes","toolbarConfig","viewsWithButtons","singleUnit","prev","prevYear","addYears","currentDate","nextYear","today","getNow","gotoDate","zonedDateInput","incrementDate","deltaInput","formatDate","formatter","settings","dateOrObj","endDate","selectionInput","defaultDuration","parseOpenDateSpan","parseDateSpan","triggerDateSelect","dateSelection","triggerDateUnselect","addEvent","eventInput","sourceInput","EventApi","_def","_instance","triggerEventAdd","hashValuesToArray","sourceApi","getEventSourceById","newEventApi","eventApi","relatedEvents","revert","eventApiToStore","getEventById","getEvents","buildEventApis","removeAllEvents","getEventSources","sourceHash","sourceApis","internalId","addEventSource","parseEventSource","removeAllEventSources","refetchEvents","scrollToTime","timeInput","time","_context","setProp","mutate","setExtendedProp","setStart","startInput","diffDates","granularity","maintainDuration","setEnd","endInput","setDates","instanceRange","durationsEqual","moveStart","moveEnd","moveDates","setAllDay","formatInput","context_1","eventStore_1","relevantEvents","getRelevantEvents","applyMutationToEventStore","oldEvent","asStore","toPlainObject","collapseColor","collapseExtendedProps","excludeInstance","eventApis","excludeInstanceId","calendarSystemClassMap","theClass","registerCalendarSystem","GregorianCalendarSystem","arrayToMarker","arr","ISO_RE","DateEnv","isNamedTimeZone","namedTimeZoneImpl","canComputeOffset","createCalendarSystem","weekDow","weekDoy","weekNumberFunc","timestampToMarker","dateToLocalArray","isValidDate","str","getYear","addMonths","greatestWholeUnit","diffWholeDays","diffWholeWeeks","diffHours","diffMinutes","diffSeconds","countDurationsBetween","diff","asRoughDays","asRoughYears","asRoughMonths","startOf","startOfYear","startOfMonth","startOfWeek","startOfHour","startOfMinute","startOfSecond","weekOfGivenYear","nextW","weekOfYear","dateOptions","offsetForMarker","isEndExclusive","extraOptions","omitTimeZoneOffset","buildIsoString","timestampToArray","arrayToLocalDate","getTimezoneOffset","offsetForArray","globalLocales","RAW_EN_LOCALE","explicitRawLocales","defaultCode","allRawLocales","rawLocaleMap","allRawLocales_1","rawLocale","inputSingular","available","codeArg","simpleId","queryRawLocale","parseLocale","queryLocale","merged","NumberFormat","canVGrowWithinCell","DEF_DEFAULTS","startTime","endTime","daysOfWeek","rect1","rect2","point1","point2","possible","computeCanVGrowWithinCell","EMPTY_EVENT_STORE","Splitter","getKeysForEventDefs","_getKeysForEventDefs","splitDateSelection","_splitDateSpan","splitEventStore","_splitEventStore","splitIndividualUi","_splitIndividualUi","splitEventDrag","_splitInteraction","splitEventResize","eventUiBuilders","splitProps","keyInfos","getKeyInfo","defKeys","dateSelections","individualUi","eventStores","eventDrags","eventDrag","eventResizes","eventResize","buildEventUiForKey","keyInfo","buildEventUi","eventSelection","dateSpans","keys_1","getKeysForDateSpan","getKeysForEventDef","splitStores","splitHashes","interaction","splitStates","affectedStores_1","affectedEvents","mutatedKeysByDefId","mutatedEvents","mutatedStores_1","populate","isEvent","allUi","eventUiForKey","baseParts","stuff","isOther","getClass","formatDayString","_scrollbarWidths","_isRtlScrollbarOnLeft","goWithinPadding","doFromWindowViewport","outerRect","computeRect","edges","getPadding","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","badScrollbarWidths","computeScrollbarWidthsForEl","scrollbarLeftRight","scrollbarBottom","scrollbarLeft","scrollbarRight","outerEl","applyStyle","border","removeElement","computeIsRtlScrollbarOnLeft","getIsRtlScrollbarOnLeft","paddingLeft","paddingRight","paddingTop","paddingBottom","computeEdges","pageXOffset","pageYOffset","parents","HTMLElement","overflowY","overflowX","Emitter","handlers","thisContext","setThisContext","addToHash","removeFromHash","attachedHandlers","optionHandler","handlers_1","hasHandlers","PositionCache","originEl","els","isVertical","originClientRect","buildElHorizontals","buildElVerticals","originClientLeft","lefts","rights","originClientTop","tops","bottoms","leftToIndex","leftPosition","topToIndex","topPosition","getWidth","leftIndex","getHeight","topIndex","ScrollController","getMaxScrollTop","getScrollHeight","getClientHeight","getMaxScrollLeft","getScrollWidth","getClientWidth","canScrollVertically","canScrollHorizontally","canScrollUp","getScrollTop","canScrollDown","canScrollLeft","getScrollLeft","canScrollRight","ElementScrollController","setScrollTop","setScrollLeft","WindowScrollController","Theme","iconOverrideOption","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","iconClasses","applyIconOverridePrefix","iconOverridePrefix","getIconClass","rtlIconClasses","baseIconClass","getCustomButtonIconClass","customButtonProps","iconOverrideCustomButtonOption","ScrollResponder","execFunc","handleScrollRequest","queuedRequest","drain","fireInitialScroll","isDatesNew","ViewContextType","viewSpec","viewOptions","dateProfileGenerator","registerInteractiveComponent","unregisterInteractiveComponent","addResizeHandler","removeResizeHandler","createScrollResponder","PureComponent","nextProps","nextState","getUnequalProps","compareObjs","propEquality","stateEquality","addPropsEquality","addStateEquality","BaseComponent","DateComponent","uid","prepareHits","queryHit","positionLeft","positionTop","elWidth","elHeight","isValidSegDownEl","isValidDateDownEl","reducers","isLoadingFuncs","contextInit","eventDragMutationMassagers","dateSelectionTransformers","datePointTransforms","viewPropsTransformers","isPropsValid","externalDefTransforms","viewContainerAppends","eventDropTransformers","componentInteractions","calendarInteractions","themeClasses","namedTimeZonedImpl","elementDraggingImpl","optionChangeHandlers","scrollGridImpl","contentTypeHandlers","listenerRefiners","optionRefiners","propSetHandlers","hooks0","hooks1","StandardTheme","defaultConfigs","overrideConfigs","viewDef","defaultConfig","overrideConfig","queryProp","theComponent","superType","superDef","ensureViewDef","_n","rawOptions","overrides","buildViewDef","tableCellShaded","buttonGroup","buttonActive","RenderHook","rootElRef","handleRootEl","setRef","elRef","hookProps","MountHook","ContentHook","defaultContent","backupElRef","innerElRef","innerContent","normalizeClassNames","renderId","ContentHookInner","renderInnerContent","updateCustomContent","customContentInfo","normalizeContent","innerContentVDom","contentVal","contentKey","rootEl","currentGenerator","currentHookProps","generator","ViewRoot","buildClassNameNormalizer","customClassNames","parseViewConfig","viewProps","viewElRef","createViewHookComponent","defaultInputs","dynamicOptionOverrides","localeDefaults","parseViewConfigs","viewDefs","compileViewDefs","durationInput","durationUnit","singleUnitOverrides","json","durationInputMap","createDurationCached","denom","greatestDurationDenominator","queryButtonText","optionsSubset","buttonTextMap","optionDefaults","buttonTextOverride","buttonTextDefault","buildViewSpec","DateProfileGenerator","initHiddenDays","buildPrev","currentDateProfile","forceToValid","prevDate","currentRangeUnit","buildNext","nextDate","currentInfo","isRangeAllDay","renderRange","isValid","buildValidRange","trimHiddenDays","constrainMarkerToRange","buildCurrentRangeInfo","buildRenderRange","adjustActiveRange","rangesIntersect","buildDateIncrement","validRangeInput","simpleInput","refineRange","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","computeRes","isHiddenDay","skipHiddenDays","runningCount","visibleRangeInput","customAlignment","rangeInput","parseRange","isHiddenDayHash","inc","isExclusive","eventSourceHash","sources_1","fetchDirtySources","fetchSourcesByIds","doesSourceNeedRange","isSourceDirty","prevSources","sourceIdHash","nextSources","fetchSource","sourceDef","fetchId","fetch","ignoreRange","refinedEvents","rawEvent","refinedEvent","currentSelection","currentInstanceId","eventInstanceId","currentDrag","newDrag","currentResize","newResize","calendarOptionOverrides","parseToolbar","sectionStrHash","sectionStr","calendarCustomButtons","calendarButtonTextOverrides","calendarButtonText","buttonGroupStr","buttonClick","click","buttonIcon","parseSection","eventSourceDef$1","isResolved","wrappedSuccess","wrappedFailure","unpromisify","buildRangeApiWithTimeZone","unfoundSources","newInputs","inputs_1","inputFound","unfoundSources_1","newInputs_1","newInput","createPlugin","extraParams","requestParams","customRequestParams","buildRequestParams","successCallback","failureCallback","encodeParams","injectQueryStringParams","onload","onerror","requestJson","errorMessage","startRecur","endRecur","recurringData","subtractDurations","clippedFramingRange","dowHash","arrayToHash","dayMarker","instanceStarts","instanceStart","expandRanges","handleEventSources","computeEventSourcesLoading","injectHtml","domNodes","injectDomNodes","oldNodes","newNodes","newNodes_1","drainedOption","isRunning","isDirty","pauseDepths","delay","isPaused","scope","force","drained","TaskRunner","runTaskOption","delayedRunner","completedTasks","runTask","buildTitleFormat","computeOptionsData","_computeOptionsData","computeCurrentViewData","_computeCurrentViewData","organizeRawLocales","buildLocale","buildPluginHooks","currentHooks","currentOverrideDefs","currentGlobalDefs","overrideDefs","globalDefs","pluginDefs","isAdded","hooks","defs_1","addDefs","combineHooks","buildBuildPluginHooks","buildDateEnv","buildTheme","parseToolbars","buildViewSpecs","buildDateProfileGenerator","memoizeObjArg","buildViewApi","buildViewUiProps","buildEventUiBySource","buildEventUiBases","parseContextBusinessHours","buildTitle","actionRunner","_handleAction","updateData","currentCalendarOptionsRefined","currentViewOptionsInput","currentViewOptionsRefined","optionsData","currentViewType","currentViewData","initialDateInput","getInitialDate","calendarContext","addSources","rawSources","rawSources_1","parseInitialSources","initEventSources","initialState","renderableEventStore","selectionConfig","contextAndState","reducer","computeIsLoading","reduceDynamicOptionOverrides","reduceViewType","reduceCurrentDate","dp","reduceDateProfile","removeSource","excludeStaticSources","receiveResponse","reduceEventSources","subset","calEachTransform","sourceEachTransform","transformEachRawEvent","transformRawEvents","expandRecurring","mergeEventStores","excludeEventsBySourceId","receiveRawEvents","expandRange","master","filteredDefs","filteredInstances","excludeSubEventStore","reduceEventStore","eventUiSingleBase","eventUiBySource","newState","reduceDateSelection","reduceSelectedEvent","reduceEventDrag","reduceEventResize","wasLoading","isLoading","oldData","changeHandlers","oldCalendarOptions","newCalendarOptions","reduceEventSourcesNewTimeZone","oldDateEnv","newDateEnv","rezoneEventStoreDates","processRawCalendarOptions","refinedOptions","availableLocaleData","warnUnknownOptions","mergeRawOptions","currentRaw","currentRefined","Fr","processRawViewOptions","explicitLocale","isLoadingFunc","rawDef","rawDefs","refineInputs","parseBusinessHours","viewName","dataManager","CalendarDataProvider","prevProps","newOptionOverrides","SegHierarchy","strictOrder","allowReslicing","maxCoord","maxStackCnt","levelCoords","entriesByLevel","stackCnts","addSegs","segInputs","hiddenEntries","segInputs_1","segInput","insertEntry","spanStart","spanEnd","thickness","findInsertion","isInsertionValid","insertEntryAt","handleInvalidInsertion","levelCoord","stackCnt","touchingEntry","splitEntry","barrier","partCnt","splitHiddenEntries","nextLevel","insertAt","lateralEnd","buildEntryKey","newEntry","levelCnt","lateralStart","resCoord","searchRes","binarySearch","getEntrySpanEnd","toRects","rects","entries_1","merges","entries_2","filteredMerges","hungryMerge","merges_1","searchVal","getItemVal","startIndex","endIndex","middleIndex","middleVal","Interaction","isHitComboAllowed","useEventCenter","interactionSettingsStore","ElementDragging","setMirrorIsVisible","bool","setMirrorNeedsRevert","setAutoScrollEnabled","DRAG_META_REFINERS","leftoverProps","ToolbarSection","widgetGroups","widgetGroup","renderWidgetGroup","isOnlyButtons","widgetGroup_1","widget","ariaAttrs","buttonClasses","activeButton","isTodayEnabled","isPrevEnabled","isNextEnabled","onClick","groupClassName","Toolbar","startContent","endContent","model","forceLtr","centerContent","extraClassName","renderSection","ViewContainer","handleEl","updateAvailableWidth","handleResize","liquid","EventClicking","handleSegClick","segEl","getElSeg","hasUrlContainer","href","listenBySelector","EventHovering","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","triggerEvent","removeHoverListeners","onMouseEnter","onMouseLeave","currentMatchedChild","mouseOverEv","mouseLeaveEv","realOnMouseLeave_1","listenToHoverBySelector","publicEvName","buildViewContext","buildViewPropTransformers","buildToolbarProps","handleNavLinkClick","_handleNavLinkClick","headerRef","footerRef","interactionsStore","settingsInput","parseInteractionSettings","interactions","TheInteractionClass","resizeRunner","viewAspectRatio","toolbarProps","viewVGrow","viewContext","renderView","buildAppendContent","CalendarInteractionClass","anchorEl","navLinkOptions","customAction","todayInfo","prevInfo","nextInfo","theClasses","TheClass","handleBeforePrint","handleAfterPrint","getCanVGrowWithinCell","TableDateCell","dayMeta","getDateMeta","getDayClassNames","navLinkAttrs","colCnt","buildNavLinkData","extraHookProps","renderInner$1","colSpan","extraDataAttrs","isSticky","TableDowCell","dateMeta","extraClassNames","NowTimer","initialNowDate","initialNowQueriedMs","computeTiming","currentState","unroundedNow","currentUnitStart","nextUnitStart","waitMs","buildDayRange","DayHeader","createDayHeaderFormatter","dates","datesRepDistinctDays","renderIntro","explicitFormat","dateCnt","computeFallbackHeaderFormat","DaySeriesModel","indices","dayIndex","cnt","sliceRange","firstIndex","getDateDayIndex","lastIndex","clippedFirstIndex","clippedLastIndex","ceil","dayOffset","DayTableModel","daySeries","breakOnWeeks","daysPerRow","rowCnt","cells","buildCells","headerDates","buildHeaderDates","rows","row","col","buildCell","seriesSeg","nextIndex","firstCol","lastCol","Slicer","sliceBusinessHours","_sliceBusinessHours","sliceDateSelection","_sliceDateSpan","sliceEventStore","_sliceEventStore","sliceEventDrag","_sliceInteraction","sliceEventResize","forceDayIfListItem","sliceProps","extraArgs","eventSegs","dateSelectionSegs","businessHourSegs","fgEventSegs","bgEventSegs","sliceNowDate","computeActiveRange","rangeRes","sliceEventRanges","affectedInstances","fabricateEventRange","segs_1","eventRanges","eventRanges_1","sliceEventRange","segs_2","isComponentAllDay","rangeContainsRange","isNewPropsValid","calendarState","dateSpanMeta","filterConfig","subjectEventStore","subjectDefs","subjectInstances","subjectConfigs","otherEventStore","removals","excludeInstances","otherDefs","otherInstances","otherConfigs","subjectInstanceId","subjectInstance","subjectRange","subjectConfig","subjectDef","allConstraintsPass","eventOverlapFunc","otherInstanceId","otherInstance","calendarEventStore","subjectAllow","subjectDateSpan","origDef","b0","isInteractionPropsValid","relevantEventStore","relevantDefs","relevantInstances","selectionRange","selectOverlapFunc","relevantInstanceId","relevantInstance","selectionAllow","isDateSelectionPropsValid","businessHoursUnexpanded","constraints_1","anyRangesContainRange","constraintToRanges","eventStoreToRanges","outerRanges","outerRanges_1","VISIBLE_HIDDEN_RE","Scroller","liquidIsAbsolute","isAbsolute","overcomeLeft","overcomeRight","overcomeBottom","needsXScrolling","realClientWidth","getYScrollbarWidth","needsYScrolling","realClientHeight","getXScrollbarWidth","RefMap","masterCallback","currentMap","depths","callbackMap","handleValue","removed","added","refCallback","collect","step","collectFromHash","sectionConfig","cols0","cols1","cols","shrinkWidth","colNodes","cols_1","colProps","sanitizeShrinkWidth","wholeTableVGrow","tableMinWidth","SimpleScrollGrid","processCols","isColPropsEqual","renderMicroColGroup","scrollerRefs","scrollerElRefs","_handleScrollerEl","forceYScrollbars","scrollerClientWidths","scrollerClientHeights","handleSizing","computeShrinkWidth","computeScrollerDims","sectionConfigs","sections","microColGroupNode","getScrollGridClassNames","collapsibleWidth","currentConfig","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","isBuggy","outerContent","getSectionClassNames","renderChunkTd","chunk","chunkConfig","getSectionHasLiquidHeight","getAllowYScrolling","isLiquid","wt","sectionKey","tableClassName","syncRowHeights","tableColGroupNode","rowContent","renderChunkContent","rowSyncHeights","reportRowHeightChange","scrollerEl","section","sections_1","getSectionByKey","scrollerElRef","cols_2","hasShrinkWidth","chunkEls","shrinkCells","containers","allMatches","findElements","largestWidth","shrinkCells_1","computeSmallestCellWidth","scrollbarWidth","computeScrollbarWidths","getScrollbarWidths","scroller","harnessEl","EventRoot","timeText","isDraggable","disableDragging","computeSegDraggable","isStartResizable","disableResizing","computeSegStartResizable","isEndResizable","computeSegEndResizable","isMirror","isResizing","isDateSelecting","isSelected","standardClassNames","getEventClassNames","setElSeg","StandardEvent","buildSegTimeText","defaultTimeFormat","renderInnerContent$1","getSegAnchorAttrs","innerProps","NowIndicatorRoot","isAxis","DAY_NUM_FORMAT","DayCellContent","refineDayCellHookProps","showDayNumber","extraProps","dayNumberText","DayCellRoot","refineHookProps","dataAttrs","fillType","BgEvent","WeekNumberRoot","defaultFormat","renderInner","Popover","handleDocumentMousedown","getEventTargetViaRoot","handleCloseClick","onClose","extraAttrs","parentEl","alignmentEl","alignGridTop","alignmentRect","clippingParents","getClippingParents","clippingParents_1","intersection","intersectRects","computeClippedClientRect","popoverDims","popoverTop","popoverLeft","origin_1","offsetParent","MorePopover","startDate","dayClassNames","extraDateSpan","dayEl","layer","MoreLinkRoot","linkElRef","isPopoverOpen","handleClick","computeRange","allDayDate","allSegs","buildPublicSeg","hiddenSegs","handlePopoverClose","moreCnt","shortText","renderMoreLinkInner","alignmentElRef","popoverContent","updateParentEl","computeEarliestSegStart","computeLatestSegEnd","pickEarliestStart","seg0","seg1","pickLatestEnd","TableView","headerElRef","renderSimpleLayout","headerRowContent","bodyContent","getStickyHeaderDates","renderHScrollLayout","ScrollGrid","getStickyFooterScrollbar","chunks","renderScrollShim","colGroups","byRow","byCol","TableCellTop","renderTopInner","forceDayTop","DEFAULT_TABLE_EVENT_TIME_FORMAT","TableBlockEvent","TableListItemEvent","TableCellMoreLink","compileSegs","singlePlacements","invisibleSegs","isForcedInvisible","hasListItemDisplay","getSegMeta","singlePlacements_1","placement","DEFAULT_WEEK_NUM_FORMAT","TableCell","dayElRef","rootDataAttrs","showWeekNumber","weekElRef","weekClassNames","fgContentElRef","fgContent","moreMarginTop","bgContent","DayGridSegHierarchy","hiddenConsumes","forceHidden","excludeHidden","lateral","leadingEntry","placeholderEntry","placeholderEntryId","TableRow","cellElRefs","frameElRefs","fgElRefs","segHarnessRefs","framePositions","maxContentHeight","eventInstanceHeights","businessHoursByCol","splitSegsByFirstCol","bgEventSegsByCol","highlightSegsByCol","getHighlightSegs","mirrorSegsByCol","getMirrorSegs","hierarchy","unknownHeightSegs","eventHeight","allRects","rectsByEachCol","rects_3","groupRectsByEachCol","singleColPlacements","multiColPlacements","leftoverMargins","currentHeight","currentMarginTop","rects_1","resliceSeg","absoluteTop","multiPlacements","rects_2","isFirstCol","placeRects","moreCnts","moreMarginTops","unknownHeightSegs_1","hiddenEntries_1","hiddenEntry","computeFgSegPlacement","sortEventSegs","cell","normalFgNodes","renderFgSegs","mirrorFgNodes","mirrorSegs","colPlacements","topsByInstanceId","colPlacements_1","placements_1","buildAbsoluteTopHash","buildMirrorPlacements","showDayNumbers","showWeekNumbers","renderFillSegs","updateSizing","prevState","currentProps","segPlacements","nodes","segPlacements_1","leftRightCss","buildEventRangeKey","renderFill","isExternalSizingChange","frameEls","limitByContentHeight","queryEventInstanceHeights","computeMaxContentHeight","segElMap","firstKey","fcContainerEl","getCellEls","elMap","Table","splitBusinessHourSegs","splitSegsByRow","splitBgEventSegs","splitFgEventSegs","splitDateSelectionSegs","splitInteractionByRow","rowRefs","businessHourSegsByRow","bgEventSegsByRow","fgEventSegsByRow","dateSelectionSegsByRow","eventDragByRow","eventResizeByRow","limitViaBalanced","colGroupNode","renderRowIntro","isSegAllDay","rowPositions","rowObj","colPositions","getCellRange","getCellEl","DayTableSlicer","dayTableModel","DayTable","slicer","tableRef","headerAlignElRef","DayTableView","buildDayTableModel","headerContent","contentArg","TableDateProfileGenerator","endOfWeek","addWeeks","diffWeeks","main","dayGrid","dayGridDay","dayGridWeek","dayGridMonth","ignoreMouseDepth","listenerCnt","isWindowTouchMoveCancelled","PointerDragging","containerEl","subjectEl","handleSelector","shouldIgnoreMove","shouldWatchScroll","isTouchDragging","wasTouchScroll","shouldIgnoreMouse","isPrimaryMouseButton","tryStart","createEventFromMouse","initScrollWatch","handleMouseMove","recordCoords","cleanup","handleTouchStart","createEventFromTouch","targetEl","handleTouchMove","handleTouchEnd","handleTouchScroll","startIgnoringMouse","prevScrollX","prevPageX","prevScrollY","prevPageY","isTouch","deltaX","origPageX","deltaY","origPageY","onWindowTouchMove","listenerCreated","listenerDestroyed","querySubjectEl","destroyScrollWatch","cancelTouchScroll","isFirst","we","ElementMirror","sourceEl","mirrorEl","sourceElRect","revertDuration","origScreenX","origScreenY","updateElPosition","handleMove","setIsVisible","stop","needsRevertAnimation","doRevertAnimation","finalSourceElRect","whenTransitionDone","getMirrorEl","boxSizing","ScrollGeomCache","scrollController","doesListening","handleScrollChange","origScrollTop","origScrollLeft","computeClientRect","getEventTarget","ElementScrollGeomCache","computeInnerRect","WindowScrollGeomCache","performance","AutoScroller","scrollQuery","edgeThreshold","maxVelocity","pointerScreenX","pointerScreenY","isAnimating","scrollCaches","everMovedUp","everMovedDown","everMovedLeft","everMovedRight","edge","computeBestEdge","handleSide","msSinceRequest","requestAnimation","buildCaches","yDelta","xDelta","scrollCache","invDistance","velocity","bestSide","leftDist","rightDist","topDist","bottomDist","queryScrollEls","FeaturefulElementDragging","minDistance","touchScrollAllowed","mirrorNeedsRevert","isInteracting","isDelayEnded","isDistanceSurpassed","delayTimeoutId","onPointerDown","preventSelection","preventContextMenu","pointer","mirror","startDelay","handleDistanceSurpassed","onPointerMove","autoScroller","onPointerUp","allowSelection","allowContextMenu","tryStopDrag","handleDelayEnd","tryStartDrag","stopDrag","setIgnoreMove","OffsetTracker","origRect","scrollEl","computeLeft","computeTop","isWithinClipping","isIgnoredClipping","pointInsideRect","tagName","HitDragging","dragging","droppableStore","useSubjectCenter","requireInitial","initialHit","movingHit","finalHit","handlePointerDown","processFirstCoord","handleDragStart","handleDragMove","handlePointerUp","releaseHits","handleDragEnd","subjectRect","origPoint","adjustedPoint","constrainPoint","queryHitForOffset","slicedSubjectRect","getRectCenter","coordAdjust","diffPoints","forceHandle","hit","isHitsEqual","offsetTrackers","interactionSettings","offsetLeft","offsetTop","bestHit","offsetTracker","originLeft","originTop","componentId","hit0","hit1","isDateSpansEqual","dateStr","buildDatePointApi","DateClicking","downEl","hitDragging","buildDatePointApiWithContext","interactionSettingsToStore","DateSelecting","dragSelection","canSelect","getComponentTouchDelay$1","handleHitUpdate","isFinal","isInvalid","dateSpan0","dateSpan1","compareNumbers","dateSelectionTransformers_1","joinHitsIntoSelection","isDateSelectionValid","disableCursor","enableCursor","EventDragging","subjectSeg","receivingContext","validMutation","mutatedRelevantEvents","origTarget","initialContext","getComponentTouchDelay","Rn","fixedMirrorParent","receivingOptions","massagers","massagers_1","massager","computeEventMutation","isInteractionValid","displayDrag","cn","initialContext_1","receivingContext_1","relevantEvents_1","mutatedRelevantEvents_1","clearDrag","updatedEventApi","eventChangeArg","transformed","eventRemoveArg","draggedEl","addedEventInstance","addedEventApi","eventAddArg","SELECTOR","nextContext","prevContext","initialCalendar","EventResizing","draggingSegEl","draggingSeg","querySegEl","isFromStart","computeMutation","gn","UnselectAuto","isRecentPointerDateSelect","matchesCancel","matchesEvent","onSelect","selectInfo","onDocumentPointerDown","onDocumentPointerUp","documentPointer","OPTION_REFINERS","LISTENER_REFINERS","dateClick","eventDragStart","eventDragStop","eventDrop","eventResizeStart","eventResizeStop","eventReceive","eventLeave","suppliedDragMeta","droppableEvent","dragMeta","buildDragMeta","canDropElOnCalendar","defProps","computeEventForDateSpan","finalView","addingEvents_1","ExternalElementDragging","parseDragMeta","getEmbeddedElData","getDragMetaFromEl","mirrorSelector","currentMirrorEl","handlePointerMove","InferredElementDragging","ListViewHeaderRow","dayDate","listDayFormat","sideText","listDaySideFormat","navLinkData","DEFAULT_TIME_FORMAT","ListViewEventRow","renderEventInnerContent","doAllDay","isMultiDayRange","Ye","renderAllDayInner","buildTimeContent","ListView","computeDateVars","eventStoreToSegs","_eventStoreToSegs","setRootEl","dayDates","dayRanges","renderSegList","renderEmptyMessage","noEventsClassNames","noEventsContent","renderNoEventsInner","noEventsDidMount","noEventsWillUnmount","segsByDay","groupSegsByDay","innerNodes","daySegs","dayStr","daySegs_1","eventRangesToSegs","eventRangeToSegs","viewEnd","createFalsableFormatter","listDay","listWeek","listMonth","listYear","AllDaySplitter","timed","hasBgRendering","DEFAULT_SLAT_LABEL_FORMAT","isLabeled","isoTimeStr","labelFormat","TimeBodyAxis","slatMetas","slatMeta","TimeColsAxisCell","TimeColsView","allDaySplitter","slatCoords","handleScrollTopRequest","renderHeadAxis","rowKey","frameHeight","renderTableRowAxis","rowHeight","handleSlatCoords","timeContent","isNowIndicator","nowIndicatorTop","safeComputeTop","getAllDayMaxEventProps","TimeColsSlatsCoords","startOfDayDate","timeMs","computeTimeTop","computeDateTop","when","slatIndex","slatRemainder","slatCoverage","TimeColsSlatsBody","slatElRefs","TimeColsSlats","onCoords","collectSlatEls","segsByCol","TimeColMoreLink","renderPlainFgSegs","hiddenGroups","groupIntersectingEntries","web","buildNode","cacheable","siblingRange","subjectLevel","subjectLateral","subjectEntry","afterSubject","searchIndex","findNextLevelSegs","nextLevelRes","buildNodes","nextLevelNodes","buildWeb","topLevelNodes","totalThickness","stretchNode","startCoord","prevThickness","endCoord","allThickness","thicknessFraction","newChildren","nextLevelNodes_1","childNode","newThickness","stretchWeb","segRects","processNode","stackDepth","stackForward","processNodes","nodes_1","webToRects","pairs","cmpDescPressures","extractNode","keyFunc","workFunc","TimeColEvent","isShort","TimeColMisc","TimeCol","computeFgSegPlacements","isSelectMirror","interactionAffectedInstances","sortedFgSegs","renderNowIndicator","nowIndicatorSegs","segIsInvisible","renderPositionedFgSegs","buildSegInputs","renderHiddenGroups","segRect","positionCss","computeSegTopBottomCss","computeSegLeftRightCss","hiddenGroup","segEntries","segEntry","compileSegsFromEntries","segLike","shouldOverlap","nearCoord","farCoord","hiddenInstances","TimeColsContent","splitSegsByCol","splitNowIndicatorSegs","splitInteractionByCol","nowIndicatorSegsByRow","updateCoords","onColCoords","collectCellEls","TimeCols","processSlotOptions","onScrollTopRequest","top_1","handleColCoords","colCoords","onSlatCoords","scrollResponder","snapsPerSlot","colIndex","slatTop","slatHeight","localSnapIndex","addDurations","multiplyDuration","snapDurationOverride","wholeDivideDurations","DayTimeColsSlicer","DayTimeCols","buildDayRanges","timeColsRef","STOCK_SUB_DURATIONS","explicitLabelInterval","slatTime","slatIterator","labelInterval","slotsPerLabel","computeLabelInterval","metas","formatIsoTimeString","DayTimeColsView","buildTimeColsModel","buildSlatMetas","hasAttachedAxis","hasDetachedAxis","allDaySlot","timeGridContent","timeGrid","timeGridDay","timeGridWeek","_c1","_c2","_c3","searchTerm","ctx_r0","headerTemplate","filterValue","ctx_r4","footerTemplate","_c4","_c5","_r13","item_r7","ctx_r9","escapeHTML","_c6","NgSelectComponent_ng_container_4_div_1_ng_template_1_Template","NgSelectComponent_ng_container_4_div_1_ng_template_3_Template","_r8","ctx_r6","labelTemplate","clearItem","NgSelectComponent_ng_container_4_div_1_Template","selectedItems","trackByOption","_c7","NgSelectComponent_5_ng_template_0_Template","ctx_r1","multiLabelTemplate","selectedValues","NgSelectComponent_ng_container_9_ng_template_1_Template","NgSelectComponent_ng_container_9_ng_template_3_Template","_r16","ctx_r3","loadingSpinnerTemplate","clearAllText","item_r24","ctx_r26","_c8","a3","item$","_r30","toggleItem","onItemHover","NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_1_Template","NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_3_Template","_r25","ctx_r19","itemsList","markedItem","htmlId","optgroupTemplate","optionTemplate","ctx_r33","addTagText","_r36","unmarkItem","selectTag","NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_1_Template","NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_3_Template","_r32","ctx_r20","tagTemplate","ctx_r39","notFoundText","NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_1_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_3_Template","_r38","ctx_r21","notFoundTemplate","ctx_r42","typeToSearchText","NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_1_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_3_Template","_r41","ctx_r22","typeToSearchTemplate","ctx_r45","loadingText","NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_1_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_3_Template","_r44","ctx_r23","loadingTextTemplate","_r48","viewPortItems","scrollToEnd","NgSelectComponent_ng_dropdown_panel_13_div_2_Template","NgSelectComponent_ng_dropdown_panel_13_div_3_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_4_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_5_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_6_Template","ctx_r5","virtualScroll","bufferAmount","appendTo","dropdownPosition","filteredItems","dropdownId","showAddTag","showNoItemsFound","showTypeToSearch","unescapedHTMLExp","hasUnescapedHTMLExp","RegExp","htmlEscapes","isDefined","Function","NgItemLabelDirective","escape","string","chr","ngItemLabel","NgOptionTemplateDirective","NgOptgroupTemplateDirective","NgLabelTemplateDirective","NgMultiLabelTemplateDirective","NgHeaderTemplateDirective","NgFooterTemplateDirective","NgNotFoundTemplateDirective","NgTypeToSearchTemplateDirective","NgLoadingTextTemplateDirective","NgTagTemplateDirective","NgLoadingSpinnerTemplateDirective","ConsoleService","random","diacritics","ItemsList","_ngSelect","_selectionModel","_items","_filteredItems","_markedIndex","hideSelected","maxSelectedItems","jt","mapItem","groupBy","_groups","_groupBy","_flatten","maxItemsSelected","clearSelected","selectableGroupAsModel","_hideSelected","_showSelected","findBy","compareWith","bindValue","resolveNested","bindLabel","option","keepDisabled","marked","resetFilteredItems","term","stripSpecialChars","_defaultSearchFn","zi","matchedItems","Ri","go","vr","last","Ti","oo","_stepToItem","markDefault","lastMarkedIndex","_getLastMarkedIndex","isObject","$ngOptionLabel","$ngOptionValue","bi","Ai","findItem","Zr","child","opt","steps","_getNextItemIndex","selectedIndex","lastSelectedItem","markedIndex","groups","isFnKey","isFunction","group","isGroupByFn","withoutGroup","isObjectKey","selectableGroup","newId","groupKey","groupValue","KeyCode","Tab","Enter","Esc","Space","ArrowUp","ArrowDown","Backspace","NgDropdownPanelService","_dimensions","itemHeight","panelHeight","itemsPerViewport","scrollPos","itemsLength","indexByScrollTop","maxStart","topPadding","itemTop","lastScroll","dimensions","itemBottom","TOP_CSS_CLASS","BOTTOM_CSS_CLASS","SCROLL_SCHEDULER","NgDropdownPanelComponent","_renderer","_panelService","outsideClick","_destroy$","_scrollToEndFired","_updateScrollHeight","_lastScrollPosition","_dropdown","_currentPosition","_itemsLength","_onItemsLengthChanged","_select","_virtualPadding","paddingElementRef","_scrollablePanel","scrollElementRef","_contentPanel","contentElementRef","_handleScroll","_handleOutsideClick","_appendDropdown","_onItemsChange","startFromOption","getScrollTo","panel","_updateYPosition","_calculateCurrentPosition","addClass","removeClass","path","_onContentScrolled","_checkToClose","_updateItemsRange","_setVirtualHeight","_updateItems","setDimensions","_handleDropdownPosition","_measureDimensions","_renderItemsRange","_startOffset","_fireScrollToEnd","calculateItems","_updateVirtualHeight","optionHeight","dropdownEl","selectRect","_updateXPosition","handleMousedown","NgDropdownPanelComponent_div_0_Template","NgDropdownPanelComponent_div_8_Template","NgOptionComponent","stateChange$","_isDisabled","textContent","_previousLabel","NgSelectConfig","disableVirtualScroll","openOnEnter","appearance","SELECTION_MODEL_FACTORY","NgSelectComponent","newSelectionModel","_cd","_console","markFirst","closeOnSelect","selectOnTab","trackByFn","clearOnBackspace","labelForId","inputAttrs","readonly","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","addTag","searchable","clearable","isOpen","blurEvent","focusEvent","openEvent","closeEvent","searchEvent","clearEvent","removeEvent","useDefaultClass","_defaultLabel","_pressedKeys","_isComposing","_keyPress$","_onChange","_onTouched","_mergeGlobalConfig","_itemsAreUsed","_compareWith","_clearSearchOnAdd","dropdownPanel","_handleKeyPresses","_setInputAttributes","_setItems","_manualOpen","_setItemsFromNgOptions","which","handleKeyCode","_handleArrowDown","_handleArrowUp","_handleSpace","_handleEnter","_handleTab","_handleBackspace","handleClearClick","handleArrowClick","focused","toggle","hasValue","_updateNgModel","_clearSearch","_onSelectionChanged","_handleWriteValue","_isTypeahead","noItemsToSelect","markSelectedOrDefault","_editableSearchTerm","_setSearchTermFromItems","clearSearchOnAdd","searchInput","blur","tag","_primitive","handleTag","isPromise","_validTerm","empty","typeahead","markItem","destroyed","firstItem","setItems","mapSelectedItems","ngOptions","changedOrDestroyed","handleOptionChange","validateBinding","ngModel","_isValidWriteValue","isValObject","Vi","letter","findByLabel","_scrollToMarked","autocorrect","autocapitalize","autocomplete","Ei","_changeSearch","scrollToTag","adjustPosition","_nextItemIsTag","_scrollToTag","markNextItem","markPreviousItem","nextStep","clearModel","handleKeyDown","NG_VALUE_ACCESSOR","forwardRef","_r52","NgSelectComponent_ng_container_4_Template","NgSelectComponent_5_Template","_r2","onCompositionStart","onCompositionEnd","onInputFocus","onInputBlur","NgSelectComponent_ng_container_9_Template","NgSelectComponent_span_10_Template","NgSelectComponent_ng_dropdown_panel_13_Template","showClear","DefaultSelectionModel","_selected","groupAsModel","childrenCount","selectedCount","_setChildrenSelectedState","_removeChildren","_activeChildren","_removeParent","ɵ0","NgSelectModule","CommonModule","TranslateLoader","TranslateFakeLoader","lang","ɵTranslateFakeLoader_BaseFactory","MissingTranslationHandler","FakeMissingTranslationHandler","o1","o2","keySet","t1","equals","mergeDeep","TranslateParser","TranslateDefaultParser","templateMatcher","expr","interpolateString","interpolateFunction","Re","ɵTranslateDefaultParser_BaseFactory","TranslateCompiler","TranslateFakeCompiler","translations","ɵTranslateFakeCompiler_BaseFactory","TranslateStore","currentLang","defaultLang","langs","onTranslationChange","onLangChange","onDefaultLangChange","USE_STORE","USE_DEFAULT_LANG","DEFAULT_LANGUAGE","USE_EXTEND","TranslateService","store","currentLoader","compiler","parser","missingTranslationHandler","useDefaultLang","isolate","extend","defaultLanguage","pending","_onTranslationChange","_onLangChange","_onDefaultLangChange","_langs","_translations","_translationRequests","setDefaultLang","_defaultLang","_currentLang","retrieveTranslations","changeDefaultLang","changeLang","getTranslation","loadingTranslations","shareReplay","compileTranslations","updateLangs","shouldMerge","addLangs","interpolateParams","an","observables","getParsedResult","isObservable","mn","forkJoin","interpolate","translateService","concatMap","compile","resetLang","browserLang","languages","language","browserLanguage","userLanguage","browserCultureLang","TranslateDirective","_ref","onTranslationChangeSub","checkNodes","onLangChangeSub","onDefaultLangChangeSub","currentParams","setContent","lastKey","lookupKey","getContent","trimmedContent","originalContent","updateValue","lastParams","onTranslation","translate","translateParams","TranslatePipe","validArgs","SyntaxError","_dispose","ɵpipe","pure","TranslateModule","loader","classFunction","arrayParam","nameSpace","splits","isUndefined","fromObj","jn","isNullOrUndefined","containerObject","enumObject","enumValue","temrObj","tempProp","deepmerge","copied","deep","src","isArrayChanged","blazorEventExtend","isBlazor","Event","ge","definedName","eventFunction","out","later","compareElementParent","stack","printWindow","div","links","getElementsByTagName","blinks","outerHTML","write","setInterval","ready","print","clearInterval","isBlazorPlatform","elem","IntlBase","defaultNumberingSystem","latn","_digits","_type","defaultNumberSymbols","decimal","percentSign","plusSign","minusSign","infinity","nan","exponential","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","propKeys_1","getSymbolRegex","regexStr","getSymbolMatch","ret","matchKeys_1","constructRegex","convertValueParts","regex","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","cur","digits","numericPair","regExp","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","isNumber","mapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","DJF","ERN","ETB","NAD","ZAR","XAF","GHS","XDR","AED","BHD","DZD","EGP","ILS","IQD","JOD","KMF","KWD","LBP","LYD","MAD","MRU","OMR","QAR","SAR","SDG","SOS","SSP","SYP","TND","YER","CLP","INR","TZS","EUR","AZN","RUB","BYN","ZMW","BGN","NGN","XOF","BDT","CNY","BAM","UGX","USD","CZK","GBP","DKK","KES","CHF","MVR","BTN","XCD","AUD","BBD","BIF","BMD","BSD","BWP","BZD","CAD","NZD","FJD","FKP","GIP","GMD","GYD","HKD","IDR","JMD","KYD","LRD","MGA","MOP","MUR","MWK","MYR","PGK","PHP","PKR","RWF","SBD","SCR","SEK","SGD","SHP","SLL","ANG","SZL","TOP","TTD","VUV","WST","ARS","BOB","BRL","COP","CRC","CUP","DOP","GTQ","HNL","MXN","NIO","PAB","PEN","PYG","UYU","VES","IRR","GNF","CDF","HTG","XPF","HRK","HUF","AMD","ISK","JPY","GEL","CVE","KZT","KHR","KPW","KRW","KGS","AOA","LAK","MZN","MKD","MNT","BND","MMK","NOK","NPR","AWG","SRD","PLN","AFN","STN","MDL","RON","UAH","LKR","ALL","RSD","TJS","THB","TMT","TRY","UZS","VND","TWD","defaultCurrencyCode","DateFormat","blazorCultureFormats","R","Y","negativeDataRegex","customRegex","latnParseRegex","fractionRegex","defaultCurrency","patternRegex","patternMatch","yy","EEEE","E","dateConverterMapper","islamicRegex","firstDayMapper","sun","mon","tue","wed","thu","fri","sat","formatRegex","currencyFormatRegex","curWithoutNumberRegex","typeMapper","skeleton","dateObject","isIslamic","blazorCulture","resPattern","iType","compareBlazorDateFormats","basicPatterns","dPattern","tPattern","cldr","culture","calendartype","parserObject","defaultObject","numericObject","numSystem","isAccount","formatOptions","curFormatMapper","ConvertDateToWeekFormat","pattern","patternMatcher","fractionDigits","needFraction","cSymbol","fractionOnly","nData","nlead","nend","changeCurrencySymbol","groupPattern","fraction","fmatch","minimumFraction","maximumFraction","sym","currencyCode","altSymbol","ignoreCurrency","getCurrency","dOptions","numObject","cOptions","minimumFractionDigits","maximumFractionDigits","integerPart","spaceCapture","spaceGrouping","useGrouping","fractionPart","minimumIntegerDigits","lastIndexOf","me","isCurrencyPercent","isCustomFormat","currencySymbol","isCurrency","percentSymbol","symbolPattern","getSymbolPattern","numberMapper","groupSeparator","groupData","getGroupingDetails","actual","symbol","loc","minDigits","maxDigits","temp","integer","no","dateParseRegex","calendars","gregorian","abbreviated","narrow","wide","short","dayPeriods","am","pm","eras","eraNames","eraAbbr","eraNarrow","dateFormats","long","medium","timeFormats","dateTimeFormats","availableFormats","Ed","Ehm","EHm","Ehms","EHms","Gy","GyMMM","GyMMMd","GyMMMEd","hm","Hm","hms","Hms","hmsv","Hmsv","hmv","Hmv","Md","MEd","MMM","MMMd","MMMEd","MMMMd","yM","yMd","yMEd","yMMM","yMMMd","yMMMEd","yMMMM","islamic","yyyy","yyyyM","yyyyMd","yyyyMEd","yyyyMMM","yyyyMMMd","yyyyMMMEd","yyyyMMMM","yyyyQQQ","yyyyQQQQ","timeZoneNames","hourFormat","gmtFormat","gmtZeroFormat","numbers","currencies","displayName","minimumGroupingDigits","superscriptingExponent","perMille","standard","accounting","blazorDefaultObject","mapperDigits","currencypData","primary","percentpData","percentnData","currencynData","decimalnData","decimalpData","dateSeperator","monthIndex","getResultantPattern","getDependables","getProperNumericSkeleton","getFormatData","getCurrencySymbol","customFormat","formatSplit","customNumberFormat","pData","minusSymbol","getDateSeparator","dateObj","getActualDateTimeFormat","isExcelFormat","dependable","actualPattern","tLength","timeZonePattern","options_1","numMapper","timezone","Gs","getTimeZoneValue","processSymbol","getActualNumberFormat","isExcel","minFrac","parseOptions","curMatch","curCode","currency","hasNegativePattern","fractionDigitsPattern","minimumIntegerPattern","groupingPattern","cPattern","Un","getWeekData","iCulture","replaceBlazorCurrency","aCurrency","rCurrency","iCurrency","getBlazorCurrencySymbol","pData_1","getWeekOfYear","weeknum","newYear","getDay","daynum","nday","headerRegex","Ajax","emitError","eventArgs","cancel","onreadystatechange","stateChange","onProgress","onprogress","onAbort","onabort","onUploadProgress","upload","beforeSend","successHandler","onSuccess","failureHandler","reason","onFailure","dataType","readyState","responseHeaders","header","Fetch","contentTypes","fetchRequest","fetchResponse","returnVal","REGX_MOBILE","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","CHROME","PANTHOMEJS","MSIE","MOZILLA","browserDetails","Browser","extractBrowserDetail","browserInfo","clientInfo","getEvent","isPointer","isDevice","move","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","isSafari","isIos","regX","maxTouchPoints","Capacitor","getPlatform","uA","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","bindTo","intDebounce","debounceListener","eventData","debounce","isIE","clearEvents","copyData","parseValue","eventProp","eventData_1","event_1","SVG_REG","properties","attrs","getClassList","ele","classList_1","curClass","flag","classList_2","classArr","fromElements","toElement","isEval","docFrag","createDocumentFragment","firstElementChild","executeScript","NodeList","script","iKey","needsVDOM","querySelectId","nodeList","charRegex","idList","splitId","setId","addClasses","removeClasses","webkitMatchesSelector","Observer","ranArray","boundedEvents","cntxt","notExist","isHandlerPresent","curObject","indexLocation","notify","argument","errorHandler","blazor","blazorCallback","curObject_1","isTrigger","obj_1","isJson","dateReviver","offIntlEvents","eventsArr","notifyExternalChange","curContext","detectFunction","randomId","isReactMock","boundedEvents_1","isColEName","Base","isComplexArraySetter","isServerRendered","allowServerDataBinding","isProtectedOnChange","changedProperties","oldProperties","bulkChanges","refreshing","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","addInstance","setProperties","isDestroyed","muteOnChange","prevDetection","qe","dataBind","callChildDataBind","clearChanges","getOwnPropertyNames","newChanges","oldChanges","onPropertyChanged","serverDataBind","saveChanges","oldValue","unbind","msCrypto","crypto","getRandomValues","secret","combineArray","messageHandler","postMessage","setImmediate","Je","moduleClass","getModuleName","ej2_instances","comp","getElementById","curKey","createInstance","isSetter","isFactory","curType","oldVal","getObject","defCollection","getObjectArray","ignore","controlParent","extendFunc","descriptor","complexArrayDefinedCallback","oldValueCollection","newValCollection","dFunc","keyString","getParentKey","newValueParse","getArrayModel","ejsAction","isControlParent","arrayFunction","modelObject","propertyDescriptor","propertySetter","propertyGetter","addPropertyCollection","complexSetter","complexGetter","complexArraySetter","complexArrayGetter","eventDescriptor","finalContext","getParentContext","classConstructor","propertyType","propList","complexProps","propNames","complexPropNames","colPropNames","eventNames","curText","extendStatics","__proto__","__decorate","decorators","desc","getOwnPropertyDescriptor","Reflect","decorate","Animation","easing","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","getModel","elements_1","selectAll","delayAnimation","animationId","frameId","animationMode","GlobalAnimationMode","Disable","begin","applyAnimation","timeStamp","timerId","prevTimeStamp","timingFunction","progress","startAnimation","fail","newProp","oldProp","Property","Event$1","NotifyPropertyChanges","rippleOptions","rippleModel","rippleFlag","isCenterRipple","getRippleModel","isRippleEnabled","rippleHandler","rippleUpHandler","rippleLeaveHandler","radius","sqrt","diameter","rippleElement","removeRipple","rippleElements","getElementsByClassName","HijriParser","Enable","ModuleLoader","loadedModules","requiredModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","module","modName","member","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","modules","getNonInjectedModules","usedModules","removableModule_1","mod","deleteObject","MODULE_SUFFIX","ChildProperty","parentObj","isParentArray","updateChange","updateTimeOut","changeTime_1","clearUpdate","curIndex","restrictServerDataBind","isSaveChanges","valueLength","dateCorrection","getHijriDate","gDate","tMonth","tYear","yPrefix","julilanOffset","julianNumber","tempMonth","modifiedJulianDate","iyear","cyc","iy","im","tempDay","iln","ii","hYear","hmonth","hDate","toGregorian","gDay","gMonth","gYear","abbreviateRegexGlobal","standalone","weekdayKey","timeSetter","datePartMatcher","DateFormat$1","dateFormat","throwError","patternMatch_1","char","designator","intDateFormatter","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","processNumber","curstr","dr","curlength","desig","dec","retu","pattern_1","$a","checkTwodigitNumber","tVal","curPattern","ishour","setDateFormat","errorText","ls","mf","lf","NumberFormat$1","numberFormatter","fOptions","symbols","isPercent","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","mval","mfrac","lfrac","isFinite","intNumberFormatter","secondary","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","curData","be","zeroData","fValue","processSignificantDigits","processFraction","processMinimumIntegers","decimalPart","toExponential","customPivotFormat","groupNumbers","toPrecision","level1","sep","decimalSymbol","level2","toFixed","lead","setNumberFormat","standalone$1","latnRegex","timeSetter$1","DateParser","dateParser","hourOnly","numOptions","regexString","evalposition","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","canUpdate","charKey","weekObject","hour12","Zs","periodValur","tzone","hpattern","parseTimeZoneRegx","parserRegex","parsedDateParts","internalDateParse","dobj","tDate","ystrig","is2DigitYear","getDateObject","setMilliseconds","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","setHours","tzValue","setMinutes","retOptions","props_1","matchString","internalNumberParser","tmatch","getZoneValue","tZone","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","symbolpattern","symbolRegex","getParsedNumber","isNegative","tempValue","Infinity","NaN","exponent","convertMaxFracDigits","decimalSplitValue","onIntlChange","cldrData","defaultCulture","mapper$1","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","parseDate","parseNumber","getDatePattern","getNumberPattern","getFirstDayOfWeek","symbPattern","dateSeparator","accountURL","componentList","bypassKey","LicenseValidator","licKey","isValidated","isLicensed","noLicense","trailExpired","versionMismatched","platformMismatched","invalidKey","manager","setKey","getKey","npxManager","npxLicKey","validate","convertToChar","validateMsg","validateURL","getInfoFromKey","result_1","invalidPlatform","expiryDate","expDate","currDate","licenseContent","zr","errorDiv","getDecryptedData","atob","pkey","decryptedStr","resultArray","isNpxKey","licKeySplit","licKeySplit_1","decodeStr","buffr","decryptedKey","licenseValidator","cArr","cArr_1","lastPageID","__extends$1","__decorate$1","componentCount","lastHistoryLen","instancecount","isvalid","isBannerAdded","uniqueID","isStringTemplate","needsID","isReactHybrid","isAngular","isReact","isVue","enableRtl","moduleLoader","localObserver","enablePersistence","setPersistData","detachUnloadEvent","refresh","preRender","injectModules","accessMount","mount","actualElement","getLocalData","eleId","localStorage","getItem","attachUnloadEvent","handleUnload","getUniqueID","mergePersistData","ignoredComponents","diagram","PdfViewer","grid","richtexteditor","treegrid","gantt","chart","accumulationchart","modulesRequired","moduleName","bannerTemplate","errorBackground","createLicenseOverlay","renderComplete","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","currentContext","calls","setItem","getPersistData","renderReactTemplates","clearTemplate","templateName","isHistoryChanged","pageID","history","addOnPersist","persistObj","objValue","getActualProperties","ignoreOnPersist","iterateJsonProperties","ignoreList","newObj","newList","this_1","__extends$2","__decorate$2","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","diffX","prevLeft","prevTop","dragProcessStarted","eleTop","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","isUnWire","enableTapHold","mobileInitialize","evt","removeTapholdTimer","tapHoldThreshold","getScrollableParent","vertical","horizontal","tempScrollHeight","tempScrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abortSelectors","intCoord","getCoordinates","initialPosition","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","styleProp","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","getMousePosition","isDragScroll","getHelperElement","dragTargetElement","helperElement","parentClientRect","dragStart","getProperTargetElement","bindEvents","dragElement","dragArea","setDragArea","enableTailMode","enableScrollHandler","posValue","getProcessedPositionValue","dragElePosition","setStyleAttribute","getDragPosition","bindDragEvents","intDrag","intDragStop","setGlobalDroppables","elementInViewport","queryPositionInfo","docHeight","getDocumentWidthHeight","docWidth","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","helper","tLeft","tTop","pagex","pagey","dLeft","dTop","enableAutoScroll","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","isDialogEle","tempDraEleTop","dragValue","isPreventScroll","scrollIntoView","getPathElements","scrollParent","getScrollParent","getScrollPosition","hasScroll","nodeEl","scrollingElement","nodeEle","docScrollTop","helperClientHeight","elementsFromPoint","elementLeft","intOut","docBody","docEle","returnValue","dragStop","dragStopCalled","intDrop","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","oldEle","isdragscroll","dragEle","srcElement","isOffsetParent","mt","cursorAt","sender","draggedElement","dropIns","getDropInstance","parent_1","eleInst","eleInst_1","Complex","__extends$3","__decorate$3","Droppable","mouseOver","wireEvents","area","accept","isDrag","isDropArea","canDrop","droppedElement","coord","__extends$4","__decorate$4","backspace","tab","control","alt","capslock","space","pageup","pagedown","home","leftarrow","uparrow","rightarrow","downarrow","insert","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","semicolon","plus","comma","minus","dot","forwardslash","graveaccent","openbracket","backslash","closebracket","singlequote","KeyboardEvents","keyPressHandler","isAltKey","isCtrlKey","isShiftKey","curkeyCode","keyConfigs","configCollection_1","rKeyObj","KeyboardEvents_1","getKeyConfigData","keyAction","unwireEvents","configCache","keyData","getKeyCode","keyVal","L10n","controlName","localeStrings","setLocale","intLocale","intGetControlConstant","currentLocale","load","localeObject","getConstant","__extends$5","__decorate$5","SwipeSettings","swipeRegex","Touch","touchAction","tapCount","startEvent","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","cancelEvent","movedPoint","eScrollArgs","calcScrollPoints","startEvents","originalEvent","startY","distanceX","distanceY","scrollDirection","getVelocity","timeOutTap","swipeFn","tapThreshold","modeclear","endPoint","calcPoints","swipeArgs","swipeDirection","tDistance","swipeSettings","swipeThresholdDistance","eSwipeArgs","defaultArgs","canTrigger","scrollBool","isScrollable","checkSwipe","modeClear","lastTapTime","eleStyle","pnt","newX","newY","newT","xDist","yDist","LINES","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","exp","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","addNS","ignorePrefix","tempStr","double","nameSpaceNew","quotes","NameSpaceForspecialChar","NameSpaceArrObj","addNameSpace","HAS_ROW","HAS_SVG","blazorTemplates","templateString","engineObj","templateId","isEmpty","callBack","templateDiv","innerTemplates","tempId","tempElement","classObj","boundFunc","CSPTemplate","Engine","evalExpResult","varCOunt","localKeys","isClass","singleSpace","insideBraces","outputString","matchStr","rlStr","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","Sr","SlashReplace","evalExp","removeTags","removeAttrs","jsEvents","SanitizeHtmlHelper","beforeSanitize","tags","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","attr","allowEmptyString","exists","valueParsed","object","arr_1","GenericUtils","makeNull","missing","missingOrEmpty","toStringOrNull","attrToNumber","attrToBoolean","attrToString","referenceCompare","jsonEquals","val2Json","defaultComparator","valueA","valueB","accentedCompare","valueAMissing","valueBMissing","toNumber","doQuickCompare","ColumnKeyCreator","existingKeys","addExistingKeys","getUniqueKey","colId","colField","count","idToTry","keysToSkip","sourceIsSimpleObject","isNonNullObject","deepCloneDefinition","getProperty","objects","allValues","anyObject","propertyIsEnumerable","copyUndefined","makeCopyOfSimpleObjects","iterateObject","sourceValue","destValue","fieldContainsDots","fields","currentObject","objectName","proto","getPrototypeOf","defineProperties","ObjectUtils","cloneObject","deepCloneObject","copyPropertiesIfPresent","copyPropertyIfPresent","getAllKeysInObjects","getAllValuesInObject","missingOrEmptyObject","expression","objectToRead","objectToUpdate","deepFreeze","getValueUsingField","removeAllReferences","doOnceFlags","funcConstructor","funcs","executeAfter","executeNextVMTurnFuncs","executeNextVMTurnPending","funcsCopy","wait","immediate","callNow","previousCall","currentCall","condition","timeoutMessage","executed","internalCallback","reachedTimeout","FunctionUtils","doOnce","getFunctionName","executeInAWhile","executeNextVMTurn","throttle","waitUntil","compose","fns","composed","callIfPresent","Context","beanWrappers","beanClasses","contextParams","createBeans","beanInstances","getBeanInstances","wireBeans","beanEntry","beanInstance","createBean","bean","afterPreCreateCallback","autoWireBeans","methodWireBeans","callLifeCycleMethods","createBeanWrapper","constructorParamsMeta","__agBeanMetaData","autowireMethods","agConstructor","constructorParams","getBeansForParameters","newInstance","argArray","factoryFunction","applyToConstructor","createdBeanNames","BeanClass","metaData","beanName","forEachMetaDataInHierarchy","agClassAttributes","otherBean","lookupBeanInstance","attributeName","methodName","wireParams","initParams","getBeanName","constructorString","parameters","beansList","paramIndex","otherBeanName","wiringBean","providedBeanInstances","lifeCycleMethod","callLifeCycleMethodsOnBean","methodToIgnore","allMethods","getBean","destroyBeans","destroyBean","beans","getOrCreateProps$1","preConstructMethods","postConstructMethods","preDestroyMethods","propertyKey","autowiredFunc","classPrototype","methodOrAttributeName","__assign$i","__decorate$2A","__param$a","decorator","EventService","allSyncListeners","allAsyncListeners","globalSyncListeners","globalAsyncListeners","asyncFunctionsQueue","scheduled","firedEvents","setBeans","loggerFactory","gridOptionsWrapper","frameworkOverrides","globalEventListener","useAsyncEvents","addGlobalListener","getListeners","autoCreateListenerCollection","listenerMap","listeners","noRegisteredListenersExist","removeGlobalListener","agEvent","api","getApi","columnApi","getColumnApi","dispatchToListeners","dispatchEventOnce","dispatchAsync","flushAsyncQueue","queueCopy","Qualifier","Bean","Constants","ROW_BUFFER_SIZE","LAYOUT_INTERVAL","BATCH_WAIT_MILLIS","EXPORT_TYPE_DRAG_COPY","EXPORT_TYPE_CLIPBOARD","EXPORT_TYPE_EXCEL","EXPORT_TYPE_CSV","ROW_MODEL_TYPE_INFINITE","ROW_MODEL_TYPE_VIEWPORT","ROW_MODEL_TYPE_CLIENT_SIDE","ROW_MODEL_TYPE_SERVER_SIDE","ALWAYS","ONLY_WHEN_GROUPING","PINNED_TOP","PINNED_BOTTOM","DOM_LAYOUT_NORMAL","DOM_LAYOUT_PRINT","DOM_LAYOUT_AUTO_HEIGHT","GROUP_AUTO_COLUMN_ID","SOURCE_PASTE","PINNED_RIGHT","PINNED_LEFT","SORT_ASC","SORT_DESC","INPUT_SELECTOR","FOCUSABLE_SELECTOR","FOCUSABLE_EXCLUDE","ModuleNames","CommunityCoreModule","CommunityAllModules","InfiniteRowModelModule","ClientSideRowModelModule","CsvExportModule","EnterpriseCoreModule","EnterpriseAllModules","RowGroupingModule","ColumnToolPanelModule","FiltersToolPanelModule","MenuModule","SetFilterModule","MultiFilterModule","StatusBarModule","SideBarModule","RangeSelectionModule","MasterDetailModule","RichSelectModule","GridChartsModule","ViewportRowModelModule","ServerSideRowModelModule","ExcelExportModule","ClipboardModule","SparklinesModule","AngularModule","ReactModule","VueModule","PolymerModule","ModuleRegistry","register","moduleBased","modulesMap","registerModules","assertRegistered","isRegistered","warningMessage","getRegisteredModules","isPackageBased","__decorate$2z","instanceIdSequence$4","Column","colDef","userProvidedColDef","autoHeaderHeight","moving","menuVisible","filterActive","eventService","rowGroupActive","pivotActive","aggregationActive","getInstanceId","initialSort","sortIndex","initialSortIndex","hide","initialHide","setPinned","pinned","initialPinned","flex","initialFlex","setColDef","initMinAndMaxWidths","initDotNotation","createColumnEvent","EVENT_COL_DEF_CHANGED","getUserProvidedColDef","setParent","getParent","setOriginalParent","originalParent","getOriginalParent","initialise","resetActualWidth","suppressDotNotation","isSuppressFieldDotNotation","tooltipFieldContainsDots","tooltipField","columnUtils","calculateColMinWidth","calculateColMaxWidth","initialWidth","calculateColInitialWidth","setActualWidth","isEmptyGroup","isRowGroupDisplayed","showRowGroup","showingThisGroup","isPrimary","isFilterAllowed","filterFramework","filterDefined","isFieldContainsDots","isTooltipFieldContainsDots","colDefAny","msg","isRowModelDefault","warnOnce","cellEditor","isTreeData","pinnedRowCellRenderer","pinnedRowCellRendererParams","pinnedRowCellRendererFramework","pinnedRowValueGetter","createColumnFunctionCallbackParams","rowNode","column","isSuppressNavigable","suppressNavigable","userFunc","isCellEditable","isEnableGroupEdit","isColumnFunc","isSuppressFillHandle","suppressFillHandle","isAutoHeight","autoHeight","isAutoHeaderHeight","isRowDrag","rowDrag","isDndSource","dndSource","isCellCheckboxSelection","checkboxSelection","isSuppressPaste","suppressPaste","isResizable","resizable","setMoving","EVENT_MOVING_CHANGED","columns","isMoving","getSort","setSort","EVENT_SORT_CHANGED","setMenuVisible","EVENT_MENU_VISIBLE_CHANGED","isMenuVisible","isSortAscending","isSortDescending","isSortNone","isSorting","getSortIndex","setSortIndex","sortOrder","setAggFunc","aggFunc","getAggFunc","getLeft","getOldLeft","oldLeft","getRight","actualWidth","setLeft","EVENT_LEFT_CHANGED","isFilterActive","setFilterActive","active","additionalEventAttributes","EVENT_FILTER_ACTIVE_CHANGED","filterChangedEvent","EVENT_FILTER_CHANGED","setFirstRightPinned","firstRightPinned","EVENT_FIRST_RIGHT_PINNED_CHANGED","setLastLeftPinned","lastLeftPinned","EVENT_LAST_LEFT_PINNED_CHANGED","isFirstRightPinned","isLastLeftPinned","isPinned","isPinnedLeft","isPinnedRight","getPinned","setVisible","EVENT_VISIBLE_CHANGED","getColDef","getColumnGroupShow","columnGroupShow","getColId","getId","getUniqueId","getDefinition","getActualWidth","getAutoHeaderHeight","setAutoHeaderHeight","changed","createBaseColDefParams","getColSpan","getRowSpan","rowSpan","fireColumnWidthChangedEvent","EVENT_WIDTH_CHANGED","isGreaterThanMax","getMinWidth","getMaxWidth","getFlex","setFlex","setMinimum","setRowGroupActive","rowGroup","EVENT_ROW_GROUP_CHANGED","isRowGroupActive","setPivotActive","pivot","EVENT_PIVOT_CHANGED","isPivotActive","isAnyFunctionActive","isValueActive","isAnyFunctionAllowed","isAllowPivot","isAllowRowGroup","isAllowValue","setValueActive","EVENT_VALUE_CHANGED","enablePivot","enableValue","enableRowGroup","getMenuTabs","defaultValues","menuTabs","isLockPosition","lockPosition","isLockVisible","lockVisible","isLockPinned","lockPinned","Autowired","PostConstruct","toRemove","removeFromArray","objectsToMove","removeAllFromArray","insertIntoArray","arrayOfArrays","ArrayUtils","firstExistingValue","existsAndNotEmpty","areEqual","compareArrays","array1","array2","shallowCompare","arr1","arr2","sortNumerically","removeRepeatsFromArray","insertArrayIntoArray","moveInArray","includes","flatten","pushAll","toStrings","forEachReverse","ColumnGroup","providedColumnGroup","displayedChildren","localEventService","createUniqueId","allLeafColumns","getProvidedColumnGroup","getLeafColumns","checkLeft","isEnableRtl","lastChildLeft","firstChildLeft","createAgEvent","getGroupId","isChildInThisGroupDeepSearch","wantedChild","foundChild","groupActualWidth","groupChild","addChild","getDisplayedChildren","addLeafColumns","getDisplayedLeafColumns","addDisplayedLeafColumns","getColGroupDef","isPadding","isExpandable","isExpanded","setExpanded","expanded","leafColumns","getChildren","getOriginalColumnGroup","getPaddingLevel","calculateDisplayedColumns","parentWithExpansion","EVENT_DISPLAYED_CHILDREN_CHANGED","headerGroupShow","HEADER_GROUP_SHOW_OPEN","HEADER_GROUP_SHOW_CLOSED","__decorate$2y","ProvidedColumnGroup","colGroupDef","expandable","openByDefault","getLevel","EVENT_EXPANDED_CHANGED","setChildren","setupExpandable","setExpandable","onColumnVisibilityChanged","atLeastOneShowingWhenOpen","atLeastOneShowingWhenClosed","atLeastOneChangeable","findChildrenRemovingPadding","abstractColumn","ce","EVENT_EXPANDABLE_CHANGED","DefaultColumnTypes","numericColumn","headerClass","cellClass","rightAligned","AG_GRID_STOP_PROPAGATION","PASSIVE_EVENTS$1","supports","isEventSupported","submit","sourceElement","renderedComp","getDomData","getEventPath","eventNoType","__agGridEventPath","createEventPath","eElement","isPassive","EventUtils","stopPropagationForAgGrid","isStopPropagationForAgGrid","getCtrlForEvent","addChangeListener","isElementInEventPath","addAgGridEventPath","addSafePassiveEventListener","__decorate$2x","BeanStub","destroyFunctions","__v_skip","isAlive","getFrameworkOverrides","EVENT_DESTROYED","dispatchEventAsync","addManagedListener","destroyFunc","addDestroyFunc","createManagedBean","PreDestroy","__extends$2U","__decorate$2w","__param$9","ColumnFactory","createColumnTree","primaryColumns","existingTree","columnKeyCreator","extractExistingTreeData","existingCols","existingGroups","existingColKeys","unbalancedTree","recursivelyCreateColumns","treeDept","findMaxDept","columnTree","balanceColumnTree","depthFirstOriginalTreeSearch","createForAutoGroups","autoGroupCols","gridBalancedTree","createAutoGroupTreeItem","balancedColumnTree","nextChild","findDepth","autoGroup","dept","currentDept","columnDept","originalGroup","firstPaddedGroup","currentPaddedGroup","newColId","colGroupDefMerged","createMergedColGroupDef","paddedGroup","leaf","treeChildren","maxDeptThisLevel","newDept","existingColsCopy","isColumnGroup","createColumnGroup","createColumn","existingColumns","providedGroup","existingGroup","findExistingGroup","getDefaultColGroupDef","checkForDeprecatedItems","colDefMerged","mergeColDefs","findExistingColumn","applyColumnState","widthBeforeUpdate","newColDef","existingCol","existingColDef","newHasField","newGroupDef","defaultColDef","getDefaultColDef","columnType","assignColumnTypes","autoGroupColDef","getAutoGroupColumnDef","isSortingCoupled","isColumnsSortingCoupledToGroup","typeKeys","allColumnTypes","getColumnTypes","typeColDef","colDefNoType","headerGroup","suppressRowGroup","suppressAggregation","headerName","abstractColDef","Events","EVENT_COLUMN_EVERYTHING_CHANGED","EVENT_NEW_COLUMNS_LOADED","EVENT_COLUMN_PIVOT_MODE_CHANGED","EVENT_COLUMN_ROW_GROUP_CHANGED","EVENT_EXPAND_COLLAPSE_ALL","EVENT_COLUMN_PIVOT_CHANGED","EVENT_GRID_COLUMNS_CHANGED","EVENT_COLUMN_VALUE_CHANGED","EVENT_COLUMN_MOVED","EVENT_COLUMN_VISIBLE","EVENT_COLUMN_PINNED","EVENT_COLUMN_GROUP_OPENED","EVENT_COLUMN_RESIZED","EVENT_DISPLAYED_COLUMNS_CHANGED","EVENT_VIRTUAL_COLUMNS_CHANGED","EVENT_ASYNC_TRANSACTIONS_FLUSHED","EVENT_ROW_GROUP_OPENED","EVENT_ROW_DATA_CHANGED","EVENT_ROW_DATA_UPDATED","EVENT_PINNED_ROW_DATA_CHANGED","EVENT_RANGE_SELECTION_CHANGED","EVENT_CHART_CREATED","EVENT_CHART_RANGE_SELECTION_CHANGED","EVENT_CHART_OPTIONS_CHANGED","EVENT_CHART_DESTROYED","EVENT_TOOL_PANEL_VISIBLE_CHANGED","EVENT_TOOL_PANEL_SIZE_CHANGED","EVENT_COLUMN_PANEL_ITEM_DRAG_START","EVENT_COLUMN_PANEL_ITEM_DRAG_END","EVENT_MODEL_UPDATED","EVENT_PASTE_START","EVENT_PASTE_END","EVENT_FILL_START","EVENT_FILL_END","EVENT_KEY_SHORTCUT_CHANGED_CELL_START","EVENT_KEY_SHORTCUT_CHANGED_CELL_END","EVENT_CELL_CLICKED","EVENT_CELL_DOUBLE_CLICKED","EVENT_CELL_MOUSE_DOWN","EVENT_CELL_CONTEXT_MENU","EVENT_CELL_VALUE_CHANGED","EVENT_CELL_EDIT_REQUEST","EVENT_ROW_VALUE_CHANGED","EVENT_CELL_FOCUSED","EVENT_FULL_WIDTH_ROW_FOCUSED","EVENT_ROW_SELECTED","EVENT_SELECTION_CHANGED","EVENT_CELL_KEY_DOWN","EVENT_CELL_KEY_PRESS","EVENT_CELL_MOUSE_OVER","EVENT_CELL_MOUSE_OUT","EVENT_FILTER_MODIFIED","EVENT_FILTER_OPENED","EVENT_VIRTUAL_ROW_REMOVED","EVENT_ROW_CLICKED","EVENT_ROW_DOUBLE_CLICKED","EVENT_GRID_READY","EVENT_GRID_SIZE_CHANGED","EVENT_VIEWPORT_CHANGED","EVENT_SCROLLBAR_WIDTH_CHANGED","EVENT_FIRST_DATA_RENDERED","EVENT_DRAG_STARTED","EVENT_DRAG_STOPPED","EVENT_CHECKBOX_CHANGED","EVENT_ROW_EDITING_STARTED","EVENT_ROW_EDITING_STOPPED","EVENT_CELL_EDITING_STARTED","EVENT_CELL_EDITING_STOPPED","EVENT_BODY_SCROLL","EVENT_BODY_SCROLL_END","EVENT_HEIGHT_SCALE_CHANGED","EVENT_PAGINATION_CHANGED","EVENT_COMPONENT_STATE_CHANGED","EVENT_BODY_HEIGHT_CHANGED","EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED","EVENT_SCROLL_VISIBILITY_CHANGED","EVENT_COLUMN_HOVER_CHANGED","EVENT_FLASH_CELLS","EVENT_PAGINATION_PIXEL_OFFSET_CHANGED","EVENT_DISPLAYED_ROWS_CHANGED","EVENT_LEFT_PINNED_WIDTH_CHANGED","EVENT_RIGHT_PINNED_WIDTH_CHANGED","EVENT_ROW_CONTAINER_HEIGHT_CHANGED","EVENT_HEADER_HEIGHT_CHANGED","EVENT_COLUMN_HEADER_HEIGHT_CHANGED","EVENT_ROW_DRAG_ENTER","EVENT_ROW_DRAG_MOVE","EVENT_ROW_DRAG_LEAVE","EVENT_ROW_DRAG_END","EVENT_POPUP_TO_FRONT","EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST","EVENT_COLUMN_PIVOT_CHANGE_REQUEST","EVENT_COLUMN_VALUE_CHANGE_REQUEST","EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST","EVENT_KEYBOARD_FOCUS","EVENT_MOUSE_FOCUS","EVENT_STORE_UPDATED","GroupInstanceIdCreator","existingIds","getInstanceIdForKey","lastResult","reUnescapedHtml","HTML_ESCAPES","toEscape","skipEscapingHtmlChars","stringResult","word","StringUtils","utf8_encode","stringFromCharCode","checkScalarValue","createByte","codePoints","ucs2decode","byteString","encodeCodePoint","camelCaseToHyphen","hyphenToCamelCase","capitalise","escapeString","camelCaseToHumanText","pair","MapUtils","convertToMap","mapById","__read$p","iterator","ar","ColDefUtil","STRING_PROPERTIES","OBJECT_PROPERTIES","ARRAY_PROPERTIES","NUMBER_PROPERTIES","BOOLEAN_PROPERTIES","ALL_PROPERTIES","__spread$j","FUNCTION_PROPERTIES","FRAMEWORK_PROPERTIES","__read$o","__spread$i","PropertyKeys","FUNCTIONAL_PROPERTIES","CALLBACK_PROPERTIES","__assign$h","__read$n","__spread$h","ComponentUtil","getEventCallbacks","EVENT_CALLBACKS","EVENTS","getCallbackForEvent","copyAttributesToGridOptions","gridOptions","skipEventDeprecationCheck","pGridOptions","keyExists","groupAggFiltering","toBoolean","processOnChange","changesToApply","groupDisplayType","setGroupDisplayType","domLayout","setDomLayout","rowClass","setRowClass","paginationPageSize","paginationSetPageSize","rowGroupPanelShow","setRowGroupPanelShow","groupRemoveSingleChildren","setGroupRemoveSingleChildren","groupRemoveLowestSingleChildren","setGroupRemoveLowestSingleChildren","suppressRowDrag","setSuppressRowDrag","suppressMoveWhenRowDragging","setSuppressMoveWhenRowDragging","suppressRowClickSelection","setSuppressRowClickSelection","suppressClipboardPaste","setSuppressClipboardPaste","headerHeight","setHeaderHeight","pivotHeaderHeight","setPivotHeaderHeight","groupHeaderHeight","setGroupHeaderHeight","pivotGroupHeaderHeight","setPivotGroupHeaderHeight","floatingFiltersHeight","setFloatingFiltersHeight","functionsReadOnly","setFunctionsReadOnly","enableCellTextSelection","setEnableCellTextSelection","quickFilterText","setQuickFilter","autoGroupColumnDef","setAutoGroupColumnDef","columnDefs","setColumnDefs","setDefaultColDef","pivotMode","setPivotMode","dynamicApi","setterName","PUBLIC_EVENTS","EXCLUDED_INTERNAL_EVENTS","isEdge","isChrome","isFirefox","isMacOs","isIOS","invisibleScrollbar","browserScrollbarWidth","SideBarDefParser","toParse","toolPanels","DEFAULT_COLUMN_COMP","DEFAULT_FILTER_COMP","defaultToolPanel","comps_1","lookupResult","DEFAULT_BY_KEY","parseComponents","hiddenByDefault","toAdd","labelDefault","labelKey","iconKey","toolPanel","filters","tem","appVersion","documentMode","isBrowserIE","StyleMedia","win","webstore","runtime","vendor","InstallTrigger","MSStream","isBrowserSafari","getBrowserInfo","numberTabIndex","isBrowserFirefox","testUpTo","initScrollbarWidthAndVisibility","msOverflowStyle","BrowserUtils","isBrowserEdge","isBrowserChrome","isMacOsUserAgent","isIOSUserAgent","browserSupportsPreventScroll","getTabIndex","getMaxDivHeight","getScrollbarWidth","isInvisibleScrollbar","hasOverflowScrolling","prefixes","found","overflowScrolling","prefixes_1","__values$5","prefixes_1_1","getBodyWidth","getBodyHeight","inputValues","validValues","allSuggestions","fuzzyMatches","invalidInputs","inputValue","validValue","invalidInput","fuzzySuggestions","hideIrrelevant","weighted","string_weighted_distances","string_distances","thisSuggestions","relevance","suggestion","pairs1","get_bigrams","pairs2","union","hit_count","len1","FuzzyMatchUtils","fuzzyCheckStrings","totalStringSize","thousandSeparator","decimalSeparator","NumberUtils","padStartWidthZeros","createArrayOfNumbers","cleanNumber","decToHex","number","hex","formatNumberTwoDecimalPlacesAndCommas","formatNumberCommas","sum","total","__assign$g","__decorate$2v","__param$8","__read$m","__spread$g","valueNumber","rtlNegativeScroll","GridOptionsWrapper","propertyEventService","domDataKey","GridOptionsWrapper_1","agWire","gridApi","checkForDeprecated","checkForViolations","suppressPropertyNamesCheck","checkGridOptionsProperties","checkColumnDefProperties","sideBar","globalEventHandler","isGroupSelectsChildren","isSuppressParentsInRowNodes","isRowSelectionMulti","isRowModelServerSide","isGroupRemoveSingleChildren","isGroupHideOpenParents","groupDefaultExpanded","isTrue","enableRangeSelection","isEnableRangeHandle","isEnableFillHandle","isGroupRowsSticky","isMasterDetail","isPagination","warnOfDeprecaredIcon","icons","userProperties","validProperties","checkProperties","validPropertiesAndExceptions","containerName","docsUrl","invalidProperties","mergeGridCommonParams","callbackParams","mergedParams","getDomDataKey","domData","setDomData","isRowSelection","rowSelection","isSuppressRowDeselection","suppressRowDeselection","isRowMultiSelectWithClick","rowMultiSelectWithClick","isPivotMode","isSuppressExpandablePivotGroups","suppressExpandablePivotGroups","getPivotColumnGroupTotals","pivotColumnGroupTotals","getPivotRowTotals","pivotRowTotals","isRowModelInfinite","rowModelType","isRowModelViewport","isFullRowEdit","editType","isSuppressFocusAfterRefresh","suppressFocusAfterRefresh","isSuppressBrowserResizeObserver","suppressBrowserResizeObserver","isSuppressMaintainUnsortedOrder","suppressMaintainUnsortedOrder","isSuppressClearOnFillReduction","suppressClearOnFillReduction","isShowToolPanel","getSideBar","isSuppressTouch","suppressTouch","isMaintainColumnOrder","maintainColumnOrder","isSuppressRowTransform","suppressRowTransform","isSuppressColumnStateEvents","suppressColumnStateEvents","isAllowDragFromColumnsToolPanel","allowDragFromColumnsToolPanel","suppressAsyncEvents","isEnableCellChangeFlash","enableCellChangeFlash","getCellFlashDelay","cellFlashDelay","getCellFadeDelay","cellFadeDelay","groupSelectsChildren","isSuppressRowHoverHighlight","suppressRowHoverHighlight","isColumnHoverHighlight","columnHoverHighlight","isGroupSelectsFiltered","groupSelectsFiltered","groupHideOpenParents","isGroupMaintainOrder","groupMaintainOrder","isGroupMultiAutoColumn","matchesGroupDisplayType","isGroupUseEntireRow","isRowGroupPanelSuppressSort","rowGroupPanelSuppressSort","groupRowsSticky","isGroupSuppressAutoColumn","treeDataDisplayType","matchesTreeDataDisplayType","isGroupRemoveLowestSingleChildren","isGroupIncludeFooter","groupIncludeFooter","isGroupIncludeTotalFooter","groupIncludeTotalFooter","isGroupSuppressBlankHeader","groupSuppressBlankHeader","isSuppressRowClickSelection","isSuppressCellFocus","suppressCellFocus","isSuppressMultiSort","suppressMultiSort","isAlwaysMultiSort","alwaysMultiSort","isMultiSortKeyCtrl","multiSortKey","isPivotSuppressAutoColumn","pivotSuppressAutoColumn","isSuppressDragLeaveHidesColumns","suppressDragLeaveHidesColumns","isSuppressRowGroupHidesColumns","suppressRowGroupHidesColumns","isSuppressScrollOnNewData","suppressScrollOnNewData","isSuppressScrollWhenPopupsAreOpen","suppressScrollWhenPopupsAreOpen","isRowDragEntireRow","rowDragEntireRow","getRowDragText","rowDragText","isSuppressRowDrag","isRowDragManaged","rowDragManaged","isSuppressMoveWhenRowDragging","isRowDragMultiRow","rowDragMultiRow","getDomLayout","isSuppressHorizontalScroll","suppressHorizontalScroll","isSuppressMaxRenderedRowRestriction","suppressMaxRenderedRowRestriction","isExcludeChildrenWhenTreeDataFiltering","excludeChildrenWhenTreeDataFiltering","isAlwaysShowHorizontalScroll","alwaysShowHorizontalScroll","isAlwaysShowVerticalScroll","alwaysShowVerticalScroll","isDebounceVerticalScrollbar","debounceVerticalScrollbar","isSuppressLoadingOverlay","suppressLoadingOverlay","isSuppressNoRowsOverlay","suppressNoRowsOverlay","suppressFieldDotNotation","getPinnedTopRowData","pinnedTopRowData","getPinnedBottomRowData","pinnedBottomRowData","isFunctionsPassive","functionsPassive","isSuppressChangeDetection","suppressChangeDetection","isSuppressAnimationFrame","suppressAnimationFrame","getQuickFilterText","isCacheQuickFilter","cacheQuickFilter","isUnSortIcon","unSortIcon","isSuppressMenuHide","suppressMenuHide","isEnterMovesDownAfterEdit","enterMovesDownAfterEdit","isEnterMovesDown","enterMovesDown","isUndoRedoCellEditing","undoRedoCellEditing","getUndoRedoCellEditingLimit","undoRedoCellEditingLimit","isEnableCellEditingOnBackspace","enableCellEditingOnBackspace","getRowStyle","rowStyle","getRowClass","getRowStyleFunc","getRowClassFunc","rowClassRules","isServerSideInfiniteScroll","serverSideInfiniteScroll","getServerSideGroupLevelParamsFunc","getServerSideGroupLevelParams","getCreateChartContainerFunc","createChartContainer","getPopupParent","popupParent","getBlockLoadDebounceMillis","blockLoadDebounceMillis","getPostProcessPopupFunc","postProcessPopup","getPaginationNumberFormatterFunc","paginationNumberFormatter","getChildCountFunc","getChildCount","getIsApplyServerSideTransactionFunc","isApplyServerSideTransaction","getInitialGroupOrderComparator","initialGroupOrderComparator","defaultGroupOrderComparator","nodeA","nodeB","getIsFullWidthCellFunc","isFullWidthRow","isFullWidthCell","getFullWidthCellRendererParams","fullWidthCellRendererParams","isEmbedFullWidthRows","embedFullWidthRows","deprecatedEmbedFullWidthRows","isDetailRowAutoHeight","detailRowAutoHeight","getSuppressKeyboardEventFunc","suppressKeyboardEvent","getBusinessKeyForNodeFunc","getBusinessKeyForNode","isReadOnlyEdit","readOnlyEdit","isImmutableData","getRowIdProvided","getRowId","immutableData","resetRowDataOnUpdate","isEnsureDomOrder","ensureDomOrder","isEnableCharts","enableCharts","isEnableChartToolPanelsButton","enableChartToolPanelsButton","getColResizeDefault","colResizeDefault","isSingleClickEdit","singleClickEdit","isSuppressClickEdit","suppressClickEdit","isStopEditingWhenCellsLoseFocus","stopEditingWhenCellsLoseFocus","getGroupDefaultExpanded","getMaxConcurrentDatasourceRequests","maxConcurrentDatasourceRequests","getMaxBlocksInCache","maxBlocksInCache","getCacheOverflowSize","cacheOverflowSize","getPaginationPageSize","isPaginateChildRows","paginateChildRows","getCacheBlockSize","oneOrGreater","cacheBlockSize","getInfiniteInitialRowCount","infiniteInitialRowCount","getServerSideInitialRowCount","rowCount","serverSideInitialRowCount","isPurgeClosedRowNodes","purgeClosedRowNodes","isSuppressPaginationPanel","suppressPaginationPanel","getRowData","rowData","getRowGroupPanelShow","getPivotPanelShow","pivotPanelShow","isAngularCompileRows","angularCompileRows","isAngularCompileFilters","angularCompileFilters","isDebug","getColumnDefs","columnTypes","getDatasource","datasource","getViewportDatasource","viewportDatasource","getServerSideDatasource","serverSideDatasource","isAccentedSort","accentedSort","isEnableBrowserTooltips","enableBrowserTooltips","isEnableCellExpressions","enableCellExpressions","enableGroupEdit","isSuppressMiddleClickScrolls","suppressMiddleClickScrolls","isPreventDefaultOnContextMenu","preventDefaultOnContextMenu","isSuppressPreventDefaultOnMouseWheel","suppressPreventDefaultOnMouseWheel","isSuppressColumnVirtualisation","suppressColumnVirtualisation","isSuppressRowVirtualisation","suppressRowVirtualisation","isSuppressContextMenu","suppressContextMenu","isAllowContextMenuWithControlKey","allowContextMenuWithControlKey","isSuppressCopyRowsToClipboard","suppressCopyRowsToClipboard","isSuppressCopySingleCellRanges","suppressCopySingleCellRanges","isCopyHeadersToClipboard","copyHeadersToClipboard","isCopyGroupHeadersToClipboard","copyGroupHeadersToClipboard","isSuppressClipboardPaste","isSuppressLastEmptyLineOnPaste","suppressLastEmptyLineOnPaste","pagination","isSuppressEnterpriseResetOnNewColumns","suppressEnterpriseResetOnNewColumns","getProcessDataFromClipboardFunc","processDataFromClipboard","getAsyncTransactionWaitMillis","asyncTransactionWaitMillis","isSuppressMovableColumns","suppressMovableColumns","isAnimateRows","animateRows","isSuppressColumnMoveAnimation","suppressColumnMoveAnimation","isSuppressAggFuncInHeader","suppressAggFuncInHeader","isSuppressAggAtRootLevel","suppressAggAtRootLevel","isSuppressAggFilteredOnly","getGroupAggFiltering","suppressAggFilteredOnly","isRemovePivotHeaderRowWhenSingleValueColumn","removePivotHeaderRowWhenSingleValueColumn","isShowOpenedGroup","showOpenedGroup","isReactUi","reactUi","isSuppressReactUi","suppressReactUi","isEnableRangeSelection","enableRangeHandle","enableFillHandle","getFillHandleDirection","fillHandleDirection","getFillOperation","fillOperation","isSuppressMultiRangeSelection","suppressMultiRangeSelection","isPaginationAutoPageSize","paginationAutoPageSize","isRememberGroupStateWhenNewData","rememberGroupStateWhenNewData","getIcons","userValue","getAggFuncs","aggFuncs","getSortingOrder","sortingOrder","getAlignedGrids","alignedGrids","masterDetail","isKeepDetailRows","keepDetailRows","getKeepDetailRowsCount","keepDetailRowsCount","DEFAULT_KEEP_DETAIL_ROW_COUNT","getIsRowMasterFunc","isRowMaster","getIsRowSelectableFunc","isRowSelectable","getGroupRowRendererParams","groupRowRendererParams","getOverlayLoadingTemplate","overlayLoadingTemplate","getOverlayNoRowsTemplate","overlayNoRowsTemplate","isSuppressAutoSize","suppressAutoSize","isEnableCellTextSelection","suppressParentsInRowNodes","isSuppressClipboardApi","suppressClipboardApi","isFunctionsReadOnly","isEnableCellTextSelect","defaultColGroupDef","getDefaultExportParams","defaultExportParams","defaultCsvExportParams","defaultExcelExportParams","isSuppressCsvExport","suppressCsvExport","isAllowShowChangeAfterFilter","allowShowChangeAfterFilter","isSuppressExcelExport","suppressExcelExport","isSuppressMakeColumnVisibleAfterUnGroup","suppressMakeColumnVisibleAfterUnGroup","getDataPathFunc","getDataPath","getIsServerSideGroupFunc","isServerSideGroup","getIsServerSideGroupOpenByDefaultFunc","isServerSideGroupOpenByDefault","getIsGroupOpenByDefaultFunc","isGroupOpenByDefault","getServerSideGroupKeyFunc","getServerSideGroupKey","getGroupRowAggFunc","getGroupRowAgg","groupRowAggNodes","getContextMenuItemsFunc","getContextMenuItems","getMainMenuItemsFunc","getMainMenuItems","getRowIdFunc","getRowNodeId","getNavigateToNextHeaderFunc","navigateToNextHeader","getTabToNextHeaderFunc","tabToNextHeader","getNavigateToNextCellFunc","navigateToNextCell","getTabToNextCellFunc","tabToNextCell","getGridTabIndex","treeData","isValueCache","valueCache","isValueCacheNeverExpires","valueCacheNeverExpires","isDeltaSort","deltaSort","isAggregateOnlyChangedColumns","aggregateOnlyChangedColumns","getProcessPivotResultColDefFunc","processPivotResultColDef","processSecondaryColDef","getProcessPivotResultColGroupDefFunc","processPivotResultColGroupDef","processSecondaryColGroupDef","getSendToClipboardFunc","sendToClipboard","getProcessRowPostCreateFunc","processRowPostCreate","getProcessCellForClipboardFunc","processCellForClipboard","getProcessHeaderForClipboardFunc","processHeaderForClipboard","getProcessGroupHeaderForClipboardFunc","processGroupHeaderForClipboard","getProcessCellFromClipboardFunc","processCellFromClipboard","getViewportRowModelPageSize","viewportRowModelPageSize","DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE","getViewportRowModelBufferSize","zeroOrGreater","viewportRowModelBufferSize","DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE","isServerSideSortAllLevels","serverSideSortAllLevels","isServerSideFilterAllLevels","serverSideFilterAllLevels","isServerSideSortOnServer","serverSideSortOnServer","isServerSideFilterOnServer","serverSideFilterOnServer","getPostSortFunc","postSortRows","postSort","getChartToolbarItemsFunc","getChartToolbarItems","getChartThemeOverrides","chartThemeOverrides","getCustomChartThemes","customChartThemes","getChartThemes","chartThemes","getChartToolPanelsDef","chartToolPanelsDef","getClipboardDelimiter","clipboardDelimiter","isSkipHeaderOnAutoSize","skipHeaderOnAutoSize","getAutoSizePadding","autoSizePadding","getHeaderHeight","getFromTheme","getFloatingFiltersHeight","getGroupHeaderHeight","getPivotHeaderHeight","getPivotGroupHeaderHeight","isExternalFilterPresent","doesExternalFilterPass","getTooltipDelay","tooltipShowDelay","tooltipHideDelay","capitalisedType","isTooltipMouseTrack","tooltipMouseTrack","isSuppressModelUpdateAfterUpdateTransaction","suppressModelUpdateAfterUpdateTransaction","getDocument","eGridDiv","getMinColWidth","minColWidth","MIN_COL_WIDTH","measuredMin","getMaxColWidth","maxColWidth","getColWidth","colWidth","getRowBuffer","rowBuffer","getRowBufferInPixels","getRowHeightAsNumber","defaultRowHeight","rowDeselection","enableMultiRowDragging","checkRenamedProperty","immutableColumns","deltaColumnMode","groupRowInnerRenderer","groupRowInnerRendererParams","groupRowInnerRendererFramework","innerRenderer","innerRendererParams","innerRendererFramework","detailCellRendererParams","stopEditingWhenGridLosesFocus","applyColumnDefOrder","groupMultiAutoColumn","groupUseEntireRow","groupSuppressAutoColumn","defaultGroupSortComparator","localeTextFunc","suppressCellSelection","clipboardDeliminator","serverSideStoreType","treeDataViolations","getLocaleTextFunc","localeText","getLocaleText","variableValues","localisedText","callbackMethodName","setRowHeightVariable","newRowHeight","getDefaultRowHeight","isGetRowHeightFunction","getRowHeight","getRowHeightForNode","allowEstimate","estimated","detail","detailRowHeight","isDynamicRowHeight","getListItemHeight","chartMenuPanelWidth","environment","sassVariableName","getTheme","getSassVariable","toMatch","supplied","groupDisplayTypeValues","treeDataDisplayTypeValues","PROP_HEADER_HEIGHT","PROP_GROUP_REMOVE_SINGLE_CHILDREN","PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN","PROP_GROUP_DISPLAY_TYPE","PROP_PIVOT_HEADER_HEIGHT","PROP_SUPPRESS_CLIPBOARD_PASTE","PROP_GROUP_HEADER_HEIGHT","PROP_PIVOT_GROUP_HEADER_HEIGHT","PROP_NAVIGATE_TO_NEXT_CELL","PROP_TAB_TO_NEXT_CELL","PROP_NAVIGATE_TO_NEXT_HEADER","PROP_TAB_TO_NEXT_HEADER","PROP_IS_EXTERNAL_FILTER_PRESENT","PROP_DOES_EXTERNAL_FILTER_PASS","PROP_FLOATING_FILTERS_HEIGHT","PROP_SUPPRESS_ROW_CLICK_SELECTION","PROP_SUPPRESS_ROW_DRAG","PROP_SUPPRESS_MOVE_WHEN_ROW_DRAG","PROP_GET_ROW_CLASS","PROP_GET_ROW_STYLE","PROP_GET_ROW_HEIGHT","PROP_POPUP_PARENT","PROP_DOM_LAYOUT","PROP_ROW_CLASS","PROP_FILL_HANDLE_DIRECTION","PROP_GROUP_ROW_AGG_NODES","PROP_GET_GROUP_ROW_AGG","PROP_GET_BUSINESS_KEY_FOR_NODE","PROP_GET_CHILD_COUNT","PROP_PROCESS_ROW_POST_CREATE","PROP_GET_ROW_NODE_ID","PROP_GET_ROW_ID","PROP_IS_FULL_WIDTH_CELL","PROP_IS_FULL_WIDTH_ROW","PROP_IS_ROW_SELECTABLE","PROP_IS_ROW_MASTER","PROP_POST_SORT","PROP_POST_SORT_ROWS","PROP_GET_DOCUMENT","PROP_POST_PROCESS_POPUP","PROP_DEFAULT_GROUP_ORDER_COMPARATOR","PROP_INITIAL_GROUP_ORDER_COMPARATOR","PROP_PAGINATION_NUMBER_FORMATTER","PROP_GET_CONTEXT_MENU_ITEMS","PROP_GET_MAIN_MENU_ITEMS","PROP_PROCESS_CELL_FOR_CLIPBOARD","PROP_PROCESS_CELL_FROM_CLIPBOARD","PROP_SEND_TO_CLIPBOARD","PROP_PROCESS_PIVOT_RESULT_COL_DEF","PROP_PROCESS_PIVOT_RESULT_COL_GROUP_DEF","PROP_GET_CHART_TOOLBAR_ITEMS","PROP_GET_SERVER_SIDE_GROUP_PARAMS","PROP_IS_SERVER_SIDE_GROUPS_OPEN_BY_DEFAULT","PROP_IS_APPLY_SERVER_SIDE_TRANSACTION","PROP_IS_SERVER_SIDE_GROUP","PROP_GET_SERVER_SIDE_GROUP_KEY","PROP_AUTO_GROUP_COLUMN_DEF","PROP_DEFAULT_COL_DEF","__extends$2T","__decorate$2u","__param$7","__values$4","__read$l","__spread$f","ColumnModel","primaryHeaderRowCount","secondaryHeaderRowCount","gridHeaderRowCount","displayedColumnsLeft","displayedColumnsRight","displayedColumnsCenter","displayedColumns","displayedColumnsAndGroupsMap","viewportColumns","viewportColumnsHash","headerViewportColumns","viewportColumnsCenter","headerViewportColumnsCenter","autoHeightActiveAtLeastOnce","rowGroupColumns","valueColumns","pivotColumns","autoGroupsNeedBuilding","forceRecreateAutoGroups","bodyWidth","leftWidth","rightWidth","bodyWidthDirty","flexColsCalculatedAtLestOnce","isPivotSettingAllowed","usingTreeData","onAutoGroupColumnDefChanged","onDefaultColDefChanged","updateGridColumns","updateDisplayedColumns","createColumnsFromColumnDefs","colsPreviouslyExisted","raiseEventsFunc","compareColumnStatesAndRaiseEvents","expire","oldPrimaryColumns","balancedTreeResult","columnFactory","primaryColumnTree","getColumnsFromTree","primaryColumnsMap","extractRowGroupColumns","extractPivotColumns","extractValueColumns","gridColsArePrimary","orderGridColumnsLikePrimary","checkViewportColumns","dispatchEverythingChanged","dispatchNewColumnsLoaded","newColumnsLoadedEvent","eventEverythingChanged","gridColumns","colA","colB","primaryIndexA","primaryIndexB","indexAPresent","indexBPresent","gridIndexB","placeLockedColumns","getAllDisplayedAutoHeightCols","displayedAutoHeightCols","setViewport","viewportLeft","viewportRight","getDisplayedColumnsStartingAt","currentColumn","getDisplayedColAfter","extractViewport","setViewportPosition","getSecondaryPivotColumn","pivotKeys","valueColKey","secondaryColumns","valueColumnToFind","getPrimaryColumn","foundColumn","thisPivotKeys","pivotValueColumn","setFirstRightAndLastLeftPinned","lastLeft","firstRight","autoSizeColumns","skipHeader","skipHeaderGroups","stopAtGroup","animationFrameService","flushAllFrames","columnsAutosized","changesThisTimeAround","shouldSkipHeader","shouldSkipHeaderGroups","actionOnGridColumns","preferredWidth","autoWidthCalculator","getPreferredWidthForColumn","newWidth","normaliseColumnWidth","autoSizeColumnGroupsByColumns","fireColumnResizedEvent","finished","flexColumns","autoSizeColumn","headerGroupCtrl","columnGroups","getGridColumns","columnGroups_1","columnGroups_1_1","columnGroup","ctrlsService","getHeaderRowContainerCtrls","getHeaderCtrlForColumn","resizeLeafColumnsToFit","resizedColumns","autoSizeAllColumns","allDisplayedColumns","getAllDisplayedColumns","rootColumns","recursiveFindColumns","childColumns","getAllDisplayedTrees","displayedTreeLeft","displayedTreeRight","displayedTreeCentre","getPrimaryColumnTree","getHeaderRowCount","getDisplayedTreeLeft","getDisplayedTreeRight","getDisplayedTreeCentre","isColumnDisplayed","getViewportColumns","getDisplayedLeftColumnsForRow","colSpanActive","getDisplayedColumnsForRow","getDisplayedRightColumnsForRow","filterCallback","emptySpaceBeforeColumn","out_i_1","lastConsideredCol","filterPasses","maxAllowedColSpan","columnsToCheckFilter","colsToRemove","colForFilter","getViewportCenterColumnsForRow","isColumnInRowViewport","getAriaColumnIndex","getAllGridColumns","isColumnInHeaderViewport","columnLeft","columnRight","leftBounds","rightBounds","columnToMuchRight","getDisplayedColumnsLeftWidth","getWidthOfColsInList","getDisplayedColumnsRightWidth","updatePrimaryColumnList","masterList","actionIsAdd","columnCallback","atLeastOne","columnToAdd","setRowGroupColumns","colKeys","setPrimaryColumnList","setColumnVisible","addRowGroupColumn","addRowGroupColumns","removeRowGroupColumns","removeRowGroupColumn","addPivotColumns","setPivotColumns","addPivotColumn","removePivotColumns","removePivotColumn","fireColumnEvent","setValueColumns","initialAggFunc","aggFuncService","getDefaultAggFunc","addValueColumns","addValueColumn","colKey","removeValueColumn","removeValueColumns","getPrimaryOrGridColumn","getGridColumn","setColumnWidths","columnWidths","sets","columnWidth","ratios","otherCol","widthDiff","otherColWidth","resizeColumnSets","resizeSets","checkMinAndMaxWidthsForSet","columnResizeSet","minWidthAccumulated","maxWidthAccumulated","maxWidthActive","maxWidthPasses","changedCols","allResizedCols","newWidths","finishedCols","finishedColsGrew","loopCount","_loop_2","subsetCols","subsetRatioTotal","pixelsToDistribute","ratioThisCol","ratioScale","colNewWidth","atLeastOneColChanged","flexedCols","refreshFlexedColumns","resizingCols","skipSetLeft","setLeftValues","updateBodyWidths","colsForEvent","setColumnAggFunc","moveRowGroupColumn","moveColumns","columnsToMoveKeys","columnAnimationService","columnsToMove","doesMovePassRules","finish","proposedColumnOrder","getProposedColumnOrder","doesOrderPassRules","gridOrder","doesMovePassMarryChildren","doesMovePassLockedPositions","sortColumnsLikeGridColumns","indexB","lastPlacement","rulePassed","lockPositionToPlacement","allColumnsCopy","marryChildren","newIndexes","newColIndex","moveColumn","moveColumnByIndex","lastPrimaryOrder","columnDefFactory","buildColumnDefs","getBodyContainerWidth","getContainerWidth","newBodyWidth","newLeftWidth","newRightWidth","getValueColumns","getPivotColumns","getRowGroupColumns","getDisplayedCenterColumns","getDisplayedLeftColumns","getDisplayedRightColumns","getDisplayedColumns","getAllPrimaryColumns","getSecondaryColumns","getAllColumnsForQuickFilter","columnsForQuickFilter","isRowGroupEmpty","setColumnsVisible","setColumnPinned","setColumnsPinned","actualPinned","createEvent","updatedColumns","event_3","getDisplayedColBefore","oldIndex","getDisplayedGroupAfter","getDisplayedGroupAtDirection","getDisplayedGroupBefore","requiredLevel","colGroupLeafColumns","getDisplayColMethod","groupPointer","getColumnGroupAtLevel","isPinningLeft","isPinningRight","getPrimaryAndSecondaryAndAutoColumns","groupAutoColumns","getPrimaryAndAutoGroupCols","getPrimaryAndSecondaryColumns","createStateItemFromColumn","rowGroupIndex","pivotIndex","getColumnState","orderColumnStateList","columnStateList","colIdToGridIndexMap","itemA","itemB","posB","resetColumnState","columnStates","letRowGroupIndex","letPivotIndex","colsToProcess","getValueOrNull","initialRowGroupIndex","initialRowGroup","initialPivotIndex","initialPivot","stateItem","applyOrder","applyStates","states","getById","columnsWithNoState","rowGroupIndexes","pivotIndexes","autoGroupColumnStates","unmatchedAndAutoStates","unmatchedCount","previousRowGroupCols","previousPivotCols","syncColumnWithStateItem","defaultState","applyDefaultsFunc","indexes","oldList","indexA","aHasIndex","bHasIndex","oldIndexA","oldIndexB","aHasOldIndex","autoGroupColsCopy","autoCol","getAutoColumn","applyOrderAfterApplyState","getSecondaryColumn","newOrder","processedColIds","gridColumnsMap","autoGroupInsertIndex","startState","columnStateBefore","columnStateBeforeMap","colsForState","raiseWhenListsDifferent","colsBefore","colsAfter","idMapper","getChangedColumns","changedPredicate","changedColumns","colStateBefore","columnIdMapper","cs","oldActive","activeChanged","aggFuncChanged","raiseColumnPinnedEvent","raiseColumnVisibleEvent","sortController","dispatchSortChangedEvents","raiseColumnMovedEvent","getCommonValue","valueGetter","firstValue","colStateAfter","colStateAfterMapped","colsIntersectIds","beforeFiltered","afterFiltered","movedColumns","csAfter","csBefore","gridCol","key1","key2","value1","value2","calculated","getColumns","columnLookupCallback","foundColumns","getColumnWithValidation","getColumn","secondaryColumnsMap","columnList","columnMap","columnsMatch","getSourceColumnsForGroupColumn","groupCol","sourceColumnId","columnMatches","colDefMatches","idMatches","getDisplayNameForColumn","includeAggFunc","getHeaderName","wrapHeaderNameWithAggFunc","getDisplayNameForProvidedColumnGroup","getDisplayNameForColumnGroup","headerValueGetter","expressionService","evaluate","aggFuncFound","isCollapsedHeaderEnabled","isTotalColumn","pivotTotalColumnIds","measureActive","aggregationPresent","aggFuncString","getColumnGroup","allColumnGroups","checkInstanceId","depthFirstAllColumnTreeSearch","isReady","extractColumns","previousCols","setFlagFunc","getIndexFunc","getInitialIndexFunc","getValueFunc","getInitialValueFunc","colsWithIndex","colsWithValue","colIsNew","initialValue","initialIndex","ro","Wi","getIndexForCol","defaultIndex","resetColumnGroupState","stateItems","groupState","setColumnGroupState","getColumnGroupState","columnGroupState","impactedGroups","updateGroupsAndDisplayedColumns","setColumnGroupOpened","keyAsString","calculateColumnsForDisplay","isAutoGroupCol","isValueCol","columnsForDisplay","checkColSpanActiveInCols","calculateColumnsForGroupDisplay","groupDisplayColumns","groupDisplayColumnsMap","checkFunc","underlyingColumn","rowGroupCol","getGroupDisplayColumns","getGroupDisplayColumnForGroup","rowGroupColumnId","buildDisplayedTrees","isSecondaryColumnsPresent","setSecondaryColumns","colDefs","newColsPresent","processSecondaryColumnDefinitions","secondaryBalancedTree","previousSecondaryColumns","groupCallback","colDefs2","searchForColDefs","prevGridCols","lastSecondaryOrder","sortOrderToRecover","hasSameColumns","createGroupAutoColumnsIfNeeded","groupAutoColsMap_1","addAutoGroupToGridColumns","orderGridColsLike","setupQuickFilterColumns","clearDisplayedAndViewportColumns","setAutoHeightActive","event_4","autoHeightActive","rowModel","message_1","colsOrder","lastOrderMapped","noColsFound","gridColsMap","oldColsOrdered","oldColsMap","newColsOrdered","newGridColumns","newCol","leafCol","presentInNewGriColumns","noYetInSiblings","isPrimaryColumnGroupsPresent","normal","autoColBalancedTree","viewportRowLeft","viewportRowRight","viewportRowCenter","updateOpenClosedVisibilityInColumnGroups","deriveDisplayedColumns","derivedDisplayedColumnsFromDisplayedTree","joinDisplayedColumns","isAutoRowHeightActive","wasAutoRowHeightEverActive","setLeftValuesOfColumns","setLeftValuesOfGroups","allColumns","doingRtl","left_1","left_2","tree","depthFirstDisplayedColumnTreeSearch","extractViewportColumns","getVirtualHeaderGroupRow","calculateHeaderRows","virtualColIds","testGroup","addThisItem","viewportWidth","flexViewportWidth","flexAfterDisplayIndex","indexOfCol","isColFlex","afterResizingCols","knownWidthColumns","flexingColumns","spaceForFlexingColumns","flexingColumnSizes","outer","totalFlex","widthByFlexRule","constrainedWidth","ae","remainingSpace","fireResizedEvent","resetRowHeights","sizeColumnsToFit","gridWidth","_f","_g","_h","_j","_k","_l","limitsMap","columnLimits","getOwnPropertySymbols","__rest","doColumnsAlreadyFit","colsToSpread","colsToNotSpread","suppressSizeToFit","colsToFireEventFor","finishedResizing","moveToNotSpread","availablePixels","widthOverride","defaultMinWidth","scale","pixelsForLastCol","minOverride","maxOverride","defaultMaxWidth","colMinWidth","colMaxWidth","MAX_VALUE","visibleColumns","leftVisibleColumns","rightVisibleColumns","centerVisibleColumns","groupInstanceIdCreator","displayedGroupCreator","createDisplayedGroups","updateDisplayedMap","isDisplayed","getGroupAutoColumns","groupFullWidthRow","suppressAutoColumn","newAutoGroupCols","autoGroupColService","createAutoGroupColumns","autoColsEqual","colsA","colsB","getGridBalancedTree","hasFloatingFilters","floatingFilter","getFirstDisplayedColumn","queryOrder","setColumnHeaderHeight","event_5","getColumnGroupHeaderRowHeight","getColumnHeaderRowHeight","defaultHeight","displayedHeights","Optional","__extends$2S","ColumnUtils","MAX_SAFE_INTEGER","colDefWidth","colDefInitialWidth","getOriginalPathForColumn","originalBalancedTree","recursePath","__decorate$2t","__extends$2R","DisplayedGroupCreator","sortedVisibleColumns","oldDisplayedGroups","previousRealPath","previousOriginalPath","oldColumnsMapped","mapOldGroupsById","currentOriginalPath","currentRealPath","firstColumn","newGroup","Pr","setupParentsIntoColumns","displayedGroups","columnsOrGroups","columnOrGroup","recursive","columnsOrGroup","__decorate$2s","__extends$2Q","AgStackComponentsRegistry","componentsMappedByName","setupComponents","componentMeta","classUpperCase","componentClass","getComponentClass","htmlTag","__decorate$2r","__read$k","Color","fromString","fromHexString","nameToHex","fromRgbaString","parseHex","stringToRgba","po","pc","contents","rgba","fromArray","fromHSB","alpha","rgb","HSBtoRGB","padHex","toHexString","toRgbaString","pow","toHSB","RGBtoHSB","rc","gc","bc","S","q","derive","hueShift","saturationFactor","brightnessFactor","opacityFactor","hsb","brighter","darker","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","CsvUtils","stringToArray","strData","isNewline","insideQuotedField","out_row_1","out_column_1","out_position_1","previousChar","currentChar","nextChar","ensureDataExists","isNotFocusable","isElementVisible","focusable","displayed","addOrRemoveDisabledAttribute","nodeListForEach","cls","maxNest","getElementSize","marginWidth","rtl","isRtlNegativeScroll","tempDiv","eContainer","eChild","eChildBefore","focusedEl","eChildHasFocus","insertAdjacentElement","preventScroll","orderedChildren","correctCellAtIndex","actualCellAtIndex","eToInsert","keyCamelCase","setFixedWidth","formatSize","isElement","DomUtils","radioCssClass","elementClass","otherElementClass","isFocusableFormField","setDisplayed","setDisabled","isElementChildOfClass","getInnerHeight","getInnerWidth","getAbsoluteHeight","getAbsoluteWidth","cssSelector","removeFromParent","loadTemplate","appendHtml","htmlTemplate","lastChild","insertAdjacentHTML","getElementAttribute","setDomChildOrder","insertWithDomOrder","prependDC","documentFragment","addStylesToElement","isHorizontalScrollShowing","isVerticalScrollShowing","setElementWidth","setElementHeight","setFixedHeight","isNodeOrElement","copyNodeList","iterateNamedNodeMap","setCheckboxState","eCheckbox","indeterminate","addOrRemoveAttribute","GeneralUtils","getNameOfClass","funcAsString","findLineByLeastSquares","maxDecimals","splitExponent","sum_x","sum_y","sum_xy","sum_xx","cssStyleObjectToMarkup","stylesToUse","resParts","styleKey","styleKeyDashed","eMessage","eBox","bindCellRendererToHtmlElement","cellRendererPromise","eTarget","cellRenderer","gui","getGui","ariaAttributeName","setAriaAttribute","removeAriaAttribute","labelledBy","description","describedby","hidden","setsize","multiSelectable","rowIndex","colCount","AriaUtils","setAriaRole","getAriaSortState","getAriaLevel","getAriaPosInSet","getAriaDescribedBy","setAriaLabel","setAriaLabelledBy","setAriaDescription","setAriaDescribedBy","setAriaLevel","setAriaDisabled","setAriaHidden","setAriaExpanded","removeAriaExpanded","setAriaSetSize","setAriaPosInSet","setAriaMultiSelectable","setAriaRowCount","setAriaRowIndex","setAriaColCount","setAriaColIndex","setAriaColSpan","setAriaSort","removeAriaSort","setAriaSelected","setAriaChecked","__read$j","includeTime","serialised","calculateOrdinal","fullYear","YYYY","YY","MMMM","MM","Mo","Do","DD","dddd","ddd","dd","do","regexp","timeStr","setSeconds","DateUtils","serialiseDate","dateToFormattedString","parseDateTimeFromString","iconNameClassMap","columnGroupOpened","columnGroupClosed","columnSelectClosed","columnSelectOpen","columnSelectIndeterminate","columnMovePin","columnMoveHide","columnMoveMove","columnMoveLeft","columnMoveRight","columnMoveGroup","columnMoveValue","columnMovePivot","dropNotAllowed","groupContracted","groupExpanded","check","previous","linked","unlinked","colorPicker","groupLoading","maximize","minimize","menuPin","menuValue","menuAddRowGroup","menuRemoveRowGroup","clipboardCopy","clipboardPaste","pivotPanel","rowGroupPanel","valuePanel","columnDrag","save","csvExport","excelExport","smallDown","smallLeft","smallRight","smallUp","sortAscending","sortDescending","sortUnSort","iconName","iconContents","createIconNoSpan","eResult","forceCreate","userProvidedIcon","optionsIcons","rendererResult","IconUtils","createIcon","BACKSPACE","TAB","LEFT","UP","RIGHT","DOWN","DELETE","F2","PAGE_UP","PAGE_DOWN","PAGE_HOME","PAGE_END","printableCharacter","numpadDelWithNumlockOnForEdgeOrIe","charCode","NUMPAD_DEL_NUMLOCK_ON_KEYCODE","isNumpadDelWithNumLockOnForEdge","keyboardEvent","editing","gridOptionsFunc","colDefFunc","headerRowIndex","suppressHeaderKeyboardEvent","alwaysReturnFalseOnBackspace","KeyboardUtils","isEventFromPrintableCharacter","isUserSuppressingKeyboardEvent","isUserSuppressingHeaderKeyboardEvent","normaliseQwertyAzerty","isDeleteKey","e1","e2","pixelCount","MouseUtils","areEventsNear","RowNodeUtils","sortRowNodesByOrder","rowNodes","rowNodeOrder","positionA","positionB","__objectId","atLeastOneOutOfOrder","traverseNodesWithKey","keyParts","currentNodes","hasChildren","recursiveSearchNodes","childrenAfterGroup","SetUtils","convertToSet","__assign$f","NumberSequence","initValue","nextValue","valToReturn","peek","AgPromiseStatus","IN_PROGRESS","RESOLVED","AgPromise","resolution","waiters","onDone","onReject","promises","remainingToResolve","combinedValues","resolveNow","ifNotResolvedValue","ifResolved","waiter","__extends$2P","__assign$e","__decorate$2q","TooltipStates","NOTHING","WAITING_TO_SHOW","SHOWING","CustomTooltipFeature","parentComp","DEFAULT_SHOW_TOOLTIP_DELAY","DEFAULT_HIDE_TOOLTIP_DELAY","SHOW_QUICK_TOOLTIP_DIFF","FADE_OUT_TOOLTIP_TIMEOUT","tooltipInstanceCount","postConstruct","onMouseMove","onMouseDown","onKeyDown","setToDoNothing","isLastTooltipHiddenRecently","showTooltipTimeoutId","showTooltip","lastMouseEvent","hideTooltip","clearTimeouts","tooltipComp","positionTooltipUnderLastMouseEvent","destroyTooltipComp","lastTooltipHideTime","tooltipPopupDestroyFunc","getTooltipParams","newTooltipComponentCallback","userComponentFactory","getTooltipCompDetails","newAgStackInstance","tooltipInstanceCopy","eGui","addPopupRes","popupService","addPopup","hideFunc","hideTooltipTimeoutId","positionPopupUnderMouseEvent","mouseEvent","ePopup","nudgeY","skipObserver","CssClassManager","cssClassStates","addCssClass","removeCssClass","containsCssClass","addOrRemoveCssClass","addOrRemove","__extends$2O","__decorate$2p","compIdSequence","compId","cssClassManager","setTemplate","preConstructOnComponent","usingBrowserTooltips","getCompId","tooltipText","setTooltip","newTooltipText","tooltipFeature","addTooltip","createChildComponentsFromTags","childComp","createComponentFromElement","copyAttributesFromNode","addItems","swapComponentForNode","componentParams","ComponentClass","agStackComponentsRegistry","elementGettingCreated","newComponent","setParentComponent","eComponent","swapInComponentForQuerySelectors","thisNoType","iterateOverQuerySelectors","thisPrototype","__agComponentMetaData","currentProtoName","querySelectors","setTemplateFromElement","__agComponent","wireQuerySelectors","createChildComponentsPreConstruct","setResult","refSelector","resultOfQuery","getFocusableElement","parentComponent","getParentComponent","setGui","queryForHtmlElement","queryForHtmlInputElement","newChild","EVENT_DISPLAYED_CHANGED","addGuiEventListener","getRefElement","refName","PreConstruct","querySelectorFunc","instanceName","getOrCreateProps","addToObjectProps","__extends$2N","__decorate$2o","ReadOnlyFloatingFilter","columnModel","eFloatingFilterText","setInputAriaLabel","onParentModelChanged","parentModel","parentFilterInstance","filterInstance","getModelAsString","modelAsString","RefSelector","DateCompWrapper","dateComponentParams","eParent","alive","getDateCompDetails","dateComp","afterGuiAttached","setDateCompDisabled","setInputPlaceholder","__assign$d","OptionsFactory","customFilterOptions","filterOptions","mapCustomOptions","selectDefaultItem","checkForDeprecatedParams","hideFilterInput","getFilterOptions","filterOption","mutatedFilterOptions","cv","numberOfInputs","displayKey","defaultOption","firstFilterOption","getDefaultOption","getCustomOption","DEFAULT_FILTER_LOCALE_TEXT","applyFilter","clearFilter","resetFilter","cancelFilter","textFilter","numberFilter","dateFilter","setFilter","filterOoo","notEqual","lessThan","greaterThan","inRange","inRangeStart","inRangeEnd","lessThanOrEqual","greaterThanOrEqual","notContains","endsWith","blank","notBlank","andCondition","orCondition","dateFormatOoo","__extends$2M","__assign$c","__decorate$2n","ManagedFocusFeature","eFocusableElement","shouldStopEventPropagation","onTabKeyDown","nextRoot","focusService","findNextFocusableElement","FOCUS_MANAGED_CLASS","addKeyDownListeners","onFocusIn","onFocusOut","__extends$2L","__decorate$2m","ProvidedFilter","filterNameKey","applyActive","hidePopup","appliedModel","resetTemplate","getFilterTitle","onFormSubmit","getCssIdentifier","createBodyTemplate","isReadOnly","providedFilterParams","readOnly","setParams","resetUiToDefaults","updateUiVisibility","setupOnBtApplyDebounce","isUseApplyButton","createButtonPanel","buttons","eButtonsPanel","clickListener","onBtApply","onBtClear","onBtReset","onBtCancel","addButton","getDefaultDebounceMs","debounceMs","getDebounceMs","onBtApplyDebounce","setModel","setModelIntoUi","applyModel","currentModel","afterAppliedFunc","onUiChanged","closeOnApply","newModel","getModelFromUi","isModelValid","previousModel","areModelsEqual","afterFloatingFilter","afterDataChange","filterChangedCallback","onNewRowsLoaded","fromFloatingFilter","filterModifiedCallback","debounceDefault","getCellValue","__extends$2K","AgAbstractLabel","labelSeparator","labelAlignment","eLabel","labelWidth","setLabelSeparator","setLabel","setLabelWidth","setLabelAlignment","refreshLabel","innerText","getLabelId","getLabel","alignment","eGuiClassList","__decorate$2l","__extends$2J","AgAbstractField","onValueChange","callbackFn","EVENT_CHANGED","setWidth","getPreviousValue","__extends$2I","__decorate$2k","AgPickerField","pickerIcon","ariaRole","isPickerDisplayed","isDestroyingPicker","skipClick","displayId","eDisplayField","eWrapper","clickHandler","pickerComponent","showPicker","icon","eIcon","setInputWidth","__extends$2H","AgList","cssIdentifier","itemEls","highlightedEl","setValueByIndex","isDown","itemToHighlight","nextPos","highlightItem","addOptions","listOptions","listOption","addOption","sanitisedText","renderOption","updateIndices","itemEl","clearHighlighted","fireItemSelected","displayValue","fireChangeEvent","getDisplayValue","refreshHighlighted","ACTIVE_CLASS","EVENT_ITEM_SELECTED","__decorate$2j","__extends$2G","__decorate$2i","AgSelect","listComponent","hideList","listGui","eDocument","destroyMouseWheelFunc","destroyFocusOutFunc","modal","closeOnEsc","closedCallback","positionPopupUnderComponent","keepWithinBounds","fromPicker","__extends$2F","__decorate$2h","AgAbstractInputField","displayFieldTag","setInputType","eInput","addInputListeners","getInputElement","setInputName","setMaxLength","maxLength","__extends$2E","__decorate$2g","ConditionPosition","One","Two","SimpleFilter","getNumberOfInputs","customOpts","optionsFactory","EMPTY","NOT_BLANK","BLANK","IN_RANGE","onFloatingFilterChanged","setTypeFromFloatingFilter","setValueFromFloatingFilter","eType1","eType2","isDefaultOperator","eJoinOperatorAnd","eJoinOperatorOr","isConditionUiComplete","isAllowTwoConditions","filterType","getFilterType","operator","getJoinOperator","condition1","createCondition","condition2","getConditionTypes","aIsSimple","bIsSimple","areSimpleModelsEqual","aCombined","bCombined","combinedModel","orChecked","setConditionIntoUi","simpleModel","doesFilterPass","models","individualConditionPasses","getDefaultFilterOptions","allowTwoConditions","suppressAndOrCondition","alwaysShowBothConditions","defaultJoinOperator","getDefaultJoinOperator","filterPlaceholder","putOptionsIntoDropdown","addChangedListeners","eTypes","createBoilerplateListOption","createCustomListOption","eType","customOption","createValueTemplate","elementBodies","eCondition1Body","eCondition2Body","eJoinOperatorPanel","isConditionVisible","isConditionDisabled","isConditionBodyVisible","forEachInput","setElementDisplayed","setElementDisabled","resetPlaceholder","suppressFocus","firstInput","getInputs","getPlaceholderText","defaultPlaceholder","filterPlaceholderFn","filterOptionKey","globalTranslate","setElementValue","attachElementOnChange","cb","getValues","filteringLabel","uniqueGroupId","setName","mapValuesFromModel","elPosition","filterModel","cellValue","customFilterOption","customFilterResult","evaluateCustomFilter","evaluateNullValue","evaluateNonNullValue","isBlank","EQUALS","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","CONTAINS","NOT_CONTAINS","STARTS_WITH","ENDS_WITH","__extends$2D","ScalarFilter","scalarFilterParams","includeBlanksInEquals","includeBlanksInGreaterThan","includeBlanksInLessThan","includeBlanksInRange","compareResult","compareToResult","inRangeInclusive","__extends$2C","__assign$b","__decorate$2f","DateFilter","minValidYear","maxValidYear","dateCondition1FromComp","dateFrom","dateTo","dateFilterParams","filterDate","yearParser","createDateComponents","createDateCompWrapper","onDateChanged","filterParams","eCondition1PanelFrom","dateCondition1ToComp","eCondition1PanelTo","dateCondition2FromComp","eCondition2PanelFrom","dateCondition2ToComp","eCondition2PanelTo","DEFAULT_FILTER_OPTIONS","valid","aSimple","bSimple","__extends$2B","SimpleFloatingFilter","getTextFromModel","customOption1","customOption2","conditionToString","isEventFromFloatingFilter","getLastType","lastType","setLastTypeFromModel","canWeEditAfterModelFromParentFilter","isTypeEditable","setEditable","doesFilterHaveSingleInput","uneditableTypes","__extends$2A","__decorate$2e","DateFloatingFilter","isRange","inRangeFloatingFilterDateFormat","createDateComponent","eReadOnlyText","eDateWrapper","allowEditing","filterValueText","__extends$2z","DefaultDateComponent","inputElement","eDateInput","shouldUseBrowserDatePicker","browserDatePicker","__decorate$2d","__extends$2y","__decorate$2c","NumberFilter","filterTo","numberFilterParams","allowedCharPattern","getAllowedCharPattern","agElementTag","stringToFloat","filterText","eValueFrom1","eValueTo1","eValueFrom2","eValueTo2","__extends$2x","__assign$a","__decorate$2b","TextFilter","trimInput","trimmedInput","textFilterParams","matcher","getTextMatcher","textFormatter","caseSensitive","DEFAULT_FORMATTER","DEFAULT_LOWERCASE_FORMATTER","legacyComparator","textCustomComparator","textMatcher","DEFAULT_MATCHER","cleanValue","formattedValues","cellValueFormatted","matcherParams","__extends$2w","__decorate$2a","TextInputFloatingFilter","eFloatingFilterInput","toDebounce","syncUpWithParentFilter","filterGui","columnDef","__extends$2v","NumberFloatingFilter","__extends$2u","TextFloatingFilter","TouchListener","preventMouseClick","destroyFuncs","touching","startListener","onTouchStart","moveListener","onTouchMove","endListener","onTouchEnd","getActiveTouch","touchList","touchStart","touchEvent","touchStartCopy","EVENT_LONG_TAP","EVENT_TAP","checkForDoubleTap","cancelable","DOUBLE_TAP_MILLIS","EVENT_DOUBLE_TAP","__extends$2t","__decorate$29","SortIndicatorComp","skipTemplate","TEMPLATE","attachCustomElements","eSortOrder","eSortAsc","eSortDesc","eSortMixed","eSortNone","setupSort","suppressOrder","setupMultiSortIndicator","sortable","addInIcon","onSortChanged","updateIcons","updateSortOrder","sortDirection","getDisplaySortForColumn","alwaysHideNoSort","isNone","isColumnShowingRowGroup","updateMultiSortIndicator","isMixedSort","allColumnsWithSorting","getColumnsWithSortingOrdered","indexThisCol","getDisplaySortIndexForColumn","moreThanOneColSorting","__extends$2s","__decorate$28","HeaderComp","lastMovingChanged","workOutTemplate","currentTemplate","workOutShowMenu","currentShowMenu","workOutSort","currentSort","setDisplayName","setupTap","setupIcons","setMenu","setupFilterIcon","currentDisplayName","displayNameSanitised","eText","eMenu","eFilter","touchListener","tapMenuButton","menuTouchListener","enableMenu","showColumnMenuAfterMouseClick","enableSorting","progressSort","menuHides","onIpadAndMenuHides","showMenu","menuFactory","showMenuAfterButtonClick","eSortIndicator","sortUsingCtrl","nowTime","multiSort","onSortingChanged","sortDirectionsMatch","sourceCol","isMultiSorting","onFilterChanged","filterPresent","__extends$2r","__decorate$27","HeaderGroupComp","checkWarnings","setupLabel","addGroupExpandIcon","setupExpandIcons","expandAction","newExpandedValue","addTouchAndClickListeners","eCloseIcon","eOpenIcon","stopPropagationAction","updateIconVisibility","__extends$2q","PopupComponent","isPopup","__extends$2p","LargeTextCellEditor","focusAfterAttached","cellStartedEdit","eTextArea","setCols","setRows","__decorate$26","__extends$2o","__decorate$25","SelectCellEditor","startedByEnter","eventKey","valueFormatted","valueFormatterService","formatValue","eSelect","stopEditing","focusIn","__extends$2n","PopupSelectCellEditor","__extends$2m","TextCellEditor","startValue","charPress","getStartValue","highlightAllOnFocus","inputEl","focusEl","useFormatter","refData","__decorate$24","__extends$2l","PopupTextCellEditor","__extends$2k","AnimateShowChangeCellRenderer","refreshCount","eValue","eDelta","showDelta","absDelta","valueToUse","deltaUp","setTimerToRemoveDelta","refreshCountCopy","hideDeltaValue","lastValue","filterManager","isSuppressFlashingCellsBecauseFiltering","__decorate$23","__extends$2j","AnimateSlideCellRenderer","eCurrent","addSlideAnimation","ePrevious","__decorate$22","RowHighlightPosition","Above","Below","RowNode","childrenMapped","rowTop","oldRowTop","OBJECT_ID_SEQUENCE","__autoHeights","alreadyRendered","highlighted","setData","setDataCommon","onDataChanged","updateDataOnDetailNode","checkRowSelectable","createDataChangedEvent","dispatchLocalEvent","detailNode","newData","EVENT_DATA_CHANGED","createLocalRowEvent","getRowIndexString","rowPinned","createDaemonNode","oldNode","daemon","setDataAndId","selectionService","syncInRowNode","isRowSelectableFunc","setRowSelectable","newVal","EVENT_SELECTABLE_CHANGED","calculateSelectedFromChildren","setSelected","parentKeys","getGroupKeys","ID_PREFIX_ROW_GROUP","excludeSelf","isPixelInRange","pixel","setFirstChild","EVENT_FIRST_CHILD_CHANGED","setLastChild","EVENT_LAST_CHILD_CHANGED","setChildIndex","childIndex","EVENT_CHILD_INDEX_CHANGED","setRowTop","EVENT_TOP_CHANGED","clearRowTopAndRowIndex","setRowIndex","setDragging","EVENT_DRAGGING_CHANGED","setHighlighted","EVENT_HIGHLIGHT_CHANGED","setAllChildrenCount","allChildrenCount","EVENT_ALL_CHILDREN_COUNT_CHANGED","setMaster","EVENT_MASTER_CHANGED","setGroup","updateHasChildren","EVENT_GROUP_CHANGED","setRowHeight","rowHeightEstimated","EVENT_HEIGHT_CHANGED","setRowAutoHeight","cellHeight","checkAutoHeightsDebounced","checkAutoHeights","notAllPresent","nonePresent","autoHeights","onRowHeightChangedDebounced","EVENT_ROW_INDEX_CHANGED","setUiLevel","uiLevel","EVENT_UI_LEVEL_CHANGED","createGlobalRowEvent","rowNodeEventThrottle","dispatchExpanded","rowRenderer","refreshCells","setDataValue","valueService","valueChanged","dispatchCellChangedEvent","setGroupValue","columnId","setAggData","newAggData","colIds","aggData","oldAggData","footer","__hasChildren","EVENT_HAS_CHILDREN_CHANGED","isEmptyRowGroupNode","EVENT_CELL_CHANGED","cellChangedEvent","resetQuickFilterAggregateText","quickFilterAggregateText","depthFirstSearch","atLeastOneSelected","atLeastOneDeSelected","atLeastOneMixed","childState","setSelectedInitialValue","clearSelection","suppressFinishActions","setSelectedParams","rangeSelect","isRowPinned","getLastSelectedNode","newRowClicked","allowMultiSelect","nodesChanged","doRowRangeSelection","setLastSelectedNode","updatedCount","selectThisNode","selectChildNodes","clearOtherNodes","updateGroupsFromChildrenSelections","groupsSelectChildren","lastSelectedNode","nodesToSelect","getNodesInRangeForSelection","isParentOfNode","potentialParent","childrenAfterAggFilter","EVENT_MOUSE_ENTER","EVENT_MOUSE_LEAVE","getFirstChildOfFirstChild","rowGroupColumn","currentRowNode","isCandidate","foundFirstChildPath","nodeToSwapIn","parentRowNode","isFullWidthCellFunc","getRoute","ID_PREFIX_TOP_PINNED","ID_PREFIX_BOTTOM_PINNED","__extends$2i","__assign$9","__decorate$21","CheckboxSelectionComponent","setPassive","getCheckboxId","onSelectionChanged","onSelectableChanged","showOrHideSelect","stateName","onCheckedClicked","onUncheckedClicked","getIsVisible","showOrHideSelectListener","showDisabledCheckboxes","removeHidden","__extends$2h","__decorate$20","__values$3","DragSourceType","ToolPanel","HeaderCell","RowDrag","ChartPanel","VerticalDirection","Up","Down","HorizontalDirection","Left","Right","DragAndDropService","dragSourceAndParamsList","dropTargets","DragAndDropService_1","ePinnedIcon","eHideIcon","eMoveIcon","eLeftIcon","eRightIcon","eGroupIcon","eAggregateIcon","ePivotIcon","eDropNotAllowedIcon","addDragSource","dragSource","allowTouch","dragStartPixels","onDragStart","onDragStop","onDragging","dragService","removeDragSource","sourceAndParams","clearDragSourceParamsList","nudge","eventLastTime","dragItem","getDragItem","lastDropTarget","dragSourceDropTarget","onDragStarted","createGhost","onDragStopped","draggingEvent","createDropTargetEvent","removeGhost","fromNudge","hDirection","getHorizontalDirection","vDirection","getVerticalDirection","positionGhost","validDropTargets","isMouseOnDropTarget","dropTarget","findCurrentDropTarget","leaveLastTargetIfExists","onGridExit","onGridEnter","enterDragTargetIfExists","getAllContainersFromDropTarget","secondaryContainers","getSecondaryContainers","getContainer","allContainersIntersect","containers_1","containers_1_1","allContainersFromDropTarget","mouseOverTarget","allContainersFromDropTarget_1","allContainersFromDropTarget_1_1","targetContainsSource","isInterestedIn","e_4","elementStack","elementStack_1","elementStack_1_1","validDropTargets_1","validDropTargets_1_1","e_4_1","onDragEnter","dragEnterEvent","setGhostIcon","getIconName","onDragLeave","dragLeaveEvent","addDropTarget","removeDropTarget","hasExternalDropZones","zones","external","findExternalZone","zone","eClientX","eClientY","dropZoneTarget","ghost","eGhost","ghostHeight","browserWidth","browserHeight","windowScrollY","windowScrollX","eGhostParent","GHOST_TEMPLATE","mouseEventService","stampTopLevelGridCompWithGridInstance","eGhostIcon","dragItemName","shake","defaultIconName","ICON_NOT_ALLOWED","ICON_PINNED","ICON_MOVE","ICON_LEFT","ICON_RIGHT","ICON_GROUP","ICON_AGGREGATE","ICON_PIVOT","ICON_HIDE","__extends$2g","__decorate$1$","RowDragComp","cellValueFn","customGui","suppressVisibilityChange","isCustomGui","setDragElement","checkCompatibility","ManagedVisibilityStrategy","NonManagedVisibilityStrategy","getSelectedNodes","managed","defaultTextValue","dragItemCount","dragSourceDomDataKey","dragAndDropService","VisibilityStrategy","setDisplayedOrVisible","neverDisplayed","shown","isShownSometimes","onSuppressRowDrag","workOutVisibility","rowDragFeature","getGridBodyCtrl","getRowDragFeature","shouldPreventRowMove","__extends$2f","__assign$8","__decorate$1_","GroupCellRendererCtrl","eExpanded","eContracted","compClass","topLevelFooter","isTopLevelFooter","embeddedRowMismatch","isEmbeddedRowMismatch","nullValue","skipCell","cellIsBlank","setupShowingValueForOpenedParent","findDisplayedGroupNode","addFullWidthRowDraggerIfNeeded","addExpandAndContract","addCheckboxIfNeeded","addValueElement","setupIndent","refreshAriaExpanded","expandListener","eParentOfValue","rowGroupCols","fullWidth","pinnedLeftCell","pinnedRightCell","bodyCell","showingValueForOpenedParent","displayedGroupNode","keyOfGroupingColumn","valPresent","addFooterValue","addGroupValue","addChildCount","paramsAdjusted","adjustParamsWithDetailsFromRelatedColumn","innerCompDetails","getInnerCompDetails","setInnerRenderer","valueWhenNoRenderer","relatedColumn","footerValueGetter","footerValue","paramsClone","getFullWidthGroupRowInnerCellRenderer","getInnerRendererDetails","isGroupRowRenderer","details","relatedColDef","relatedCompDetails","getCellRendererDetails","cellRendererParams","suppressCount","updateChildCount","showingGroupForThisNode","isShowRowGroupForThisRow","setChildCount","countString","thisColumnIsInterested","eExpandedIcon","eContractedIcon","eGroupCell","eGridCell","suppressDoubleClickExpand","onCellDblClicked","onExpandClicked","showExpandAndContractIcons","expandableChangedListener","onRowNodeIsExpandableChanged","onExpandOrContract","nextExpandState","sticky","scrollToStickyNode","getScrollFeature","setVerticalScrollPosition","stickyRowTop","reducedLeafNode","leafGroup","displayedGroup","setExpandedDisplayed","setContractedDisplayed","pivotModeAndLeafGroup","addExpandableCss","isTotalFooterNode","ke","setIndent","suppressPadding","fullWithRow","paddingCount","indentClass","rowDragComp","isUserWantsSelected","paramsCheckbox","checkbox","checkboxNeeded","cbSelectionComponent_1","setCheckboxVisible","suppressEnterExpand","__extends$2e","__decorate$1Z","GroupCellRenderer","compProxy","compDetails","valueToDisplay","setRenderDetails","eChildCount","ctrl","componentPromise","destroyComp","innerCellRenderer","__extends$2d","__decorate$1Y","LoadingCellRenderer","failedLoad","setupFailed","setupLoading","eLoadingText","eLoadingIcon","__extends$2c","LoadingOverlayComponent$1","LoadingOverlayComponent","DEFAULT_LOADING_OVERLAY_TEMPLATE","localisedTemplate","__extends$2b","NoRowsOverlayComponent$1","NoRowsOverlayComponent","DEFAULT_NO_ROWS_TEMPLATE","__extends$2a","TooltipComponent$1","TooltipComponent","__extends$29","__decorate$1X","UserComponentRegistry","agGridDefaults","agDateInput","agColumnHeader","agColumnGroupHeader","agSortIndicator","agTextColumnFloatingFilter","agNumberColumnFloatingFilter","agDateColumnFloatingFilter","agReadOnlyFloatingFilter","agAnimateShowChangeCellRenderer","agAnimateSlideCellRenderer","agGroupCellRenderer","agGroupRowRenderer","agLoadingCellRenderer","agCellEditor","agTextCellEditor","agSelectCellEditor","agPopupTextCellEditor","agPopupSelectCellEditor","agLargeTextCellEditor","agTextColumnFilter","agNumberColumnFilter","agDateColumnFilter","agLoadingOverlay","agNoRowsOverlay","agTooltipComponent","agDeprecatedNames","newComponentName","propertyHolder","animateShowChange","animateSlide","largeText","popupSelect","popupText","richSelect","headerComponent","jsComps","fwComps","registerJsComponent","frameworkComponents","registerFwComponent","registerDefaultComponent","rawName","translateIfDeprecated","retrieve","createResult","componentFromFramework","registeredViaFrameworkComp","frameworkComponent","jsComponent","isFrameworkComponent","defaultComponent","deprecatedInfo","HeaderComponent","HeaderGroupComponent","CellRendererComponent","CellEditorComponent","InnerRendererComponent","FilterComponent","FloatingFilterComponent","ToolPanelComponent","StatusPanelComponent","FullWidth","FullWidthLoading","FullWidthGroup","FullWidthDetail","FloatingFilterMapper","getFloatingFilterType","filterToFloatingFilterMapping","agSetColumnFilter","agMultiColumnFilter","__extends$28","__decorate$1W","UserComponentFactory","getHeaderCompDetails","getCompDetails","getHeaderGroupCompDetails","getFullWidthCellRendererDetails","getFullWidthLoadingCellRendererDetails","getFullWidthGroupCellRendererDetails","getFullWidthDetailCellRendererDetails","getCellEditorDetails","getFilterDetails","defaultFilter","getLoadingOverlayCompDetails","getNoRowsOverlayCompDetails","getSetFilterCellRendererDetails","getFloatingFilterCompDetails","defaultFloatingFilter","getToolPanelCompDetails","toolPanelDef","getStatusPanelCompDetails","defObject","defaultName","mandatory","getCompKeys","compName","jsComp","fwComp","paramsFromSelector","popupFromSelector","popupPositionFromSelector","lookupFromRegistry","userComponentRegistry","Va","agComponentUtils","doesImplementIComponent","adaptFunction","paramsMerged","mergeParamsWithApplicationProvidedParams","defObjectAny","selectorFunc","selectorRes","assignComp","providedJsComp","providedFwComp","xxxFrameworkDeprecatedWarn","warningMessage_1","popup","popupPosition","thisComponentConfig","componentMetadataProvider","frameworkComponentWrapper","mandatoryMethodList","optionalMethodList","deferredInit","initComponent","paramsFromGrid","userParams","getDefaultFloatingFilterType","defaultFloatingFilterType","ExcelFactoryMode","SINGLE_SHEET","MULTI_SHEET","__extends$27","__decorate$1V","DragService","dragEndFunctions","dragSources","removeAllListeners","dragSourceAndListener","mouseDownListener","touchEnabled","touchStartListener","includeTouch","mouseListener","currentDragParams","touchLastTime","onTouchUp","addTemporaryEvents","onCommonMove","skipMouseEvent","_alreadyProcessedByDragService","mouseStartEvent","onMouseUp","currentEvent","isEventNearStartEvent","requiredPixelDiff","getFirstActiveTouch","isEventFromThisGrid","isOverFormFieldElement","onUpCommon","eventOrTouch","__extends$26","__assign$7","__decorate$1U","FilterManager","allColumnFilters","activeAggregateFilters","activeColumnFilters","quickFilter","quickFilterParts","processingFilterChange","FilterManager_1","onColumnsChanged","refreshFiltersForAggregations","parseQuickFilter","setQuickFilterParts","externalFilterPresent","setFilterModel","allPromises","getFilterModel","modelKeys_1","filterWrapper","setModelOnFilterWrapper","filterPromise","getOrCreateFilterWrapper","promiseFilter","isColumnFilterPresent","isAggregateFilterPresent","doAggregateFiltersPass","filterToSkip","doColumnFiltersPass","updateActiveFilters","groupFilterEnabled","filterComp","isShowingPrimaryColumns","isAggFilter","updateFilterFlagInColumns","isAnyFilterPresent","isQuickFilterPresent","targetAggregates","targetedFilters","targetedData","newFilter","parsedFilter","callOnFilterChangedOutsideRenderCycle","isRefreshInProgress","onAnyFilterChanged","doesRowPassOtherFilters","doesRowPassFilter","filterInstanceToSkip","doesRowPassQuickFilterNoCache","filterPart","getQuickFilterTextForColumn","doesRowPassQuickFilterCache","aggregateRowForQuickFilter","doesRowPassQuickFilter","usingCache","doesRowPassAggregateFilters","stringParts","QUICK_FILTER_SEPARATOR","createValueGetter","getFilterComponent","createIfDoesNotExist","cachedFilter","putIntoGui","createFilterWrapper","createFilterInstance","createFilterParams","doesRowPassOtherFilter","compiledElement","guiPromise","eFilterGui","guiFromFilter","disposeFilterWrapper","destroyFilter","__extends$25","AbstractHeaderCellComp","getCtrl","__extends$24","__decorate$1T","HeaderFilterCellComp","setComp","cssClassName","addOrRemoveBodyCssClass","eFloatingFilterBody","addOrRemoveButtonWrapperCssClass","eButtonWrapper","setCompDetails","getFloatingFilterComp","compPromise","setMenuIcon","eButtonShowMainFilter","afterCompCreated","__extends$23","__decorate$1S","LayoutCssClasses","AUTO_HEIGHT","NORMAL","LayoutFeature","updateLayoutClasses","__extends$22","__decorate$1R","GridBodyScrollFeature","eBodyViewport","nextScrollTop","resetLastHorizontalScrollElementDebounced","resetLastHorizontalScrollElement","onDisplayedColumnsWidthChanged","whenReady","centerRowContainerCtrl","addScrollListener","fakeHScroll","getFakeHScrollCtrl","getViewportElement","onCenterViewportScroll","getViewport","onFakeHorizontalScroll","onVerticalScroll","horizontallyScrollHeaderCenterAndFloatingCenter","getCenterViewportScrollLeft","topCenterContainer","getTopCenterRowContainerCtrl","stickyTopCenterContainer","getStickyTopCenterRowContainerCtrl","bottomCenterContainer","getBottomCenterRowContainerCtrl","getHeaderRowContainerCtrl","setHorizontalScroll","setContainerTranslateX","centerViewport","lastHorizontalScrollElement","isControllingScroll","eDiv","fakeHScrollViewport","onBodyHorizontalScroll","centerContainerViewport","eSource","shouldBlockScrollUpdate","doHorizontalScroll","redrawRowsAfterScroll","fakeScrollLeft","fireScrollEvent","onHorizontalViewportChanged","bodyScrollEvent","scrollTimer","bodyScrollEndEvent","touchOnly","getCenterWidth","checkScrollLeft","executeAnimationFrameScroll","frameNeeded","setHorizontalScrollPosition","hScrollPosition","maxScrollLeft","vScrollPosition","getVScrollPosition","getHScrollPosition","scrollHorizontally","pixels","oldScrollPosition","scrollToTop","ensureNodeVisible","getRowCount","indexToSelect","getRow","ensureIndexVisible","paginationProxy","goToPageWithIndex","rowGotShiftedDuringOperation","stickyTopHeight","getStickyTopHeight","startingRowTop","startingRowHeight","paginationOffset","getPixelOffset","rowTopPixel","rowBottomPixel","heightOffset","heightScaler","getDivStretchOffset","vScrollTop","vScrollBottom","viewportHeight","pxTop","getScrollPositionForPixel","pxBottom","pxMiddle","newScrollPosition","redrawAfterScroll","ensureColumnVisible","newHorizontalScroll","getPositionedHorizontalScroll","setCenterViewportScrollLeft","isColumnOutsideViewport","columnBeforeStart","columnAfterEnd","viewportTooSmallForColumn","alignColToStart","alignColToEnd","isMiddle","getColumnBounds","colLeft","colRight","colMiddle","getViewportBounds","viewportStart","viewportEnd","colLeftPixel","colRightPixel","AutoScrollService","tickingInterval","onScrollCallback","scrollAxis","scrollVertically","scrollByTick","getVerticalPosition","setVerticalPosition","getHorizontalPosition","setHorizontalPosition","shouldSkipVerticalScroll","shouldSkipHorizontalScroll","forceSkipVerticalScroll","skipVerticalScroll","scrollTick","tickLeft","tickRight","tickUp","tickDown","ensureTickingStarted","ensureCleared","doTick","tickCount","tickAmount","__extends$21","__assign$6","__decorate$1Q","__read$i","RowDragFeature","isMultiRowDrag","isGridSorted","isGridFiltered","clientSideRowModel","refreshStatus","onRowGroupChanged","gridBodyCon","autoScrollService","getBodyViewportElement","lastDraggingEvent","isSortActive","rowGroups","getRowNodes","isFromThisGrid","selectedNodes","__spread$e","getRowIndexNumber","currentNode","dispatchGridEvent","onEnterOrDragging","isDropZoneWithinThisGrid","getNormalisedPosition","doManagedDrag","managedDrag","highlightRowAtPixel","moveRows","moveRowAndClearHighlight","lastHighlightedRowNode","getLastHighlightedRowNode","isBelow","increment","getRowIdFunc_1","addIndex","getRowIndexAtPixel","getHighlightPosition","updateRowData","getRowNode","clearRowHighlight","ensureRowsAtPixel","clearFocusedCell","rangeService","removeAllCellRanges","addRowDropZone","processedParams","fromGrid","draggingToRowDragEvent","getRowDropZone","overNode","vDirectionString","yNormalised","overIndex","getCurrentPageHeight","__extends$20","__decorate$1P","RowAnimationCssClasses","ANIMATION_ON","ANIMATION_OFF","CSS_CLASS_CELL_SELECTABLE","CSS_CLASS_FORCE_VERTICAL_SCROLL","CSS_CLASS_COLUMN_MOVING","GridBodyCtrl","bodyScrollFeature","eGridBody","eTop","eBottom","eStickyTop","setCellTextSelection","addRowDragListener","setupRowAnimationCssClass","addEventListeners","addFocusListeners","onGridColumnsChanged","addBodyViewportListener","setFloatingHeights","disableBrowserDragging","addStopEditingWhenGridLosesFocus","registerGridBodyCtrl","getComp","onScrollVisibilityChanged","onPinnedRowDataChanged","onHeaderHeightChanged","isFocusedElementNested","gridContainRelatedTarget","isNestedRelatedTarget","setColumnMovingCss","setCellSelectableCss","scrollVisibleService","setVerticalScrollPaddingVisible","setStickyTopWidth","setColumnCount","HTMLImageElement","focusOutListener","elementWithFocus","clickInsideGrid","viewports","isElementInThisGrid","getActivePopups","isElementWithinCustomPopup","updateRowCount","headerCount","headerNavigationService","isLastRowIndexKnown","setRowCount","registerBodyViewportResizeListener","setPinnedTopBottomOverflowY","allowVerticalScroll","setAlwaysVerticalScrollClass","rowContainerHeightService","isStretching","setRowAnimationCssOnBodyViewport","getGridBodyElement","getCenterRowContainerCtrl","contextMenuFactory","onContextMenu","mockContextMenuForIPad","onBodyViewportWheel","onStickyTopWheel","hasAnchoredPopup","pinnedRowModel","floatingTopHeight","getPinnedTopTotalHeight","floatingBottomHeight","getPinnedBottomTotalHeight","setTopHeight","setBottomHeight","setTopDisplay","setBottomDisplay","setStickyTopOffsetTop","setStickyTopHeight","vScrollVisible","getGridHeaderCtrl","pinnedTopHeight","setStickyTopTop","nextTimeout","scrollWidthToRemove","addScrollEventListener","removeScrollEventListener","SelectionHandleType","FILL","RANGE","CellRangeType","VALUE","DIMENSION","CSS_CELL_RANGE_SELECTED","CellRangeFeature","cellCtrl","cellComp","onRangeSelectionChanged","rangeCount","getCellRangeCount","getCellPosition","hasChartRange","getHasChartRange","isSingleCell","updateRangeBorders","refreshHandle","rangeBorders","getRangeBorders","isRight","isBottom","isLeft","isMoreThanOneCell","cellRanges","getCellRanges","updateRangeBordersIfRangeCount","leftCol","rightCol","thisCol","isCellInSpecificRange","startRow","getRangeStartRow","endRow","getRangeEndRow","rowPositionUtils","sameRow","shouldHaveSelectionHandle","selectionHandle","addSelectionHandle","rangesLen","cellRange","cellPosition","isFillHandleAvailable","isRangeHandleAvailable","handleIsAvailable","isEditing","isCategoryCell","isContiguousRange","isBottomRightCell","cellRangeType","selectionHandleFactory","createSelectionHandle","__extends$1$","CellPositionFeature","setupColSpan","setupRowSpan","onLeftChanged","onWidthChanged","applyRowSpan","onDisplayColumnsChanged","colsSpanning","getColSpanningList","getCellWidth","modifyLeftForPrintLayout","getCellLeft","isPrintLayout","singleRowHeight","__extends$1_","CellCustomStyleFeature","staticClasses","applyUserStyles","applyCellClassRules","applyClassesFromColDef","cellClassParams","stylingService","processClassRules","cellClassRules","cellStyle","cellStyleParams","cellStyleFunc","setUserStyles","getStaticCellClasses","__extends$1Z","TooltipFeature","setupTooltip","browserTooltips","updateTooltipText","setTitle","tooltip","createTooltipFeatureIfNeeded","getTooltipValue","genericTooltipFeature","refreshToolTip","getLocation","getRowIndex","getTooltipText","getValueFormatted","__decorate$1O","Beans","doingMasterDetail","serverSideRowModel","__extends$1Y","CellMouseListenerFeature","onMouseEvent","onCellClicked","onCellDoubleClicked","onMouseOut","onMouseOver","isDoubleClickOnIPad","intersectLastRange","cellClickedEvent","startRowOrCellEdit","nowMillis","lastIPadMouseClickEvent","cellDoubleClickedEvent","isRightClickInExistingRange","forceBrowserFocus","focusCell","containsWidget","thisCell","extendLatestRangeToCell","setRangeToCell","ctrlKeyPressed","isCellInAnyRange","mouseStayingInsideCell","cellMouseOutEvent","columnHoverService","clearMouseOver","cellMouseOverEvent","setMouseOver","cellContainsTarget","cellContainsRelatedTarget","__extends$1X","CellKeyboardListenerFeature","rowCtrl","onEnterKeyDown","onF2KeyDown","onEscapeKeyDown","onBackspaceOrDeleteKeyPressed","onNavigationKeyPressed","isRangeSelectionEnabled","onShiftRangeSelect","navigationService","endCell","extendLatestRangeInDirection","ensureCellVisible","clearCellRangeCellValues","stopEditingAndFocus","stopRowOrCellEdit","onKeyPress","pressedChar","onSpaceKeyPressed","newSelection","__extends$1W","DndSourceComp","eCell","checkVisibility","dragEvent","providedOnRowDrag","dndSourceOnRowDrag","dataTransfer","setDragImage","jsonData","defaultOnRowDrag","__decorate$1N","__extends$1V","__assign$5","CSS_CELL_NOT_INLINE_EDITING","instanceIdSequence$3","CellCtrl","suppressRefreshCell","onCellCompAttachedFuncs","createCellPosition","addFeatures","cellPositionFeature","cellCustomStyleFeature","cellMouseListenerFeature","cellKeyboardListenerFeature","cellRangeFeature","addTooltipFeature","tooltipValueGetter","eCellWrapper","printLayout","startEditing","gow","updateAndFormatValue","addDomData","onCellFocused","applyStaticCssClasses","setWrapText","onFirstRightPinnedChanged","onLastLeftPinnedChanged","onColumnHover","setupControlComps","setupAutoHeight","setTabIndex","colIdSanitised","setColId","setRole","showValue","eParentCell","minRowHeight","measureHeight","timesCalled","doc","newHeight","destroyResizeObserver","resizeObserverService","observeResize","forceNewCellRendererInstance","createCellRendererParams","includeSelection","isIncludeControl","includeRowDrag","includeDndSource","setIncludeSelection","setIncludeDndSource","setIncludeRowDrag","isForceWrapper","forceWrapper","refreshShouldDestroy","selectionChanged","rowDragChanged","dndSourceChanged","editorParams","createCellEditorParams","cellEditorPopup","cellEditorPopupPosition","setEditing","setEditDetails","inPopup","editingInPopup","setInlineEditingClass","stopRowEditing","onPopupEditorClosed","takeValueFromCellEditor","noValueResult","newValueExists","getCellEditor","isCancelAfterEnd","saveNewValue","dispatchEventForSaveValueReadOnly","getValueFromValueService","refreshCell","forceRefresh","suppressFlash","dispatchEditingStoppedEvent","editingStoppedEvent","editingInline","popupEditorShowing","setInlineEditingCss","hackSayEditingInPopup","getParentOfValue","registerRowDragger","rowDraggerElement","addRowCompListener","valueParser","setFocusOutOnEditor","focusOut","setFocusInOnEditor","onCellChanged","suppressCellFlash","valuesDifferent","flashCell","suppressNavigateAfterEdit","navigateAfterEdit","delays","animateCell","flashDelay","fadeDelay","cssName","fullName","animationFullName","onFlashCells","cellId","cellPositionUtils","createId","callValueFormatter","oldValueFormatted","valuesAreEqual","lockedClosedGroup","isOpenGroup","groupFootersEnabled","groupAlwaysShowAggData","DOM_DATA_KEY_CELL_CTRL","domEvent","onDisplayedColumnsChanged","colIdx","getBeans","htmlElement","startRowEditing","getRowCtrl","getRowPosition","setFocusedCell","onRowIndexChanged","cellFocused","isCellFocused","preventScrollOnBrowserFocus","fullRowEdit","isHovered","onColDefChanged","wrapText","dispatchCellContextMenuEvent","cellContextMenuEvent","onCellContextMenu","getCellRenderer","createSelectionCheckbox","cbSelectionComponent","createDndSource","dndSourceComp","customElement","customRowDragComp","newComp","createRowDragComp","clientSideRowModelActive","__extends$1U","__read$h","RowType$1","RowType","Normal","instanceIdSequence$2","RowCtrl","animateIn","useAnimationFrameForCreate","allRowGuis","centerCellCtrls","leftCellCtrls","rightCellCtrls","lastMouseDownOnDragger","updateColumnListsPending","paginationPage","getCurrentPage","setAnimateFlags","rowFocused","isRowFocused","rowLevel","rowCssClassCalculator","calculateRowLevel","setRowType","addListeners","rowComp","containerType","RowContainerType","leftGui","rightGui","FULL_WIDTH","fullWidthGui","centerGui","initialiseRowComps","rowType","dispatchFirstDataRenderedEvent","isCacheable","setCached","cached","rg","onRowHeightChanged","updateRowIndexes","setFocusedClasses","setStylesFromGridOptions","onRowSelected","updateColumnLists","slideRowIn","onTopChanged","fadeRowIn","businessKey","getRowBusinessKey","rowIdSanitised","businessKeySanitised","getInitialRowClasses","setRowId","setRowBusinessKey","isFullWidth","DOM_DATA_KEY_ROW_CTRL","createTask","addHoverFunctionality","setupFullWidth","addRowDraggerToRow","addDestroyTask","executeProcessRowPostCreateFunc","getPinnedForContainer","createFullWidthParams","masterDetailModuleLoaded","showFullWidth","getCellElement","getCellCtrl","eRow","ePinnedLeftRow","ePinnedRightRow","addRenderedRowListener","isStub","stub","isDetailCell","isFullWidthGroup","updateColumnListsImpl","createCellCtrls","addCell","colInstanceId","prevCellCtrl","isCellEligibleToBeRemoved","centerCols","leftCols","rightCols","setCellCtrls","nextContainerPinned","REMOVE_CELL","column_1","oldRowTopExists","editingRow","getRowType","refreshFullWidth","tryRefresh","getFullWidthCellRenderer","refreshSucceeded","fullWidthSuccess","centerSuccess","leftSuccess","rightSuccess","allFullWidthRowsRefreshed","updateExpandedCss","onRowNodeDataChanged","onRowNodeCellChanged","onRowNodeHighlightChanged","onRowNodeDraggingChanged","onUiLevelChanged","onPaginationPixelOffsetChanged","onVirtualColumnsChanged","onCellFocusChanged","onPaginationChanged","onModelUpdated","onColumnMoved","addListenersForCellComps","getAllCellCtrls","postProcessCss","postProcessClassesFromGridOptions","postProcessRowClassRules","postProcessRowDragging","belowOn","onKeyboardNavigate","currentFullWidthComp","lastFocusedCell","getFocusedCell","currentFullWidthContainer","isFullWidthContainerFocused","nextEl","onFullWidthRowFocused","isFocused","removeCellCtrl","cellCtrlToRemove","onRowDblClick","onRowClick","onRowMouseDown","createRowEvent","createRowEventWithSource","multiSelectKeyPressed","shiftKeyPressed","multiSelectOnClick","rowDeselectionWithCtrl","setupDetailRowAutoHeight","eDetailGui","checkRowSizeFunc","resizeObserverDestroyFunc","addFullWidthRowDragging","newLevel","classToAdd_1","classToRemove_1","isFirstRowOnPage","getPageFirstRow","isLastRowOnPage","getPageLastRow","refreshFirstAndLastRowStyles","newFirst","newLast","firstRowOnPage","lastRowOnPage","stoppingRowEdit","cellControls","isRowEdit","fireRowEditEvent","cellControls_1","__values$2","cellControls_1_1","setEditingRow","sourceRenderedCell","__spread$d","processClassesFromGridOptions","classStr","processRowClassRules","rowStyles","processStylesFromGridOptions","businessKeyForNodeFunc","rowContainerType","rowIsEven","fullWidthRow","rowStyleFuncResult","rowStyleFunc","createAriaLabel","isUseAnimationFrameForCreate","roundRowTopToBounds","minPixel","applyPaginationOffset","maxPixel","heightFromFunc","lineHeight","destroyFirstPass","setupRemoveAnimation","destroySecondPass","destroyCellCtrls","ctrls","currentPage","topPx","afterPaginationPixels","afterScalingPixels","getRealPixelPosition","setRowTopStyle","getInitialRowTop","getInitialRowTopShared","getInitialTransform","setTop","setTransform","rowIndexStr","headerRowCount","ariaRowIndex","getPinnedLeftRowElement","getPinnedRightRowElement","getBodyRowElement","getFullWidthRowElement","__extends$1T","__decorate$1M","RowContainerEventsFeature","addMouseListeners","addKeyboardEvents","processKeyboardEvent","processMouseEvent","getRowForEvent","getRenderedCellForEvent","handleContextMenuMouseEvent","rowCon","anchorToElement","processCellKeyboardEvent","processFullWidthRowKeyboardEvent","handlePageScrollingKey","doGridOperations","cellKeyDownEvent","cellKeyPressEvent","focusedCell","onCtrlAndA","onCtrlAndC","onCtrlAndV","onCtrlAndD","onCtrlAndZ","onCtrlAndY","isRowsToRender","__read$g","floatingStart","floatingEnd","rowEnd","setCellRange","rowStartIndex","rowStartPinned","rowEndIndex","rowEndPinned","columnStart","columnEnd","clipboardService","copyToClipboard","pasteFromClipboard","copyRangeDown","undoRedoService","redo","undo","__extends$1S","__decorate$1L","ViewportSizeFeature","centerContainerCtrl","gridBodyCtrl","listenForResize","onScrollbarWidthChanged","onCenterViewportResized","registerViewportResizeListener","checkViewportAndScrolls","isViewportVisible","centerWidth","bodyHeight","updateScrollVisibleService","checkBodyHeight","updateScrollVisibleServiceImpl","horizontalScrollShowing","verticalScrollShowing","setScrollsVisible","isViewportHScrollShowing","getViewportScrollLeft","__extends$1R","__decorate$1K","SetPinnedLeftWidthFeature","onPinnedLeftWidthChanged","pinnedWidthService","getPinnedLeftWidth","__extends$1Q","__decorate$1J","SetPinnedRightWidthFeature","onPinnedRightWidthChanged","getPinnedRightWidth","__extends$1P","__decorate$1I","SetHeightFeature","onHeightChanged","maxDivHeightScaler","getUiContainerHeight","heightString","__extends$1O","__decorate$1H","DragListenerFeature","__extends$1N","__decorate$1G","CenterWidthFeature","totalWidth","__extends$1M","__decorate$1F","__read$f","RowContainerName","CENTER","TOP_LEFT","TOP_RIGHT","TOP_CENTER","TOP_FULL_WIDTH","STICKY_TOP_LEFT","STICKY_TOP_RIGHT","STICKY_TOP_CENTER","STICKY_TOP_FULL_WIDTH","BOTTOM_LEFT","BOTTOM_RIGHT","BOTTOM_CENTER","BOTTOM_FULL_WIDTH","ContainerCssClasses","ViewportCssClasses","WrapperCssClasses","RowContainerCtrl","getRowContainerCssClasses","forContainers","viewportSizeFeature","registerWithCtrlsService","registerCenterRowContainerCtrl","registerLeftRowContainerCtrl","registerRightRowContainerCtrl","registerTopCenterRowContainerCtrl","registerTopLeftRowContainerCon","registerTopRightRowContainerCtrl","registerStickyTopCenterRowContainerCtrl","registerStickyTopLeftRowContainerCon","registerStickyTopRightRowContainerCtrl","registerBottomCenterRowContainerCtrl","registerBottomLeftRowContainerCtrl","registerBottomRightRowContainerCtrl","names","getViewportSizeFeature","eViewport","addPreventScrollWhileDragging","listenOnDomOrder","stopHScrollOnPinnedRows","allNoFW","__spread$c","allMiddle","allCenter","allRight","setContainerWidth","onDisplayedRowsChanged","setDomOrder","resetScrollLeft","setViewportHeight","unsubscribeFromResize","fullWithContainer","rowsThisContainer","getRowCtrls","embedFW","setRowCtrls","getTopRowCtrls","getStickyTopRowCtrls","getBottomRowCtrls","__extends$1L","__decorate$1E","GRID_BODY_TEMPLATE","GridBodyComp","bodyViewportClassList","ct","getFloatingTopBottom","__extends$1K","__decorate$1D","ScrollVisibleService","updateImpl","centerRowCtrl","__extends$1J","__decorate$1C","MouseEventService","gridInstanceId","MouseEventService_1","gridInstanceSequence","GRID_DOM_KEY","getCellPositionForEvent","gridPanelHasScrolls","vRange","__extends$1I","__assign$4","__decorate$1B","NavigationService","onPageDown","onPageUp","rangeServiceShouldHandleShift","currentCell","processed","onHomeOrEndKey","onCtrlUpDownLeftRight","navigateTo","navigateParams","scrollIndex","scrollType","scrollColumn","focusIndex","focusColumn","isAsync","gridCell","pixelsInOnePage","getViewportHeight","pagingPixelOffset","currentPageBottomRow","navigateToNextPageWithAutoHeight","navigateToNextPage","currentPageTopRow","up","firstRow","lastRow","rowPixelDiff","nextCellPixel","isRowTallerThanView","getNextFocusIndexForAutoHeight","lastRowIndex","pixelSum","currentCellHeight","cellToFocus","cellNavigationService","getNextCellToFocus","homeKey","columnToSelect","backwards","tabToNextCellCommon","focusLastHeader","focusNextGridCoreContainer","cellOrRow","getCellByPosition","getRowByPosition","moveToNextEditingRow","moveToNextEditingCell","moveToNextCellNotEditing","getFocusedHeader","previousCell","previousPos","nextCell","findNextCellToFocusOn","previousEditable","nextEditable","rowsMatch","cellPos","tryToFocusFullWidthRow","previousPosition","nextPosition","getLastCellOfColSpan","getNextTabbedCell","userCell","previousCellPosition","nextCellPosition","floating","headerLen","focusHeaderPosition","headerPosition","lookupRowNodeForCell","getPinnedTopRow","getPinnedBottomRow","allowUserOverride","hitEdgeOfGrid","isValidNavigateCell","normalisedPosition","focusPosition","currentCellFocused","fromBelow","colSpanningList","isGroupStickyEnabled","__extends$1H","PopupEditorWrapper","DOM_KEY_POPUP_EDITOR_WRAPPER","addKeyDownListener","__decorate$1A","__extends$1G","CellComp","rendererVersion","editorVersion","refreshWrapper","include","eCellValue","cellEditorPopupWrapper","firstRender","controlWrapperChanged","refreshCellRenderer","destroyRenderer","createCellRendererInstance","insertValueWithoutCellRenderer","createCellEditorInstance","destroyEditor","removeControls","checkboxSelectionComp","rowDraggingComp","providingControls","usingWrapper","putWrapperIn","takeWrapperOut","usingCellValue","putCellValueIn","takeCellValueOut","templateChanged","addControls","describedByIds","versionCopy","cellEditorPromise","afterCellEditorCreated","escapedValue","destroyEditorAndRenderer","cellRendererGui","hideEditorPopup","cellEditorGui","compClassAndParams","cellRendererClass","displayComponentVersionCopy","createCellRendererFunc","afterCellRendererCreated","cellRendererVersion","requestVersion","isCancelBeforeStart","addPopupCellEditor","addInCellEditor","clearParentOfValue","ePopupGui","useModelPopup","positionToUse","getPopupPosition","positionParams","positionCallback","positionPopupOverComponent","__extends$1F","RowComp","cellComps","getInitialStyle","domOrder","cellCtrls","rowId","setFullWidthRowComp","cellsToRemove","newCellComp","cellCompsToRemove","destroyCells","elementsInOrder","destroyAllCells","cellsToDestroy","cp","fullWidthRowComponent","fullWidthCellRenderer","__extends$1E","__assign$3","__decorate$1z","RowContainerComp","templateFactory","rowComps","getRowContainerTypeForName","rowCtrls","preDestroy","oldRows","lastPlacedElement","existingRowComp","newRowComp","appendRow","oldRowComp","__decorate$1y","BodyDropPivotTarget","columnsToAggregate","columnsToGroup","columnsToPivot","clearColumnsList","dragColumns","__decorate$1x","MoveColumnFeature","needToMoveLeft","needToMoveRight","centerContainer","visibleState_1","visibleState","ensureIntervalCleared","allowedCols","normaliseX","checkCenterForScrolling","xAdjustedForScroll","firstVisiblePixel","lastVisiblePixel","ensureIntervalStarted","fromEnter","fakeEvent","mouseXNormalised","hDirectionNormalised","normaliseDirection","dragSourceType","attemptMoveColumns","calculateOldIndex","movingCols","gridCols","allMovingColumns","mouseX","draggingLeft","draggingRight","newCols_1","movingGroup","allMovingColumnsOrdered","validMoves","calculateValidMoves","firstValidMove","constrainDirection","displayedCols","potentialMoves","targetOrder","displayedOrder","fragCount","groupFragCount","__read$e","suppressMovable","allDisplayedCols","allGridCols","movingDisplayedCols","otherDisplayedCols","otherGridCols","displayIndex","widthOfMovingDisplayedCols_1","numberComparator","displacedCol","isColumnHidden","movingIntervalId","intervalCount","failedMoveAttempts","moveInterval","pixelsToMove","pixelsMoved","scrollFeature","columnsThatCanPin","__extends$1D","__decorate$1w","BodyDropTarget","eSecondaryContainers","leftRowContainerCtrl","bottomLeftRowContainerCtrl","topLeftRowContainerCtrl","rightRowContainerCtrl","bottomRightRowContainerCtrl","topRightRowContainerCtrl","bottomCenterRowContainerCtrl","topCenterRowContainerCtrl","moveColumnFeature","bodyDropPivotTarget","currentDropListener","isDropColumnInPivotMode","__read$d","CssClassApplier","getHeaderClassesFromColDef","getColumnClassesFromCollDef","getToolPanelClassesFromColDef","toolPanelClass","getClassParams","classesOrFunc","classToUse","__spread$b","__extends$1C","__decorate$1v","HeaderCellComp","headerCompVersion","getColumnGroupChild","setUserCompDetails","getUserCompInstance","headerComp","eResize","eHeaderCompWrapper","selectAllGui","getSelectAllGui","destroyHeaderComp","headerCompGui","setDragSource","__extends$1B","__decorate$1u","HeaderGroupCellComp","addOrRemoveResizableCssClass","afterHeaderCompCreated","headerGroupComp","__extends$1A","__decorate$1t","HeaderRowType","COLUMN_GROUP","COLUMN","FLOATING_FILTER","HeaderRowComp","headerComps","extraClass","setHeaderCtrls","destroyHeaderCtrls","oldComps","createHeaderComp","comps","leftB","headerCtrl","__extends$1z","__decorate$1s","instanceIdSequence$1","AbstractHeaderCellCtrl","columnGroupChild","parentRowCtrl","lastFocusEvent","getWrapperHasFocus","wrapperHasFocus","DOM_DATA_KEY_HEADER_CTRL","getParentRowCtrl","ClientSideRowModelSteps","EVERYTHING","FILTER","SORT","MAP","AGGREGATE","FILTER_AGGREGATES","PIVOT","__decorate$1r","getFrameworkComponentInstance","GridApi","detailGridInfoMap","destroyCalled","registerOverlayWrapperComp","overlayWrapperComp","registerSideBarComp","sideBarComp","infiniteRowModel","__getAlignedGridService","alignedGridsService","__getContext","addDetailGridInfo","gridInfo","removeDetailGridInfo","getDetailGridInfo","forEachDetailGridInfo","getDataAsCsv","csvCreator","exportDataAsCsv","getExcelExportMode","baseParams","exportMode","getDataAsExcel","excelCreator","getFactoryMode","exportDataAsExcel","getSheetDataForExcel","setFactoryMode","getMultipleSheetsAsExcel","exportMultipleSheetsAsExcel","setEnterpriseDatasource","setServerSideDatasource","setGridAriaProperty","eGrid","ariaProperty","setDatasource","setCacheBlockSize","resetRootStore","setViewportDatasource","setRowData","immutableService","setFloatingTopRowData","setPinnedTopRowData","setFloatingBottomRowData","setPinnedBottomRowData","getFloatingTopRowCount","getPinnedTopRowCount","getFloatingBottomRowCount","getPinnedBottomRowCount","getFloatingTopRow","getFloatingBottomRow","expireValueCache","getVerticalPixelRange","getHorizontalPixelRange","setAlwaysShowHorizontalScroll","setAlwaysShowVerticalScroll","refreshToolPanel","flashCells","redrawRows","refreshHeader","setRowNodeExpanded","onGroupExpandedOrCollapsed","deprecated_refreshFromIndex","refreshModel","refreshInMemoryRowModel","refreshClientSideRowModel","paramsStep","stepsMapped","everything","aggregate","keepRenderedRows","keepEditingRows","modelParams","isAnimationFrameQueueEmpty","isQueueEmpty","flushAllAnimationFrames","getSizesForCurrentTheme","expandAll","expandOrCollapseAll","collapseAll","getToolPanelInstance","unwrapUserComp","addVirtualRowListener","selectIndex","tryMulti","suppressEvents","deselectIndex","selectNode","deselectNode","selectAllRowNodes","deselectAll","deselectAllRowNodes","selectAllFiltered","deselectAllFiltered","recomputeAggregates","showLoadingOverlay","showNoRowsOverlay","hideOverlay","isNodeSelected","getSelectedNodesById","getSelectedRows","getBestCostNodeSelection","getRenderedNodes","ensureColIndexVisible","nodeSelector","forEachLeafNode","forEachNode","forEachNodeAfterFilter","forEachNodeAfterFilterAndSort","getFilterInstance","getFilterInstanceImpl","unwrapped","getStatusPanel","statusBarService","getColumnDef","removeRowDropZone","activeDropTarget","getRowDropZoneParams","setFillHandleDirection","setIsExternalFilterPresent","isExternalFilterPresentFunc","setDoesExternalFilterPass","doesExternalFilterPassFunc","setNavigateToNextCell","navigateToNextCellFunc","setTabToNextCell","tabToNextCellFunc","setTabToNextHeader","tabToNextHeaderFunc","setNavigateToNextHeader","navigateToNextHeaderFunc","setGroupRowAggNodes","groupRowAggNodesFunc","setGetGroupRowAgg","setGetBusinessKeyForNode","setGetChildCount","setProcessRowPostCreate","processRowPostCreateFunc","setGetRowNodeId","getRowNodeIdFunc","setGetRowId","setGetRowClass","rowClassFunc","setIsFullWidthCell","setIsFullWidthRow","isFullWidthRowFunc","setIsRowSelectable","setIsRowMaster","isRowMasterFunc","setPostSort","postSortFunc","setPostSortRows","postSortRowsFunc","setGetDocument","getDocumentFunc","setGetContextMenuItems","setGetMainMenuItems","setProcessCellForClipboard","processCellForClipboardFunc","setSendToClipboard","sendToClipboardFunc","setProcessCellFromClipboard","processCellFromClipboardFunc","setProcessSecondaryColDef","processSecondaryColDefFunc","setProcessPivotResultColDef","setProcessSecondaryColGroupDef","processSecondaryColGroupDefFunc","setProcessPivotResultColGroupDef","processPivotResultColDefFunc","processPivotResultColGroupDefFunc","setPostProcessPopup","postProcessPopupFunc","setDefaultGroupOrderComparator","defaultGroupOrderComparatorFunc","setInitialGroupOrderComparator","initialGroupOrderComparatorFunc","setGetChartToolbarItems","setPaginationNumberFormatter","paginationNumberFormatterFunc","setGetServerSideStoreParams","getServerSideStoreParamsFunc","setGetServerSideGroupLevelParams","setIsServerSideGroupOpenByDefault","isServerSideGroupOpenByDefaultFunc","setIsApplyServerSideTransaction","isApplyServerSideTransactionFunc","setIsServerSideGroup","isServerSideGroupFunc","setGetServerSideGroupKey","setGetRowStyle","setGetRowHeight","rowHeightFunc","isSideBarVisible","setSideBarVisible","setSideBarPosition","openToolPanel","closeToolPanel","getOpenedToolPanel","openedItem","setSideBar","isToolPanelShowing","doLayout","gridCtrl","getGridCtrl","destroyGridUi","cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid","warnIfDestroyed","resetQuickFilter","getRangeSelections","camelCaseToHumanReadable","addRangeSelection","deprecatedNoLongerUsed","addCellRange","clearRangeSelection","undoCellEditing","redoCellEditing","getCurrentUndoSize","getCurrentUndoStackSize","getCurrentRedoSize","getCurrentRedoStackSize","getChartModels","chartService","getChartRef","chartId","getChartImageDataURL","downloadChart","openChartToolPanel","closeChartToolPanel","createRangeChart","createCrossFilterChart","restoreChart","chartModel","chartContainer","createPivotChart","copySelectedRowsToClipboard","copySelectedRangeToClipboard","copySelectedRangeDown","showColumnMenuAfterButtonClick","buttonElement","showMenuAfterMouseEvent","hidePopupMenu","hideActiveMenu","setPopupParent","ePopupParent","tabToPreviousCell","getCellRendererInstances","getCellEditorInstances","getEditingCells","startEditingCell","addAggFunc","addAggFuncs","clearAggFuncs","applyServerSideTransaction","transaction","serverSideTransactionManager","applyTransaction","applyServerSideTransactionAsync","applyTransactionAsync","retryServerSideLoads","retryLoads","flushServerSideAsyncTransactions","flushAsyncTransactions","rowDataTransaction","refreshFullWidthRows","setDeltaSort","batchUpdateRowData","insertItemsAtIndex","skipRefresh","removeItems","dataToRemove","refreshVirtualPageCache","refreshInfiniteCache","refreshInfinitePageCache","refreshCache","purgeVirtualPageCache","purgeInfinitePageCache","purgeInfiniteCache","purgeCache","purgeEnterpriseCache","route","purgeServerSideCache","refreshServerSide","purge","refreshStore","refreshServerSideStore","getServerSideStoreState","getServerSideGroupLevelState","getStoreState","getVirtualRowCount","getInfiniteRowCount","isMaxRowFound","setVirtualRowCount","maxRowFound","setInfiniteRowCount","getVirtualPageState","getCacheBlockState","getInfinitePageState","rowNodeBlockLoader","getBlockState","checkGridSize","getFirstRenderedRow","getFirstDisplayedRow","getFirstVirtualRenderedRow","getLastRenderedRow","getLastDisplayedRow","getLastVirtualRenderedRow","getDisplayedRowAtIndex","getDisplayedRowCount","paginationIsLastPageFound","isLastPageFound","paginationGetPageSize","getPageSize","paginationGetCurrentPage","paginationGetTotalPages","getTotalPages","paginationGetRowCount","getMasterRowCount","paginationGoToNextPage","goToNextPage","paginationGoToPreviousPage","goToPreviousPage","paginationGoToFirstPage","goToFirstPage","paginationGoToLastPage","goToLastPage","paginationGoToPage","page","goToPage","__extends$1y","SetLeftFeature","ariaEl","setColsSpanning","getColumnOrGroup","setLeftFirstTime","suppressMoveAnimation","oldLeftExists","animateInLeft","colOrGroup","oldActualLeft","actualLeft","indexColumn","__decorate$1q","__extends$1x","__decorate$1p","HoverFeature","addMouseHoverListeners","__extends$1w","__decorate$1o","HeaderFilterCellCtrl","setupWidth","setupLeft","setupHover","setupFocus","setupUserComp","setupSyncWithFilter","setupUi","showParentFilter","suppressFilterButton","eMenuIcon","nextFocusableEl","scrollToColumn","nextFocusableColumn","findNextColumnWithFloatingFilter","columModel","nextCol","focusInto","notFromHeaderWrapper","fromWithinHeader","shouldFocusLast","setFocusedHeader","hovered","setLeftFeature","finalFilterParams","currentParentModel","floatingFilterComponentParams","filterComponent","syncWithFilter","__extends$1v","__decorate$1n","ResizeFeature","canResize","canAutosize","destroyResizeFuncs","removeResize","resize","autoSize","finishedWithResizeFunc","horizontalResizeService","addResizeBar","eResizeBar","onResizeStart","onResizing","onResizeEnd","skipHeaderOnAutoSize_1","autoSizeColListener_1","touchListener_1","addResize","addRefreshFunction","resizeAmount","resizeAmountNormalised","normaliseResizeAmount","resizeStartWidth","resizeWithShiftKey","dragChange","notPinningLeft","pinningRight","__extends$1u","AgCheckbox","onCheckboxClick","getNextValue","setReadOnly","dispatchChange","refreshSelectedClass","checkboxChangedEvent","__extends$1t","__decorate$1m","SelectAllFeature","cbSelectAllVisible","processingEventFromCheckbox","filteredOnly","headerCheckboxSelectionFilteredOnly","cbSelectAll","getCheckboxGui","headerCellCtrl","showOrHideSelectAll","onModelChanged","onCbSelectAll","refreshSelectAllLabel","isCheckboxSelection","checkRightRowModelType","updateStateOfCheckbox","getNextCheckboxState","selectionCount","notSelected","getSelectionCount","allSelected","ariaStatus","setAriaDescriptionProperty","refreshAriaDescription","notSelectedCount","headerCheckboxSelection","__extends$1s","__decorate$1l","HeaderCellCtrl","refreshFunctions","userHeaderClasses","ariaDescriptionProperties","updateState","setupMovingCss","setupMenuClass","setupSortableClass","setupWrapTextClass","addColumnHoverListener","setupFilterCss","setupColId","setupClassesFromColDef","addActiveHeaderMouseListeners","setupSelectAll","refreshAria","onColumnValueChanged","onColumnRowGroupChanged","onColumnPivotChanged","lookupUserCompDetails","userCompDetails","createParams","menuEnabled","showColumnMenu","setSortForColumn","eGridHeader","selectAllFeature","onEnterKeyPressed","isMenuEnabled","setActiveHeader","headerTooltip","refreshHeaderClasses","oldClasses","dragSourceElement","hideColumnOnExit","moveDragSource","createDragItem","unlockedColumns","suppressMenu","calculateDisplayName","workOutDraggable","refreshHeaderComp","newCompDetails","attemptHeaderCompRefresh","checkDisplayName","updateSortableCssClass","refreshAriaSort","wrapHeaderText","stopResizeObserver","isMeasuring","checkMeasuring","startMeasuring","stopMeasuring","refreshAriaMenu","descriptionArray","__extends$1r","__decorate$1k","GroupResizeFeature","calculateInitialValues","takeFromGroup","takeFromLeafCols","resizeTakeFromCols","resizeTakeFromStartWidth","resizeTakeFromRatios","normaliseDragChange","resizeColumns","preferredSize","getPreferredWidthForColumnGroup","resizeCols","resizeRatios","leafCols","__extends$1q","GroupWidthFeature","removeChildListenersFuncs","addListenersToChildrenColumns","onDisplayedChildrenChanged","removeListenersOnChildrenColumns","widthChangedListener","__decorate$1j","__extends$1p","__decorate$1i","HeaderGroupCellCtrl","addAttributes","groupResizeFeature","tooltipCtrl","providedColGroup","refreshExpanded","eHeaderGroup","isSuppressMoving","getDragItemForGroup","allColumnsOriginalOrder","allColumnsCurrentOrder","childSuppressesMoving","__extends$1o","__decorate$1h","instanceIdSequence","HeaderRowCtrl","headerCellCtrls","onColumnResized","getHeaderCellCtrl","getWidthForRow","sizes","numberOfFloating","groupHeight","numberOfGroups","topOffset","thisRowHeight","oldCtrls","getColumnsInViewport","idOfChild","oldCtrl","keepCtrl","isHeaderWrapperFocused","isFocusedAndDisplayed","ctrlsToDisplay","destroyCtrls","getColumnsInViewportPrintLayout","getColumnsInViewportNormalLayout","actualDepth","getActualDepth","focusHeader","__extends$1n","__decorate$1g","__read$c","HeaderRowContainerCtrl","groupsRowCtrls","setupCenterWidth","setupPinnedWidth","setupDragAndDrop","registerHeaderContainer","bodyDropTarget","keepColumns","sequence","focusedHeaderPosition","getFocusHeaderToUseAfterRefresh","groupRowCount","refreshColumnGroups","columnsRowCtrl","destroyPreviousComp","filtersRowCtrl","rowIndexMismatch","refreshFilters","allCtrls","getAllCtrls","setCtrls","restoreFocusOnHeader","__spread$a","setCenterWidth","setContainerTransform","pinningLeft","addPaddingForScrollbar","setPinnedContainerWidth","getHtmlElementForColumnHeader","__extends$1m","__decorate$1f","HeaderRowContainerComp","headerRowComps","rowCompsList","selectAndSetTemplate","eCenterContainer","PINNED_LEFT_TEMPLATE","PINNED_RIGHT_TEMPLATE","CENTER_TEMPLATE","eRowContainer","destroyRowComps","destroyRowComp","prevGui","oldRowComps","ctrlId","existingComp","appendEnsuringDomOrder","__extends$1l","__decorate$1e","HeaderNavigationDirection","HeaderNavigationService","centerHeaderContainer","getHeaderRowType","navigateVertically","fromHeader","rowLen","isUp","nextRow","nextFocusColumn","skipColumn","currentRowType","navigateHorizontally","fromTab","nextHeader","normalisedDirection","focusedHeader","headerPositionUtils","findHeader","focusNextHeaderRow","findColAtEdgeForHeaderRow","columnToScrollTo","__extends$1k","__decorate$1d","GridHeaderCtrl","onPivotModeChanged","setupHeaderHeight","registerGridHeaderCtrl","totalHeaderHeight","setHeightAndMinHeight","clearFocusedHeader","__extends$1j","GridHeaderComp","addContainer","__decorate$1c","__extends$1i","__decorate$1b","HorizontalResizeService","dragStartX","setResizeIcons","MouseEvent","setResizeCursor","disableUserSelect","resetIcons","__extends$1h","__decorate$1a","StandardMenuFactory","showPopup","tabListener","trapFocusWithin","isKeyboardEvent","KeyboardEvent","focusableEl","findTabbableParent","__extends$1g","__decorate$19","TabbedLayout","getTemplate","tabbedItemScrollMap","eHeader","isRightKey","activeItem","nextItem","showItemWrapper","eHeaderButton","eBody","isFocusUnderManagedComponent","setAfterAttachedParams","afterAttachedParams","showFirstItem","titleLabel","tabbedItem","showItem","itemWrapper","onItemClicked","lastScrollListener","bodyPromise","onlyUnmanaged","isKeyboardMode","afterAttachedCallback","keepScrollPosition","scrollableContainer_1","getScrollableContainer","scrollPosition_1","onActiveItemClicked","__extends$1f","ResizeObserverService","polyfillFunctions","resizeObserver","debouncedCallback","suppressResize","ResizeObserver","disconnect","widthLastTime","heightLastTime","running","periodicallyCheckWidthAndHeight","doNextPolyfillTurn","usePolyfill","schedulePolyfill","polyfillScheduled","DEBOUNCE_DELAY","__decorate$18","__extends$1e","__decorate$17","AnimationFrameService","createTasksP1","createTasksP2","destroyTasks","ticking","scrollGoingDown","lastScrollTop","taskCount","cancelledTasks","useAnimationFrame","isOn","verifyAnimationFrameOn","taskItem","createOrder","addTaskToList","cancelTask","taskList","sortTaskList","executeFrame","millis","p1TaskList","p1Tasks","p2TaskList","p2Tasks","frameStart","noMaxMillis","requestFrame","stopTicking","webkitRequestAnimationFrame","__extends$1d","__decorate$16","PositionableFeature","dragStartPosition","lastSize","positioned","resizersAdded","resizeListeners","boundaryEl","movable","currentResizer","offsetElement","initialisePosition","centered","forcePopupParentAsOffsetParent","setOffsetParent","computedMinHeight","computedMinWidth","findBoundaryElement","offsetParentComputedStyles","paddingWidth","paddingHeight","refreshSize","isPositioned","getPosition","setMovable","moveElement","moveElementDragListener","onMoveStart","onMove","onMoveEnd","setResizable","clearResizeListeners","addResizers","removeResizers","topLeft","topRight","bottomRight","bottomLeft","side","resizerEl","getResizerElement","onResize","removeSizeFromEl","restoreLastSize","elRect","parentRect","yPosition","xPosition","positionPopup","setPosition","updateDragStartPosition","calculateMouseMovement","isTop","topBuffer","xDiff","yDiff","movementX","shouldSkipX","anywhereWithin","movementY","shouldSkipY","boundaryElRect","skipX","skipY","createResizeMap","resizerMap","resizers","DOMParser","parseFromString","applySizeToSiblings","getSiblings","getMinSizeOfSiblings","currentEl","nextHeight","nextWidth","containerToFlex","oldWidth","skipWidth","oldHeight","skipHeight","calculateTopBuffer","__extends$1c","__decorate$15","AutoWidthCalculator","eHeaderCell","getHeaderCellForColumn","getAllCellsForColumn","addElementsToContainerAndGetWidth","eDummyContainer","eBodyContainer","cloneItemIntoDummy","dummyContainerWidth","eCellClone","eCloneParent","eCloneParentClassList","__extends$1b","__decorate$14","__read$b","StickyRowFeature","createRowCon","destroyRowCtrls","stickyRowCtrls","containerHeight","getStickyRowCtrls","checkStickyRows","stickyRows","firstPixel","getFirstVisibleVerticalPixel","addStickyRow","stickyRow","lastAncester","childrenAfterSort","lastChildBottom","stickRowBottom","thisRowLastPx","firstPixelAfterStickyRows","firstMissingParent","refreshNodesAndContainerHeight","allStickyNodes","removedCtrls","addedNodes","ctrlsToDestroy","removedCtrl","__values$1","newCtrls","__spread$9","__extends$1a","__decorate$13","__read$a","__spread$8","RowRenderer","destroyFuncsForColumnListeners","rowCtrlsByRowIndex","zombieRowCtrls","allRowCtrls","topRowCtrls","bottomRowCtrls","refreshInProgress","dataFirstRenderedFired","onPageLoaded","onDomLayoutChanged","stickyRowFeature","registerCellEventListeners","initialiseCache","redrawAfterModelUpdate","countProp","cachedRowCtrls","RowCtrlCache","updateAllRowCtrls","liveList","zombieList","cachedList","getEntries","getFullWidthRowCtrls","refreshListenersToColumnsForCellComps","removeGridColumnListeners","forEachCellWithThisCol","leftChangedListener","firstRightPinnedChangedListener","lastLeftPinnedChangedListener","colDefChangedListener","destroyRows","datasourceChanged","firstRenderedRow","lastRenderedRow","rowIndexesToRemove","removeRowCtrls","recycleRows","newPage","onlyBody","getAllRowCtrls","refreshFloatingRowComps","refreshFloatingRows","getRenderedIndexesForRowNodes","renderedRow","partialRefresh","indexesToRemove","getCellToRestoreFocusToAfterRefresh","suppressKeepFocus","getFocusCellToUseAfterRefresh","cellDomData","rowDomData","getLockOnRefresh","updateContainerHeights","scrollToTopIfNewData","rowsToRecycle","removeAllRowComps","focusedCellRecycled","isFocusedCellGettingRecycled","redraw","dispatchDisplayedRowsChanged","restoreFocusedCell","releaseLockOnRefresh","suppressScrollToTop","setModelHeight","getCellCtrls","refreshCellParams","fullWidthRowCtrl","renderer","mapRowNodes","isRowInMap","rowIdsMap","colIdsMap","processRow","stubNodeIndexes","ctrlsByIdMap","rowsToRemove","indexToRemove","newFocusedCell","removeRowCompsNotToDraw","indexesToDraw","indexesToDrawMap","indexesNotToDraw","calculateIndexesToDraw","checkRowToDraw","indexStr","doNotUnVirtualiseRow","afterScroll","updateOffset","workOutFirstAndLastRowsToRender","createOrUpdateRowCtrl","redrawFullWidthEmbeddedRows","fullWidthCtrl","rowNodesMap","rowNodesToRefresh","selectivelyRefreshing","idsToRefresh","rowCtrlsMap","executeInAWhileFuncs","nodeId","addRow","bufferPixels","rowHeightsChanged","lastPixel","getCurrentPagePixelRange","pageFirstPixel","pageLastPixel","divStretchOffset","bodyVRange","bodyTopPixel","bodyBottomPixel","firstVisibleVPixel","ensureAllRowsInRangeHaveHeightsCalculated","firstRowIndex","pageFirstRow","pageLastRow","rowLayoutNormal","suppressRowCountRestriction","rowBufferMaxSize","topPixel","bottomPixel","ensureRowHeightsValid","rowHasFocus","isRowNodeFocused","rowIsEditing","isRowPresent","REMOVE_ROW","rowCtrlFromCache","renderedRows","rowPosition","gridRow","isRangeInRenderedViewport","blockInsideViewport","maxCount","entriesMap","entriesList","rowCtrlToDestroy","removeFromCache","rowNodeId","__extends$19","__decorate$12","ValueFormatterService","suppliedFormatter","useFormatterFromColumn","pinnedRowValueFormatter","valueFormatter","__extends$18","__decorate$11","PinnedRowModel","pinnedTopRows","pinnedBottomRows","getRowAtPixel","createNodesFromData","allData","nextRowTop_1","dataItem","getTotalHeight","forEachPinnedTopRow","forEachPinnedBottomRow","lastNode","ChangedPath","keepingColumns","nodeIdsToColumns","mapToItems","pathRoot","setInactive","depthFirstSearchChangedPath","pathItem","depthFirstSearchEverything","traverseEverything","forEachChangedNodeDepthFirst","traverseLeafNodes","includeUnchangedNodes","executeFromRootNode","createPathItems","newEntryCount","populateColumnsMap","linkPathItems","thisItem","parentItem","addParentNode","canSkip","getValueColumnsForNode","colsForThisNode","getNotValueColumnsForNode","__extends$17","RowNodeBlock","STATE_WAITING_TO_LOAD","STATE_LOADING","loadFromDatasource","getVersion","setStateWaitingToLoad","getState","pageLoadFailed","isRequestMostRecentAndLive","STATE_FAILED","processServerFail","dispatchLoadCompleted","successCommon","pageLoaded","thisIsMostRecentRequest","weAreNotDestroyed","STATE_LOADED","processServerResult","EVENT_LOAD_COMPLETE","__extends$16","__decorate$10","__param$6","RowNodeBlockLoader","activeBlockLoadsCount","blocks","RowNodeBlockLoader_1","maxConcurrentRequests","checkBlockToLoadDebounce","performCheckBlocksToLoad","addBlock","loadComplete","checkBlockToLoad","removeBlock","BLOCK_LOADER_FINISHED_EVENT","printCacheStatus","loadAvailability","blocksToLoad","getBlockStateJson","isLogging","__extends$15","__decorate$$","PaginationProxy","topDisplayedRowIndex","bottomDisplayedRowIndex","pixelOffset","masterRowCount","onPaginationPageSizeChanged","startPixel","endPixel","startLimitIndex","endLimitIndex","calculatePages","modelUpdatedEvent","paginationChangedEvent","topRowBounds","bottomRowBounds","nodeIsInPage","firstInRange","lastInRange","getRowBounds","getPageForIndex","pageSize","pageNumber","isRowInPage","lastPage","totalPages","setPageSize","calculatePagesAllRows","calculatePagesMasterRowsOnly","calculatedPagesNotActive","setPixelOffset","setZeroRows","getTopLevelRowCount","masterLastRowIndex","masterPageEndIndex","getTopLevelRowDisplayedIndex","firstIndexNotToShow","maxRowIndex","__extends$14","__decorate$_","StylingService","processAllCellClasses","onApplicableClass","onNotApplicableClass","processStaticCellClasses","classRules","classesToApply","classesToRemove","resultOfRule","rule","singleClass","classOrClasses","cssClassItem","__extends$13","AgRadioButton","onChange","__extends$12","AgToggleButton","__extends$11","AgInputTextField","preventDisallowedCharacters","clipboardData","getData","__extends$10","AgInputTextArea","__extends$$","AgInputNumberField","floatedValue","normalizeValue","onWheel","precision","adjustPrecision","floatString","setMin","setMax","setPrecision","setStep","__extends$_","AgInputRange","setMinValue","setMaxValue","__extends$Z","__decorate$Z","AgSlider","eSlider","eventChanged","textValue","sliderValue","setSliderWidth","setTextFieldWidth","minValue","maxValue","__extends$Y","__decorate$Y","AgAngleSelect","dragListener","eParentCircle","parentCircleRect","calculateAngleDrag","eAngleValue","degrees","floatValue","updateNumberInput","normalizeNegativeValue","normalizedValue","positionChildCircle","radians","eChildCircle","centerY","cos","sin","calculatePolar","atan2","toDegrees","calculateCartesian","toRadians","getRadius","setOffsetX","setOffsetY","PI","normalizeAngle180","setRadius","radiansValue","__extends$X","__decorate$X","AgColorPanel","isSpectrumDragging","isSpectrumHueDragging","isSpectrumAlphaDragging","colorChanged","picker","initRecentColors","spectrumVal","onSpectrumDraggerDown","onSpectrumDraggerMove","spectrumHue","onSpectrumHueDown","onSpectrumHueMove","spectrumAlpha","onSpectrumAlphaDown","onSpectrumAlphaMove","recentColors","onRecentColorClick","refreshSpectrumRect","spectrumValRect","refreshHueRect","spectrumHueRect","refreshAlphaRect","spectrumAlphaRect","moveDragger","moveHueSlider","moveAlphaSlider","valRect","setSpectrumValue","hueRect","slider","spectrumHueSlider","sliderRect","alphaRect","spectrumAlphaSlider","spectrumColor","rgbaColor","spectrumDragger","saturation","brightness","dragger","draggerRect","innerHtml","__read$9","addRecentColor","currentColor","maxRecentColors","__extends$W","__decorate$W","AgPanel","closable","hideTitleBar","positionableFeature","setBodyComponent","eTitleBar","setClosable","eTitleBarButtons","eContentWrapper","renderComponent","closeButtonComp","CLOSE_BTN_TEMPLATE","addTitleBarButton","onBtClose","bodyComponent","eTitle","__extends$V","__assign$2","AgDialog","isMaximizable","isMaximized","maximizeListeners","resizeListenerDestroy","maximizable","bringPopupToFront","setMaximizable","alwaysOnTop","toggleMaximize","refreshMaximizeIcon","maximizeIcon","minimizeIcon","clearMaximizebleListeners","destroyListener","maximizeButtonComp","__decorate$V","__extends$U","AgColorPicker","eGuiRect","colorDialog","colorPanel","__extends$T","__decorate$U","AgGroupComponent","suppressEnabledCheckbox","suppressOpenCloseIcons","initialItems","cbGroupEnabled","setEnabled","setAlignItems","hideEnabledCheckbox","hideOpenCloseIcons","setupExpandContract","refreshAriaStatus","refreshChildDisplay","eGroupClosedIcon","eGroupOpenedIcon","toggleGroupExpand","showIcon","eToolbar","EVENT_EXPANDED","EVENT_COLLAPSED","hideItem","addCssClassToTitleBar","skipToggle","refreshDisabledStyles","onEnableChange","__extends$S","__decorate$T","TabGuardCtrl","skipTabGuardFocus","eTopGuard","eBottomGuard","focusInnerElement","providedFocusInnerElement","providedFocusIn","providedFocusOut","providedShouldStopEventPropagation","providedOnTabKeyDown","providedHandleKeyDown","activateTabGuards","guard","onFocus","tabGuardsAreActive","deactivateTabGuards","fromBottom","getNextFocusableElement","findFocusableElements","forceFocusOutOfContainer","tabGuardToFocus","__extends$R","__read$8","TabGuardComp","initialiseTabGuard","createTabGuard","tabGuards","tabGuard","addTabGuards","tabGuardCtrl","topTabGuard","bottomTabGuard","removeAllChildrenExceptTabGuards","__spread$7","__extends$Q","__assign$1","__decorate$S","AgMenuList","menuItems","parentGui","closeIfIsChild","handleNavKey","topMenu","findTopMenu","clearActiveItem","activeMenuItem","deactivate","addMenuItems","menuItemOrString","addSeparator","menuItemDef","menuItem","AgMenuItemComponent","isAnotherSubMenuOpen","isSubMenuOpen","EVENT_MENU_ITEM_SELECTED","EVENT_MENU_ITEM_ACTIVATED","activateFirstItem","activate","separatorHtml","nextParent","findNextItem","openChild","openSubMenu","foundCurrent","__extends$P","AgMenuPanel","wrappedComponent","closePanel","__decorate$R","__extends$O","__decorate$Q","subMenuIsOpen","getClassName","addIcon","addName","addShortcut","addSubMenu","onItemSelected","subMenu","destroySubMenu","currentLevel","childMenu_1","cancelDeactivate","subMenu_1","menuPanel","subMenuGui_1","mouseEvent_1","mouseEnterListener_1","positionPopupForMenu","hideSubMenu","cancelActivate","onItemActivated","isCompact","shortcut","activateTimeoutId","deactivateTimeoutId","ACTIVATION_DELAY","__extends$N","__decorate$P","__read$7","FocusService","FocusService_1","addKeyboardModeEvents","controller","docControllers","instancesMonitored","toggleKeyboardMode","removeKeyboardModeEvents","newControllers","__spread$6","currentGridCore","isKeyboardActive","keyboardModeActive","controllersForDoc","clearFocusedCellListener","onColumnEverythingChanged","unregisterGridCompController","gridCompController","focusedCellPosition","colFromColumnModel","isDomDataMissingInHierarchy","eBrowserCell","ePointer","gridColumn","focusedColumn","previousHeaderPosition","nextHeaderPosition","params_2","focusGridView","focusSuccess","focusFirstHeader","isAnyCellFocused","exclude","excludeString","excludeNodes","focusableElements","toFocus","onlyManaged","activeEl","managedContainers","limit","getLastRow","getFirstRow","focusNextInnerContainer","isDetailGrid","AG_KEYBOARD_FOCUS","__extends$M","__decorate$O","__read$6","DIRECTION","instanceIdSeq","PopupService","popupList","PopupService_1","getParentRect","keepXYWithinBounds","maxX","xLeftPosition","xRightPosition","nudgeX","calculatePointerAlign","callPostProcessPopup","alignSide","currentX","currentY","resizeObserverDestroyFunc_1","WAIT_FOR_POPUP_CONTENT_RESIZE","getPopupList","sizeProperty","anchorProperty","offsetProperty","scrollPositionProperty","docElement","isBody","offsetSize","sizeOfParent","keepPopupPositionedRelativeTo","initialDiffTop","initialDiffLeft","lastDiffTop","lastDiffLeft","leftPx","pRect","sRect","currentDiffTop","currentDiffLeft","intervalId","destroyPositionTracker","stopAnchoringPromise","allThemes","__spread$5","sn","setAlwaysOnTop","popupHidden","hidePopupOnKeyboardEvent","hidePopupOnMouseEvent","hidePopupOnTouchEvent","popupParams","isEventFromCurrentPopup","isEventSameChainAsOriginalEvent","originalMouseEvent","isAnchored","indexOfThisChild","mouseEventOrTouch","screenY_1","screenY","xMatch","screenX","yMatch","getWrapper","popupLen","alwaysOnTopList","onTopLength","innerEls","innerElsScrollMap","__extends$L","__decorate$N","OUTSIDE_ANGULAR_EVENTS","listName","VirtualList","getItemHeight","addResizeObserver","setAriaProperties","drawVirtualRows","destroyObserver","focusRow","lastFocusedRowIndex","navigate","getLastFocusedRow","rowNumber","getComponentAt","rowComponent","forEachRenderedRow","viewportTopPixel","viewportScrolledBeforeRow","setComponentCreator","componentCreator","clearVirtualRows","removeRow","ensureRowsRendered","insertRow","isRowSelected","PASSIVE_EVENTS","VanillaFrameworkOverrides","isOutsideAngular","useCapture","__extends$K","__decorate$M","__read$5","CellNavigationService","ctrlPressed","getNextCellToFocusWithCtrlPressed","getNextCellToFocusWithoutCtrlPressed","upKey","leftKey","getCellAbove","getCellBelow","getCellToLeft","getCellToRight","isCellGoodToFocusOn","lastCell","colToLeft","colToRight","getRowBelow","isLastRowInContainer","getNextStickyPosition","__spread$4","nextCtrl","rowBelow","getRowAbove","getLastBodyCell","getLastFloatingTopRow","rowAbove","getNextTabbedCellBackwards","getNextTabbedCellForwards","newRowIndex","newFloating","newColumn","__extends$J","__decorate$L","__param$5","AlignedGridsService","consuming","fireEvent","otherGrids","otherGridOptions","alignedGridService","onEvent","onColumnEvent","onScrollEvent","getMasterColumns","getColumnIds","processColumnEvent","processGroupOpenedEvent","groupOpenedEvent","masterColumnGroup","otherColumnGroup","colEvent","masterColumn","otherColumn","masterColumns","destColState","visibleEvent","pinnedEvent","resizedEvent","columnWidths_1","__extends$I","__decorate$K","__param$4","SelectionService","selectedRows","removeGroupsFromSelection","changedPath","getNodeForIdIfSelected","rowNodeToKeepSelected","groupsToRefresh","otherRowNode","syncInOldRowNode","syncInNewRowNode","getTopLevelNodes","traverse","setRowModel","justFiltered","rowModelClientSide","__decorate$J","ColumnApi","isPinning","getAllDisplayedVirtualColumns","setColumnWidth","getPivotResultColumn","getLeftDisplayedColumnGroups","getCenterDisplayedColumnGroups","getRightDisplayedColumnGroups","getAllDisplayedColumnGroups","setPivotResultColumns","getPivotResultColumns","getPrimaryColumns","getAllColumns","hideColumns","hideColumn","columnState","setColumnState","resetState","getAggregationColumns","removeAggregationColumn","removeAggregationColumns","addAggregationColumn","addAggregationColumns","setColumnAggFunction","getDisplayNameForCol","__extends$H","__decorate$I","ValueService","initialised","cellExpressions","callColumnCellValueChangedHandler","forFilter","ignoreAggData","groupDataExists","aggDataExists","filterValueGetter","executeFilterValueGetter","executeValueGetter","Nn","cellValueGetter","openedGroup","getOpenedGroup","newValueHandler","valueSetter","valueWasDifferent","setValueUsingField","onCellValueChanged","valuesAreSame","fieldPieces","fieldPiece","getValueCallback","valueFromCache","getKeyForNode","keyCreator","__extends$G","__decorate$H","__param$3","ExpressionService","expressionToFunctionCache","expressionOrFunc","evaluateExpression","createExpressionFunction","javaScriptFunction","functionBody","createFunctionBody","theFunction","__extends$F","TemplateService","templateCache","waitingCallbacks","templateFromCache","callbackList","that","client","handleHttpResult","httpResult","__decorate$G","__extends$E","__decorate$F","__param$2","LoggerFactory","logging","isLoggingFunc","__extends$D","__decorate$E","GridCtrl","eGridHostDiv","addRtlSupport","addOrRemoveKeyboardFocusClass","onGridSizeChanged","registerGridCtrl","showDropZones","showSideBar","showStatusBar","showWatermark","setRtlClass","setCursor","setUserSelect","focusableContainers","getFocusableContainers","nextIdx","lastColumn","__extends$C","__decorate$D","GridComp","webkitUserSelect","createTemplate","insertGridIntoDom","eRootWrapperBodyClassList","eRootWrapperBody","gridBodyComp","__extends$B","__decorate$C","__read$4","__spread$3","SortController","SortController_1","nextDirection","getNextSortDirection","columnsToUpdate","sortableRowGroupColumns","clearSortBarTheseColumns","updateSortIndex","lastColToChange","isCoupled","groupParent","lastSortIndexCol","allSortedCols","getIndexableColumnsOrdered","allSortedColsWithoutChanges","sortedCols","columnsToSkip","columnToClear","DEFAULT_SORTING_ORDER","getColumnsOrderedForSort","allColumnsIncludingAuto","allColsIndexes","iA","iB","getSortModel","getSortOptions","canColumnDisplayMixedSort","isColumnSortCouplingActive","isGroupDisplayColumn","linkedColumns","sortableColumns","firstSort","displayColumn","__extends$A","ColumnHoverService","selectedColumns","__decorate$B","__extends$z","__decorate$A","ColumnAnimationService","executeNextFuncs","executeLaterFuncs","animationThreadCount","ensureAnimationCssClassPresent","flush","executeLaterVMTurn","animationThreadCountCopy","nowFuncs","waitFuncs","__extends$y","__decorate$z","AutoGroupColService","AutoGroupColService_1","doingTreeData","doingMultiAutoColumn","createOneAutoGroupColumn","defaultAutoColDef","generateDefaultColDef","GROUP_AUTO_COLUMN_BUNDLE_ID","userDef","cellRendererFramework","cellRendererSelector","__extends$x","__decorate$y","PaginationAutoPageSizeService","centerRowContainerCon","onBodyHeightChanged","checkPageSize","notActive","newPageSize","__extends$w","__decorate$x","ValueCache","cacheVersion","neverExpires","__cacheVersion","__cacheData","__extends$v","__decorate$w","ChangeDetectionService","doChangeDetection","onlyChangedColumns","doAggregate","__extends$u","__decorate$v","AgComponentUtils","jsCompFunc","metadata","functionAdapter","adaptCellRendererFunction","Adapter","callbackResult","candidate","__extends$t","__decorate$u","ComponentMetadataProvider","componentMetaData","dateComponent","detailCellRenderer","headerGroupComponent","loadingCellRenderer","loadingOverlayComponent","noRowsOverlayComponent","floatingFilterComponent","floatingFilterWrapperComponent","groupRowRenderer","statusPanel","tooltipComponent","__extends$s","__decorate$t","HARD_CODED_SIZES","headerCellMinWidth","listItemHeight","BASE_GRID_SIZE","MAT_GRID_SIZE","BALHAM_GRID_SIZE","ALPINE_GRID_SIZE","SASS_PROPERTY_BUILDER","CALCULATED_SIZES","Environment","useTheme","calculatedValue","prevEl","currentClass","currentDiv","sizeName","isThemeDark","themeFamily","reg","themeMatch","matched","newTheme_1","__extends$r","__decorate$s","__param$1","RowContainerHeightService","uiBodyHeight","maxDivHeight","stretching","newScrollY","newBodyHeight","getUiBodyHeight","calculateOffset","setUiContainerHeight","pixelsToShave","modelHeight","uiContainerHeight","maxScrollY","scrollPercent","setDivStretchOffset","clearOffset","newOffset","newOffsetFloor","modelPixel","modelMaxScroll","scrollPixel","__extends$q","__decorate$r","SelectableService","updateSelectableAfterGrouping","recurseDown","nextChildrenFunc","rowSelectable","__extends$p","__decorate$q","PaginationComp","previousAndFirstButtonsDisabled","nextButtonDisabled","lastButtonDisabled","btFirst","btPrevious","btNext","btLast","onBtFirst","onBtPrevious","onBtNext","onBtLast","enableOrDisableButtons","updateRowLabels","setCurrentPageLabel","setTotalLabels","pagesExist","lbCurrent","toDisplay","strPage","strTo","strOf","strFirst","strPrevious","strNext","strLast","toggleButtonDisabled","zeroPagesToDisplay","isZeroPagesToDisplay","lbFirstRowOnPage","lbLastRowOnPage","lastPageFound","setTotalLabelsToZero","lbTotal","lbRecordCount","moreText","__extends$o","__decorate$p","LoadingType","NoRows","OverlayWrapperComponent","inProgress","destroyRequested","manuallyDisplayed","overlayWrapperClassList","eOverlayWrapper","onRowDataUpdated","onNewColumnsLoaded","setWrapperTypeClass","loadingType","showOverlay","workItem","destroyActiveOverlay","activeOverlay","showOrHideOverlay","__extends$n","__decorate$o","RowPositionUtils","pinnedBottomCount","pinnedTopCount","rowA","rowB","rowMax","rowMin","__extends$m","CellPositionUtils","createIdFromValues","cellA","cellB","indexMatch","__decorate$n","__extends$l","UndoRedoAction","cellValueChanges","RangeUndoRedoAction","initialRange","finalRange","UndoRedoStack","maxStackSize","actionStack","DEFAULT_STACK_SIZE","getCurrentStackSize","__extends$k","__decorate$m","__read$3","UndoRedoService","activeCellEdit","activeRowEdit","isPasting","isRangeInAction","eventCell","isCellEditing","isRowEditing","cellValueChange","clearStacks","undoStack","redoStack","undoRedoLimit","addRowEditingListeners","addCellEditingListeners","addPasteListeners","addFillListeners","addCellKeyListeners","keepUndoRedoStack","undoAction","processAction","processRange","processCell","redoAction","valueExtractor","currentRow","extractedValue","startColumn","setLastFocusedCell","cellRangeParams","pushActionsToUndoStack","__spread$2","__extends$j","__decorate$l","HeaderPositionUtils","nextColumn","ColumnDefFactory","colGroupDefs","addToResult","childDef","createDefFromColumn","parentDef","existingParentDef","createDefFromGroup","defCloned","colDefCloned","__decorate$k","__decorate$j","RowCssClassCalculator","extraCssClass","preProcessRowClassRules","rowCls","rowClassParams","__decorate$i","RowNodeSorter","doFullSort","sortOptions","sortedRowNodes","currentPos","compareRowNodes","sortedNodeA","sortedNodeB","comparatorResult","sortOption","isDescending","providedComparator","getComparator","comparatorOnCol","groupLeafField","primaryColumn","leafChild","allLeafChildren","displayCol","__extends$i","CtrlsService","readyCallbacks","CtrlsService_1","checkReady","stickyTopCenterRowContainerCtrl","stickyTopLeftRowContainerCtrl","stickyTopRightRowContainerCtrl","centerHeaderRowContainerCtrl","leftHeaderRowContainerCtrl","rightHeaderRowContainerCtrl","fakeHScrollCtrl","gridHeaderCtrl","p_1","createReadyParams","registerFakeHScrollCtrl","NAME","__decorate$h","__extends$h","CtrlsFactory","controllerName","controllerClass","getInstance","ControllerClass","__decorate$g","__extends$g","__decorate$f","FakeHScrollCtrl","spacerWidthsListener","setFakeHScrollSpacerWidths","addActiveListenerToggles","initialiseInvisibleScrollbar","hideAndShowInvisibleScrollAsNeeded","refreshCompBottom","bottomPinnedHeight","setBottom","setScrollVisible","vScrollShowing","rightSpacing","scrollOnRight","setRightSpacerFixedWidth","includeRightSpacerScrollerCss","leftSpacing","setLeftSpacerFixedWidth","includeLeftSpacerScrollerCss","hScrollShowing","scrollContainerSize","setContainerHeight","__extends$f","__decorate$e","FakeHScrollComp","eRightSpacer","eLeftSpacer","__extends$e","__decorate$d","PinnedWidthService","checkContainerWidths","__extends$d","__decorate$c","RowNodeEventThrottle","dispatchExpandedDebounced","onRowGroupOpened","__read$2","__spread$1","Grid","GridCoreCreator","gridComp","createUi","acceptChanges","registeredModules","createBeansList","createProvidedBeans","contextLogger","registerModuleUserComponents","registerStackComponents","registerControllers","setColumnsAndData","dispatchGridReadyEvent","isEnterprise","controllers","ctrlsFactory","agStackComponents","createAgStackComponentsList","passedViaConstructor","registered","allModules","mapNames","currentModule","addIndividualModule","dependantModules","addModule","extractModuleEntity","userComponents","compMeta","seed","moduleAgStackComps","rowModelClass","getRowModelClass","moduleBeans","beansNoDuplicates","moduleEntities","extractor","readyEvent","rowModelClasses","rowModels","BaseComponentWrapper","OriginalConstructor","componentType","createWrapper","createMethod","unwrap","addMethod","createMethodProxy","hasMethod","callMethod","HTMLButtonElement","HTMLSelectElement","HTMLInputElement","__read$1","ClientSideNodeManager","nextId","allNodesMap","ROOT_NODE_ID","childrenAfterFilter","getCopyOfNodesMap","createNode","TOP_LEVEL","rowDataTran","rowNodeTransaction","nodesToUnselect","executeRemove","executeUpdate","executeAdd","updateSelection","nodesBeforeIndex","nodesAfterIndex","allLeafChildren_1","normalizedAddIndex","prevIdx","currNode","currIdx","prevValueAtIndex","__spread","rowIdsRemoved","lookupRowNode","setMasterForRow","expandByDefault","__extends$c","__decorate$b","RecursionType","AfterFilter","AfterFilterAndSort","PivotNodes","ClientSideRowModel","onRowHeightChanged_debounced","rowsToDisplay","refreshEverythingFunc","refreshEverythingAfterColsChangedFunc","afterColumnsChanged","onValueChanged","refreshMapListener","nodeManager","atLeastOneChange","rowAtStartPixel","rowAtEndPixel","setRowTopAndRowIndex","nextRowTop","displayedRowsMapped","changedPathActive","clearIfNotDisplayed","recurse","indexAtPixelNow","rowNodeAtPixelNow","highlight","lastHighlightedRow","filteredChildren","topLevelIndex","primaryOrQuickFilterChanged","createChangePath","rowNodeTransactions","noTransactions","transWithAddsOrDeletes","tx","transactionsContainUpdatesOnly","doRowGrouping","doFilter","doPivot","doFilterAggregates","doSort","doRowsToDisplay","displayedNodesMapped","rowsMissing","firstRowHit","lastRowHit","lookingForLastRow","childOfLastRow","pixelToMatch","bottomPointer","topPointer","oldBottomPointer","oldTopPointer","midPointer","isRowInPixel","pixelInRow","recursivelyWalkNodesAndCallback","forEachPivotNode","recursionType","nodeChildren","aggregationStage","execute","filterAggregatesStage","usingPivotMode","actionRow","recursiveExpandOrCollapse","sortStage","groupStage","restoreGroupState","filterStage","pivotStage","getGroupState","res_1","applyAsyncTransactionsTimeout","rowDataTransactionBatch","waitMillis","executeBatchUpdateRowData","callbackFuncsBound","rowNodeTrans","forceRowNodeOrder","tranItem","rowNodeTran","commonUpdateRowData","createRowNodeOrder","orderMap","flattenStage","__extends$b","__decorate$a","FilterStage","filterService","__extends$a","__decorate$9","SortStage","sortActive","sortContainsGroupColumns","sortService","__extends$9","__decorate$8","FlattenStage","skipLeafNodes","showRootNode","recursivelyAddToRowsToDisplay","ensureFooterNodeExists","addRowNodeToRowsToDisplay","rowsToFlatten","hideOpenParents","isParent","isRemovedSingleChildrenGroup","isRemovedLowestSingleChildrenGroup","excludedParent","createDetailNode","groupNode","footerNode","masterNode","__extends$8","__decorate$7","SortService","useDeltaSort","groupColumnsPresent","allDirtyNodes","calculateDirtyNodes","pullDownGroupDataForHideOpenParents","childrenToBeSorted","indexedOrders_1","acc","row1","row2","doDeltaSort","rowNodeSorter","updateChildIndexes","updateGroupDataForHideOpenParents","dirtyNodes","addNodesFunc","tran","allTouchedNodes","unsortedRows","oldSortedRows","untouchedRowsMap","touchedRows","sortedUntouchedRows","mapNodeToSortedNode","sortedChangedRows","mergeSortedArrays","listToSort","msg_1","clearOperation","childRowNode","groupDisplayCol","parentToStealFrom","__extends$7","__decorate$6","FilterService","filterNodes","includeChildNodes","passBecauseChildren","passBecauseDataPasses","doingTreeDataFiltering","treeDataDepthFirstFilter_1","alreadyFoundInParent","foundInParent","treeDataFilterCallback","__extends$6","ImmutableService","transactionAndMap","createTransactionForRowData","nodeTransaction","existingNodesMap","existingNode","clientSide","InfiniteBlock","parentCache","createRowNodes","blockNumber","getStartRow","getEndRow","pageStatus","Ds","createLoadParams","getRows","failCallback","sortModel","getLastAccessed","lastAccessed","dontTouchLastAccessed","lastAccessedSequence","localIndex","finalRowCount","destroyRowNodes","__param","InfiniteCache","lastRowIndexKnown","blockCount","initialRowCount","dontCreatePage","blockId","createBlock","newBlock","purgeBlocksIfNeeded","getBlocksInOrder","destroyAllBlocks","destroyBlock","checkRowCount","onCacheUpdated","blockToExclude","blocksForPurging","maxBlocksProvided","blocksToKeep","emptyBlocksToKeep","MAX_EMPTY_BLOCKS_TO_KEEP","isBlockCurrentlyDisplayed","isBlockFocused","removeBlockFromCache","blockIndexStart","blockIndexEnd","hasFocus","blockToRemove","lastRowIndexPlusOverflow","overflowSize","forEachNodeDeep","destroyAllBlocksPastVirtualRowCount","blocksToDestroy","getRowNodesInRange","lastBlockId","inActiveRange","numberSequence","foundGapInSelection","hitFirstOrLast","InfiniteRowModel","destroyCache","verifyProps","destroyDatasource","onColumnEverything","cacheParams","isSortModelDifferent","infiniteCache","resetCache","createModelUpdatedEvent","defaultIfInvalid","rowIndexForPixel","foundRowNode","infinite","BaseCreator","getFileName","fileName","extension","getDefaultFileExtension","getDefaultFileName","serializingSession","createSerializingSession","gridSerializer","serialize","BaseGridSerializingSession","groupColumns","processCellCallback","processHeaderCallback","processGroupHeaderCallback","processRowGroupCallback","prepare","columnsToExport","extractHeaderValue","extractRowCellValue","accumulatedRowIndex","shouldRenderGroupSummaryCell","createValueForGroupNode","processedValue","currentColumnIndex","Downloader","download","URL","createObjectURL","bubbles","revokeObjectURL","CsvSerializingSession","isFirstLine","columnSeparator","suppressQuotes","addCustomContent","beginNewLine","putInQuotes","mergeAcross","appendEmptyCells","onNewHeaderGroupingRow","onColumn","onNewHeaderGroupingRowColumn","onNewHeaderRow","onNewHeaderRowColumn","onNewBodyRow","onNewBodyRowColumn","stringValue","CsvCreator","getMergedParams","export","isExportSuppressed","packagedFile","skipDefaultParams","GridSerializer","gridSerializingSession","getColumnsToExport","columnKeys","prepareSession","prependContent","exportColumnGroups","exportHeaders","processPinnedTopRows","processRows","processPinnedBottomRows","appendContent","serializeChain","rowSkipper","shouldRowBeSkipped","skipSingleChildrenGroup","skipLowestSingleChildrenGroup","isClipboardExport","isExplicitExportSelection","onlySelected","isLeafNode","shouldSkipCurrentGroup","skipGroups","skipRowGroups","skipPinnedTop","skipPinnedBottom","rowAccumulator","getCustomContentBelowRow","customFooter","customHeader","skipColumnGroupHeaders","recursivelyAddHeaderGroups","skipColumnHeaders","gridRowIterator_1","usingCsrm","usingSsrm","onlySelectedNonStandardModel","exportedRows","onlySelectedAllPages","directChildrenHeaderGroups","doAddHeaderHeader","gridRowIterator","columnIndex","collapsibleGroupRanges","collapsibleGroups","currentIdx","lastGroup","crcTable","XmlFactory","createHeader","headerElement","encoding","headerStart","headerEnd","createXml","xmlElement","booleanTransformer","prefixedAttributes","prefixedSet","returnAttributeIfPopulated","rawMap","textNode","LINE_SEPARATOR","xmlValue","Uint32Array","ZipContainer","addFolders","paths","addFolder","folders","created","isBase64","addFile","files","mimeType","textOutput","buildFileStream","uInt8Output","buildUint8Array","clearStream","fData","totalFiles","foData","lL","cL","totalFiles_1","totalFiles_1_1","getHeader","fileHeader","folderHeader","buildFolderEnd","foEnd","currentFile","utfPath","isUTF8","convertTime","convertDate","extraFields","uExtraFieldPath","getFromCrc32Table","getConvertedContent","convertedContent","tLen","cLen","lLen","uint8","iterable","crc","AgGridColumn","createColDefFromGridColumn","hasChildColumns","getChildColDefs","toColDef","AngularFrameworkOverrides","isEmitterUsed","isAngularComp","AngularFrameworkComponentWrapper","DynamicAgNg2Component","_componentRef","changeDetectorRef","BaseGuiComponent","_params","_agAwareComponent","_frameworkComponentInstance","_eGui","agInit","AgGridAngular","elementDef","angularFrameworkOverrides","_initialised","_fullyReady","statusBar","suppressSetColumnStateEvents","excelStyles","loadingCellRendererFramework","loadingCellRendererParams","loadingCellRendererSelector","detailCellRendererFramework","loadingOverlayComponentFramework","loadingOverlayComponentParams","noRowsOverlayComponentFramework","noRowsOverlayComponentParams","fullWidthCellRendererFramework","groupRowRendererFramework","deltaRowDataMode","batchUpdateWaitMillis","serverSideSortingAlwaysResets","serverSideFilteringAlwaysResets","getServerSideStoreParams","toolPanelVisibleChanged","toolPanelSizeChanged","pasteStart","pasteEnd","columnVisible","columnPinned","columnResized","columnMoved","columnValueChanged","columnPivotModeChanged","columnPivotChanged","newColumnsLoaded","gridColumnsChanged","displayedColumnsChanged","virtualColumnsChanged","columnEverythingChanged","componentStateChanged","cellValueChanged","cellEditRequest","rowValueChanged","cellEditingStarted","cellEditingStopped","rowEditingStarted","rowEditingStopped","filterOpened","filterChanged","filterModified","chartCreated","chartRangeSelectionChanged","chartOptionsChanged","chartDestroyed","cellKeyDown","cellKeyPress","gridReady","firstDataRendered","gridSizeChanged","modelUpdated","virtualRowRemoved","viewportChanged","bodyScroll","bodyScrollEnd","dragStarted","dragStopped","paginationChanged","rowDragEnter","rowDragMove","rowDragLeave","rowDragEnd","columnRowGroupChanged","rowGroupOpened","pinnedRowDataChanged","rowDataChanged","rowDataUpdated","asyncTransactionsFlushed","cellClicked","cellDoubleClicked","cellMouseOver","cellMouseOut","cellMouseDown","rowClicked","rowDoubleClicked","rowSelected","cellContextMenu","rangeSelectionChanged","sortChanged","columnRowGroupChangeRequest","columnPivotChangeRequest","columnValueChangeRequest","columnAggFuncChangeRequest","_nativeElement","setViewContainerRef","setComponentFactoryResolver","setEmitterUsedCallback","gridParams","hasEmitter","asEventName","hasGridOptionListener","AgGridModule","STATUS_CODE_INFO","spec_title","spec_href","__metadata","InMemoryDbService","InMemoryBackendConfigArgs","InMemoryBackendConfig","caseSensitiveSearch","dataEncapsulation","delete404","passThruUnknownUrl","post204","post409","put204","put404","apiBase","rootPath","BackendService","inMemDbService","requestInfoUtils","getRequestInfoUtils","dbReadySubject","resetDb","handleRequest","dbReady","handleRequest_","resOptions","urlWithParams","parseRequestUrl","collectionName","collection","db","reqInfo","createHeaders","parseId","getRequestMethod","resourceUrl","utils","commands","methodInterceptor","interceptorResponse","createResponse$","collectionHandler","getPassThruBackend","createErrorResponseOptions","addDelay","response$","delayMs","completePending","nextPending","delayResponse","applyQuery","conditions","rx","decodeURI","cond","bodify","post","put","interceptor","command","getJsonBody","passThruBackend","STATUS","resOptionsFactory","withDelay","resOptions$","createResponseOptions$","resp$","createResponse$fromResponseOptions$","getStatusText","removeById","findById","genId","genIdDefault","isCollectionIdNumeric","maxId","Mn","protocol","uri","authority","userInfo","user","password","port","relative","directory","file","parseUri","createPassThruBackend","getDb","idNum","urlRoot","pathSegments","segmentIx","removeTrailingSlash","createQueryMap","emsg","existingIx","ix","createDb","db$","HttpClientBackendService","xhrFactory","resOptions_1","HttpHeaders","params_1","HttpParams","HttpResponse","HttpXhrBackend","ex","XhrFactory","dbService","HttpClientInMemoryWebApiModule","HttpClientInMemoryWebApiModule_1","forRoot","dbCreator","HttpBackend","httpClientInMemBackendServiceFactory","forFeature","InMemoryWebApiModule_1","InMemoryWebApiModule","CryptoJS","exports","require","BlockCipher","lib","C_algo","algo","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x2","x4","x8","Ae","RCON","AES","_doReset","_nRounds","_keyPriorReset","_key","keyWords","words","keySize","sigBytes","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","encryptBlock","_doCryptBlock","decryptBlock","nRounds","s0","s1","s2","s3","t0","t2","t3","_createHelper","C_lib","WordArray","BufferedBlockAlgorithm","C_enc","Base64","EvpKDF","Cipher","C_mode","BlockCipherMode","CBC","Pkcs7","CipherParams","OpenSSLFormatter","SerializableCipher","OpenSSLKdf","PasswordBasedCipher","enc","cfg","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","dataUpdate","_append","_process","finalize","_doFinalize","finalProcessedData","ivSize","cipher","encrypt","selectCipherStrategy","decrypt","ciphertext","StreamCipher","finalProcessedBlocks","iv","Encryptor","Decryptor","_cipher","_iv","_prevBlock","processBlock","xorBlock","thisBlock","pad","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","unpad","modeCreator","_minBufferSize","_mode","__creator","_doProcessBlock","_data","cipherParams","mixIn","OpenSSL","salt","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","plaintext","kdf","compute","derivedParams","cryptoSecureRandomInt","randomBytes","readInt32LE","subtype","$super","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","nBytes","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","decodeURIComponent","utf8Str","unescape","_nDataBytes","doFlush","processedWords","dataWords","dataSigBytes","nBlocksReady","nWordsReady","nBytesReady","Hasher","messageUpdate","hasher","_createHmacHelper","HMAC","_map","base64Chars","triplet","paddingChar","base64Str","base64StrLength","reverseMap","_reverseMap","paddingIndex","bits1","bits2","parseLoop","Base64url","_safe_map","Utf16","Utf16BE","utf16Chars","utf16Str","utf16StrLength","Utf16LE","codePoint","swapEndian","MD5","iterations","derivedKey","derivedKeyWords","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","_iKey","oKeyWords","iKeyWords","innerHash","hmac","superInit","subInit","typedArray","Int8Array","Uint8ClampedArray","Int16Array","Int32Array","Float32Array","Float64Array","byteOffset","byteLength","typedArrayByteLength","_hash","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","HmacMD5","CFB","keystream","generateKeystreamAndEncrypt","CTRGladman","b1","b2","b3","de","_counter","incWord","incCounter","CTR","ECB","OFB","_keystream","AnsiX923","lastBytePos","Ansix923","Iso10126","Iso97971","ZeroPadding","NoPadding","PBKDF2","SHA1","blockIndex","blockIndexWords","blockWords","blockWordsLength","intermediate","intermediateWords","C_","RabbitLegacy","X","_X","_C","IV","IV_0","IV_1","i3","gx","ga","gb","gl","Rabbit","RC4","keySigBytes","_S","keyByteIndex","generateKeystreamWord","keystreamWord","RC4Drop","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","al","bl","cl","dl","br","cr","er","hl","hr","zl","sl","sr","rotl","HmacRIPEMD160","HmacSHA1","SHA256","SHA224","HmacSHA224","sqrtN","factor","nPrime","isPrime","getFractionalBits","gamma0x","gamma1x","maj","HmacSHA256","X64Word","x64","Word","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","nBlockSizeLanes","M2i","M2i1","lane","high","low","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","C_x64","X64WordArray","SHA512","SHA384","HmacSHA384","X64Word_create","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","bh","ch","dh","eh","fh","fl","gh","hh","Wil","Wih","gamma0xh","gamma0xl","gamma0l","gamma1xh","gamma1xl","gamma1l","Wi7","Wi16","Wi16l","t1l","chh","chl","majh","sigma0l","Ki","Kil","t1h","t2l","toX32","HmacSHA512","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","_lBlock","_rBlock","exchangeLR","exchangeRL","lBlock","rBlock","mask","TripleDES","key3","_des1","_des2","_des3","X32WordArray","he","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","equal","installedModules","moduleId","__webpack_require__","getter","activity","airplay","aperture","archive","award","battery","bell","bluetooth","bold","book","bookmark","box","briefcase","camera","cast","circle","clipboard","clock","cloud","codepen","codesandbox","coffee","compass","cpu","crop","crosshair","database","disc","divide","dribbble","droplet","edit","eye","facebook","feather","figma","film","folder","framer","frown","gift","github","gitlab","globe","headphones","heart","hexagon","image","inbox","instagram","italic","layers","layout","link","linkedin","lock","mail","meh","mic","monitor","moon","music","navigation","octagon","package","paperclip","percent","phone","play","pocket","power","printer","radio","repeat","rewind","rss","scissors","server","share","shield","shuffle","sidebar","slack","slash","sliders","smartphone","smile","speaker","square","star","sunrise","sunset","tablet","terminal","thermometer","tool","trash","trello","triangle","truck","tv","twitch","twitter","umbrella","underline","unlock","users","video","voicemail","volume","watch","wifi","wind","youtube","zap","__WEBPACK_AMD_DEFINE_RESULT__","resultSet","StorageObject","hasOwn","argType","_parseString","_parseArray","ht","_parseObject","_parseNumber","classSet","_classNames","toObject","callWithSafeIterationClosing","isArrayIteratorMethod","toLength","createProperty","getIteratorMethod","arrayLike","argumentsLength","mapfn","mapping","iteratorMethod","toIndexedObject","toAbsoluteIndex","IS_INCLUDES","$this","aFunction","anObject","ENTRIES","returnMethod","ITERATOR","wellKnownSymbol","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tryGet","callee","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","fails","IteratorPrototype","createPropertyDescriptor","setToStringTag","Iterators","returnThis","IteratorConstructor","bitmap","toPrimitive","createIteratorConstructor","redefine","IS_PURE","IteratorsCore","BUGGY_SAFARI_ITERATORS","VALUES","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","forced","exist","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","ye","Ne","noTargetGet","sham","shared","classof","DESCRIPTORS","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","wmget","wmhas","wmset","STATE","enforce","getterFor","TYPE","ArrayPrototype","replacement","feature","detection","normalize","POLYFILL","NATIVE","PrototypeOfArrayIteratorPrototype","arrayIterator","nativeFunctionToString","enumBugKeys","documentCreateElement","IE_PROTO","PROTOTYPE","Empty","createDict","iframeDocument","iframe","contentWindow","Properties","objectKeys","IE8_DOM_DEFINE","nativeDefineProperty","Attributes","propertyIsEnumerableModule","nativeGetOwnPropertyDescriptor","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","arrayIncludes","arrayIndexOf","nativePropertyIsEnumerable","NASHORN_BUG","validateSetPrototypeOfArguments","setter","correctSetter","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","InternalStateModule","getInternalState","enforceInternalState","unsafe","simple","TAG","SHARED","copyright","toInteger","requireObjectCoercible","CONVERT_TO_STRING","IndexedObject","postfix","NATIVE_SYMBOL","checkCorrectnessOfIteration","codePointAt","defineIterator","STRING_ITERATOR","setInternalState","iterated","eval","xmlns","viewBox","fill","stroke","_extends","_createClass","Constructor","protoProps","staticProps","_dedupe2","_interopRequireDefault","_defaultAttrs2","Icon","_classCallCheck","attrsToString","_icon2","_icons2","_tags2","_toSvg2","_replace2","toSvg","elementAttrs","getAttrs","svgString","svgElement","elementsToReplace","replaceElement","PACKAGE_VERSION","ERROR_DESCRIPTION_MAP","INSTALLATIONS_API_URL","projectId","requestStatus","expiresIn","getExpiresInFromResponseExpiresIn","creationTime","requestName","responseJson","errorData","serverCode","serverMessage","serverStatus","Accept","apiKey","appConfig","refreshToken","getHeaders","INTERNAL_AUTH_VERSION","getAuthorizationHeader","responseExpiresIn","fid","endpoint","responseValue","getInstallationsEndpoint","authVersion","appId","retryIfServerError","registrationStatus","authToken","extractAuthTokenInfoFromResponse","registeredInstallationEntry","getErrorFromResponse","VALID_FID_PATTERN","fidByteArray","btoa","bufferToBase64UrlSafe","encode","INVALID_FID","fidChangeCallbacks","callFidChangeCallbacks","channel","getBroadcastChannel","closeBroadcastChannel","broadcastFidChange","broadcastChannel","BroadcastChannel","onmessage","OBJECT_STORE_NAME","dbPromise","openDb","upgradeDB","oldVersion","createObjectStore","objectStore","getDbPromise","fidChanged","registrationPromise","installationEntry","oldEntry","clearTimedOutRequest","generateFid","updateOrCreateInstallationEntry","entryWithPromise","onLine","inProgressEntry","registrationTime","trys","createInstallationRequest","registerInstallation","waitUntilFidRegistration","triggerRegistrationIfNecessary","updateInstallationRequest","sleep","getInstallationEntry","hasInstallationRequestTimedOut","platformLoggerProvider","platformLogger","getGenerateAuthTokenEndpoint","getHeadersWithAuth","installation","completedAuthToken","dependencies","tokenPromise","isEntryRegistered","oldAuthToken","TOKEN_EXPIRATION_BUFFER","isAuthTokenExpired","isAuthTokenValid","updateAuthTokenRequest","refreshAuthToken","waitUntilAuthTokenRequest","inProgressAuthToken","requestTime","makeAuthTokenRequestInProgressEntry","updatedInstallationEntry","generateAuthTokenRequest","fetchAuthTokenFromServer","Mi","hasAuthTokenRequestTimedOut","getDeleteEndpoint","valueName","getMissingValueError","configKeys_1","configKeys_1_1","keyName","extractAppConfig","installations","getToken","completeInstallationRegistration","deleteInstallationRequest","deleteInstallation","onIdChange","addCallback","callbackSet","removeCallback","registerInstallations","ERROR_MAP","DEFAULT_VAPID_KEY","FCM_MSG","CONSOLE_CAMPAIGN_ID","MessageType","PUSH_RECEIVED","NOTIFICATION_CLICKED","uint8Array","base64String","base64","rawData","outputArray","OLD_DB_NAME","OLD_OBJECT_STORE_NAME","senderId","tokenDetails","indexedDB","databases","oldDetails","objectStoreNames","auth","p256dh","fcmToken","createTime","subscriptionOptions","swScope","vapidKey","arrayToBase64","deleteDb","checkTokenDetails","upgradeDb","firebaseDependencies","oldTokenDetails","migrateOldDatabase","dbSet","subscribeOptions","responseData","err_1","getEndpoint","errorInfo","updateOptions","err_2","unsubscribeOptions","err_3","ENDPOINT","applicationPubKey","swRegistration","pushSubscription","Notification","permission","getPushSubscription","dbGet","getNewToken","dbOptions","currentOptions","isP256dhEqual","isTokenValid","requestDeleteToken","updateToken","dbRemove","pushManager","getSubscription","updatedToken","updatedTokenDetails","requestUpdateToken","deleteToken","requestGetToken","userVisibleOnly","applicationServerKey","base64ToArray","SwController","isOnBackgroundMessageUsed","bgMessageHandler","onPush","onSubChange","onNotificationClick","setBackgroundMessageHandler","onBackgroundMessage","registration","requestPermission","usePublicVapidKey","useServiceWorker","onMessage","onTokenRefresh","internalPayload","clientList","isNotificationShown","payload","getMessagePayloadInternal","getClientList","visibilityState","hasVisibleClients","sendMessagePayloadInternalToWindows","notification","showNotification","wrapInternalPayload","collapseKey","collapse_key","messageId","fcm_message_id","propagateNotificationPayload","messagePayloadInternal","propagateDataPayload","fcmOptions","analyticsLabel","analytics_label","propagateFcmOptions","externalizePayload","BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS","originUrl","stopImmediatePropagation","click_action","isConsoleMessage","getLink","getWindowClient","clients","openWindow","FOREGROUND_HANDLE_PREPARATION_TIME_MS","messageType","isFirebaseMessaging","wrappedInternalPayload","clientList_1","clientList_1_1","clientUrl","clientList_2","clientList_2_1","matchAll","includeUncontrolled","notificationPayloadInternal","actions","maxActions","WindowController","onMessageCallback","serviceWorker","messageEventListener","dataPayload","stripInternalFields","Qo","logEvent","getVapidKey","getSwReg","updateVapidKey","updateSwReg","serviceWorkerRegistration","registerDefaultSw","ServiceWorkerRegistration","DEFAULT_SW_SCOPE","browserErrorMessage","permissionResult","getEventType","analyticsProvider","analytics","message_id","message_name","message_time","message_device_time","NAMESPACE_EXPORTS","isSupported","PushSubscription","isSWControllerSupported","cookieEnabled","isWindowControllerSupported","messagingSenderId","HOOKS","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","ariaDateFormat","autoFillDefaultTime","clickOpens","conjunction","defaultHour","defaultMinute","defaultSeconds","disableMobile","enableSeconds","enableTime","getWeek","givenDate","week1","hourIncrement","ignoredFocusElements","minuteIncrement","monthSelectorType","nextArrow","noCalendar","onDayCreate","onDestroy","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","english","weekdays","shorthand","longhand","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","int","arrayify","findParent","inputClassName","numInput","arrowUp","arrowDown","doNothing","monthToStr","monthNumber","revFormat","monthName","setMonth","shortMonth","unixSeconds","weekNum","weekNumber","ISODate","unixMillSeconds","tokenRegex","formats","createDateFormatter","l10n","isMobile","frmt","overrideLocale","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","datestr","ops","matchIndex","isBackSlash","date2","isBetween","ts","ts1","ts2","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","instanceConfig","flatpickr","English","calendarContainer","daysContainer","daysWidth","weekWrapper","selectedDates","defaultDate","compareDates","getDefaultHours","latestSelectedDateObj","isKeyDown","eventTarget","curValue","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","timeWrapper","prevValue","setHoursFromInputs","_debouncedChange","secondElement","ampm2military","limitMinHours","minTime","minDateHasTime","maxTime","maxDateHasTime","changeYear","_handlers","jumpDate","triggerChange","jumpTo","oldYear","currentYear","oldMonth","currentMonth","buildMonthSwitch","inputElem","dayNumber","dateIsEnabled","dayElement","$i","todayDateElem","Vr","isDateSelected","selectedDateElem","toggleClass","isDateInRange","targetNode","endMonth","dayFocused","isInView","startElem","getFirstAvailableDay","givenMonth","loopDelta","numMonthDays","focusOnDayElem","changeMonth","focusOnDay","getNextAvailableDay","firstOfMonth","prevMonthDays","getDaysInMonth","isMultiMonth","prevMonthDayClass","nextMonthDayClass","createDay","dayNum","dayContainer","clearNode","frag","buildMonthDays","monthsDropdownContainer","monthElement","monthNavFragment","selectedMonth","yearInput","createNumberInput","tabindex","yearElement","monthNav","prevMonthNav","yearElements","monthElements","buildMonth","nextMonthNav","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","buildDays","updateNavigationCurrentMonth","isCalendarElement","isCalendarElem","isInput","lostFocus","isIgnored","timeContainer","updateTime","isNewYear","dateToCheck","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","selectDate","pn","Gn","currentYearElement","elems","pluginElements","hoverDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","jr","os","dayElem","timestamp","outOfRange","positionCalendar","inverseDateObj","setHoursFromDate","l10ns","dataset","customPositionElement","_positionElement","calendarHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","showOnTop","isCenter","rightMost","centerMost","editableSheet","styleSheets","sheet","createStyleSheet","getDocumentStyleSheet","centerLeft","centerIndex","cssRules","centerStyle","insertRule","msMaxTouchPoints","selectedDate","shouldChangeMonth","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","jumpToDate","wasOpen","CALLBACKS","setSelectedDate","setupLocale","buildMonths","setCalendarWidth","buildWeekdays","inputDate","initEvent","dObj","mobileFormatStr","getDateStr","isPrevMonth","isNextMonth","boolOpts","userConfig","_enable","parseDateRules","timeMode","_minDate","minMaxDateSetter","_maxDate","minMaxTimeSetter","_minTime","_maxTime","bindToInstance","pluginConf","getInputElem","parseConfig","required","setupInputs","preloadedDate","setupDates","yr","setupHelperFunctions","fragment","__hidePrevMonthArrow","__hideNextMonthArrow","buildMonthNav","innerContainer","buildWeeks","rContainer","hourInput","minuteInput","military2ampm","secondInput","buildTime","customAppend","setupMobile","debouncedResize","ontouchstart","documentClick","onMonthNavClick","onYearInput","timeIncrement","onBlur","_flatpickr","FlatpickrInstance","HTMLCollection","localize","setDefaults","jQuery","fp_incr","define","$jscomp","createTemplateTagFirstArg","createTemplateTagFirstArgWithRaw","arrayIteratorImpl","makeIterator","arrayFromIterator","arrayFromIterable","checkStringArgs","ASSUME_ES5","ASSUME_NO_NATIVE_MAP","ASSUME_NO_NATIVE_SET","SIMPLE_FROUND_POLYFILL","ISOLATE_POLYFILLS","FORCE_POLYFILL_PROMISE","FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION","getGlobal","IS_SYMBOL_NATIVE","TRUST_ES6_POLYFILLS","polyfills","propertyToPolyfillSymbol","POLYFILL_PREFIX","$jscomp$lookupPolyfilledValue","polyfill","polyfillIsolated","polyfillUnisolated","findInternal","RangeError","initSymbol","$jscomp$symbol$id_","iteratorPrototype","iteratorFromArray","COMPILED","goog","module$contents$goog$debug$Error_DebugError","reportErrorToServer","exportPath_","execScript","CLOSURE_UNCOMPILED_DEFINES","CLOSURE_DEFINES","FEATURESET_YEAR","LOCALE","TRUSTED_SITE","DISALLOW_TEST_ONLY_CODE","ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING","isInModuleLoader_","isProvided_","constructNamespace_","implicitNamespaces_","getObjectByName","getScriptNonce","getScriptNonce_","cspNonce_","NONCE_PATTERN_","nonce","VALID_MODULE_RE_","isInGoogModuleLoader_","moduleLoaderState_","getInternal_","loadedModules_","ModuleType","ES6","GOOG","isInEs6ModuleLoader_","getCurrentModulePath","declareLegacyNamespace","declareModuleId","setTestOnly","forwardDeclare","addDependency","DEPENDENCIES_ENABLED","debugLoader_","ENABLE_DEBUG_LOADER","logToConsole_","requested","load_","requireType","basePath","nullFunction","abstractMethod","addSingletonGetter","instance_","instantiatedSingletons_","LOAD_MODULE_USING_EVAL","SEAL_MODULE_EXPORTS","TRANSPILE","ASSUME_ES_MODULES_TRANSPILED","TRANSPILE_TO_LANGUAGE","TRANSPILER","hasBadLetScoping","useSafari10Workaround","workaroundSafari10EvalBug","loadModule","loadModuleFromSource_","seal","normalizePath_","loadFileSync_","CLOSURE_LOAD_FILE_SYNC","transpile_","transpile","$gwtExport","typeOf","isArrayLike","isDateLike","getUid","UID_PROPERTY_","uidCounter_","hasUid","removeUid","bindNative_","bindJs_","partial","mixin","globalEval","getCssName","cssNameMapping_","cssNameMappingStyle_","CLOSURE_CSS_NAME_MAP_FN","setCssNameMapping","CLOSURE_CSS_NAME_MAPPING","getMsg","unescapeHtmlEntities","getMsgWithFallback","exportSymbol","exportProperty","inherits","superClass_","defineClass","statics","createSealingConstructor_","applyProperties_","SEAL_CLASS_INSTANCES","OBJECT_PROTOTYPE_FIELDS_","inHtmlDocument_","isDocumentLoading_","attachEvent","findBasePath_","CLOSURE_BASE_PATH","currentScript","Transpiler","requiresTranspilation_","transpilationTarget_","createRequiresTranspilation_","es3","needsTranspile","transpiler_","protectScriptTag_","DebugLoader_","dependencies_","idToPath_","written_","loadingDeps_","depsToLoad_","paused_","factory_","DependencyFactory","deferredCallbacks_","deferredQueue_","bootstrap","getPathFromDeps_","loadClosureDeps","createDependency","loadDeps_","areDepsLoaded_","requires","setDependencyFactory","loading_","resume_","loaded","loaded_","setModuleState","registerEs6ModuleExports","registerGoogModuleExports","clearModuleState","defer_","areDepsLoaded","pause_","LoadController","Dependency","relativePath","provides","loadFlags","loadCallbacks_","getPathName","callbackMap_","registerCallback_","unregisterCallback_","callback_","CLOSURE_IMPORT_SCRIPT","TRUSTED_TYPES_POLICY_","createHTML","IS_OLD_IE_","createScriptURL","Es6ModuleDependency","createScript","TransformedDependency","contents_","lazyFetch_","ensure","TranspiledDependency","transpiler","PreTranspiledEs6ModuleDependency","GoogModuleDependency","needsTranspile_","TRUSTED_TYPES_POLICY_NAME","createTrustedTypesPolicy","CLOSURE_NO_DEPS","identity_","trustedTypes","createPolicy","dom","NodeType","ELEMENT","ATTRIBUTE","CDATA_SECTION","ENTITY_REFERENCE","ENTITY","PROCESSING_INSTRUCTION","COMMENT","DOCUMENT_TYPE","DOCUMENT_FRAGMENT","NOTATION","asserts","ENABLE_ASSERTS","AssertionError","subs_","messagePattern","DEFAULT_ERROR_HANDLER","errorHandler_","doAssertFailure_","setErrorHandler","assert","assertExists","assertNumber","assertString","assertFunction","assertObject","assertArray","assertBoolean","assertElement","assertInstanceof","getType_","assertFinite","assertObjectPrototypeIsIntact","NATIVE_ARRAY_PROTOTYPES","module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS","ASSUME_NATIVE_FUNCTIONS","module$contents$goog$array_peek","module$contents$goog$array_indexOf","module$contents$goog$array_lastIndexOf","module$contents$goog$array_forEach","forEachRight","module$contents$goog$array_forEachRight","module$contents$goog$array_filter","module$contents$goog$array_map","module$contents$goog$array_reduce","module$contents$goog$array_reduceRight","reduceRight","module$contents$goog$array_some","module$contents$goog$array_every","module$contents$goog$array_findIndex","module$contents$goog$array_findIndexRight","module$contents$goog$array_contains","module$contents$goog$array_splice","module$contents$goog$array_insertAt","module$contents$goog$array_removeAt","module$contents$goog$array_count","module$contents$goog$array_find","findRight","module$contents$goog$array_findRight","findIndexRight","module$contents$goog$array_isEmpty","module$contents$goog$array_clear","module$contents$goog$array_insert","insertArrayAt","module$contents$goog$array_insertArrayAt","module$contents$goog$array_insertBefore","module$contents$goog$array_remove","removeLast","module$contents$goog$array_removeLast","removeAt","removeIf","module$contents$goog$array_removeIf","removeAllIf","module$contents$goog$array_removeAllIf","module$contents$goog$array_concat","module$contents$goog$array_join","module$contents$goog$array_clone","toArray","module$contents$goog$array_toArray","module$contents$goog$array_slice","module$contents$goog$array_binarySearch_","module$contents$goog$array_defaultCompare","module$contents$goog$array_sort","module$contents$goog$array_sortByKey","module$contents$goog$array_defaultCompareEquality","module$contents$goog$array_binarySearch","module$contents$goog$array_flatten","module$contents$goog$array_extend","removeDuplicates","module$contents$goog$array_removeDuplicates","binarySelect","module$contents$goog$array_binarySelect","stableSort","module$contents$goog$array_stableSort","sortByKey","sortObjectsByKey","module$contents$goog$array_sortObjectsByKey","isSorted","module$contents$goog$array_isSorted","module$contents$goog$array_equals","compare3","module$contents$goog$array_compare3","defaultCompare","inverseDefaultCompare","module$contents$goog$array_inverseDefaultCompare","defaultCompareEquality","binaryInsert","module$contents$goog$array_binaryInsert","binaryRemove","module$contents$goog$array_binaryRemove","bucket","module$contents$goog$array_bucket","module$contents$goog$array_toObject","module$contents$goog$array_range","module$contents$goog$array_repeat","rotate","module$contents$goog$array_rotate","moveItem","module$contents$goog$array_moveItem","zip","module$contents$goog$array_zip","module$contents$goog$array_shuffle","copyByIndex","module$contents$goog$array_copyByIndex","module$contents$goog$array_concatMap","assertIsLocation","getWindow_","Location","debugStringForType_","assertIsElementType_","assertIsHTMLAnchorElement","assertIsHTMLButtonElement","assertIsHTMLLinkElement","assertIsHTMLImageElement","assertIsHTMLAudioElement","assertIsHTMLVideoElement","assertIsHTMLInputElement","assertIsHTMLTextAreaElement","assertIsHTMLCanvasElement","assertIsHTMLEmbedElement","assertIsHTMLFormElement","assertIsHTMLFrameElement","assertIsHTMLIFrameElement","assertIsHTMLObjectElement","assertIsHTMLScriptElement","parentWindow","HtmlElement","functions","constant","FALSE","TRUE","NULL","partialRight","withReturnValue","equalTo","and","or","not","CACHE_RETURN_VALUE","cacheReturnValue","once","rateLimit","TagName","ABBR","ACRONYM","ADDRESS","APPLET","AREA","ARTICLE","ASIDE","AUDIO","BASE","BASEFONT","BDI","BDO","BIG","BLOCKQUOTE","BODY","BR","BUTTON","CANVAS","CAPTION","CITE","CODE","COL","COLGROUP","COMMAND","DATA","DATALIST","DEL","DETAILS","DFN","DIALOG","DIR","DIV","DL","DT","EM","EMBED","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FRAME","FRAMESET","HEAD","HEADER","HGROUP","HR","HTML","IFRAME","IMG","INPUT","INS","ISINDEX","KBD","KEYGEN","LABEL","LEGEND","LI","LINK","MAIN","MARK","MATH","MENU","MENUITEM","METER","NAV","NOFRAMES","NOSCRIPT","OBJECT","OL","OPTGROUP","OPTION","OUTPUT","PARAM","PICTURE","PRE","PROGRESS","RP","RT","RTC","RUBY","SAMP","SCRIPT","SECTION","SELECT","SMALL","SOURCE","SPAN","STRIKE","STRONG","STYLE","SUB","SUMMARY","SUP","SVG","TABLE","TBODY","TD","TEXTAREA","TFOOT","TH","THEAD","TIME","TITLE","TR","TRACK","TT","UL","VAR","VIDEO","WBR","getCount","getAnyKey","getAnyValue","containsValue","getKeys","getValueByKeys","containsKey","findKey","findValue","setIfUndefined","setWithReturnValueIfNotSet","unsafeClone","isView","DataView","transpose","PROTOTYPE_FIELDS_","createSet","createImmutableView","isFrozen","isImmutableView","getAllPropertyNames","getSuperClass","VOID_TAGS_","embed","img","keygen","track","wbr","isVoidTag","TypedString","Const","stringConstValueWithSecurityContract__googStringSecurityPrivate_","GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_","STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_","TYPE_MARKER_","implementsGoogStringTypedString","getTypedStringValue","trustedtypes","getPolicyPrivateDoNotAccessOrElse","cachedPolicy_","module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE","module$contents$goog$html$SafeScript_SafeScript","privateDoNotAccessOrElseSafeScriptWrappedValue_","fromConstant","createSafeScriptSecurityPrivateDoNotAccessOrElse","fromConstantAndArgs","stringify_","fromJson","unwrapTrustedScript","SafeScript","fs","createObjectUrl","getUrlObject_","revokeObjectUrl","UrlObject_","findUrlObject_","webkitURL","browserSupportsObjectUrls","getBlob","BlobBuilder","WebKitBlobBuilder","getBlobWithProperties","endings","i18n","bidi","FORCE_RTL","IS_RTL","Format","LRE","RLE","PDF","LRM","RLM","Dir","LTR","RTL","NEUTRAL","I18N_RIGHT","I18N_LEFT","toDir","ltrChars_","rtlChars_","htmlSkipReg_","stripHtmlIfNeeded_","rtlCharReg_","ltrCharReg_","hasAnyRtl","hasRtlChar","hasAnyLtr","ltrRe_","rtlRe_","isRtlChar","isLtrChar","isNeutralChar","ltrDirCheckRe_","rtlDirCheckRe_","startsWithRtl","isRtlText","startsWithLtr","isLtrText","isRequiredLtrRe_","isNeutralText","ltrExitDirCheckRe_","rtlExitDirCheckRe_","endsWithLtr","isLtrExitText","endsWithRtl","isRtlExitText","rtlLocalesRe_","isRtlLanguage","bracketGuardTextRe_","guardBracketInText","enforceRtlInHtml","enforceRtlInText","enforceLtrInHtml","enforceLtrInText","dimensionsRe_","leftRe_","rightRe_","tempRe_","mirrorCSS","doubleQuoteSubstituteRe_","singleQuoteSubstituteRe_","normalizeHebrewQuote","wordSeparatorRe_","hasNumeralsRe_","rtlDetectionThreshold_","estimateDirection","detectRtlDirectionality","setElementDirAndAlign","textAlign","setElementDirByTextDirectionality","DirectionalString","TrustedResourceUrl","privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_","CONSTRUCTOR_TOKEN_PRIVATE_","implementsGoogI18nBidiDirectionalString","cloneWithParams","URL_PARAM_PARSER_","createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse","stringifyParams_","unwrapTrustedScriptURL","BASE_URL_","FORMAT_MARKER_","formatWithParams","fromConstants","fromSafeScript","internal","caseInsensitiveStartsWith","caseInsensitiveCompare","caseInsensitiveEndsWith","caseInsensitiveEquals","isEmptyOrWhitespace","newLineToBr","htmlEscape","AMP_RE_","LT_RE_","GT_RE_","QUOT_RE_","SINGLE_QUOTE_RE_","NULL_RE_","ALL_RE_","whitespaceEscape","caseInsensitiveContains","compareVersions","compareElements_","SafeUrl","privateDoNotAccessOrElseSafeUrlWrappedValue_","INNOCUOUS_STRING","createSafeUrlSecurityPrivateDoNotAccessOrElse","SAFE_MIME_TYPE_PATTERN_","isSafeMimeType","fromBlob","fromMediaSource","MediaSource","DATA_URL_PATTERN_","tryFromDataUrl","fromDataUrl","INNOCUOUS_URL","fromTelUrl","SIP_URL_PATTERN_","fromSipUrl","fromFacebookMessengerUrl","fromWhatsAppUrl","fromSmsUrl","isSmsUrlBodyValid_","fromSshUrl","sanitizeChromeExtensionUrl","sanitizeExtensionUrl_","sanitizeFirefoxExtensionUrl","sanitizeEdgeExtensionUrl","fromTrustedResourceUrl","SAFE_URL_PATTERN_","SAFE_URL_PATTERN","trySanitize","sanitizeAssertUnchanged","ABOUT_BLANK","SafeStyle","privateDoNotAccessOrElseSafeStyleWrappedValue_","createSafeStyleSecurityPrivateDoNotAccessOrElse","sanitizePropertyValue_","sanitizePropertyValueString_","FUNCTIONS_RE_","URL_RE_","VALUE_RE_","COMMENT_RE_","hasBalancedQuotes_","hasBalancedSquareBrackets_","sanitizeUrl_","VALUE_ALLOWED_CHARS_","ALLOWED_FUNCTIONS_","module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE","module$contents$goog$html$SafeStyleSheet_SafeStyleSheet","privateDoNotAccessOrElseSafeStyleSheetWrappedValue_","createRule","hasBalancedBrackets_","createSafeStyleSheetSecurityPrivateDoNotAccessOrElse","SafeStyleSheet","labs","util","getNativeUserAgentString_","getNavigator_","userAgent_","setUserAgent","getUserAgent","matchUserAgent","matchUserAgentIgnoreCase","extractVersionTuples","browser","matchOpera_","matchIE_","matchEdgeHtml_","matchEdgeChromium_","matchOperaChromium_","matchFirefox_","matchSafari_","matchChrome_","matchCoast_","isSilk","matchIosWebview_","matchAndroidBrowser_","isOpera","isEdgeChromium","isOperaChromium","isCoast","isIosWebview","isAndroidBrowser","getIEVersion_","isVersionOrHigher","SafeHtml","privateDoNotAccessOrElseSafeHtmlWrappedValue_","dir_","ENABLE_ERROR_MESSAGES","SUPPORT_STYLE_ATTRIBUTE","unwrapTrustedHTML","createSafeHtmlSecurityPrivateDoNotAccessOrElse","htmlEscapePreservingNewlines","htmlEscapePreservingNewlinesAndSpaces","comment","VALID_NAMES_IN_TAG_","URL_ATTRIBUTES_","cite","formaction","manifest","poster","NOT_ALLOWED_TAG_NAMES_","verifyTagName","createSafeHtmlTagSecurityPrivateDoNotAccessOrElse","createIframe","srcdoc","combineAttributes","sandbox","createSandboxIframe","canUseSandboxIframe","HTMLIFrameElement","createScriptSrc","createStyle","createMetaRefresh","getAttrNameAndValue_","getStyleValue_","createWithDir","concatWithDir","stringifyAttributes","DOCTYPE_HTML","emptyHTML","uncheckedconversions","safeHtmlFromStringKnownToSatisfyTypeContract","safeScriptFromStringKnownToSatisfyTypeContract","safeStyleFromStringKnownToSatisfyTypeContract","safeStyleSheetFromStringKnownToSatisfyTypeContract","safeUrlFromStringKnownToSatisfyTypeContract","trustedResourceUrlFromStringKnownToSatisfyTypeContract","safe","InsertAdjacentHtmlPosition","AFTERBEGIN","AFTEREND","BEFOREBEGIN","BEFOREEND","insertAdjacentHtml","SET_INNER_HTML_DISALLOWED_TAGS_","isInnerHtmlCleanupRecursive_","unsafeSetInnerHtmlDoNotUseOrElse","setInnerHtml","setInnerHtmlFromConstant","setOuterHtml","setFormElementAction","setButtonFormAction","formAction","setInputFormAction","setStyle","documentWrite","setAnchorHref","setImageSrc","setAudioSrc","setVideoSrc","setEmbedSrc","setFrameSrc","setIframeSrc","setIframeSrcdoc","setLinkHrefAndRel","rel","setObjectData","setScriptSrc","setNonceForScriptElement_","setScriptContent","setLocationHref","assignLocation","replaceLocation","openInWindow","parseFromStringHtml","createImageFromBlob","Image","DETECT_DOUBLE_ESCAPING","FORCE_NON_DOM_HTML_UNESCAPING","Unicode","NBSP","subs","collapseWhitespace","isEmptyString","isEmptyOrWhitespaceSafe","makeSafe","isEmptySafe","isBreakingWhitespace","isAlpha","isAlphaNumeric","isSpace","isUnicodeChar","stripNewlines","canonicalizeNewlines","normalizeWhitespace","normalizeSpaces","collapseBreakingSpaces","trimLeft","trimRight","numberAwareCompare_","intAwareCompare","floatAwareCompare","numerateCompare","urlEncode","urlDecode","E_RE_","unescapeEntities","unescapeEntitiesUsingDom_","unescapePureXmlEntities_","unescapeEntitiesWithDocument","HTML_ENTITY_PATTERN_","nodeValue","preserveSpaces","stripQuotes","truncate","truncateMiddle","specialEscapeChars_","jsEscapeCache_","quote","escapeChar","countOf","removeAll","regExpEscape","replaceAll","padNumber","buildString","getRandomString","hashCode","uniqueStringCounter_","createUniqueString","isLowerCamelCase","isUpperCamelCase","toCamelCase","toSelectorCase","toTitleCase","capitalize","splitLimit","lastComponent","editDistance","proto2","Descriptor","messageType_","fullName_","containingType_","containingType","fields_","getTag","getName","getFullName","getContainingType","getDescriptor","getFields","getFieldsMap","findFieldByName","findFieldByTag","createMessageInstance","FieldDescriptor","parent_","tag_","isPacked_","packed","isRepeated_","repeated","isRequired_","fieldType_","fieldType","nativeType_","deserializationConversionPermitted_","FieldType","INT64","UINT64","FIXED64","SFIXED64","SINT64","FLOAT","DOUBLE","defaultValue_","INT32","FIXED32","BOOL","STRING","GROUP","MESSAGE","BYTES","UINT32","ENUM","SFIXED32","SINT32","getDefaultValue","getFieldType","getNativeType","deserializationConversionPermitted","getFieldMessageType","isCompositeType","isPacked","isRepeated","isRequired","isOptional","Message","values_","deserializedFields_","lazyDeserializer_","initializeForLazyDeserializer","setUnknown","forEachUnknown","has$Value","arrayOf","array$Values","count$Values","get$Value","getOrDefault","get$ValueOrDefault","set$Value","add$Value","clear$Field","getValueForTag_","copyFrom","mergeFrom","initDefaults","deserializeField","checkFieldType_","createDescriptor","Serializer","DECODE_SYMBOLIC_ENUMS","getSerializedValue","deserialize","deserializeTo","getDeserializedValue","INTEGER_REGEX","LazyDeserializer","PbLiteSerializer","zeroIndexing_","setZeroIndexed","StringBuffer","buffer_","getLength","phonenumbers","descriptor_","getPattern","getPatternOrDefault","setPattern","hasPattern","patternCount","clearPattern","getFormat","getFormatOrDefault","setFormat","hasFormat","formatCount","clearFormat","getLeadingDigitsPattern","getLeadingDigitsPatternOrDefault","addLeadingDigitsPattern","leadingDigitsPatternArray","hasLeadingDigitsPattern","leadingDigitsPatternCount","clearLeadingDigitsPattern","getNationalPrefixFormattingRule","getNationalPrefixFormattingRuleOrDefault","setNationalPrefixFormattingRule","hasNationalPrefixFormattingRule","nationalPrefixFormattingRuleCount","clearNationalPrefixFormattingRule","getNationalPrefixOptionalWhenFormatting","getNationalPrefixOptionalWhenFormattingOrDefault","setNationalPrefixOptionalWhenFormatting","hasNationalPrefixOptionalWhenFormatting","nationalPrefixOptionalWhenFormattingCount","clearNationalPrefixOptionalWhenFormatting","getDomesticCarrierCodeFormattingRule","getDomesticCarrierCodeFormattingRuleOrDefault","setDomesticCarrierCodeFormattingRule","hasDomesticCarrierCodeFormattingRule","domesticCarrierCodeFormattingRuleCount","clearDomesticCarrierCodeFormattingRule","PhoneNumberDesc","getNationalNumberPattern","getNationalNumberPatternOrDefault","setNationalNumberPattern","hasNationalNumberPattern","nationalNumberPatternCount","clearNationalNumberPattern","getPossibleLength","getPossibleLengthOrDefault","addPossibleLength","possibleLengthArray","hasPossibleLength","possibleLengthCount","clearPossibleLength","getPossibleLengthLocalOnly","getPossibleLengthLocalOnlyOrDefault","addPossibleLengthLocalOnly","possibleLengthLocalOnlyArray","hasPossibleLengthLocalOnly","possibleLengthLocalOnlyCount","clearPossibleLengthLocalOnly","getExampleNumber","getExampleNumberOrDefault","setExampleNumber","hasExampleNumber","exampleNumberCount","clearExampleNumber","PhoneMetadata","getGeneralDesc","getGeneralDescOrDefault","setGeneralDesc","hasGeneralDesc","generalDescCount","clearGeneralDesc","getFixedLine","getFixedLineOrDefault","setFixedLine","hasFixedLine","fixedLineCount","clearFixedLine","getMobile","getMobileOrDefault","setMobile","hasMobile","mobileCount","clearMobile","getTollFree","getTollFreeOrDefault","setTollFree","hasTollFree","tollFreeCount","clearTollFree","getPremiumRate","getPremiumRateOrDefault","setPremiumRate","hasPremiumRate","premiumRateCount","clearPremiumRate","getSharedCost","getSharedCostOrDefault","setSharedCost","hasSharedCost","sharedCostCount","clearSharedCost","getPersonalNumber","getPersonalNumberOrDefault","setPersonalNumber","hasPersonalNumber","personalNumberCount","clearPersonalNumber","getVoip","getVoipOrDefault","setVoip","hasVoip","voipCount","clearVoip","getPager","getPagerOrDefault","setPager","hasPager","pagerCount","clearPager","getUan","getUanOrDefault","setUan","hasUan","uanCount","clearUan","getEmergency","getEmergencyOrDefault","setEmergency","hasEmergency","emergencyCount","clearEmergency","getVoicemail","getVoicemailOrDefault","setVoicemail","hasVoicemail","voicemailCount","clearVoicemail","getShortCode","getShortCodeOrDefault","setShortCode","hasShortCode","shortCodeCount","clearShortCode","getStandardRate","getStandardRateOrDefault","setStandardRate","hasStandardRate","standardRateCount","clearStandardRate","getCarrierSpecific","getCarrierSpecificOrDefault","setCarrierSpecific","hasCarrierSpecific","carrierSpecificCount","clearCarrierSpecific","getSmsServices","getSmsServicesOrDefault","setSmsServices","hasSmsServices","smsServicesCount","clearSmsServices","getNoInternationalDialling","getNoInternationalDiallingOrDefault","setNoInternationalDialling","hasNoInternationalDialling","noInternationalDiallingCount","clearNoInternationalDialling","getIdOrDefault","hasId","idCount","clearId","getCountryCode","getCountryCodeOrDefault","setCountryCode","hasCountryCode","countryCodeCount","clearCountryCode","getInternationalPrefix","getInternationalPrefixOrDefault","setInternationalPrefix","hasInternationalPrefix","internationalPrefixCount","clearInternationalPrefix","getPreferredInternationalPrefix","getPreferredInternationalPrefixOrDefault","setPreferredInternationalPrefix","hasPreferredInternationalPrefix","preferredInternationalPrefixCount","clearPreferredInternationalPrefix","getNationalPrefix","getNationalPrefixOrDefault","setNationalPrefix","hasNationalPrefix","nationalPrefixCount","clearNationalPrefix","getPreferredExtnPrefix","getPreferredExtnPrefixOrDefault","setPreferredExtnPrefix","hasPreferredExtnPrefix","preferredExtnPrefixCount","clearPreferredExtnPrefix","getNationalPrefixForParsing","getNationalPrefixForParsingOrDefault","setNationalPrefixForParsing","hasNationalPrefixForParsing","nationalPrefixForParsingCount","clearNationalPrefixForParsing","getNationalPrefixTransformRule","getNationalPrefixTransformRuleOrDefault","setNationalPrefixTransformRule","hasNationalPrefixTransformRule","nationalPrefixTransformRuleCount","clearNationalPrefixTransformRule","getSameMobileAndFixedLinePattern","getSameMobileAndFixedLinePatternOrDefault","setSameMobileAndFixedLinePattern","hasSameMobileAndFixedLinePattern","sameMobileAndFixedLinePatternCount","clearSameMobileAndFixedLinePattern","getNumberFormatOrDefault","addNumberFormat","numberFormatArray","hasNumberFormat","numberFormatCount","clearNumberFormat","getIntlNumberFormat","getIntlNumberFormatOrDefault","addIntlNumberFormat","intlNumberFormatArray","hasIntlNumberFormat","intlNumberFormatCount","clearIntlNumberFormat","getMainCountryForCode","getMainCountryForCodeOrDefault","setMainCountryForCode","hasMainCountryForCode","mainCountryForCodeCount","clearMainCountryForCode","getLeadingDigits","getLeadingDigitsOrDefault","setLeadingDigits","hasLeadingDigits","leadingDigitsCount","clearLeadingDigits","getLeadingZeroPossible","getLeadingZeroPossibleOrDefault","setLeadingZeroPossible","hasLeadingZeroPossible","leadingZeroPossibleCount","clearLeadingZeroPossible","PhoneMetadataCollection","getMetadata","getMetadataOrDefault","addMetadata","metadataArray","hasMetadata","metadataCount","clearMetadata","PhoneNumber","getNationalNumber","getNationalNumberOrDefault","setNationalNumber","hasNationalNumber","nationalNumberCount","clearNationalNumber","getExtension","getExtensionOrDefault","setExtension","hasExtension","extensionCount","clearExtension","getItalianLeadingZero","getItalianLeadingZeroOrDefault","setItalianLeadingZero","hasItalianLeadingZero","italianLeadingZeroCount","clearItalianLeadingZero","getNumberOfLeadingZeros","getNumberOfLeadingZerosOrDefault","setNumberOfLeadingZeros","hasNumberOfLeadingZeros","numberOfLeadingZerosCount","clearNumberOfLeadingZeros","getRawInput","getRawInputOrDefault","setRawInput","hasRawInput","rawInputCount","clearRawInput","getCountryCodeSource","getCountryCodeSourceOrDefault","setCountryCodeSource","hasCountryCodeSource","countryCodeSourceCount","clearCountryCodeSource","getPreferredDomesticCarrierCode","getPreferredDomesticCarrierCodeOrDefault","setPreferredDomesticCarrierCode","hasPreferredDomesticCarrierCode","preferredDomesticCarrierCodeCount","clearPreferredDomesticCarrierCode","CountryCodeSource","UNSPECIFIED","FROM_NUMBER_WITH_PLUS_SIGN","FROM_NUMBER_WITH_IDD","FROM_NUMBER_WITHOUT_PLUS_SIGN","FROM_DEFAULT_COUNTRY","ctor","countryCodeToRegionCodeMap","countryToMetadata","AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TG","TJ","TK","TL","TM","TN","TO","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW","PhoneNumberUtil","regionToMetadataMap","INVALID_COUNTRY_CODE","NOT_A_NUMBER","TOO_SHORT_AFTER_IDD","TOO_SHORT_NSN","TOO_LONG","NANPA_COUNTRY_CODE_","MIN_LENGTH_FOR_NSN_","MAX_LENGTH_FOR_NSN_","MAX_LENGTH_COUNTRY_CODE_","MAX_INPUT_STRING_LENGTH_","UNKNOWN_REGION_","MOBILE_TOKEN_MAPPINGS_","GEO_MOBILE_COUNTRIES_","PLUS_SIGN","STAR_SIGN_","RFC3966_EXTN_PREFIX_","RFC3966_PREFIX_","RFC3966_PHONE_CONTEXT_","RFC3966_ISDN_SUBADDRESS_","DIGIT_MAPPINGS","DIALLABLE_CHAR_MAPPINGS_","ALPHA_MAPPINGS_","ALL_NORMALIZATION_MAPPINGS_","ALL_PLUS_NUMBER_GROUPING_SYMBOLS_","SINGLE_INTERNATIONAL_PREFIX_","VALID_PUNCTUATION","VALID_DIGITS_","VALID_ALPHA_","PLUS_CHARS_","PLUS_CHARS_PATTERN","LEADING_PLUS_CHARS_PATTERN","SEPARATOR_PATTERN_","CAPTURING_DIGIT_PATTERN","VALID_START_CHAR_PATTERN_","SECOND_NUMBER_START_PATTERN_","UNWANTED_END_CHAR_PATTERN_","VALID_ALPHA_PHONE_PATTERN_","MIN_LENGTH_PHONE_NUMBER_PATTERN_","VALID_PHONE_NUMBER_","DEFAULT_EXTN_PREFIX_","extnDigits_","createExtnPattern_","EXTN_PATTERN_","VALID_PHONE_NUMBER_PATTERN_","NON_DIGITS_PATTERN_","FIRST_GROUP_PATTERN_","NP_PATTERN_","FG_PATTERN_","CC_PATTERN_","FIRST_GROUP_ONLY_PREFIX_PATTERN_","REGION_CODE_FOR_NON_GEO_ENTITY","PhoneNumberFormat","E164","INTERNATIONAL","NATIONAL","RFC3966","PhoneNumberType","FIXED_LINE","MOBILE","FIXED_LINE_OR_MOBILE","TOLL_FREE","PREMIUM_RATE","SHARED_COST","VOIP","PERSONAL_NUMBER","PAGER","UAN","VOICEMAIL","UNKNOWN","MatchType","NO_MATCH","SHORT_NSN_MATCH","NSN_MATCH","EXACT_MATCH","ValidationResult","IS_POSSIBLE","IS_POSSIBLE_LOCAL_ONLY","TOO_SHORT","INVALID_LENGTH","extractPossibleNumber","isViablePhoneNumber","matchesEntirely","normalizeHelper_","normalizeDigitsOnly","normalizeSB_","normalizeDiallableCharsOnly","convertAlphaCharactersInNumber","getLengthOfGeographicalAreaCode","getMetadataForRegion","getRegionCodeForNumber","isNumberGeographical","getLengthOfNationalDestinationCode","getNumberType","getCountryMobileToken","getSupportedRegions","getSupportedGlobalNetworkCallingCodes","getSupportedCallingCodes","descHasPossibleNumberData_","descHasData_","getSupportedTypesForMetadata_","getNumberDescByType_","getSupportedTypesForRegion","isValidRegionCode_","getSupportedTypesForNonGeoEntity","getMetadataForNonGeographicalRegion","formattingRuleHasFirstGroupOnly","hasValidCountryCallingCode_","getNationalSignificantNumber","prefixNumberWithCountryCallingCode_","getRegionCodeForCountryCode","getMetadataForRegionOrCallingCode_","maybeGetFormattedExtension_","formatNsn_","formatByPattern","chooseFormattingPatternForNumber_","formatNsnUsingPattern_","formatNationalNumberWithCarrierCode","formatNationalNumberWithPreferredCarrierCode","formatNumberForMobileDialing","canBeInternationallyDialled","testNumberLength_","formatOutOfCountryCallingNumber","isNANPACountry","getCountryCodeForValidRegion_","formatInOriginalFormat","hasFormattingPatternForNumber_","getNddPrefixForRegion","rawInputContainsNationalPrefix_","isValidNumber","formatOutOfCountryKeepingAlphaChars","getExampleNumberForType","getExampleNumberForNonGeoEntity","getNumberTypeHelper_","isNumberMatchingDesc_","isValidNumberForRegion","getRegionCodeForNumberFromRegionList_","getRegionCodesForCountryCode","getCountryCodeForRegion","isAlphaNumber","maybeStripExtension","isPossibleNumber","isPossibleNumberWithReason","isPossibleNumberForType","isPossibleNumberForTypeWithReason","testNumberLengthForType_","isPossibleNumberString","truncateTooLongNumber","extractCountryCode","maybeExtractCountryCode","maybeStripInternationalPrefixAndNormalize","maybeStripNationalPrefixAndCarrierCode","parsePrefixAsIdd_","checkRegionForParsing_","parseHelper_","parseAndKeepRawInput","setItalianLeadingZerosForPhoneNumber_","buildNationalNumberForParsing_","copyCoreFieldsOnly_","isNumberMatch","isNationalNumberSuffixOfTheOther_","matchesPrefix","shortnumbermetadata","ShortNumberInfo","REGIONS_WHERE_EMERGENCY_NUMBERS_MUST_BE_EXACT_","ShortNumberCost","STANDARD_RATE","UNKNOWN_COST","getRegionCodesForCountryCode_","regionDialingFromMatchesNumber_","isPossibleShortNumberForRegion","getMetadataForRegion_","getNationalSignificantNumber_","isPossibleShortNumber","isValidShortNumberForRegion","matchesPossibleNumberAndNationalNumber_","isValidShortNumber","getRegionCodeForShortNumberFromRegionList_","getExpectedCostForRegion","isEmergencyNumber","getExpectedCost","getExampleShortNumber","getExampleShortNumberForCost","connectsToEmergencyNumber","matchesEmergencyNumberHelper_","isCarrierSpecific","isCarrierSpecificForRegion","isSmsServiceForRegion","AsYouTypeFormatter","DIGIT_PLACEHOLDER_","DIGIT_PATTERN_","currentOutput_","formattingTemplate_","currentFormattingPattern_","accruedInput_","accruedInputWithoutFormatting_","ableToFormat_","isExpectingCountryCallingCode_","isCompleteNumber_","inputHasFormatting_","phoneUtil_","positionToRemember_","originalPosition_","lastMatchPosition_","prefixBeforeNationalNumber_","shouldAddSpaceAfterNationalPrefix_","extractedNationalPrefix_","nationalNumber_","possibleFormats_","defaultCountry_","defaultMetadata_","currentMetadata_","SEPARATOR_BEFORE_NATIONAL_NUMBER_","EMPTY_METADATA_","ELIGIBLE_FORMAT_PATTERN_","NATIONAL_PREFIX_SEPARATORS_PATTERN_","MIN_LEADING_DIGITS_LENGTH_","maybeCreateNewTemplate_","createFormattingTemplate_","getAvailableFormats_","narrowDownPossibleFormats_","getFormattingTemplate_","inputDigit","inputDigitWithOptionToRememberPosition_","inputDigitAndRememberPosition","isDigitOrLeadingPlusSign_","normalizeAndAccrueDigitsAndPlusSign_","attemptToExtractIdd_","attemptToExtractCountryCallingCode_","attemptToChoosePatternWithPrefixExtracted_","ableToExtractLongerNdd_","removeNationalPrefixFromNationalNumber_","attemptToChooseFormattingPattern_","inputDigitHelper_","attemptToFormatAccruedDigits_","inputAccruedNationalNumber_","appendNationalNumber_","getExtractedNationalPrefix_","getRememberedPosition","isNanpaNumberWithNationalPrefix_","exportName","VENDOR_PREFIXES","TEST_ELEMENT","bindFn","each","deprecationMessage","nextKey","deprecate","childP","baseP","types","splitStr","findByKey","inArray","camelProp","_uniqueId","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","prefixed","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","PROPS_XY","PROPS_CLIENT_XY","inputTarget","domHandler","boolOrFn","pointersLen","pointers","changedPointersLen","changedPointers","INPUT_END","session","pointersLength","simpleCloneInputData","ao","firstMultiple","offsetCenter","deltaTime","angle","getAngle","getDistance","offsetDelta","prevDelta","prevInput","computeDeltaXY","offsetDirection","overallVelocity","overallVelocityX","overallVelocityY","getScale","rotation","getRotation","maxPointers","Pi","velocityX","velocityY","lastInterval","computeIntervalInputData","hasParent","srcEvent","computeInputData","recognize","DIRECTION_DOWN","p1","p2","Input","evEl","evTarget","evWin","getWindowForElement","removeEventListeners","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","pressed","inherit","MouseInput","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","MSPointerEvent","PointerEvent","PointerEventInput","removePointer","eventTypeNormalized","storeIndex","pointerId","So","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","uniqueArray","SingleTouchInput","normalizeSingleTouches","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","targetIds","allTouches","INPUT_START","changedTargetTouches","TouchInput","primaryTouch","lastTouches","setLastTouch","lastTouch","lts","DEDUP_TIMEOUT","dx","dy","getTouches","TouchMouseInput","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","recordTouches","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","touchMap","cssSupports","getTouchActionProps","ifUndefined","simultaneous","requireFail","otherRecognizer","recognizer","Recognizer","AttrRecognizer","pX","pY","_timer","pTime","pCenter","recognizers","Hammer","preset","Manager","oldCssProps","inputClass","inputHandler","createInputInstance","TouchAction","toggleCssProps","recognizeWith","requireFailure","cssProps","ei","getTouchAction","inStr","hasPanX","hasPanY","TOUCH_ACTION_AUTO","cleanTouchActions","preventDefaults","prevented","hasNone","DIRECTION_LEFT","DIRECTION_UP","preventSrc","invokeArrayArg","getRecognizerByNameIfManager","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","stateStr","additionalEvent","tryEmit","canEmit","inputDataClone","STATE_RECOGNIZED","STATE_BEGAN","attrTest","optionPointers","isRecognized","PanRecognizer","DIRECTION_HORIZONTAL","directionTest","hasMoved","directionStr","PinchRecognizer","PressRecognizer","validPointers","validMovement","validTime","setTimeoutContext","RotateRecognizer","SwipeRecognizer","TapRecognizer","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","domEvents","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","stopped","STOP","curRecognizer","existing","gestureEvent","gesture","triggerDomEvent","INPUT_MOVE","INPUT_CANCEL","STATE_POSSIBLE","STATE_CHANGED","STATE_ENDED","STATE_CANCELLED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_VERTICAL","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press","onsuccess","promisifyRequest","promisifyRequestCall","Cursor","ProxyClass","targetProp","promisifyCursorRequestCall","_index","_cursor","_request","_store","idbTransaction","_tx","oncomplete","_db","Transaction","proxyProperties","Index","proxyRequestMethods","IDBIndex","proxyCursorRequestMethods","IDBCursor","ObjectStore","createIndex","IDBObjectStore","proxyMethods","IDBTransaction","UpgradeDB","IDBDatabase","DB","funcName","nativeObject","iterateCursor","continue","upgradeCallback","onupgradeneeded","autoplaySettings","autoplay","slideShowAutoplay","slideShowInterval","progressBar","forceSlideShowAutoplay","autoplayControls","appendAutoplayControlsTo","autoplayPluginStrings","toggleAutoplay","Autoplay","core","fromAuto","pausedOnTouchDrag","pausedOnSlideChange","LGel","lGEvents","startAutoPlay","stopAutoPlay","showProgressBar","_$progressBar_1","_$progress_1","removeAttr","css","speed","_html","hasClass","galleryItems","slide","closeGallery","fullscreenSettings","fullScreen","fullscreenPluginStrings","toggleFullscreen","FullScreen","$LG","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","$toolbar","isFullScreen","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","lgId","lgOpened","rotateSettings","rotateSpeed","rotateLeft","rotateRight","flipHorizontal","flipVertical","rotatePluginStrings","buildTemplates","rotateIcons","rotateValuesList","getSlideItem","applyStyles","triggerEvents","getCurrentRotation","st","tm","rotateEl","currentRotation","rotateAxis","isImageOrientationChanged","rotateValue","ifFlippedVer","thumbnailsSettings","thumbnail","animateThumb","currentPagerPosition","alignThumbnails","thumbWidth","thumbHeight","thumbMargin","appendThumbnailsTo","toggleThumb","enableThumbDrag","enableThumbSwipe","thumbnailSwipeThreshold","loadYouTubeThumbnail","youTubeThumbSize","thumbnailPluginStrings","toggleThumbnails","Thumbnail","thumbOuterWidth","thumbTotalWidth","translateX","thumbClickable","setAnimateThumbStyles","allowMediaOverlap","toggleThumbBar","thumbKeyPress","setThumbMarkup","manageActiveClassOnSlideChange","$lgThumb","$target","lgBusy","rebuildThumbnails","thumbOuterClassNames","$lgComponents","$thumbOuter","setThumbItemHtml","thumbDragUtils","cords","isMoved","newTranslateX","touchMoveTime","onThumbTouchMove","onThumbTouchEnd","setTranslate","getPossibleTransformX","touchDuration","distanceXnew","speedX","getThumbHtml","thumb","slideVideoInfo","__slideVideoInfo","getThumbItemHtml","thumbList","$thumb","eq","videoSettings","autoplayFirstVideo","youTubePlayerParams","vimeoPlayerParams","wistiaPlayerParams","gotoNextSlideOnVideoEnd","autoplayVideoOnSlide","videojs","videojsTheme","videojsOptions","Video","onHasVideo","$el","loadVideoOnPosterClick","onSlideItemLoad","onBeforeSlide","onAfterSlide","isFirstSlide","loadAndPlayVideo","html5Video","hasPoster","appendVideos","lGalleryOn","pauseVideo","prevIndex","$slide","playVideo","controlVideo","getVideoHtml","videoInfo","currentGalleryItem","videoTitle","commonIframeProps","videoId","youTubeParams","youTubePlayerParamsSettings","slideUrlParams","paramas","paramsToObject","playerParamsSettings","wmode","mute","enablejsapi","getYouTubeParams","isYouTubeNoCookieURL","isYouTubeNoCookie","vimeo","playerParams","defaultParams","urlParams","defaultPlayerParams","isPrivate","getVimeoURLParams","wistia","wistiaId","html5","html5VideoMarkup","tracks","trackAttributes","html5VideoAttrs_1","videoAttributes_1","videoParams","videoHtml","$videoElement","goToNextSlide","Vimeo","Player","_wq","forcePlay","_src","videoJsPlayer_1","$tempImg","onVideoLoadAfterPosterClick","vimeoSettings","showVimeoThumbnails","showThumbnailWithPlayButton","VimeoThumbnail","pluginInstance","$container","setVimeoThumbnails","dynamicGallery","thisArg","_arguments","throw","adopt","fulfilled","rejected","vimeoInfo","verb","op","thumbnail_url_with_play_button","thumbnail_url","zoomSettings","infiniteZoom","actualSize","showZoomInOutIcons","actualSizeIcons","zoomIn","zoomOut","enableZoomAfter","zoomPluginStrings","viewActualSize","Zoom","zoomIcons","getIdName","enableZoom","_speed","zoomableTimeout","isImageSlide","setZoomEssentials","enableZoomOnSlideItemLoad","getDragCords","getSwipeCords","getDragAllowedAxises","scaleDiff","$image","allowX","containerRect","allowY","$content","zoomImage","resetToMax","originalY","positionChanged","dragAllowedAxises","possibleSwipeCords","getPossibleSwipeDragCords","_x","_y","scaleVal","isBeyondPossibleLeft","minX","isBeyondPossibleRight","isBeyondPossibleTop","isBeyondPossibleBottom","setZoomStyles","setZoomImageSize","resetImageTranslate","imageReset","actualSizeScale","getCurrentImageActualSizeScale","naturalWidth","naturalHeight","ZOOM_TRANSITION_DURATION","$imageWrap","$dummyImage","setActualSize","zoomInProgress","prevScale","setPageCords","beginZoom","getNaturalWidth","getActualSizeScale","getPageCords","pageCords","manageActualPixelClassNames","resetZoom","tapped","_LGel","setZoomSwipeStyles","zoomDrag","pinchZoom","zoomSwipe","$actualSize","$item","getTouchDistance","startDist","pinchStarted","initScale","$inner","endDist","_scale","EPSILON","touchendZoom","startCoords","endCoords","distanceYnew","speedY","getZoomSwipeCords","getSlideType","mediaContainerPosition","imgRect","imageHeight","imageWidth","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","INFINITY","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","iteratee","accumulator","resIndex","baseIndexOf","initAccum","asciiSize","baseProperty","eachFunc","fromRight","strictIndexOf","baseFindIndex","baseIsNaN","baseSum","trimmedEndIndex","arrayMap","strSymbols","chrSymbols","deburrLetter","basePropertyOf","escapeHtmlChar","hasUnicode","unicodeSize","unicodeToArray","asciiToArray","unescapeHtmlChar","pick","arrayProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","overArg","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","__data__","MapCache","ListCache","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","baseTimes","isIndex","baseRandom","shuffleSelf","copyArray","baseClamp","baseAssignValue","baseEach","copyObject","lower","upper","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","baseAssign","Ctor","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","cloneRegExp","cloneSymbol","initCloneByTag","Stack","stacked","V1","subValue","baseClone","getAllKeysIn","getAllKeys","arrayEach","assignValue","isCommon","valuesLength","baseUnary","arrayIncludesWith","cacheHas","SetCache","computed","valuesIndex","lodash","templateSettings","variable","baseLodash","Hash","assocIndexOf","getMapData","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","isSymbol","depth","isStrict","isFlattenable","oe","baseFlatten","arrayPush","baseFor","createBaseFor","baseForRight","arrayFilter","castPath","toKey","keysFunc","symbolsFunc","isOwn","unmasked","getRawTag","objectToString","other","arrays","othLength","othIndex","caches","seen","baseGetTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","mapToArray","setToArray","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","isPartial","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsEqual","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isMasked","baseMatchesProperty","baseMatches","isPrototype","getMatchData","matchesStrictComparable","baseIsMatch","isKey","isStrictComparable","hasIn","COMPARE_UNORDERED_FLAG","srcIndex","mergeFunc","safeGet","assignMergeValue","isTyped","Cs","yl","fa","Ra","rm","hg","baseMergeDeep","baseMerge","iteratees","orders","baseGet","getIteratee","comparer","baseSortBy","baseMap","criteria","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSet","baseIndexOfWith","baseUnset","setToString","overRest","arraySample","nested","baseSetData","oa","baseSetToString","Ss","retHighest","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","Rr","$r","MAX_ARRAY_INDEX","baseToString","seenIndex","updater","isDrop","baseSlice","arrayReduce","baseUniq","baseDifference","assignFunc","valsLength","isArrayLikeObject","stringToPath","castRest","baseRest","valIsDefined","valIsReflexive","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","ri","initializer","arrayAggregator","baseAggregator","assigner","isIterateeCall","trailing","castSlice","deburr","thisBinding","findIndexFunc","flatRest","prereq","thru","getFuncName","isLaziable","WRAP_ARY_FLAG","plant","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","WRAP_CURRY_FLAG","isFlip","createCtor","getHolder","holdersCount","countHolders","composeArgs","composeArgsRight","newHolders","replaceHolders","createRecurry","createHybrid","reorder","toIteratee","baseInverter","baseToNumber","arrayFunc","chars","charsLength","baseRepeat","stringSize","toFinite","Ue","baseRange","wrapFunc","isCurry","setWrapToString","Ps","setToPairs","baseToPairs","srcBitmask","newBitmask","WRAP_BIND_FLAG","mergeData","createCurry","createPartial","createBind","customDefaultsMerge","isPlainObject","arrLength","arrStacked","arrValue","arraySome","baseGetAllKeys","otherFunc","baseIteratee","isKeyable","baseIsNative","stubArray","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","rand","memoizeCapped","subString","difference","differenceBy","differenceWith","mapped","castArrayLikeObject","baseIntersection","intersectionBy","intersectionWith","pull","pullAll","basePullAll","pullAt","baseAt","basePullAt","unionBy","unionWith","unzip","without","xor","baseXor","xorBy","xorWith","zipWith","unzipWith","wrapperAt","countBy","createAggregator","createFind","findLast","findLastIndex","arrayEachRight","invokeMap","baseInvoke","keyBy","partition","sortBy","baseOrderBy","createWrap","WRAP_PARTIAL_FLAG","bindKey","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","leading","maxing","timerExpired","invokeFunc","timeSinceLastCall","shouldInvoke","trailingEdge","timeWaiting","remainingWait","isInvoking","leadingEdge","debounced","baseDelay","resolver","memoized","Cache","overArgs","transforms","funcsLength","rearg","gt","createRelationalOperation","baseGt","gte","baseIsArguments","proxyTag","baseLt","lte","isString","iteratorToArray","baseTrim","isBinary","createAssigner","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","hasPath","baseHasIn","invert","createInverter","invertBy","invoke","arrayLikeKeys","baseKeys","nativeKeysIn","isProto","baseKeysIn","omit","CLONE_DEEP_FLAG","customOmitClone","basePickBy","basePick","toPairs","createToPairs","toPairsIn","baseValues","createCompounder","upperFirst","kebabCase","lowerCase","lowerFirst","createCaseFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","isError","bindAll","methodNames","flow","createFlow","flowRight","methodOf","baseFunctions","chain","over","createOver","overEvery","arrayEvery","overSome","basePropertyDeep","createRange","rangeRight","createMathOperation","augend","addend","createRound","dividend","divisor","multiply","multiplicand","minuend","subtrahend","castArray","compact","conforms","baseConformsTo","baseConforms","curry","curryRight","dropRight","dropRightWhile","baseWhile","dropWhile","baseFill","baseFilter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","WRAP_FLIP_FLAG","fromPairs","functionsIn","initial","mapKeys","mapValues","matchesProperty","negate","nthArg","baseNth","omitBy","pickBy","orderBy","propertyOf","pullAllBy","pullAllWith","rest","sampleSize","arraySampleSize","baseSampleSize","setWith","arrayShuffle","baseShuffle","sortedUniq","baseSortedUniq","sortedUniqBy","spread","tail","takeRight","takeRightWhile","takeWhile","toPath","isArrLike","Ll","unary","uniq","uniqBy","uniqWith","unset","baseUpdate","castFunction","updateWith","valuesIn","zipObject","baseZipObject","zipObjectDeep","entriesIn","extendWith","CLONE_SYMBOLS_FLAG","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","baseEvery","baseFindKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","baseHas","baseInRange","isBoolean","isEqual","isEqualWith","isInteger","isMatch","isMatchWith","isNative","isNil","isNull","isSafeInteger","isWeakMap","isWeakSet","weakSetTag","strictLastIndexOf","baseExtremum","maxBy","mean","baseMean","meanBy","minBy","stubObject","stubString","stubTrue","noConflict","strLength","createPadding","padEnd","radix","baseReduce","arrayReduceRight","runInContext","sample","baseSample","baseSome","sortedIndex","baseSortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","customDefaultsAssignIn","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","escapeStringChar","times","toLower","toSafeInteger","toUpper","charsStartIndex","charsEndIndex","trimEnd","trimStart","omission","newEnd","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","getView","iterLength","takeCount","baseWrapperValue","iterIndex","commit","wrapped","moment","defineLocale","monthsShort","weekdaysShort","weekdaysMin","meridiemParse","isPM","isLower","longDateFormat","LTS","LL","LLL","LLLL","sameDay","nextDay","nextWeek","lastWeek","sameElse","relativeTime","future","past","ss","mm","dayOfMonthOrdinalParse","af","pluralForm","plurals","pluralize","withoutSuffix","weekdaysParseExact","postformat","arDz","arKw","symbolMap","preparse","arLy","arMa","numberMap","arPs","arSa","arTn","suffixes","az","forms","plural","isFormat","relativeTimeWithPlural","ww","lastDigit","last2Digits","bm","meridiemHour","bnBd","monthsShortRegex","monthsParseExact","bo","mutationTable","softMutation","lastNumber","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","relativeTimeWithMutation","bs","ll","lll","llll","affix","cy","da","processRelativeTime","deAt","deCh","dv","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","enAu","enCa","enGb","enIe","enIl","enIn","enNz","enSg","eo","monthsShortDot","esDo","invalidDate","esMx","esUs","es","et","eu","numbersPast","numbersFuture","verbalNumber","fi","fil","frCa","frCh","fr","monthsShortWithDots","monthsShortWithoutDots","fy","gd","gomDeva","gomLatn","gu","weekEndings","hu","hyAm","itCh","since","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","ja","jv","$0","$1","$2","ka","kk","km","isUpper","ko","ezafeNumSuffix","kuKmr","ku","ky","eifelerRegelAppliesToNumber","lb","lo","translateSingular","special","relativeTimeWithSingular","lv","translator","correctGrammaticalCase","wordKey","mi","mk","ml","relativeTimeMr","mr","msMy","my","nb","ne","nlBe","nl","ocLnc","paIn","monthsNominative","monthsSubjective","pl","ptBr","pt","ru","sd","se","si","sk","sq","srCyrl","sv","sw","ta","te","tet","tg","th","tk","tlPh","numbersNouns","numberNoun","hundred","ten","one","numberAsNoun","tlh","tzl","tzmLatn","tzm","ugCn","nominative","accusative","genitive","processHoursFunction","uk","ur","uzLatn","uz","vi","xPseudo","yo","zhCn","zhHk","zhMo","zhTw","hookCallback","hasOwnProp","arrLen","strict","createLocalOrUTC","utc","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","rfc2822","weekdayMismatch","parsedParts","isNowValid","getParsingFlags","invalidWeekday","_strict","bigHour","_isValid","createUTC","fun","momentProperties","updateInProgress","momentPropertiesLen","_isAMomentObject","_tzm","_isUTC","_offset","_locale","copyConfig","Moment","suppressDeprecationWarnings","firstTime","deprecationHandler","argLen","deprecations","parentConfig","childConfig","targetLength","forceSign","absNumber","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","padded","zeroFill","localeData","expandFormat","removeFormattingTokens","makeFormatFunction","replaceLongDateFormatTokens","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","quarters","quarter","gg","weekyears","weekyear","isoweekyears","isoweekyear","isoweeks","isoweek","inputObject","normalizedProp","normalizedInput","normalizeUnits","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","match1to2NoLeadingZero","match1to2HasZero","strictRegex","regexEscape","p3","p4","unescapeFormat","argumentForCoercion","coercedNumber","absFloor","tokenLen","toInt","addParseToken","_w","isLeapYear","addFormatToken","addRegexToken","parseTwoDigitYear","getSetYear","makeGetSet","keepTime","set$1","isUTC","setUTCMilliseconds","setUTCSeconds","setUTCMinutes","setUTCHours","setUTCDate","setUTCFullYear","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","setUTCMonth","shortP","longP","shortPieces","longPieces","mixedPieces","cmpLenRev","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createUTCDate","resYear","resDayOfYear","daysInYear","ns","resWeek","weekOffset","weeksInYear","yi","weekOffsetNext","addWeekParseToken","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","lowercase","_meridiemParse","hFormat","matchMeridiem","kInput","_isPm","_meridiem","pos1","pos2","getSetHour","globalLocale","baseConfig","localeFamilies","minl","oldLocale","isLocaleNameSane","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","deprecateSimple","parentLocale","loadLocale","Locale","mergeConfigs","normalizeLocale","commonPrefix","chooseLocale","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","allowTime","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","yearStr","parsedArray","preprocessRFC2822","monthStr","hourStr","minuteStr","secondStr","untruncateYear","extractFromRFC2822Strings","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","expectedWeekday","yearToUse","nowValue","_useUTC","currentDateArray","weekdayOverflow","curWeek","createLocal","_week","An","Qs","dayOfYearFromWeeks","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","createDate","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","getParseRegexForToken","addTimeToArrayFromToken","isPm","meridiemFixWrap","erasConvertYear","configFromArray","checkOverflow","configFromRFC2822","configFromISO","createInvalid","isMoment","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromStringAndArray","Xt","createFromInputFallback","configFromString","normalizeObjectUnits","configFromObject","configFromInput","isObjectEmpty","prepareConfig","createFromConfig","prototypeMin","prototypeMax","moments","ordering","unitHasDecimal","orderLen","isDurationValid","_milliseconds","_days","_months","_bubble","Duration","utcOffset","offsetFromString","chunkOffset","setTime","local","aspNetRegex","isoRegex","diffRes","isDuration","absRound","parseIso","cloneWithOffset","ve","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","tmp","addSubtract","isAdding","invalid","createAdder","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","propertyLen","isMomentInputObject","monthDiff","wholeMonthDiff","newLocaleData","defaultFormatUtc","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","erasAbbrRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","weeksTarget","setWeekAll","dayOfYearData","matchEraAbbr","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","addWeekYearFormatToken","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","je","isCalendarSpec","sod","calendarFormat","asFloat","zoneDelta","endOf","startOfDate","utcStartOfDate","localStartOfDate","mod$1","inputString","isUtc","formatMoment","humanize","fromNow","toNow","invalidAt","localInput","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","prioritizedLen","keepOffset","inspect","isLocal","unix","creationData","eraName","eraYear","getSetWeekYearHelper","getSetMonth","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","getDateOffset","_changeInProgress","parseZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","isDSTShifted","_isDSTShifted","dontConvert","lengthDiff","diffs","proto$1","get$1","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","preParsePostFormat","_relativeTime","pastFuture","Zt","_eras","computeErasParse","_monthsShort","_monthsParseExact","handleStrictParse","computeMonthsParse","firstDayOfYear","_weekdays","shiftWeekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","handleStrictParse$1","_fullWeekdaysParse","computeWeekdaysParse","langData","mathAbs","as","asMilliseconds","makeAs","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","makeGetter","thresholds","abs$1","totalSign","ymSign","daysSign","hmsSign","proto$2","addSubtract$1","daysToMonths","monthsToDays","monthsFromDays","absCeil","argWithSuffix","argThresholds","withSuffix","posNegDuration","substituteTimeAgo","relativeTime$1","toISOString$1","toIsoString","setHookCallback","listMonthsImpl","listWeekdaysImpl","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME_SECONDS","TIME_MS","WEEK","MONTH","FileLikeObject","fileOrInput","rawFile","fakePathOrObject","lastModifiedDate","FileItem","uploader","formData","isUploading","isUploaded","isCancel","_file","itemAlias","uploadItem","_onCompleteItem","_onErrorItem","cancelItem","removeFromQueue","form","onBeforeUpload","onBuildForm","onCancel","onComplete","removeAfterUpload","_nextIndex","FileType","mimeClass","mime_psd","mime_compress","mime_doc","mime_xsl","mime_ppt","fileTypeDetection","inputFilename","jpg","jpeg","tif","psd","bmp","png","nef","tiff","cr2","dwg","cdr","ai","indd","pin","cdp","skp","stp","mp3","wav","wma","m4a","compress","rar","lz","z01","bz2","gz","pdf","xls","xlsx","ods","mp4","avi","wmv","mpg","mts","flv","vob","m4v","mpeg","m2ts","mov","docx","eps","txt","odt","rtf","ppt","pptx","pps","ppsx","odp","FileUploader","autoUpload","isHTML5","disableMultipart","formatDataFunction","formatDataFunctionIsAsync","authTokenHeader","_queueLimitFilter","maxFileSize","_fileSizeFilter","allowedFileType","_fileTypeFilter","allowedMimeType","_mimeTypeFilter","Ot","arrayOfFilters","_getFilters","addedFileItems","_isValidFile","fileItem","_onAfterAddingFile","_onWhenAddingFileFailed","_failFilterIndex","_onAfterAddingAll","_getTotalProgress","_render","uploadAll","getIndexOfItem","transport","_prepareToUploading","_form","getNotUploadedItems","File","isFile","item2","fileItems","getMimeClass","_onError","onErrorItem","_onComplete","onCompleteItem","getReadyItems","onCompleteAll","parsedHeaders","sendable","_onBeforeUploadItem","_onBuildItemForm","appendFile","parametersBeforeFiles","additionalParameter","paramVal","lengthComputable","_onProgressItem","_parseHeaders","_transformResponse","gist","_isSuccessCode","_onCancelItem","He","DONE","notUploaded","uploaded","ratio","queueLimit","onWhenAddingFileFailed","onAfterAddingFile","onAfterAddingAll","_onBeforeUpload","onBeforeUploadItem","_onBuildForm","onBuildItemForm","_onProgress","onProgressItem","onProgressAll","_onSuccess","onSuccessItem","_onCancel","onCancelItem","FileSelectDirective","onFileSelected","getFilters","addToQueue","isEmptyAfterSelection","FileDropDirective","fileOver","onFileDrop","transfer","_getTransfer","_preventAndStop","_haveFiles","dropEffect","onDrop","onDragOver","FileUploadModule","It","Ng2FlatpickrComponent_1","_r3","Ng2FlatpickrComponent","_tabindex","onTouchedFn","defaultFlatpickrOptions","writeValue","hideButton","propagateChange","flatpickrElement","setDateFromInput","setAltInputPlaceholder","Ng2FlatpickrComponent_input_2_Template","ViewChild","Ng2FlatpickrModule","ContentRef","ComponentLoader","_applicationRef","_posService","onBeforeShow","onShown","onBeforeHide","onHidden","_providers","_isHiding","containerDefaultSelector","_listenOpts","_globalListener","compType","_componentFactory","attachment","_subscribePositioning","_innerComponent","_contentRef","_getContentRef","selectedElement","_registerOutsideClick","deletePositionElement","componentEl","isShown","_unsubscribePositioning","_unregisterListenersFn","listenOpts","outsideEsc","registerHide","listenToTriggersV2","vRef","_inlineViewRef","registerOutsideClick","targets","registerEscClick","_zoneSubscription","appendToBody","calcPosition","_viewRef","contentCmptFactory","modalContentInjector","createText","ComponentLoaderFactory","_mapUnits","_unit","formatArr","isSameYear","isSameMonth","matchTimestamp","_token","defaultTimeUnit","daysInMonth$1","getNum","dayOfMonth","_date","cloneDate","getLocaleDayOfWeek","setLocaleDayOfWeek","setDayOfWeek","getDayOfWeek","setISODayOfWeek","getDayOfYear","Rt","defaultLongDateFormat","confKey","handleMonthStrictParse","_shortMonths","handleWeekStrictParse","getWeekYear","getISOWeekYear","getUTCOffset","childProp","ee","parentProp","getISOWeek","addUnitAlias","addUnitPriority","initWeek","_getWeekYearFormatCb","_getISOWeekYearFormatCb","initWeekYear","initYear","initTimezone","initTimestamp","SECOND","initSecond","getQuarter","initQuarter","addOffsetFormatToken","_min","initOffset","initMonth","MINUTE","initMinute","initMillisecond","kFormat","_mm","_ss","_H","initHour","initDayOfYear","getISODayOfWeek","initDayOfWeek","initDayOfMonth","setDefaultLocale","orderingHash","mem","bubble","localeKey","_units","markInvalid","_format","isDateValid","formatLongDate","oi","inputLength","_hour","ie","_arr","convertDuration","_other","offsetDiff","_num","_weekDay","months$1","monthsShort$1","thBeLocale","MiniState","_initialState","actionsDispatcher$","state$","Jn","observeOn","queueScheduler","scan","MiniStore","_dispatcher","_reducer","pathOrMapFn","TooltipConfig","adaptivePosition","TooltipContainerComponent","isBs3","classMap","in","fade","TooltipDirective","cis","_positionService","tooltipId","tooltipChange","tooltipAnimation","tooltipFadeDuration","tooltipStateChanged","_tooltip","createLoader","listen","_ariaDescribedby","preventOverflow","_delayTimeoutId","cancelDelayedTooltipShowing","_tooltipCancelShowFn","_delaySubscription","timer","parseTriggers","htmlContent","_placement","_isOpen","_appendToBody","_popupClass","_tooltipContext","_tooltipPopupDelay","_tooltipTrigger","OnChange","TooltipModule","PositioningService","_r10","setViewMode","dayHoverHandler","weekHoverHandler","daySelectHandler","tmp_0_0","calendar_r8","ctx_r7","daysCalendar","BsDatepickerContainerComponent_div_0_div_4_bs_days_calendar_view_1_Template","_r18","monthHoverHandler","monthSelectHandler","calendar_r16","ctx_r15","BsDatepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template","ctx_r2","monthsCalendar","yearHoverHandler","yearSelectHandler","calendar_r23","BsDatepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template","yearsCalendar","setToday","ctx_r29","todayPos","todayBtnLbl","_r34","clearDate","ctx_r30","clearPos","clearBtnLbl","BsDatepickerContainerComponent_div_0_div_8_div_1_Template","BsDatepickerContainerComponent_div_0_div_8_div_2_Template","showTodayBtn","showClearBtn","setRangeOnCalendar","chosenRange","customRanges","customRangeBtnLbl","positionServiceEnable","BsDatepickerContainerComponent_div_0_div_4_Template","BsDatepickerContainerComponent_div_0_div_5_Template","BsDatepickerContainerComponent_div_0_div_6_Template","BsDatepickerContainerComponent_div_0_div_7_Template","BsDatepickerContainerComponent_div_0_div_8_Template","BsDatepickerContainerComponent_div_0_div_9_Template","animationState","viewMode","BsDaterangepickerContainerComponent_div_0_div_4_bs_days_calendar_view_1_Template","BsDaterangepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template","BsDaterangepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template","BsDaterangepickerContainerComponent_div_0_div_8_div_1_Template","BsDaterangepickerContainerComponent_div_0_div_8_div_2_Template","BsDaterangepickerContainerComponent_div_0_div_4_Template","BsDaterangepickerContainerComponent_div_0_div_5_Template","BsDaterangepickerContainerComponent_div_0_div_6_Template","BsDaterangepickerContainerComponent_div_0_div_7_Template","BsDaterangepickerContainerComponent_div_0_div_8_Template","BsDaterangepickerContainerComponent_div_0_div_9_Template","range_r1","selectFromRanges","selectedRange","monthTitle","i_r4","week_r5","selectWeek","i_r6","_r17","ctx_r10","BsDaysCalendarViewComponent_tr_8_td_1_span_1_Template","BsDaysCalendarViewComponent_tr_8_td_1_span_2_Template","isWeekHovered","isiOS","_r29","day_r23","selectDay","hoverDay","_r37","_r45","BsDaysCalendarViewComponent_tr_8_td_2_span_1_Template","BsDaysCalendarViewComponent_tr_8_td_2_span_2_Template","BsDaysCalendarViewComponent_tr_8_td_2_span_3_Template","ctx_r8","isShowTooltip","BsDaysCalendarViewComponent_tr_8_td_1_Template","BsDaysCalendarViewComponent_tr_8_td_2_Template","_r5","month_r3","viewMonth","hoverMonth","BsMonthCalendarViewComponent_tr_4_td_1_Template","row_r1","year_r3","viewYear","hoverYear","BsYearsCalendarViewComponent_tr_4_td_1_Template","_r9","datePicker","_r11","_r15","labelz_r16","index_r18","a4","_r27","dtz_r23","ctx_r24","customClass","isBs4","DayPickerComponent_table_0_ng_template_17_tr_0_td_2_button_1_Template","onlyCurrentMonth","DayPickerComponent_table_0_ng_template_17_tr_0_td_1_Template","DayPickerComponent_table_0_ng_template_17_tr_0_td_2_Template","rowz_r17","showWeeks","DayPickerComponent_table_0_ng_template_17_tr_0_Template","_r31","DayPickerComponent_table_0_button_4_Template","DayPickerComponent_table_0_button_5_Template","toggleMode","DayPickerComponent_table_0_button_11_Template","DayPickerComponent_table_0_button_12_Template","DayPickerComponent_table_0_th_14_Template","DayPickerComponent_table_0_th_15_Template","DayPickerComponent_table_0_ng_template_17_Template","datepickerMode","maxMode","labels","_r6","dtz_r4","MonthPickerComponent_table_0_tr_14_td_1_Template","rowz_r2","MonthPickerComponent_table_0_tr_14_Template","monthColLimit","YearPickerComponent_table_0_tr_14_td_1_Template","YearPickerComponent_table_0_tr_14_Template","yearColLimit","_c9","BsDatepickerConfig","useUtc","isAnimated","startView","returnFocusToInput","displayMonths","dateInputFormat","rangeInputFormat","yearTitle","dayLabel","monthLabel","yearLabel","showTodayButton","showClearButton","todayPosition","clearPosition","todayButtonLabel","clearButtonLabel","customRangeButtonLabel","DATEPICKER_ANIMATION_TIMING","datepickerAnimation","BsDatepickerAbstractComponent","_effects","setMinDate","setMaxDate","setDaysDisabled","setDatesDisabled","setDatesEnabled","setDateCustomClasses","setDateTooltipTexts","BsDatepickerActions","CALCULATE","FORMAT","FLAG","CHANGE_VIEWMODE","NAVIGATE_TO","NAVIGATE_OFFSET","SET_OPTIONS","SELECT_RANGE","HOVER","SET_MIN_DATE","SET_MAX_DATE","SET_DAYSDISABLED","SET_DATESDISABLED","SET_DATESENABLED","SET_IS_DISABLED","SET_DATE_CUSTOM_CLASSES","SET_DATE_TOOLTIP_TEXTS","SET_LOCALE","BsLocaleService","_defaultLocale","_localeChange","BsDatepickerEffects","_actions","_localeService","_subs","_bsDatepickerStore","selectRange","daysDisabled","datesDisabled","datesEnabled","flaggedMonths","flaggedMonthsCalendar","yearsCalendarFlagged","We","changeViewMode","navigateStep","_cell","isOtherMonth","calculate","monthsModel","monthModel","formattedMonths","yearsCalendarModel","hoveredDate","dateCustomClasses","dateTooltipTexts","localeChange","_initialView","initialDatepickerState","monthViewOptions","minBound","maxBound","calendarIndex","matrix","shiftDate","startingDate","getFirstDayOfMonth","isFirstDayOfWeek","startingDayOffset","calculateDateOffset","getStartingDayOfCalendar","daysMatrix","createMatrix","minMode","viewDate","initialYearShift","yearsPerCalendar","shift$1","previousInitialDate","height$1","calculateInitialDate","yearsMatrix","width$1","formatYearRangeTitle","calculateReducer","formatReducer","flagReducer","navigateOffsetReducer","setFullDate","canSwitchMode","getViewDate","_viewDate","displayOneMonthRange","isDisplayOneMonth","showPreviousMonth","calcDaysCalendar","formatMonthsCalendar","getFormatOptions","formatYearsCalendar","getYearsCalendarInitialDate","getWeekNumbers","getShiftedWeekdays","weekIndex","formatDaysCalendar","formattedMonth","isSameDay","isSelectionStart","isSelectionEnd","isInRange","isDisabledDay","dateDisabled","isDisabledDate","enabledDate","isEnabledDate","customClasses","dcc","tt","newDay","hideLeftArrow","hideRightArrow","disableLeftArrow","isMonthDisabled","disableRightArrow","flagDaysCalendar","monthCalendar","hoveredMonth","newMonth","isYearDisabled","flagMonthsCalendar","yearIndex","hoveredYear","flagYearsCalendar","shiftViewDate","middleDate","BsDatepickerStore","bsDatepickerReducer","BsDatepickerContainerComponent","ua","valueChange","allowedPositions","event$","isTopPosition","isOtherMonthsActive","selectFromOtherMonth","setBindings","setEventHandlers","registerDatepickerSideEffects","_stopPropagation","BsDatepickerContainerComponent_div_0_Template","BsDaysCalendarViewComponent","BsMonthCalendarViewComponent","BsYearsCalendarViewComponent","BsCustomDatesViewComponent","pipes","BsDatepickerDirective","bsValueChange","_dateInputFormat$","_datepicker","isOpen$","_bsValue","_bsConfig","bsConfig","setConfig","isDestroy$","_datepickerRef","bsValue","selectRootElement","BsDaterangepickerContainerComponent","_rangeStack","setRangeValue","rangesProcessing","maxDateRange","setMaxDateRangeOnCalendar","BsDaterangepickerContainerComponent_div_0_Template","BS_DATEPICKER_VALUE_ACCESSOR","BsDatepickerInputDirective","BS_DATEPICKER_VALIDATOR","NG_VALIDATORS","_picker","_elRef","_validatorChange","_setInputValue","_value","dateInputFormat$","bsDate","_localeKey","utcAsLocal","onKeydownEvent","BsDaterangepickerConfig","ɵBsDaterangepickerConfig_BaseFactory","BsDaterangepickerDirective","_rangeInputFormat$","BS_DATERANGEPICKER_VALUE_ACCESSOR","BsDaterangepickerInputDirective","BS_DATERANGEPICKER_VALIDATOR","rangeInputFormat$","_isFirstDateValid","_isSecondDateValid","_val","BsCalendarLayoutComponent","BsCalendarLayoutComponent_bs_current_date_0_Template","BsCalendarLayoutComponent_bs_timepicker_5_Template","BsCurrentDateViewComponent","BsTimepickerViewComponent","customRange","customRangeLabel","BsCustomDatesViewComponent_button_1_Template","BsDatepickerDayDecoratorComponent","customTodayClass","isOtherMonthHovered","BsNavigationDirection","BsDatepickerNavigationViewComponent","onNavigate","onViewMode","down","navTo","BsDatepickerNavigationViewComponent_ng_container_3_Template","onHover","onHoverWeek","selectWeekDateRange","selectedDay","lastDayOfRange","dateData","BsDaysCalendarViewComponent_th_5_Template","BsDaysCalendarViewComponent_th_6_Template","BsDaysCalendarViewComponent_tr_8_Template","BsMonthCalendarViewComponent_tr_4_Template","ampm","BsYearsCalendarViewComponent_tr_4_Template","BsDatepickerModule","DateFormatter","DatePickerInnerComponent","selectionDone","activeDateChange","stepDay","stepMonth","stepYear","modes","dateFormatter","_activeDate","initDate","activeDate","refreshView","checkIfActiveDateGotUpdated","compareHandlerDay","compareHandlerMonth","compareHandlerYear","refreshViewHandlerDay","refreshViewHandlerMonth","refreshViewHandlerYear","compare","activeDateId","fixTimeZone","getCustomClassForDate","isManual","expectedStep","customClassObject","clazz","date1Disabled","isDateDisabled","disabledDate","compareDateDisabled","dayDisabled","startingDay","yearRange","formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","shortcutPropagation","DatePickerInnerComponent_div_0_Template","DatepickerConfig","DATEPICKER_CONTROL_VALUE_ACCESSOR","DatePickerComponent","onTouched","_now","configureOptions","_datePicker","onUpdate","onSelectionDone","onActiveDateChange","DayPickerComponent","MonthPickerComponent","YearPickerComponent","setRefreshViewHandler","firstDayOfMonth","numDisplayedFromPreviousMonth","firstDate","getDates","_dateObject","createDateObject","thursdayIndex","numWeeks","getISO8601WeekNumber","setCompareHandler","d2","checkDate","DayPickerComponent_table_0_Template","MonthPickerComponent_table_0_Template","getStartingYear","YearPickerComponent_table_0_Template","DatepickerModule","getStyleComputedProperty","getParentNode","isIE11","MSInputMethodContext","isIE10","noOffsetParent","nextElementSibling","getOffsetParent","getRoot","element1","element2","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","commonAncestorContainer","isOffsetContainer","element1root","findCommonOffsetParent","sideA","sideB","getSize","upperSide","offsets","getScroll","getWindowSizes","horizScrollbar","vertScrollbar","getBordersSize","getClientRect","fixedPosition","isHTML","childrenRect","includeScroll","excludeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","isFixed","boundariesElement","boundaries","getFixedPositionOffsetParent","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","refRect","getBoundaries","sortedAreas","getArea","filteredAreas","computedPlacement","allowedPosition","variation","commonOffsetParent","hostOffsets","targetRect","getOuterSizes","targetOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","getOppositePlacement","modifierName","arrowElement","sideCapitalized","altSide","opSide","arrowElementSize","placementVariation","targetMarginSide","targetBorderSide","targetBorderRadius","borderRadius","targetSideArrowOffset","sideValue","arrow","isModifierEnabled","getTargetOffsets","computeAutoPlacement","flipOrder","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","getOppositeVariation","transformProp","targetStyles","basePlacement","shiftVariation","shiftOffsets","positionService","Positioning","targetElement","getReferenceOffsets","modifiedData","hostElPosition","placementAuto","positionFixed","initData","rendererFactory","update$$","positionElements","En","triggerEvent$","getOffsets","setStyles","updateContainerClass","_getHtmlElement","createRenderer","addPositionElement","Trigger","DEFAULT_ALIASES","hover","trimmedTriggers","parsedTriggers","triggerPair","manualTriggers","_registerHide","useToggle","showFn","unsubscribeFn","guessedVersion","__theme","spanEl","_guessBsVersion","_messagesHash","_hideMsg","HIGHLIGHT_OPTIONS","HighlightLoader","_ready","hljs","_loadLibrary","Tt","lineNumbersLoader","loadLineNumbers","catchError","fullLibraryLoader","coreLibraryLoader","loadFullLibrary","loadCoreLibrary","_loadLanguages","langName","importModule","langLoader","langFunc","registerLanguage","HighlightJS","_loader","_hljs","configure","listLanguages","ignore_illegals","continuation","languageSubset","highlightAuto","fixMarkup","highlightBlock","initHighlighting","getLanguage","lineNumbersBlock","Highlight","_sanitizer","highlightElement","setTextContent","setInnerHTML","lineNumbers","addLineNumbers","destroyLineNumbersObserver","_lineNumbersObs","MutationObserver","childList","HighlightModule","elMatches","mozMatchesSelector","scrollingClassTimeout","scrollingThreshold","EventElement","prototypeAccessors","this$1","unbindAll","EventManager","eventElements","CustomEvent","initCustomEvent","useScrollingClass","forceFireReachEvent","reach","addScrollingClass","removeScrollingClass","setScrollingClassInstantly","processScrollDiff$1","eventElement","onceHandler","env","isWebKit","supportsTouch","DocumentTouch","supportsIePointer","roundedScrollTop","containerWidth","contentWidth","scrollbarXRail","queryChildren","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","xRailOffset","isScrollbarXUsingBottom","scrollbarXBottom","scrollbarXTop","yRailOffset","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","updateCss","thumbSize","minScrollbarLength","maxScrollbarLength","startingScrollTop","startingMousePageY","updateGeometry","mouseMoveHandler","touchMode","mouseUpHandler","bindMoves","bindMouseScrollHandler","keyboard","contentDocument","isEditable","wheelPropagation","shouldPreventDefault","wheel","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","maxScrollTop","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","onwheel","mousewheelHandler","onmousewheel","startOffset","easingLoop","touchMove","touchEnd","differenceX","differenceY","MSPOINTER_TYPE_MOUSE","shouldHandle","getTouch","currentOffset","applyTouchMove","currentTime","timeGap","magnitudeX","magnitudeY","swipeEasing","PerfectScrollbar","userSettings","originalScrollLeft","isNegativeScroll","railXStyle","railYStyle","outerWidth","lastScrollLeft","onScroll","processScrollDiff","removePsClasses","MapShim","__entries__","class_1","getIndex","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","resolvePending","timeoutCallback","REFRESH_DELAY","addObserver","connect_","removeObserver","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","characterData","subtree","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","isSVGGraphicsElement","SVGGraphicsElement","getBBox","bbox","getSVGContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","getHTMLElementContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","getContentRect","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","PERFECT_SCROLLBAR_CONFIG","Geometry","PerfectScrollbarEvents","PerfectScrollbarConfig","PerfectScrollbarDirective","configDiff","ngDestroy","psScrollY","psScrollX","psScrollUp","psScrollDown","psScrollLeft","psScrollRight","psYReachEnd","psYReachStart","psXReachEnd","psXReachStart","ngOnDestroy","ngOnInit","isFirstChange","absolute","animateScrolling","elementPos","scrollerPos","scrollCount","oldTimestamp","cosParameter","newTimestamp","PerfectScrollbarModule","defaultModules","toolbar","indent","background","font","align","configFormat","QUILL_CONFIG_TOKEN","QuillService","Quill","$importPromise","quillImport","customOptions","newCustomOption","import","whitelist","suppressGlobalRegisterWarning","customModules","implementation","QuillEditorBase","domSanitizer","customToolbarPosition","preserveWhitespace","trimOnValidation","compareValues","filterNull","onEditorCreated","onEditorChanged","onContentChanged","debounceTimers","quillEditor","editorElement","modelValue","getText","getContents","selectionChangeHandler","oldRange","shouldTriggerOnModelTouched","onModelTouched","editor","textChangeHandler","oldDelta","editorElem","trackChanges","shouldTriggerOnModelChange","onModelChange","editorChangeHandler","getQuill","De","toolbarElem","kt","scrollingContainer","linkPlaceholder","setText","setContents","getModule","setDisabledState","editorChangeHandlerRef","textChangeHandlerRef","onValidatorChanged","clearDebounceTimer","currentStyling","previousStyling","removeStyle","currentClasses","previousClasses","currentEditorValue","textLength","minLength","minLengthError","given","maxLengthError","requiredError","debounceTimer","trimmed","QuillEditorComponent","DomSanitizer","Renderer2","QuillModule","duplicatesCount","Toast_div_1_ng_container_2_Template","titleClass","messageClass","ToastNoAnimation_div_1_ng_container_2_Template","ToastPackage","toastId","toastType","toastRef","_onTap","_onAction","tapToDismiss","DefaultNoComponentGlobalConfig","maxOpened","autoDismiss","newestOnTop","preventDuplicates","countDuplicates","resetTimeoutOnDuplicate","includeTitleDuplicates","closeButton","disableTimeOut","timeOut","extendedTimeOut","enableHtml","toastClass","positionClass","easeTime","onActivateTick","progressAnimation","TOAST_CONFIG","DomPortalHost","_hostDomElement","BasePortalHost","_portalHost","_paneElements","_createOverlayRef","getPaneElement","_createPortalHost","ToastRef","_activate","_manualClose","_resetTimeout","_countDuplicate","isStopped","resetTimeout","countDuplicate","ToastInjector","_toastPackage","_parentInjector","ToastrService","currentlyActive","toasts","toastrConfig","override","_preBuildNotification","applyConfig","toast","manualClose","_findToast","activeToast","isInactive","resetOnDuplicate","hasDuplicateTitle","onDuplicate","_buildNotification","toastComponent","duplicate","findDuplicate","previousToastMessage","keepInactive","sanitizedMessage","toastPackage","toastInjector","ins","afterActivate","onTap","Toast","toastrService","toastClasses","originalTimeout","activateToast","sub1","manualClosed","sub2","timeoutReset","sub3","outsideTimeout","hideTime","outsideInterval","updateProgress","triggerTap","runInsideAngular","tapToast","stickAround","delayedHideToast","displayStyle","Toast_button_0_Template","Toast_div_1_Template","Toast_div_2_Template","Toast_div_3_Template","Toast_div_4_Template","DefaultGlobalConfig","ToastrModule","ToastNoAnimation","appRef","tick","ToastNoAnimation_button_0_Template","ToastNoAnimation_div_1_Template","ToastNoAnimation_div_2_Template","ToastNoAnimation_div_3_Template","ToastNoAnimation_div_4_Template","ToastNoAnimationModule","Waves","$$","isTouchAvailable","stringRepr","isDOMNode","docElem","isWindow","clientTop","clientLeft","styleObj","Effect","ripple","relativeY","relativeX","rippleStyle","convertStyle","ripples","TagWrapper","elementStyle","TouchHandler","allowEvent","registerEvent","getWavesEffectElement","hideEffect","hideEvent","removeListeners","showEffect","getWavesElements","elementsLen","centre","hideRipple","calm","displayEffect","closed","hasError","thrownError","ObjectUnsubscribedError","InnerSubscriber","outerValue","outerIndex","notifyNext","notifyError","notifyComplete","Subscriber","kind","undefinedValueNotification","completeNotification","_isScalar","_subscribe","observerOrNext","sink","rxSubscriberSymbol","emptyObserver","toSubscriber","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","promiseCtor","getPromiseCtor","Symbol_observable","operations","pipeFromArray","xe","hostReportError","OuterSubscriber","innerValue","innerIndex","innerSub","ReplaySubject","bufferSize","POSITIVE_INFINITY","windowTime","_events","_infiniteTimeWindow","_bufferSize","_windowTime","nextInfiniteTimeWindow","nextTimeWindow","ReplayEvent","_getNow","_trimBufferThenGetEvents","SubjectSubscription","ObserveOnSubscriber","eventsCount","spliceCount","SubjectSubscriber","AnonymousSubject","subscriberIndex","destinationOrNext","SafeSubscriber","_next","_error","_complete","_parentOrParents","_parentSubscriber","__tryOrSetError","__tryOrUnsub","useDeprecatedSynchronousErrorHandling","wrappedComplete","UnsubscriptionErrorImpl","UnsubscriptionError","_subscriptions","_unsubscribe","flattenUnsubscriptionErrors","teardown","subscriptions","subscriptionIndex","errs","_enable_super_gross_mode_that_will_cause_bad_things","connectableProto","ConnectableObservable","subjectFactory","_refCount","_isComplete","getSubject","_subject","connection","_connection","ConnectableSubscriber","higherOrderRefCount","connectableObservableDescriptor","connect","refCount","connectable","resultSelector","isScheduler","lift","CombineLatestOperator","CombineLatestSubscriber","toRespond","subscribeToResult","unused","_tryResultSelector","mergeAll","concatAll","observableFactory","DEFAULT_WEBSOCKET_CONFIG","deserializer","serializer","WebSocketSubject","urlConfigOrSource","_output","WebSocketCtor","WebSocket","sock","_socket","subMsg","unsubMsg","messageFilter","binaryType","socket","onopen","_resetState","openObserver","closingObserver","onclose","closeObserver","wasClean","_connectSocket","emptyScheduled","forkJoinInternal","completed","emitted","isInteropObservable","scheduleObservable","schedulePromise","scheduleArray","Symbol_iterator","isIterable","scheduleIterable","subscribeTo","subscribeToArray","setupSubscription","sourceObj","isEventTarget","isJQueryStyleEventEmitter","isNodeStyleEventEmitter","concurrent","dueTime","periodOrScheduler","due","ZipOperator","ZipSubscriber","iterators","StaticArrayIterator","StaticIterator","ZipBufferIterator","stillUnsubscribed","shouldComplete","hasCompleted","_tryresultSelector","nextResult","isComplete","notifyInactive","checkIterators","durationSelector","AuditOperator","AuditSubscriber","throttled","innerSubscription","clearThrottle","audit","CatchOperator","caught","CatchSubscriber","err2","_unsubscribeAndRecycle","innerSubscriber","project","mergeMap","DebounceTimeOperator","DebounceTimeSubscriber","debouncedSubscription","clearDebounce","dispatchNext","debouncedNext","DefaultIfEmptyOperator","DefaultIfEmptySubscriber","keySelector","DistinctUntilChangedOperator","DistinctUntilChangedSubscriber","hasKey","FilterOperator","FilterSubscriber","FinallyOperator","FinallySubscriber","hasDefaultValue","defaultIfEmpty","throwIfEmpty","EmptyError","MapOperator","MapSubscriber","MergeMapOperator","MergeMapSubscriber","_tryNext","_innerSub","ish","ObserveOnOperator","ObserveOnMessage","scheduleMessage","RefCountOperator","refCounter","RefCountSubscriber","sharedConnection","hasSeed","ScanOperator","ScanSubscriber","_seed","MulticastOperator","subjectOrSubjectFactory","multicast","shareSubjectFactory","configOrBufferSize","useRefCount","shareReplayOperator","SkipOperator","SkipSubscriber","SwitchMapOperator","SwitchMapSubscriber","TakeOperator","ArgumentOutOfRangeError","TakeSubscriber","notifier","TakeUntilOperator","takeUntilSubscriber","TakeUntilSubscriber","notifierSubscription","seenValue","DoOperator","TapSubscriber","_tapNext","_tapError","_tapComplete","errorFactory","defaultErrorFactory","ThrowIfEmptyOperator","ThrowIfEmptySubscriber","AsyncAction","work","recycleAsyncId","requestAsyncId","_execute","errored","errorValue","Action","Scheduler","SchedulerAction","AsyncScheduler","delegate","AnimationFrameAction","AnimationFrameScheduler","nextHandle","activeHandles","Immediate","findAndClearHandle","AsapAction","AsapScheduler","asyncScheduler","QueueAction","QueueScheduler","getSymbolIterator","rxSubscriber","ArgumentOutOfRangeErrorImpl","EmptyErrorImpl","ObjectUnsubscribedErrorImpl","obs","subscribeToObservable","subscribeToPromise","subscribeToIterable","outerSubscriber","_typeof","_defineProperties","_getPrototypeOf","_setPrototypeOf","construct","Proxy","Parent","Class","_construct","_isNativeReflectConstruct","ReferenceError","_assertThisInitialized","receiver","_get","_superPropBase","consolePrefix","objectValues","previousWarnOnceMessages","warnAboutDepreation","deprecatedParam","useInstead","callIfFunction","hasToPromiseFn","toPromise","asPromise","DismissReason","esc","jquery","isJqueryElement","swalClasses","iconTypes","elementBySelector","selectorString","elementByClass","getPopup","getIcon","visibleIcon","getTitle","getImage","getProgressSteps","getValidationMessage","getConfirmButton","confirm","getCancelButton","getActions","getFooter","getTimerProgressBar","getCloseButton","getFocusableElements","focusableElementsWithTabindex","otherFocusableElements","isModal","isToast","previousBodyPadding","applyCustomClass","showClass","removeCustomClasses","getChildByClass","oldInputVal","focusInput","applyNumericalStyle","hasCssAnimation","animDuration","transDuration","animateTimerProgressBar","timerProgressBar","isNodeEnv","sweetHTML","question","resetValidationMessage","Swal","oldContainerExisted","oldContainer","resetOldContainer","getTarget","setupAccessibility","setupRTL","rangeOutput","oninput","addInputChangeListeners","parseHtmlToContainer","handleObject","handleJqueryElem","animationEndEvent","testEl","transEndEventNames","WebkitAnimation","OAnimation","renderActions","confirmButton","cancelButton","showConfirmButton","showCancelButton","renderButton","buttonsStyling","styled","confirmButtonColor","cancelButtonColor","confirmButtonBackgroundColor","borderLeftColor","borderRightColor","handleButtonsStyling","reverseButtons","buttonType","capitalizeFirstLetter","renderContainer","handleBackdropParam","allowOutsideClick","handlePositionParam","growClass","handleGrowParam","queueStep","privateProps","innerParams","domCache","inputTypes","showInput","renderInputType","inputContainer","getInputContainer","setAttributes","inputAttributes","getInput","attrName","removeAttributes","setCustomClass","inputPlaceholder","email","tel","checkboxContainer","initialPopupWidth","popupPadding","attributeFilter","renderContent","rerender","renderInput","hideAllIcons","adjustSuccessIconBackgoundColor","popupBackgroundColor","successIconParts","iconHtml","iconContent","currentSteps","getQueueStep","renderProgressSteps","progressStepsContainer","progressSteps","currentProgressStep","stepEl","createStepElement","lineEl","progressStepsDistance","createLineElement","renderHeader","renderIcon","imageUrl","imageAlt","renderImage","titleText","renderTitle","closeButtonHtml","showCloseButton","closeButtonAriaLabel","renderCloseButton","renderPopup","renderFooter","onRender","clickConfirm","showLoading","fire","globalState","restoreActiveElement","restoreFocusTimeout","previousActiveElement","stopTimer","stopTimerProgressBar","timerProgressBarWidth","timerProgressBarFullWidth","timerProgressBarPercent","resumeTimer","hideClass","heightAuto","allowEscapeKey","allowEnterKey","stopKeydownPropagation","keydownListenerCapture","preConfirm","confirmButtonText","confirmButtonAriaLabel","cancelButtonText","cancelButtonAriaLabel","focusConfirm","focusCancel","showLoaderOnConfirm","inputOptions","inputAutoTrim","inputValidator","validationMessage","onBeforeOpen","onAfterClose","scrollbarPadding","updatableParams","deprecatedParams","toastIncompatibleParams","isValidParameter","paramName","isDeprecatedParameter","checkIfParamIsValid","checkIfToastParamIsValid","checkIfParamIsDeprecated","staticMethods","isUpdatableParameter","argsToParams","clickCancel","getHtmlContainer","_len","mixinParams","MixinSwal","subClass","superClass","_inherits","Derived","hasNativeReflectConstruct","Super","NewTarget","_possibleConstructorReturn","_createSuper","resetAndResolve","queueResult","dismiss","insertQueueStep","deleteQueueStep","enableLoading","getTimerLeft","toggleTimer","increaseTimer","increase","isTimerRunning","fixScrollbar","scrollDiv","measureScrollbar","addBottomPaddingForTallPopups","lockBodyScroll","preventTouchMove","shouldPreventTouchMove","ontouchmove","fixVerticalPositionIE","privateMethods","swalPromiseResolve","isToast$$1","triggerOnAfterCloseAndDispose","keydownTarget","keydownHandler","keydownHandlerAdded","iosfix","undoIOSfix","removeBodyClasses","resolveValue","handlePopupAnimation","isDismissed","isConfirmed","animationIsSupported","animatePopup","removePopupAndResetState","swalCloseEventFinishedCallback","_destroy","radios","Timer","defaultInputValidators","setDefaultInputValidators","validateCustomTargetElement","openPopup","initialBodyOverflow","addClasses$1","setScrollingVisibility","fixScrollContainer","haystack","needle","swalOpenAnimationFinished","iOSfix","getCheckboxValue","getRadioValue","getFileValue","handleInputOptions","processInputOptions","populateInputOptions","formatInputOptions","hideLoading","handleInputValue","optionLabel","optionValue","inputOption","optgroup","radioValue","radioLabel","radioInput","radioLabelElement","handleConfirmWithInput","getInputValue","disableInput","enableButtons","enableInput","showValidationMessage","checkValidity","succeedWith","closePopup","preConfirmValue","setFocus","arrowKeys","escKeys","dismissWith","handleEnter","handleTab","handleArrows","handleEsc","isComposing","btnIndex","handleToastClick","onclick","ignoreOutsideClick","handleModalMousedown","onmousedown","onmouseup","handleContainerMousedown","handleModalClick","prepareParams","swalPromise","disableButtons","handleConfirmButtonClick","handleCancelButtonClick","handlePopupClick","addKeydownHandler","wi","handleInputOptionsAndValue","setupTimer","initFocus","populateDomCache","globalState$$1","blurActiveElement","currentInstance","disposeSwal","unsetWeakMaps","instanceMethods","disableLoading","closeModal","closeToast","setButtonsDisabled","setInputDisabled","popupComputedStyle","inputerror","_main","showWarningsForParams","setParameters","validUpdatableParams","updatedParams","deferDisposalTimer","SweetAlert","outerParams","onFulfilled","onFinally","finally","_currentInstance","Sweetalert2","AnimationBuilder","AnimationFactory","AUTO_STYLE","definitions","timings","stateChangeExpr","NoopAnimationPlayer","_onDoneFns","_onStartFns","_onDestroyFns","_started","_finished","_position","parentPlayer","hasStarted","_onStart","triggerMicrotask","scheduleMicroTask","_onFinish","phaseName","AnimationGroupPlayer","_players","players","doneCount","destroyCount","startCount","player","_onDestroy","onStart","restart","timeAtPosition","longestPlayer","longestSoFar","beforeDestroy","ɵPRE_STYLE","_DOM","adapter","DomAdapter","PlatformLocation","relativePosition","BrowserPlatformLocation","useBrowserPlatformLocation","LOCATION_INITIALIZED","_doc","yt","_init","_history","getDOM","getBaseHref","getGlobalEventTarget","hostname","pathname","newPath","supportsState","pushState","replaceState","forward","back","createBrowserPlatformLocation","slashes","pathEndIdx","LocationStrategy","platformLocation","PathLocationStrategy","provideLocationStrategy","APP_BASE_HREF","_platformLocation","_removeListenerFns","getBaseHrefFromDOM","_baseHref","onPopState","onHashChange","joinWithSlash","includeHash","normalizeQueryParams","queryParams","externalUrl","prepareExternalUrl","historyGo","HashLocationStrategy","platformStrategy","_urlChangeListeners","_platformStrategy","browserBaseHref","stripTrailingSlash","_stripIndexHtml","bt","baseHref","_stripBaseHref","_notifyUrlChangeListeners","_urlChangeSubscription","onNext","onThrow","onReturn","createLocation","NumberFormatStyle","Decimal","Percent","Currency","Scientific","Plural","Zero","Few","Many","Other","FormStyle","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Medium","Long","Full","NumberSymbol","Group","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","formStyle","ɵfindLocaleData","amPm","getLastDefinedValue","ɵLocaleDataIndex","getLocalePluralCase","ɵgetLocalePluralCase","$e","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Month","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Days","Months","Eras","parsedNb","tzHour","tzMin","dateSetter","isoStringToDate","getNamedFormat","dateTimezoneOffset","timezoneToOffset","reverseValue","addDateMinutes","convertTimezoneToLocal","DATE_FORMATS","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","getDateFormatter","newDate","localeId","getLocaleId","getLocaleDateFormat","getLocaleTimeFormat","shortTime","shortDate","formatDateTime","getLocaleDateTimeFormat","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","negWrap","neg","strNum","getDatePart","formatFractionalSeconds","localeMinus","getLocaleNumberSymbol","extended","getDateTranslation","getLocaleMonthNames","getLocaleDayNames","currentHours","currentMinutes","rules","checkFullData","extractTime","getLocaleExtraDayPeriodRules","getLocaleExtraDayPeriods","Fn","afterFrom","beforeTo","getLocaleDayPeriods","getLocaleEraNames","unexpected","THURSDAY","datetime","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","getThursdayThisWeek","firstThurs","getFirstThursdayOfYear","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","ZERO_CHAR","groupSymbol","digitsInfo","formattedText","isZero","parsedNumber","toPercent","minInt","minFraction","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","Zn","roundNumber","integerLen","decimals","lgSize","gSize","negPre","negSuf","posPre","posSuf","patternParts","positive","negative","positiveParts","trunkLen","fractionLen","zeros","numStr","MAX_DIGITS","fractionSize","roundAt","digit","dropTrailingZeros","minLen","carry","NgLocalization","NgLocaleLocalization","LOCALE_ID","cookieStr","cookie","eqIndex","zn","cookieValue","_iterableDiffers","_keyValueDiffers","_ngEl","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","_removeClasses","_applyClasses","ɵisListLikeIterable","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","record","forEachChangedItem","forEachRemovedItem","ɵstringify","rawClassVal","NgForOfContext","ngForOf","even","NgForOf","_viewContainer","_template","_differs","_ngForOf","_ngForOfDirty","_differ","_trackByFn","ngForTrackBy","getTypeName","_applyChanges","insertTuples","forEachOperation","adjustedPreviousIndex","RecordViewTuple","_perViewChange","ilen","forEachIdentityChange","NgIf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","assertTemplate","SwitchView","_templateRef","_created","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","_ngSwitch","_updateDefaultCases","_defaultViews","useDefault","enforceState","NgSwitchCase","ngSwitch","_addCase","_view","_matchCase","ngSwitchCase","NgSwitchDefault","_addDefault","_ngStyle","nameAndUnit","_setStyle","NgTemplateOutlet","ngTemplateOutletContext","ngTemplateOutlet","SubscribableStrategy","updateLatestValue","_promiseStrategy","PromiseStrategy","_subscribableStrategy","AsyncPipe","_latestValue","_obj","_strategy","_selectStrategy","createSubscription","_updateLatestValue","ɵisPromise","ɵisSubscribable","invalidPipeArgumentError","unicodeWordMatch","TitleCasePipe","UpperCasePipe","DATE_PIPE_DEFAULT_TIMEZONE","DatePipe","defaultTimezone","DecimalPipe","isValue","formatNumberToLocaleString","parseNumberFormat","getLocaleNumberFormat","strToNumber","PercentPipe","formatPercent","SlicePipe","PLATFORM_BROWSER_ID","PLATFORM_SERVER_ID","ViewportScroller","BrowserViewportScroller","supportsScrolling","elSelected","documentResult","getElementsByName","createTreeWalker","treeWalker","NodeFilter","SHOW_ELEMENT","nextNode","findAnchorFromDocument","scrollToElement","attemptFocus","scrollRestoration","supportScrollRestoration","focusTarget","scrollRestorationDescriptor","getScrollRestorationProperty","HttpHandler","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","applyUpdate","toDelete","HttpUrlEncodingCodec","codec","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","updates","cloneFrom","fromObject","eKey","valueToString","HttpContext","HttpRequest","third","fourth","reportProgress","qIdx","isBlob","isFormData","isUrlSearchParams","setHeaders","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","User","HttpResponseBase","defaultStatus","defaultStatusText","HttpHeaderResponse","HttpErrorResponse","HttpClient","events$","res$","callbackParam","addBody","HttpInterceptorHandler","intercept","HTTP_INTERCEPTORS","NoopInterceptor","detectedType","detectContentTypeHeader","reqBody","serializeBody","headerResponse","partialFromXhr","getResponseUrl","originalBody","Ni","sentHeaders","onDownProgress","progressEvent","partialText","onUpProgress","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","cookieName","lastCookieString","lastToken","parseCount","cookieString","ɵparseCookieValue","HttpXsrfInterceptor","tokenService","lcUrl","HttpInterceptingHandler","interceptors","HttpClientXsrfModule","HttpClientModule","withOptions","XhrFactory$1","Oe","Gt","objWithPropertyToExtract","getClosureSafeProperty","overriddenName","newLineIndex","__forward_ref__","forwardRefFn","isForwardRef","RuntimeError","formatRuntimeError","renderStringify","injectorName","injectorDetails","stringifyForError","expected","comparison","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","NG_INJ_DEF","NG_INJECTOR_DEF","_injectImplementation","ngInjectableDef","ngInjectorDef","Host","Self","SkipSelf","impl","injectableDef","getInjectableDef","throwProviderNotFoundError","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","ViewEncapsulation","Emulated","None","ShadowDom","__globalThis","__window","__self","WorkerGlobalScope","__global","_global","EMPTY_OBJ","EMPTY_ARRAY","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","_renderCompCount$1","componentDefinition","noSideEffects","declaredInputs","providersResolver","directiveDefs","pipeDefs","setInput","schemas","tView","directiveTypes","pipeTypes","invertObject","extractDirectiveDef","extractPipeDef","getComponentDef","getDirectiveDef","getPipeDef$1","autoRegisterModuleById","declarations","transitiveCompileScopes","ngModuleDef","getNgModuleDef","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefineComponent","pipeDef","throwNotFound","tNode","SimpleChange","NgOnChangesFeatureImpl","definition","ngOnChanges","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","SIMPLE_CHANGES_STORE","setSimpleChangesStore","previousChange","ɵɵNgOnChangesFeature","ngInherit","SVG_NAMESPACE","domRendererFactory3","rendererType","lView","unwrapRNode","nodeIndex","slotValue","isLView","lContainer","viewOrContainer","PARENT","instructionState","lFrame","createLFrame","bindingsEnabled","isInCheckNoChangesMode","viewToRestore","contextLView","CONTEXT","currentTNode","getCurrentTNodePlaceholderOk","bindingRootIndex","bindingStartIndex","bindingIndex","isInI18nBlock","inI18n","currentDirectiveIndex","setCurrentDirectiveIndex","tData","currentQueryIndex","declTNode","parentTNode","parentLView","getDeclarationTNode","allocLFrame","newView","newLFrame","currentLFrame","childLFrame","elementDepthCount","currentNamespace","oldLFrame","leaveDI","leaveViewLight","nestingLevel","currentView","walkUpViews","getTNode","namespaceHTMLInternal","directiveStart","directiveEnd","lifecycleHooks","ngAfterContentInit","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","callHooks","initPhase","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","isInitHook","directive","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","native","isProc","isProceduralRenderer","namespaceURI","attrVal","setAttributeNS","isAnimationProp","dst","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","parentLocation","NO_PARENT_INJECTOR","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","nextNgElementId","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","hasParentInjector","parentIndex","getParentInjectorIndex","getParentInjectorView","parentData","declarationViewOffset","lViewCursor","tViewType","pe","bloomHash","BLOOM_SIZE","bloomAdd","moduleInjector","previousInjectImplementation","setInjectImplementation","injectRootLimpMode","notFoundValueOrThrow","bloomHashBitOrFactory","enterDI","lookupTokenUsingModuleInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","NOT_FOUND","NodeInjector","getCurrentTNode","getLView","currentTView","injectableIdx","locateDirectiveOrProvider","isComponentHost","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","providerTokenOrDef","dirDef","isComponentDef","depPath","throwCyclicDependencyError","previousIncludeViewProviders","setIncludeViewProviders","directiveIndex","directiveDef","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","registerPreOrderHooks","tokenId","createNodeInjector","injectorView","isFirstHostTNode","_tNode","_lView","getOrCreateInjectable","ownConstructor","ownFactory","getFactoryOf","objectPrototype","resolveForwardRef","getFactoryDef","attrNameToInject","attrsLength","isNameOnlyAttributeMarker","injectAttributeImpl","PARAMETERS","PROP_METADATA","parentClass","metaCtor","makeMetadataCtor","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","unusedKey","ngMetadataName","annotationCls","additionalProcessing","nt","PropDecoratorFactory","decoratorInstance","PropDecorator","_desc","ANALYZE_FOR_ENTRY_COMPONENTS","makePropDecorator","isViewQuery","descendants","Query","Type","deepForEach","keyValueArray","keyValueArrayIndexOf","arrayInsert2","middle","_arrayIndexOfSorted","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","USE_VALUE$2","_currentInjector","former","getInjectImplementation","injectInjectorOnly","getInjectFlag","injectorErrorName","tokenPath","formatError","NG_TOKEN_PATH","policy$1","policy","attachInjectFlag","makeParamDecorator","getPolicy$1","getPolicy","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","actualType","getSanitizationBypassType","trustedHtml","trustedStyle","trustedScript","trustedUrl","trustedResourceUrl","defaultDoc","inertDocumentHelper","InertDocumentHelper","trustedHTMLFromString","isDOMParserAvailable","DOMParserHelper","getInertBodyElement","inertDocument","createHTMLDocument","inertHtml","inertBodyElement","templateEl","inertBody","stripCustomNsAttrs","elAttrs","DATA_URL_PATTERN","srcset","_sanitizeUrl","inertBodyHelper","VOID_ELEMENTS","tagSet","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","OPTIONAL_END_TAG_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","SRCSET_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","traverseContent","startElement","TEXT_NODE","endElement","checkClobberedElement","elAttr","sanitizeSrcset","encodeEntities","DOCUMENT_POSITION_CONTAINED_BY","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","unsafeHtmlInput","getInertBodyHelper","unsafeHtml","mXSSAttempts","parsedHtml","sanitizeChildren","getTemplateContent","safeHtml","isTemplateElement","RESOURCE_URL","getSanitizer","trustedHTMLFromStringBypass","allowSanitizationBypassAndThrow","unwrapSafeValue","_sanitizeHtml","unsafeUrl","unsafeResourceUrl","trustedScriptURLFromStringBypass","ɵɵsanitizeResourceUrl","ɵɵsanitizeUrl","getUrlSanitizer","SANITIZER","MONKEY_PATCH_KEY_NAME","readPatchedData","ERROR_ORIGINAL_ERROR","ErrorHandler","originalError","_findOriginalError","_findContext","errorLogger","ERROR_LOGGER","defaultErrorLogger","getErrorLogger","ERROR_DEBUG_CONTEXT","getDebugContext","getOriginalError","COMMENT_DISALLOWED","COMMENT_DELIMITER","defaultScheduler","_icuContainerIterate","RendererStyleFlags2","Important","DashCase","tIcuContainerNode","isLContainer","getNearestLContainer","CHILD_HEAD","NEXT","lNodeToHandle","beforeNode","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","destroyNode","parentRElement","applyToElementOrContainer","applyView","applyContainer","COMMENT_DELIMITER_ESCAPED","escapeCommentText","declarationContainer","movedViews","declarationViewIndex","insertionLContainer","updateTransplantedViewCount","removeIndex","indexInContainer","viewToDetach","declarationLContainer","detachMovedView","removedLView","removeViewFromContainer","lQueries","rootView","lViewOrLContainer","cleanUpView","firstView","destroyViewTree","toCall","callContext","executeOnDestroys","tCleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","useCaptureOrSubIdx","instanceCleanupFn","processCleanups","getClosestRElement","getNativeByTNode","isMove","_getInsertInFrontOfRNodeWithI18n","_processI18nInsertBefore","getInsertInFrontOfRNodeWithNoI18n","getInsertInFrontOfRNodeWithI18n","processI18nInsertBefore","childRNode","childTNode","parentRNode","getParentRElement","getInsertInFrontOfRNode","nativeAppendOrInsertBefore","tNodeType","getBeforeNodeForView","elIcuContainerChild","getFirstNativeNode","rNodeOrLContainer","icuContainerIterate","nextRNode","projectionNodes","getProjectionNodes","getLViewParent","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","isHostElement","nativeParent","nativeParentNode","nativeRemoveChild","isProjection","rawSlotValue","attachPatchData","applyNodes","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","cssClassToMatch","isProjectionMode","classIndexOf","currentSelector","tagNameToCompare","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","hasTagAndTypeMatch","isPositive","selectorAttrValue","isCssClassMatching","attrIndexInNode","findAttrIndexInNode","isInlineTemplate","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelector","selectorListLoop","currentSelectorInList","isNegativeMode","currentChunk","valueOrMarker","attrValue","maybeWrapInNotSelector","NO_CHANGE","selectIndexInternal","getTView","getSelectedIndex","checkNoChangesMode","executeCheckHooks","executeInitAndCheckHooks","setSelectedIndex","tStylingRange","directiveDefIdx","setCurrentQueryIndex","tHostNode","resetPreOrderHookFlags","createTNodeAtIndex","getCurrentParentTNode","setCurrentTNode","isCurrentTNodeParent","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","createTNode","numSlotsToAlloc","allocIdx","enterView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","refreshContentQueries","staticViewQueries","hostLView","renderComponent$1","renderChildComponents","leaveView","incompleteFirstPass","isInCheckNoChangesPass","setBindingIndex","hooksInitPhaseCompleted","incrementInitPhaseFlags","getFirstLContainer","getNextLContainer","movedLView","markTransplantedViewsForRefresh","embeddedLView","embeddedTView","viewAttachedToChangeDetector","refreshEmbeddedViews","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","setBindingRootForHostBindings","processHostBindingOpCodes","refreshComponent","refreshChildComponents","firstUpdatePass","normalExecutionPath","creationModeIsActive","isCreationMode","prevSelectedIndex","isUpdatePhase","isContentQueryHost","getBindingsEnabled","getOrCreateNodeInjectorForNode","addComponentLogic","setInputsFromAttrs","getComponentLViewByIndex","instantiateAllDirectives","elementIndex","getCurrentDirectiveIndex","invokeHostBindingsInCreationMode","invokeDirectivesHostBindings","viewData","localRefExtractor","createTView","constsOrFactory","initialViewLength","createViewBlueprint","expandoStartIndex","directiveRegistry","pipeRegistry","cleanupFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","inputAliasMap","propStore","internalName","nativeOnly","dataValue","setInputsForProperty","viewIndex","childComponentLView","markDirtyIfOnPush","mapPropName","ji","localRefs","hasDirectives","isNodeMatchingSelectorList","diPublicInInjector","Yn","markAsComponentHost","findDirectiveDefMatches","exportsMap","initTNodeFlags","preOrderHooksFound","preOrderCheckHooksFound","allocExpando","mergeHostAttrs","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","directiveInputs","generateInitialInputs","generatePropertyAliases","initializeInputAndOutputAliases","cacheMatchingLocalNames","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","getOrCreateTComponentView","componentView","addToViewTree","createLView","strValue","initialInputData","inputsToStore","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","isRootView","handleError","rootContext","rootComponent","readPatchedLView","renderComponentOrTemplate","tickRootContext","viewQueryFn","CLEAN_PROMISE","currentDef","HOST","unwrapLView","RENDERER","getNativeByIndex","updateTextNode","writeToHost","concatStringsWithSpace","NullInjector","INJECTOR_SCOPE","NOT_YET","CIRCULAR$1","NULL_INJECTOR$1","defType","additionalProviders","R3Injector","getNullInjector","records","injectorDefTypes","dedupStack","processProvider","processInjectorType","injectorDef","makeRecord","assertNotDestroyed","previousInjector","setCurrentInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","nextInjector","catchInjectorError","defOrWrappedDef","getInjectorDef","isDuplicate","importTypesWithProviders","imported","Yi","ks","defProviders","injectorType","ngModuleType","isTypeProvider","isValueProvider","providerToFactory","providerToRecord","multiRecord","injectArgs","hasOnDestroy","paramLength","newArray","inheritedInjectableDef","typeName","getInheritedInjectableDef","getUndecoratedInjectableFactory","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","INJECTOR_IMPL","createInjectorWithoutInjectorInstances","_resolveInjectorDefTypes","createInjector$1","registerPostOrderHooks","getSuperType","shouldInheritFields","inheritanceChain","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","fillProperties","defData","ɵɵInheritDefinitionFeature","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","_symbolIterator","isJsObject","exp1","exp2","different","bindingUpdated","exp3","bindingUpdated2","exp4","nextBindingIndex","setElementAttribute$1","elementAttributeInternal","getSelectedTNode","ɵɵattribute","isBindingUpdated","getBindingIndex","v0","v1","incrementBindingIndex","v2","v3","bindingUpdated4","attrsIndex","localRefsIndex","adjustedIndex","tViewConsts","getOrCreateTNode","resolveDirectives","templateFirstCreatePass","createLContainer","isDirectiveHost","createDirectivesInstances","saveResolvedLocalsInData","getContextLView","elementPropertyInternal","ɵɵproperty","isClassBased","createElementNode","getNamespace$1","computeStaticStyling","elementStart","elementStartFirstCreatePass","setUpAttributes","writeDirectClass","writeDirectStyle","getElementDepthCount","increaseElementDepthCount","executeContentQueries","setCurrentTNodeAsNotParent","decreaseElementDepthCount","elementEnd","hasClassInput","setDirectiveInputsWhichShadowsStyling","hasStyleInput","ɵɵelementStart","ɵɵelementEnd","elementContainerStartFirstCreatePass","ɵɵelementContainerStart","ɵɵelementContainerEnd","isSubscribable","listenerFn","eventTargetResolver","listenerInternal","ɵɵlistener","loadComponentRenderer","getCurrentDirectiveDef","ɵɵsyntheticHostListener","isTNodeDirectiveHost","processOutputs","lCleanupIndex","existingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","findExistingListener","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","profiler","wrapWithPreventDefault","markViewDirty","executeListenerWithErrorHandling","nextListenerFn","wrapListenerIn_markDirtyAndPreventDefault","nextContextImpl","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","ngProjectAsAttrIdx","getProjectAsAttrValue","isSelectorInSelectorList","componentNode","projectionHeads","tails","componentChild","slotIndex","matchingProjectionSlotIndex","selectorIndex","applyProjection","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate","interpolatedValue","interpolation1","interpolation2","ɵɵpropertyInterpolate2","interpolation4","ɵɵpropertyInterpolate4","interpolationV","ɵɵpropertyInterpolateV","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","getTStylingRangePrev","getTStylingRangeNext","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","setTStylingRangeNextDuplicate","setTStylingRangePrevDuplicate","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","consumeClassToken","consumeWhitespace","consumeStyleKey","consumeSeparator","ch1","ch2","ch3","lastChIndex","consumeQuotedText","consumeStyleValue","quoteCharCode","checkStylingProperty","ɵɵstyleProp","ɵɵclassProp","checkStylingMap","styleKeyValueArraySet","styleStringParser","resetParserState","parseStyleNext","parseStyle","getLastParsedKey","getLastParsedValue","keyValueArraySet","classStringParser","parseClassNameNext","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","oldKeyValueArray","newKeyValueArray","oldKey","newKey","updateStylingMap","styleKeyValueArray","unwrappedValue","toStylingKeyValueArray","isHostBindings","stylingKey","hostDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","bindings","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","wrapInStaticStylingKey","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","previousNode","toTStylingRange","setTStylingRangeNext","setTStylingRangePrev","markDuplicates","markDuplicateOfResidualStyling","insertTStylingBinding","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","getTStylingRangeNextDuplicate","findStylingValue","getTStylingRangePrevDuplicate","isProcedural","isImportant","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","keyValueArrayGet","textNative","ɵɵtextInterpolate1","ɵɵtextInterpolate","interpolated","textBindingInternal","ɵɵtextInterpolate2","bindingUpdated3","interpolation3","ɵɵtextInterpolate3","ɵɵtextInterpolate4","v4","interpolation5","ɵɵtextInterpolate5","ɵɵtextInterpolateV","ɵɵstyleMap","ɵɵhostProperty","ɵɵsyntheticHostProperty","localeEn","LOCALE_DATA","normalizedLocale","getLocaleData","findLocaleData","LocaleDataIndex","PluralCase","ng","common","LocaleId","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","TimeFormat","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","ExtraData","pluralMapping","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","I18nCreateOpCode","APPEND_EAGERLY","LOCALE_ID$1","tNodeInsertBeforeIndex","i18nParent","anchorRNode","previousTNodes","newTNode","existingTNode","isI18nText","isNewTNodeCreatedBefore","getInsertBeforeIndex","setInsertBeforeIndex","setI18nHandling","tIcu","addTNodeAndUpdateInsertBeforeIndex","currentCase","currentCaseLViewIndex","mergedCode","changeMask","changeMaskCounter","createOpCodes","insertInFrontOf","appendNow","mutableOpCodes","rootRNode","rootIdx","textNodeIndex","parentIdx","getParentFromIcuCreateOpCode","xn","refIdx","getRefFromIcuCreateOpCode","getTIcu","caseIndex","getCurrentICUCaseIndex","applyMutableOpCodes","anchorIdx","commentValue","commentNodeIndex","createCommentNode","elementNodeIndex","updateOpCodes","bindingsStartIndex","checkBit","skipCodes","sanitizeFn","tNodeOrTagName","rText","applyIcuSwitchCase","applyIcuUpdateCase","activeCaseIndex","applyUpdateOpCodes","icuExpression","bindingValue","cases","resolvedCase","getPluralCase","getCaseIndex","applyIcuSwitchCaseRemove","removeCodes","nodeOrIcuIndex","_removes","_stack","removeOpCode","enterIcu","icuContainerIteratorNext","icuContainerIteratorStart","BINDING_REGEXP","NESTED_ICU","ICU_BLOCK_REGEXP","SUBTEMPLATE_REGEXP","PH_REGEXP","NGSP_UNICODE_REGEXP","parentTNodeIndex","subTemplateIndex","rootTNode","existingTNodeStack","isRootTemplateMessage","removeInnerTemplateTranslation","getTranslationForTemplate","msgParts","replaceNgsp","i18nParseTextIntoPartsAndICU","i18nStartFirstCreatePassProcessTextNode","icuStart","createTNodeAndAddOpCode","icuNodeIndex","isClosing","createTNodePlaceholder","existingTNodes","isICU","i18nNodeIdx","ensureIcuContainerVisitorLoaded","loadIcuContainerVisitor","assertEqual","setTNodeInsertBeforeIndex","hasBinding","generateBindingUpdateOpCodes","destinationNode","bindingStart","maskIndex","sizeIndex","textParts","toMaskBit","tagMatched","inTemplate","bindingMask","mainBinding","addUpdateIcuSwitch","setTIcu","valueArr","nestedIcus","icuIndex","parseIcuCase","addUpdateIcuUpdate","icuType","prevPos","braceStack","braces","parseICUBlock","caseName","unsafeCaseHtml","inertRootNode","walkIcuTree","sharedUpdateOpCodes","addCreateNodeAndAppend","lowerAttrName","addCreateAttribute","addRemoveNode","COMMENT_NODE","isNestedIcu","addRemoveNestedIcu","appendToParentIdx","createAtIdx","icuCreateOpCode","messageIndex","i18nStartFirstCreatePass","tI18n","applyCreateOpCodes","setInI18nBlock","ɵɵi18nStart","ɵɵi18nEnd","setMaskBit","hasChange","ɵɵi18nExp","applyI18n","HEADER_OFFSET","viewProviders","resolveProvider","lInjectablesBlueprint","providerFactory","beginIndex","ɵɵdirectiveInject","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","factoryFn","componentProviders","multiFactoryAdd","multiFactory","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","multiProviders","processProvidersFn","ComponentRef$1","ComponentFactory$1","_NullComponentFactoryResolver","ERROR_COMPONENT","noComponentFactoryError","ComponentFactoryResolver$1","SWITCH_ELEMENT_REF_FACTORY","createElementRef","RendererFactory2","SWITCH_RENDERER2_FACTORY","nodeAtIndex","getOrCreateRenderer2","Sanitizer","major","minor","patch","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","lNode","lViewInAContainer","lViewFirstChildTNode","collectNativeNodes","nodesInSlot","ViewRef$1","_cdRefInjectingView","_attachedToViewContainer","viewRefs","destroyLView","storeCleanupWithContext","detectChangesInternal","setIsInCheckNoChangesMode","checkNoChangesInternal","renderDetachView$1","RootViewRef","detectChangesInRootView","checkNoChangesInRootView","ComponentFactoryResolver","componentDef","ComponentFactory","nonMinified","SCHEDULER","selectorList","stringifyCSSSelector","stringifyCSSSelectorList","isBoundToModule","toRefArray","projectableNodes","rootSelectorOrNode","tElementNode","rootViewInjector","createChainedInjector","hostRenderer","elementName","hostRNode","elementOrSelector","rElement","locateHostElement","getNamespace","rootFlags","playerHandler","createRootContext","rootTView","rootLView","viewRenderer","createRootComponentView","extractAttrsAndClassesFromSelector","uu","nodesforSlot","hostFeatures","instantiateRootComponent","createRootComponent","LifecycleHooksFeature","ComponentRef","_rootLView","NgModuleRef$1","NgModuleFactory$1","NgModuleRef","_bootstrapComponents","destroyCbs","maybeUnwrapFn","_r3Injector","injectFlags","NgModuleFactory","moduleType","visited","incoming","assertSameOrNotExisting","registerNgModuleType","slotOffset","pureFn","getBindingRoot","updateBinding","getBinding","pureFunction1Internal","pureFunction2Internal","pureFunction3Internal","bindingRoot","getPureFunctionReturnValue","pureFunction4Internal","exp5","exp6","returnValueIndex","lastReturnValue","pipeName","getPipeDef","pipeFactory","pipeInstance","isPure","EventEmitter_","__isAsync","nextFn","errorFn","completeFn","_wrapInTimeout","_results","QueryList","_emitDistinctChangesOnly","dirty","_changesDetected","_changes","symbolIterator","resultsTree","identityAccessor","newResultFlat","arrayEquals","SWITCH_TEMPLATE_REF_FACTORY","createTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","declarationViewLQueries","SWITCH_VIEW_CONTAINER_REF_FACTORY","createContainerRef","ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","CONTAINER_HEADER_OFFSET","componentFactoryOrType","indexOrOptions","ngModuleRef","isComponentFactory","contextInjector","viewAttachedToContainer","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","containerLength","addToArray","trackMovedView","insertView","parentNativeNode","addViewToContainer","attachToViewContainerRef","getOrCreateViewRefs","viewRefsArr","detachedView","VIEW_REFS","commentNode","nativeNextSibling","LQuery_","queryList","setDirty","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","read","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","tquery","TQuery_","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","matchingIdx","createResultByTNodeType","createSpecialToken","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","createResultForNode","lViewResults","materializeViewResults","collectQueryResults","embeddedLViews","getCurrentQueryIndex","unwrapElementRef","notifyOnChanges","createTQuery","createLQuery","tViewContentQueries","saveContentQueryAndDirectiveIndex","loadQueryInternal","bindingPropertyName","Output","HostListener","APP_INITIALIZER","ApplicationInitStatus","appInits","initialized","donePromise","rej","asyncInitPromises","initResult","observableAsPromise","APP_ID","APP_ID_RANDOM_PROVIDER","_randomChar","PLATFORM_INITIALIZER","Console","DEFAULT_CURRENCY_CODE","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler_compileModuleSync__POST_R3__","Compiler_compileModuleSync","Compiler_compileModuleAsync","Compiler_compileModuleAndAllComponentsSync__POST_R3__","declaration","Compiler_compileModuleAndAllComponentsSync","Compiler_compileModuleAndAllComponentsAsync","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","compileModuleAndAllComponentsAsync","Zone","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","onUnstable","onMicrotaskEmpty","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","fork","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","getNativeRequestAnimationFrame","delayChangeDetectionForEventsDelegate","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","delayChangeDetectionForEvents","isAngularZone","onInvokeTask","applyThis","applyArgs","onEnter","invokeTask","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","forkInnerZoneWithAngularBehavior","EMPTY_PAYLOAD","runGuarded","isInAngularZone","NoopNgZone","Testability","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","using","exactMatch","TestabilityRegistry","_applications","_testabilityGetter","addToWindow","testability","findInAncestors","findTestabilityInTree","_NoopGetTestability","_devMode","_runModeLocked","compileNgModuleFactory","moduleFactory","resourceLoader","ALLOW_MULTIPLE_PLATFORMS","NgProbeToken","PlatformRef","inits","parentPlatformFactory","extraProviders","injectedProviders","createPlatform","assertPlatform","requiredToken","_modules","_destroyListeners","ngZoneOption","ngZoneEventCoalescing","ngZoneRunCoalescing","getNgZone","ngZoneInjector","moduleRef","exceptionHandler","_callAndReportToErrorHandler","initStatus","runInitializers","assertDefined","setLocaleId","_moduleDoBootstrap","compilerOptions","optionsReducer","bootstrapModuleFactory","ngDoBootstrap","_exceptionHandler","_initStatus","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","componentOrFactory","cf","compRef","testabilityRegistry","registerApplication","unregisterApplication","_loadComponent","attachToAppRef","detachFromAppRef","SWITCH_CHANGE_DETECTOR_REF_FACTORY","isPipe","createViewRef","ChangeDetectorRef","getDebugNodeR2","_nativeNode","DefaultIterableDifferFactory","isListLikeIterable","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","_nextPrevious","_nextAdded","_nextMoved","_nextIdentityChange","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","duplicates","recordList","moveOffset","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","IterableDiffers","getTypeNameForDebugging","defaultIterableDiffersFactory","KeyValueDiffers","kv","defaultKeyValueDiffersFactory","keyValDiff","defaultIterableDiffers","defaultKeyValueDiffers","platformCore","createPlatformFactory","APPLICATION_MODULE_PROVIDERS","$localize","getGlobalLocale","ApplicationModule","ɵɵdefineNgModule","ɵɵdefineInjector","BaseControlValueAccessor","BuiltInControlValueAccessor","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","Wr","_composing","_isAndroid","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","Validators","minValidator","maxValidator","requiredValidator","requiredTrueValidator","emailValidator","minLengthValidator","maxLengthValidator","patternValidator","validators","composeAsync","isEmptyInputValue","hasValidLength","minlength","requiredLength","actualLength","maxlength","requiredPattern","actualValue","nullValidator","ɵisObservable","arrayOfErrors","validator","isValidatorFn","presentValidators","isPresent","mergeErrors","executeValidators","normalizeValidators","toObservable","controlValidators","dirValidator","_rawValidators","_rawAsyncValidators","currentValidators","makeValidatorsArray","validatorsToAdd","hasValidator","AbstractControlDirective","_onDestroyCallbacks","pristine","touched","untouched","statusChanges","valueChanges","_composedValidatorFn","composeValidators","_composedAsyncValidatorFn","composeAsyncValidators","errorCode","getError","NgControl","valueAccessor","ControlContainer","AbstractControlStatus","cd","submitted","NgControlStatus","NgControlStatusGroup","setUpValidators","registerOnChange","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","setUpViewChangePipeline","emitModelEvent","viewToModelUpdate","_registerOnDestroy","_unregisterOnChange","setUpModelChangePipeline","registerOnTouched","_pendingTouched","markAsTouched","setUpBlurPipeline","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setUpDisabledChangeHandler","cleanUpValidators","_invokeOnDestroyCallbacks","_registerOnCollectionChange","registerOnValidatorChange","getControlValidators","setValidators","mergeValidators","asyncValidators","getControlAsyncValidators","asyncValidator","setAsyncValidators","onValidatorChange","updateValueAndValidity","isControlUpdated","updatedValidators","updatedAsyncValidators","markAsDirty","emitModelToViewChange","viewModel","_syncPendingControls","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","VALID","INVALID","PENDING","DISABLED","validatorOrOpts","isOptionsObj","AbstractControl","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","coerceToValidator","coerceToAsyncValidator","validatorFn","asyncValidatorFn","_updateOn","addValidators","removeValidators","onlySelf","_forEachChild","markAllAsTouched","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","emitEvent","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","controlToFind","FormGroup","FormArray","_find","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","formState","FormControl","pickValidators","pickAsyncValidators","_applyFormState","_setUpdateStrategy","_initObservables","emitViewToModelChange","removeListItem","_isBoxedValue","_setUpControls","registerControl","_checkAllValuesPresent","_throwIfControlMissing","patchValue","_reduceChildren","getRawValue","subtreeUpdated","updated","_reduceValue","_registerControl","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","setUpControl","removeControl","setUpFormContainer","syncPendingControls","resetForm","AbstractFormGroupDirective","_checkParentType","formDirective","addFormGroup","removeFormGroup","getFormGroup","controlPath","formControlBinding$1","NgModel","resolvedPromise","_registered","_setValidators","_setAsyncValidators","selectValueAccessor","_checkForErrors","_setUpControl","_updateDisabled","isPropertyUpdated","_isStandalone","_setUpStandalone","addControl","_checkName","disabledValue","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistryModule","RadioControlRegistry","_accessors","accessor","_isSameGroup","fireUncheck","controlPair","_control","_registry","_fn","formControlName","NG_MODEL_WITH_FORM_CONTROL_WARNING","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","cleanUpControl","_setUpFormContainer","_cleanUpFormContainer","newCtrl","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","addFormArray","removeFormArray","getFormArray","controlNameBinding","FormControlName","_ngModelWarningConfig","Uo","_added","_ngModelWarningSent","updateModel","_ngModelWarningSentOnce","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_optionMap","_idCounter","_getOptionId","valueString","_buildValueString$1","_getOptionValue","_extractId$1","NgSelectOption","_registerOption","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","optionSelectedStateSetter","ids","_setSelected","selectedOptions","_extractId","ɵNgSelectMultipleOption","_buildValueString","AbstractValidatorDirective","_validator","inputName","normalizeInput","createValidator","MAX_VALIDATOR","MaxValidator","handleChanges","MIN_VALIDATOR","MinValidator","REQUIRED_VALIDATOR","RequiredValidator","_required","EMAIL_VALIDATOR","EmailValidator","MIN_LENGTH_VALIDATOR","MinLengthValidator","MAX_LENGTH_VALIDATOR","MaxLengthValidator","PATTERN_VALIDATOR","PatternValidator","_createValidator","ɵInternalFormsSharedModule","FormsModule","ReactiveFormsModule","warnOnNgModelWithFormControl","FormBuilder","controlsConfig","_reduceControls","isAbstractControlOptions","_createControl","controlConfig","ɵAnimationGroupPlayer","driver","normalizer","keyframes","preStyles","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizePropertyName","normalizeStyleValue","LINE_START","copyAnimationEvent","makeAnimationEvent","triggerName","fromState","separatorPos","_contains","elm1","elm2","_matches","_query","_isNode","oMatchesSelector","elm","_CACHED_BODY","_IS_WEBKIT","getBodyNode","containsVendorPrefix","matchesElement","containsElement","invokeQuery","NoopAnimationDriver","validateStyleProperty","AnimationDriver","NOOP","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","_convertTimeValueToMS","allowNegativeValues","delayMatch","easingVal","containsErrors","parseTimeExpression","readPrototype","copyObj","getStyleAttributeString","camelCaseToDashCase","formerStyles","dashCaseToCamelCase","writeStyleAttribute","PARAM_REGEX","original","varName","localVal","DASH_CASE_REGEXP","ot","previousStyles","previousStyleProps","startingKeyframe","missingStyleProps","Ci","computeStyle","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","transitionValue","expressions","eventStr","parseAnimationAlias","makeLambdaFromStates","parseInnerTransitionStr","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","AnimationAstBuilderVisitor","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","visitDslNode","normalizeAnimationEntry","currentQuerySelector","collectedStyles","queryCount","depCount","transitions","ln","stateDef","styleAst","astParams","containsDynamicStyles","missingSubs","stylesObj","extractStyleParams","missingSubsArr","matchers","parseTransitionExpr","normalizeAnimationOptions","furthestTime","innerAst","timingAst","makeTimingAst","resolveTiming","isDynamic","ast","dynamic","constructTimingAst","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","styleTuple","collectedEasing","styleData","collectedEntry","updateCollectedStyle","validateStyleParams","totalKeyframesWithOffsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","generatedOffset","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","hasAmpersand","SELF_TOKEN","normalizeSelector","includeSelf","getOrSetAsInMap","originalSelector","currentTransition","normalizeParams","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","timelines","timeline","containsAnimation","tl","allowOnlyTimelineStyles","createTimelineInstruction","elementInstructions","consume","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","resolveTimingValue","instructionTimings","appendInstructionToTimeline","instruction","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","delayNextStep","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","getCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","parentContext","staggerTransformer","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","optionsToUpdate","newParams","paramsToUpdate","oldParams","newTime","_copyOptions","updatedTimings","SubTimelineBuilder","stretchStartingKeyframe","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_localTimelineStyles","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","allStyles","allProperties","copyStyles","flattenStyles","_updateStyle","Te","details0","details1","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","Tr","Wn","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","decimalPoints","mult","AnimationStyleNormalizer","WebAnimationsStyleNormalizer","userProvidedProperty","normalizedProperty","strVal","DIMENSIONAL_PROP_MAP","valAndSuffixMatch","makeBooleanMap","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","matchFns","oneOrMoreTransitionsMatch","backupStateStyler","stateStyler","backupStyles","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","buildAnimationTimelines","createTransitionInstruction","queriedElementsList","AnimationStateStyles","combinedParams","AnimationTrigger","_normalizer","transitionFactories","balanceProperties","fallbackTransition","createFallbackTransition","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","buildAnimationAst","normalizeKeyframes","autoStylesMap","_buildPlayer","optimizeGroupPlayer","_getPlayer","baseEvent","listenOnPlayer","QUEUED_CLASSNAME","DISABLED_CLASSNAME","DISABLED_SELECTOR","STAR_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","isObj","normalizeTriggerValue","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","_engine","_triggers","_queue","_elementListeners","_hostClassName","phase","isTriggerEventValid","triggersWithStates","statesByElement","afterFlush","defaultToFallback","_getTrigger","TransitionAnimationPlayer","absorbOptions","playersOnElement","playersByElement","queued","matchTransition","isFallbackTransition","totalQueuedPlayers","objEquals","matchStyles","reportError","eraseStyles","stateMap","elementPlayers","namespaces","fetchNamespacesByElement","triggerLeaveAnimation","clearElementCache","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","markElementAsRemoved","processLeaveNode","elementStates","visitedTriggers","engine","childElementCount","_signalRemovalForInnerTriggers","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","prepareLeaveAnimationListeners","removalFlag","destroyInnerAnimations","_onRemovalComplete","microtaskId","markedForDestroy","containsData","TransitionAnimationEngine","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","_balanceNamespaceList","collectEnterElement","createNamespace","_fetchNamespace","nsId","isElementNode","insertNode","hostNS","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","markElementAsDisabled","cleanupFns","_flushAnimations","quietFns","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","Kl","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","drainQueuedTransitions","nodeIsOrphaned","_buildInstruction","stringMap","setVal","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","elementContainsData","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","Ur","Lo","realPlayer","getRealPlayer","gs","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","timelineInstruction","previousPlayers","finalPlayers","_flattenGroupPlayersRecur","flattenGroupPlayers","lr","wrappedPlayer","currentValues","deleteOrUnsetInMap","_player","_containsRealPlayer","_queuedCallbacks","triggerCallback","_queueEvent","valuesMap","elementPropsMap","defaultStyle","cloakVals","cloakElement","failedElements","roots","rootMap","nodeSet","localRootMap","CLASSES_CACHE_KEY","k1","k2","postEntry","preEntry","AnimationEngine","_triggerCache","_transitionEngine","_timelineEngine","cacheKey","buildTrigger","registerTrigger","parseTimelineCommand","eventPhase","whenRenderingDone","startStyles","endStyles","filterNonAnimatableStyles","SpecialCasedStyles","_startStyles","_endStyles","initialStyles","initialStylesByElement","_initialStyles","isNonAnimatableStyle","ANIMATION_PROP","ANIMATIONEND_EVENT","ElementAnimationStyleHandler","_name","_duration","_delay","_easing","_fillMode","_onDoneFn","_startTime","_eventFn","_handleCallback","anim","getAnimationStyle","countChars","setAnimationStyle","applyKeyframeAnimation","addRemoveAnimationEvent","playPauseAnimation","findIndexForAnimation","_ngTestManualTimestamp","elapsedTime","animationName","findMatchingTokenIndex","removeKeyframeAnimation","searchToken","doRemove","CssKeyframesPlayer","_finalStyles","_specialStyles","currentSnapshot","_buildStyler","_styler","_flushStartFns","_flushDoneFns","DirectStylePlayer","_startingStyles","__initialized","hypenatePropsObject","KEYFRAMES_NAME_PREFIX","CssKeyframesDriver","_count","keyframeStr","kfElm","previousCssKeyframePlayers","allowPreviousPlayerStylesMerge","flattenKeyframesIntoStyles","balancePreviousStylesIntoKeyframes","buildKeyframeElement","nodeToAppendKfElm","findNodeToAppendKeyframeElement","specialStyles","packageNonAnimatableStyles","flatKeyframes","WebAnimationsPlayer","_initialized","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","_resetDomPlayerState","WebAnimationsDriver","_isNativeImpl","getElementAnimateFn","_cssKeyframesDriver","supported","scrubberAccessRequested","useKeyframes","playerOptions","previousWebAnimationPlayers","BrowserAnimationBuilder","rootRenderer","_nextAnimationId","issueAnimationCommand","BrowserAnimationFactory","RendererAnimationPlayer","_command","_listen","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","BaseAnimationRenderer","animationTriggers","AnimationRenderer","_scheduleCountTask","onInsert","refChild","oldChild","onRemove","selectorOrNode","preserveContent","disableAnimations","resolveElementFromTarget","dotIndex","parseTriggerCallbackName","Wo","scheduleListenerCallback","InjectableAnimationEngine","ɵAnimationEngine","ANIMATION_MODULE_TYPE","SHARED_ANIMATION_PROVIDERS","ɵAnimationStyleNormalizer","ɵWebAnimationsStyleNormalizer","ɵDomRendererFactory2","BROWSER_ANIMATIONS_PROVIDERS","ɵsupportsWebAnimations","ɵWebAnimationsDriver","ɵCssKeyframesDriver","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","BrowserAnimationsModule","BrowserModule","urlParsingNode","GenericBrowserDomAdapter","supportsDOMEvents","ɵDomAdapter","BrowserDomAdapter","getDefaultDocument","DocumentFragment","baseElement","getBaseElementHref","pathName","ɵsetRootDomAdapter","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","transitionId","BrowserGetTestability","ɵglobal","getAllTestabilities","getAllRootElements","testabilities","didWork","decrement","didWork_","whenStable","whenAllStable","getTestability","isShadowRoot","setTestabilityGetter","EVENT_MANAGER_PLUGINS","_eventNameToPlugin","_plugins","_findPluginFor","addGlobalEventListener","plugin","EventManagerPlugin","SharedStylesHost","_stylesSet","additions","onStylesAdded","DomSharedStylesHost","_hostNodes","styleNodes","hostNode","_addStylesToHost","styleNode","NAMESPACE_URIS","svg","xhtml","xlink","xml","COMPONENT_REGEX","HOST_ATTR","CONTENT_ATTR","eventHandler","DomRendererFactory2","eventManager","sharedStylesHost","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","namespaceUri","removeAttributeNS","decoratePreventDefault","contentAttr","componentShortId","shimContentAttribute","hostAttr","shimHostAttribute","hostEl","addHost","removeHost","nodeOrShadowRoot","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Menu","Scroll","Win","_chromeNumKeyPadMap","MODIFIER_KEY_GETTERS","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","getZone","onAndCancel","domEventName","_normalizeKey","keyIdentifier","getEventKey","modifierGetter","getEventFullKey","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵgetSanitizationBypassType","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","ɵbypassSanitizationTrustStyle","ɵbypassSanitizationTrustScript","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","platformBrowser","ɵPLATFORM_BROWSER_ID","makeCurrent","ɵsetDocument","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","parentModule","Title","newTitle","createTitle","TakeLastOperator","TakeLastSubscriber","In","ring","RouterEvent","NavigationStart","navigationTrigger","restoredState","NavigationEnd","urlAfterRedirects","NavigationCancel","NavigationError","RoutesRecognized","Oi","GuardsCheckStart","GuardsCheckEnd","shouldActivate","Qi","ResolveStart","ResolveEnd","RouteConfigLoadStart","RouteConfigLoadEnd","ChildActivationStart","snapshot","routeConfig","ChildActivationEnd","ActivationStart","ActivationEnd","routerEvent","PRIMARY_OUTLET","ParamsAsMap","NAVIGATION_CANCELING_ERROR","segments","segmentGroup","pathMatch","posParams","segment","consumed","equalArraysOrString","aSorted","bSorted","pathCompareMap","exact","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","equalSegmentGroups","containsSegmentGroup","paramCompareMap","shallowEqual","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","_queryParamMap","convertToParamMap","DEFAULT_SERIALIZER","UrlSegmentGroup","rt","serializePaths","UrlSegment","_parameterMap","serializePath","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","serializeSegment","strParams","encodeUriQuery","serializeQueryParams","encodeURI","encodeUriFragment","childOutlet","mapChildrenIntoArray","encodeUriString","decode","encodeUriSegment","serializeMatrixParams","SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","matchSegments","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodeQuery","decodedVal","currentVal","allowPrimary","outletName","Tree","_root","pathFromRoot","findNode","findPath","cc","TreeNode","outlet","RouterState","setRouterState","urlTree","activated","ActivatedRouteSnapshot","RouterStateSnapshot","createEmptyStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","futureSnapshot","_futureSnapshot","_routerState","_paramMap","paramsInheritanceStrategy","inheritingStartingFrom","flattenInherited","curr","_resolvedData","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","_resolve","serializeNode","nextSnapshot","shallowEqualArrays","equalUrlParams","equalSegments","equalParamsAndUrlSegments","routeReuseStrategy","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","createActivatedRoute","nav","Navigation","numberOfDoubleDots","cmd","cmdIdx","outlets","segmentPath","urlPart","partIndex","computeNavigation","toRoot","startingPosition","isMatrixParams","ci","createPositionApplyingDoubleDots","findStartingPosition","processChildren","updateSegmentGroupChildren","updateSegmentGroup","oldSegmentGroup","newSegmentGroup","qp","replaceSegment","oldSegment","newSegment","cmdWithOutlet","isCommandWithOutlets","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","prefixedWith","slicedCommands","createNewSegmentGroup","getOutlets","createNewSegmentChildren","ActivateRoutes","futureState","currState","forwardEvent","parentContexts","futureRoot","currRoot","deactivateChildRoutes","advanceActivatedRoute","activateChildRoutes","futureNode","contexts","nodeChildrenAsMap","childOutletName","futureChild","deactivateRoutes","childName","deactivateRouteAndItsChildren","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","onOutletDeactivated","attachRef","activateRoutes","getOrCreateContext","stored","onOutletReAttached","_loadedConfig","parentLoadedConfig","cmpFactoryResolver","activateWith","LoadedRouterConfig","routes","INITIAL_VALUE","combineLatest","isPending","innerAcc","isUrlTree","OutletContext","ChildrenOutletContexts","RouterOutlet","changeDetector","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","onChildOutletCreated","onChildOutletDestroyed","activatedRoute","isActivated","childContexts","OutletInjector","ɵEmptyOutletComponent","parentPath","fullPath","getFullPath","validateNode","validateConfig","currentRoute","standardizeConfig","loadChildren","sortedConfig","getOutlet","noMatch$1","consumedSegments","positionalParamSegments","defaultUrlMatcher","slicedSegments","relativeLinkResolution","containsEmptyPathMatchesWithNamedOutlets","createChildrenForEmptyPaths","_sourceSegment","_segmentIndexShift","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","emptyPathMatch","co","primarySegment","Zi","rawSegment","NoMatch$1","AbsoluteRedirect","newTree","redirectTo","ApplyRedirects","configLoader","urlSerializer","allowRedirects","splitGroup","rootSegmentGroup","expandSegmentGroup","createUrlTree","squashSegmentGroup","noMatchError","rootCandidate","expandChildren","expandSegment","childOutlets","sortedRoutes","sortByMatchingOutlets","expandedChild","takeLast","last$1","expandSegmentAgainstRoute","noLeftoversInUrl","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","absoluteRedirect","lineralizeSegments","newSegments","rawSegmentGroup","rawSlicedSegments","getChildConfig","routerConfig","childModule","Wa","splitSegmentGroup","matchedOnOutlet","runCanLoadGuards","shouldLoadResult","navigationCancelingError","canLoadFails","canLoad","canLoadObservables","injectionToken","guardVal","isCanLoad","wrapIntoObservable","prioritizedGuardValue","namedOutletsRedirect","applyRedirectCreatreUrlTree","newRoot","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","childCandidate","mergeTrivialChildren","CanActivate","CanDeactivate","getChildRouteGuards","getClosestLoadedConfig","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","Ft","Ct","NoMatch","rootComponentType","processSegmentGroup","routeState","inheritParamsAndData","routeNode","inheritedParamsDataResolve","processSegment","outletChildren","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","processSegmentAgainstRoute","Co","getSourceSegmentGroup","getPathIndexShift","getResolve","mergedNodes","hasEmptyPathConfig","duplicateEmptyPathNode","resultNode","mergedNode","RouteReuseStrategy","DefaultRouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","ROUTES","RouterConfigLoader","onLoadStartListener","onLoadEndListener","_loader$","loadRunner","loadModuleFactory","UrlHandlingStrategy","DefaultUrlHandlingStrategy","newUrlPart","wholeUrl","runExtras","exactMatchOptions","subsetMatchOptions","Router","rootContexts","lastSuccessfulNavigation","currentNavigation","disposed","navigationId","currentPageId","isNgZoneEnabled","defaultErrorHandler","malformedUriErrorHandler","defaultMalformedUriErrorHandler","navigated","lastSuccessfulId","beforePreactivation","defaultRouterHook","afterPreactivation","urlHandlingStrategy","onSameUrlNavigation","urlUpdateStrategy","canceledNavigationResolution","ɵConsole","resetConfig","currentUrlTree","createEmptyUrlTree","rawUrlTree","browserUrlTree","routerState","createEmptyState","targetPageId","currentRawUrl","extractedUrl","extract","rawUrl","extras","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","navigations","setupNavigations","processNavigations","ɵrouterPageId","eventsSubject","initialUrl","previousNavigation","urlTransition","shouldProcessUrl","isBrowserTriggeredNavigation","serializeUrl","applyRedirects$1","applyRedirects","finalUrl","newObservableError","recognize$1","skipLocationChange","setBrowserUrl","routesRecognized","navStart","replaceUrl","switchTap","appliedUrlTree","rs","guardsStart","getAllRouteGuards","futureRSS","currRSS","currARS","canDeactivate","canDeactivateObservables","isCanDeactivate","runCanDeactivate","runCanDeactivateChecks","fireChildActivationStart","fireActivationStart","futureARS","canActivateChildGuards","canActivateChild","getCanActivateChild","canActivateChildGuardsMapped","guardsMapped","isCanActivateChild","runCanActivateChild","canActivate","canActivateObservables","isCanActivate","runCanActivate","runCanActivateChecks","checkGuards","guardsEnd","restoreHistory","cancelNavigationTransition","resolveStart","dataResolved","canActivateChecksResolved","getResolver","resolveNode","resolvedData","runResolve","resolveData","resolveEnd","createRouterState","cancelationReason","isNavigationCancelingError","redirecting","navCancel","mergedTree","scheduleNavigation","navError","setUpLocationChangeListener","navigateByUrl","locationSubscription","stateCopy","parseUrl","navigationExtras","relativeTo","queryParamsHandling","preserveFragment","removeEmptyProps","validateCommands","matchOptions","containsTree","priorPromise","lastNavigation","browserNavPrecededByRouterNav","navToSameUrl","lastNavigationInProgress","browserPageId","setTransition","generateNgRouterState","isCurrentPathEqualTo","restoringFromCaughtError","targetPagePosition","browserUrlUpdateOccurred","resetUrlToCurrentUrlTree","routerPageId","RouterLink","router","tabIndexAttribute","onChanges","setTabIndexIfNotOnNativeEl","newTabIndex","attrBoolValue","RouterLinkWithHref","locationStrategy","updateTargetUrlAndHref","RouterLinkActive","linkWithHref","routerLinkActiveOptions","isActiveChange","routerEventsSubscription","linksWithHrefs","subscribeToEachLinkOnChanges","linkInputChangesSubscription","allLinkChanges","isLinkActive","hasActiveLinks","isActiveMatchOptions","isActiveCheckFn","PreloadingStrategy","PreloadAllModules","NoPreloading","RouterPreloader","preloadingStrategy","onEndLoad","preload","processRoutes","preloadConfig","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","setHistoryScrollRestoration","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","scrollToPosition","scrollToAnchor","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","assignExtraOptionsToRouter","enableTracing","groupEnd","RouterModule","provideRoutes","provideForRootGuard","createRouterScroller","routerNgProbeToken","RouterInitializer","getAppInitializer","ROUTER_INITIALIZER","getBootstrapListener","provideRouterInitializer","scrollOffset","setOffset","platformLocationStrategy","useHash","initNavigation","resultOfPreactivationDone","initialNavigation","bootstrappedComponentRef","preloader","routerScroller","setUpPreloading","resetRootComponentType","appInitializer","bootstrapListener","fe","Be","RaceOperator","RaceSubscriber","hasFirst","NEVER","WithLatestFromOperator","WithLatestFromSubscriber","_tryProject","absoluteDelay","delayFor","DelayOperator","DelaySubscriber","DelayMessage","_schedule","scheduleNotification","ue","arrowLeft","arrowRight","selectPage","Nt","updateSecond","handleBlur","toggleMeridian","noopFn","runningTransitions","ngbRunTransition","startFn","runningTransition","transition$","endFn","transitionProperty","runInZone","finishTransition$","stop$","endWith","transitionDurationMs","transitionDuration","transitionDelay","getTransitionDurationMs","transitionEnd$","race","ngbCollapsingTransition","hasShownClass","measureCollapsingElementHeightPx","reflow","setInitialClasses","NgbConfig","NgbAccordionConfig","_ngbConfig","closeOthers","_animation","nextId$4","NgbPanelHeader","NgbPanelTitle","NgbPanelContent","NgbPanel","initClassDone","transitionRunning","titleTpl","titleTpls","headerTpl","headerTpls","contentTpl","contentTpls","NgbAccordion","_changeDetector","activeIds","destroyOnHide","panelChange","closeOtherPanels","panelId","_changeOpenState","_findPanelById","panels","_closeOthers","_updateActiveIds","panelElement","_getPanelElement","_runTransitions","enableTransition","NgbPanelToggle","accordion","NgbAccordionModule","ngbAlertFadingTransition","NgbAlertConfig","dismissible","NgbAlert","typeChange","NgbAlertModule","NgbButtonsModule","NgbSlideEventDirection","isBeingAnimated","removeDirectionClasses","ngbCarouselTransitionIn","ngbCarouselTransitionOut","NgbCarouselConfig","pauseOnHover","pauseOnFocus","showNavigationArrows","showNavigationIndicators","nextId$2","NgbSlide","tplRef","slid","NgbCarousel","_container","NgbSlideEventSource","_interval$","_mouseHover$","_focused$","_pauseOnHover$","_pauseOnFocus$","_pause$","_wrap$","_transitionIds","ARROW_LEFT","ARROW_RIGHT","hasNextSlide$","slideEvent","activeId","slides","currentSlideId","slideArr","currentSlideIdx","_getSlideIdxById","TIMER","ngbCompleteTransition","_getSlideElement","activeSlide","_getSlideById","slideId","_cycleToSelected","_getSlideEventDirection","_getPrevSlide","_getNextSlide","slideIdx","transitionIds","selectedSlide","paused","activeSlideTransition","previousId","nextSlide","currentActiveSlideId","nextActiveSlideId","INDICATOR","NgbCarouselModule","NgbCollapseConfig","NgbCollapse","collapsed","ngbCollapseChange","_runTransition","_runTransitionWithEvents","NgbCollapseModule","Key","Escape","PageUp","PageDown","End","Home","ArrowLeft","ArrowRight","isContainedIn","matchesSelectorIfAny","closed$","insideElements","ignoreElements","insideSelector","wrapAsyncForMobile","escapes$","mouseDowns$","closeableClicks$","withLatestFrom","shouldClose","FOCUSABLE_ELEMENTS_SELECTOR","getAllStyles","getStyle","offsetParentEl","isStaticPositioned","parentOffset","elBcr","viewportOffset","elOffset","placementPrimary","placementSecondary","targetElStyles","targetElBCR","windowHeight","windowWidth","placementSeparator","baseClass","placementVals","allowedPlacements","addClassesToTarget","targetPlacement","xo","classname","placementToRemove","hasAuto","testPlacement","isInViewport","addedClasses","NgbDateParserFormatter","NgbDateISOParserFormatter","NGB_DATEPICKER_PARSER_FORMATTER_FACTORY","dateParts","NgbDatepickerModule","NgbDropdownConfig","NgbNavbar","NgbDropdownItem","NgbDropdownMenu","dropdown","NgbDropdown","NgbDropdownAnchor","NgbDropdownToggle","ngbNavbar","_closed$","_bodyContainer","_open","openChange","_positionMenu","_applyPlacementClasses","_setCloseHandlers","_applyContainer","dropdownClass","_applyCustomDropdownClass","ngbAutoClose","_menu","_resetContainer","itemElements","_getMenuElements","itemElement","isEventFromToggle","_isEventFromToggle","_isDropup","_getFirstPlacement","dropdownMenuElement","bodyContainer","newClass","oldClass","dropdownElement","NgbDropdownModule","_windowRef","windowRef","NgbModalBackdrop","_el","NgbActiveModal","NgbModalRef","_windowCmptRef","_backdropCmptRef","_beforeDismiss","_closed","_dismissed","_hidden","dismissEvent","_reject","_removeModalElements","_dismiss","windowTransition$","backdropTransition$","ModalDismissReasons","BACKDROP_CLICK","ESC","NgbModalWindow","_elWithFocus","_show","_disableEventHandling","dialogTransition$","_dialogEl","transitions$","_enableEventHandling","_setFocus","_bumpBackdrop","preventClose","autoFocusable","firstFocusable","getFocusableBoundaryElements","elementToFocus","elWithFocus","ScrollBar","_getWidth","_isPresent","_adjustBody","userSetPaddingStyle","actualPadding","uncertainty","measurer","NgbModalStack","_scrollBar","_rendererFactory","_activeWindowCmptHasChanged","_ariaHiddenValues","_backdropAttributes","_modalRefs","_windowAttributes","_windowCmpts","_activeInstances","activeWindowCmpt","stopFocusTrap$","refocusOnClick","lastFocusedElement$","tabEvent","focusedElement","lastFocusedElement","ngbFocusTrap","_revertAriaHidden","_setAriaHidden","moduleCFR","contentInjector","revertPaddingForScrollBar","compensate","removeBodyClass","activeModal","backdropCmptRef","windowCmptRef","_attachWindowComponent","ngbModalRef","beforeDismiss","_registerModalRef","_registerWindowCmpt","_applyWindowOptions","_applyBackdropOptions","windowInstance","backdropInstance","_createFromTemplateRef","_createFromString","_createFromComponent","componentNativeEl","unregisterModalRef","ngbWindowCmpt","NgbModalConfig","NgbModal","_moduleCFR","_modalStack","combinedOptions","activeInstances","dismissAll","hasOpenModals","NgbModalModule","NgbNavConfig","roles","isValidNavId","navCounter","NgbNavContent","NgbNavItem","_nav","domId","NgbNav","activeIdChange","destroy$","navItemChange$","navChange","_updateActiveId","enabledLinks","navItem","_notifyItemChanged","emitNavChange","nextItemId","_getItemById","itemId","NgbNavLink","ngbNavFadeOutTransition","ngbNavFadeInTransition","NgbNavPane","NgbNavOutlet","_activePane","_updateActivePane","_getPaneForItem","_getActivePane","_panes","NgbNavModule","NgbPaginationConfig","boundaryLinks","directionLinks","ellipses","maxSize","NgbPaginationEllipsis","NgbPaginationFirst","NgbPaginationLast","NgbPaginationNext","NgbPaginationNumber","NgbPaginationPrevious","NgbPaginationPages","NgbPagination","pageCount","pages","pageChange","hasNext","hasPrevious","_updatePages","leftOffset","newPageNo","prevPageNo","getValueInRange","collectionSize","_setPageInRange","_applyRotation","_applyPagination","_applyEllipses","NgbPaginationModule","isOpenedFn","openFn","closeFn","toggleFn","delayOrNoop","closeDelay","input$","filteredInput$","currentlyOpen","delayedOpen$","delayedClose$","observeTriggers","triggerDelay","NgbPopoverConfig","disablePopover","nextId$1","NgbPopoverWindow","NgbPopover","applicationRef","_ngbPopoverWindowId","popoverClass","_popupService","ngbPopover","popoverTitle","listenToTriggers","NgbPopoverModule","NgbProgressbarConfig","animated","striped","NgbProgressbar","textType","_max","NgbProgressbarModule","NgbRatingConfig","resettable","NgbRating","leave","rateChange","nextRate","isInteractive","_updateState","rate","internalChange","newRate","NgbRatingModule","NgbTime","updateHour","updateMinute","changeHour","changeMinute","checkSecs","NgbTimepickerConfig","meridian","spinners","hourStep","minuteStep","secondStep","readonlyInputs","NgbTimeAdapter","NgbTimeStructAdapter","NGB_DATEPICKER_TIME_ADAPTER_FACTORY","NgbTimepickerI18n","NgbTimepickerI18nDefault","NGB_TIMEPICKER_I18N_FACTORY","_periods","FILTER_REGEX","NgbTimepicker","_ngbTimeAdapter","_hourStep","_minuteStep","_secondStep","structValue","fromModel","propagateModelChange","changeSecond","enteredHour","toModel","NgbTimepickerModule","ngbToastFadeInTransition","ngbToastFadeOutTransition","NgbToastConfig","autohide","ariaLive","NgbToastHeader","NgbToast","contentHeaderTpl","_clearTimeout","_timeoutID","NgbToastModule","NgbTooltipConfig","disableTooltip","NgbTooltipWindow","NgbTooltip","_ngbTooltipWindowId","tooltipClass","_ngbTooltip","NgbTooltipModule","NgbTypeaheadModule","NGB_MODULES","NgbModule","TranslateHttpLoader","http","derivedClass","isFormBase","applyMixins","eventList","direct","ngEventsEmitter","eventList_1","propCollection","templateNames","regTemplates","registeredTemplate","regProperties","tabaccordionTemp","pNode","tagObject","tagObjects","refRegex","ComplexBase","hasChanges","dataSource","objInstance","templateProperties","templateProperties_1","directivePropList","dirPropName","isInitChanges","registerEvents","changedVal","isUpdated","getProperties","isChanged","propVal","templateProperties_2","ArrayBase","onlyProp","isSourceChanged","childrenDataSource","hasNewChildren","ComponentBase","isFormInit","changeTime","isTempRef","tempOnThis","ngBoundedEvents","complexTemplate","ngAttr","getAngularAttr","srenderer","complexTemplates","compProp","complexTemplates_1","ngAr","tempAfterViewThis","ngEle","ngtempRef","appendToComponent","tempOnDestroyThis","ngOnFocus","ngOnBlur","ngOnFocusBound","ngOnBlurBound","propKey","propValue","tempAfterContentThis","propObj","complexDirProps","compDirPropList","complexPropName","childObj","innerchild","innerLevelTag","innerTag","innerchildTag","updateChildTag_1","hasDiffLength","curChild","complexTemplates_2","Cn","twoWaySetter","addTwoWay","propList_1","eventObj","localEventObj","preventChange","isPreventChange","stringCompiler","FormBase","propagateTouch","localChange","objCheck","angularValue","duplicateValue","duplicateAngularValue","registerFunction","tempFormAfterViewThis","skipFromEvent","getTemplateEngine","setTemplateEngine","templateEle","contRef_1","pName_1","conRef","viewCollection","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","PaneProperties","setSplitterSize","setCssClass","setReversePane","setSeparatorSize","separatorSize","changeOrientation","paneSettings","destroyPaneSettings","allBars","allPanes","createSplitPane","getPanesDimensions","setRTL","isCollapsed","paneCounts","isPaneContentChanged","cPaneCount","changedPropsCount","resizableModel","collapsibleModelUpdate","collapsedOnchange","newValSize","updatePaneSize","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","avgDiffWidth","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","onReportWindowSize","reportWindowSize","onMouseMoveHandler","onMouseUpHandler","onTouchMoveHandler","onTouchEndHandler","wrapperParent","SPLIT_TOUCH","checkDataAttributes","setDimension","setPaneSettings","enableReversePanes","onDocumentClick","currentSeparator","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","convertPercentageToPixel","getMinInPixel","nextPaneIndex","prevPaneIndex","addStaticPaneClass","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","triggerResizing","collapsible","collapse","paneMinRange","convertPixelToNumber","sanitizeHelper","enableHtmlSanitizer","dataIndex","removeDataPrefix","paneIndex","dataAttr","paneAPI","restoreElem","childCount","paneCollection","paneValue","checkArrow","targetArrow","formatUnit","hideResizer","showResizer","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","updateIsCollapsed","lastBarArrow","lastBarIndex","targetArrows","beforeAction","beforeCollapseArgs","collapsedindex","collapseEventArgs","afterAction","splitterProperty","sizeValue","splitBar","resizeBar","checkSplitPane","currentBar","collectPanes","paneEle","getPrevPane","getOrderPane","getNextPane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","updateIconClass","leftArrow","rightArrow","createSeparator","addMouseActions","getPaneDetails","clonedEle","wireClickEvents","allBar","sepSize","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","updateCurrentSeparator","isSeparator","isMouseEvent","updateCursorPosition","changeCoordinates","coordinates","paneCount","updateSplitterSize","iswindowResize","updatePane","flexPane","sizeDiff","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","unwireResizeEvents","hoverBars","splitterDetails","collapseAction","beforeExpandArgs","expandPane","expandEventArgs","removeStaticPanes","collapseCount","flexStatus","collapseClass","isLeftOrUp","collapsePane","expandPaneIndex","cCount","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","flexGrow","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","targetIcon","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","otherPrevPaneIndex","otherNextPaneIndex","collapsecount","getCollapseCount","hideBarIcons","collapsePaneIndex","isFlexPaneHidden","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneExpanded","nextPaneNextEle","prevPanePreEle","previousElementSibling","showCurrentBarIcons","bar","checkResizableProp","getPrevBar","prevbar","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","resizeStartArgs","removePercentageUnit","convertedValue","percentage","offsetValue","calcDragPosition","rectValue","getSeparatorPosition","rectBound","offSet","getMinMax","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","cursorMoved","getBorder","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","calculateCurrentDimensions","flexPaneCount","allFlexiblePanes","middlePaneIndex","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","draggedPos","prevPaneHeightWidth","separatorTopLeft","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","panesDimension","sizeFlag","templateCompile","tempEle","compileElement","childEle","eleVal","templateFUN","childElement","separators","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","removePane","Collection","childnode","enableRipple","rippleSpan","rippleEffect","frameSpan","labelSpan","disableHtmlEncode","popupRect","parentDocument","parentDocument$1","targetContainer","Button","removeRippleEffect","tempContent","setIconCss","controlStatus","iconCss","iconPosition","isToggle","btnClickHandler","unWireEvents","getTextNode","CHECK","INDETERMINATE","RIPPLE","RIPPLECHECK","RIPPLEINDETERMINATE","WRAPPER","containerAttr","CheckBox","isMouseClick","clickTriggered","validCheck","changeState","isInitialize","isInterAction","focusOutHandler","changeEventArgs","updateVueArrayModel","focusHandler","initialCheckedValue","initWrapper","htmlAttributes","setHiddenInput","labelPosition","keyUpHandler","labelMouseDownHandler","rippleMouseHandler","labelMouseLeaveHandler","labelMouseUpHandler","rippleElem","labelWrap","updateHtmlAttributeToWrapper","ejInstance","wrapperInitialize","changeHandler","formResetHandler","formElem","fixedParent","fixedElement","anchorPos","tempAnchor","positionX","positionY","targetValues","posX","posY","setPosx","getElementHCenter","setPosy","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","getBodyScrollTop","getBodyScrollLeft","popupWidth","viewPortElement","elemData","calculatePosition","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","elemOffset","yAxis","topCollideCheck","xAxis","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","tEdge","eEdge","oldVisibility","updateElementData","leftFlip","topFlip","scaleX","scaleY","tranformElement","getTransformElement","transformStyle","DOMMatrix","bodyZoom","getZoomValue","setPopup","zoomValue","eStatus","getBodyScrollLeft$1","deepCheck","collideSide","collide","getBodyScrollTop$1","getTargetContainerTop","getTargetContainerLeft","documentReact","PositionData","CLASSNAMES","Popup","setEnableRtl","refreshPosition","actionOnScroll","wireScrollEvents","unwireScrollEvents","resolveCollision","checkCollision","relateTo","orientationOnChange","getRelateToElement","scrollRefresh","relateToElement","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollElement","scrollParents","parent_3","checkGetBoundingClientRect","windowView","outerHeight","elementView","parent_4","relateToElem","collision","checkFixedParent","parentDisplay","getAnchorPosition","eleRect","anchorEle","anchorRect","calculateRelativeBasedPosition","targetType","callFlip","callFit","isCollide","viewPortRect","horz","vert","relativeElement","fmDialogContainer","zIndexElement","getZindexPartial","showAnimation","OPEN","Animation$1","hideAnimation","parentStyle","overflowRegex","parentZindex","childrenZindex","isEqualNode","siblingsZindex","finalValue","currentZindexValue","selectedHandler","resizeWestWidth","RESIZE_HANDLER","FOCUSED_HANDLER","RESTRICT_LEFT","RESIZE_WITHIN_VIEWPORT","dialogBorderResize","originalWidth","originalHeight","originalX","originalMouseX","originalMouseY","resizeStart","resizeEnd","calculateValues","unselectable","contenteditable","domElement","borderResizers","targetEle","dialogResizeElement","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","getClientRectValues","calculatedHeight","borderValue","topWithoutborder","targetTop","calculatedTop","boundaryRectValues","rectValues","documentWidth","calculatedWidth","DialogUtility","ButtonProps","AnimationSettings","DLG_HEADER_CONTENT","DLG_HEADER","DLG_FOOTER_CONTENT","MODAL_DLG","DLG_CLOSE_ICON","DLG_TARGET","SCROLL_DISABLED","DEVICE","FULLSCREEN","DLG_CLOSE_ICON_BTN","DLG_SHOW","DLG_UTIL_DEFAULT_TITLE","DLG_UTIL_ROOT","DLG_UTIL_ALERT","DLG_UTIL_CONFIRM","DLG_RESIZABLE","DLG_RESTRICT_LEFT_VALUE","DLG_RESTRICT_WIDTH_VALUE","DLG_USER_ACTION_CLOSED","Dialog","initRender","enableResize","setResize","isModelResize","animationSettings","effect","getMinHeight","initializeValue","dlgClosedBy","allowMaxHeight","preventVisibility","closeIconClickEventHandler","dlgOverlayClickEventHandler","preventFocus","overlayClickEventArgs","focusContent","checkPositionData","prevOnChange","updatePersistData","dragObj","isNumberValue","getEle","computedHeaderHeight","computedFooterHeight","footerEle","footerHeight","setMinHeight","minimumHeight","dialogObj","dlgContainer","setPopupPosition","getTargetContainer","onResizeComplete","computedHeight","computedWidth","resizeHandles","directionValue","resizeBegin","resizing","resizeComplete","getDOMElement","directions","setBorderResizeElm","resizeHandler","createResize","wireWindowResizeEvent","unWireWindowResizeEvent","getFocusElement","keyDown","buttonObj","btnObj","ftrTemplateContent","contentEle","buttonIndex_1","isTagName","isContentEdit","closeOnEscape","primaryButtonEle","buttonModel","isBlazorServerRender","setCSSClass","setMaxHeight","initialRender","setzIndex","calculatezIndex","setTargetContent","setHeader","renderCloseIcon","setButton","setFooterTemplate","allowDragging","setAllowDragging","setIsModal","parentEle","refElement","popupObj","resetResizeIcon","openEventArgs","dlgOverlay","unBindEvent","closeArgs","activeEle","storeActiveElement","setEnableRTL","setOverlayZindex","targetValue","dialogConHeight","resizeIcon","zIndexValue","dragEventArgs","IsDragStop","buttonContent","btn","footerBtn","buttonClickHandler","headerEle","innerContentElement","templateProps","templateValue","dialogItem","isContent","createHeaderContent","showCloseIcon","closeIcon","closeIconBtnObj","closeIconTitle","prepend","oldCSSClass","getValidFocusNode","disableElement","getAutoFocusNode","validNode","elementMatch","msGetRegionContent","bindEvent","updateSanitizeContent","updateIsModal","unWireButtonEvents","destroyButtons","dialogOpen","setPopupZindex","currentzIndex","windowResizeHandler","setMaxWidth","removeAllChildren","classArray","resizeDestroy","boundWindowResizeHandler","getDimension","dialogHeight","eventArgs_1","beforeOpenArgs","openAnimation","isInteracted","closedBy","beforeCloseArgs","closeAnimation","getButtons","dialogObject","buttonPropModel","buttonProps","alert","alertDialogObj","dialogElement","createDialog","alertButtonModel","okButton","formButtonModel","setAlertButtonModel","formOptions","alertOptions","confirmDialogObj","okButtonModel","cancelButtonModel","setConfirmButtonModel","confirmOptions","ROOT$1","ICON$1","CLOSE","TOOLTIP_WRAP","CONTENT","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","TIP_BOTTOM","TIP_TOP","TIP_LEFT","TIP_RIGHT","POPUP_ROOT$1","POPUP_OPEN","POPUP_CLOSE","POPUP_LIB","POPUP_CONTAINER","Tooltip","mouseMoveEvent","mouseMoveTarget","isBodyContainer","formatPosition","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","tipClass","tooltipEle","elePos","mouseTrail","getTooltipPosition","openPopupHandler","closePopupHandler","getScalingFactor","scalingFactors","elementsWithTransform","matrixValues","parentWithZoomStyle","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionFlipFit","findTarget","needTemplateReposition","tooltipEventArgs","opensOn","tooltipAfterCloseEventArgs","xScalingFactor","yScalingFactor","tipWidth","tipHeight","tooltipEleWidth","tooltipEleHeight","arrowEle","tipAdjust","tipHeightAdjust","tipWidthAdjust","tooltipEleRect","arrowEleRect","showTipPointer","updateTipPosition","selEle","adjustArrow","leftValue","topValue","tipPosExclude","tooltipWidth","tooltipHeight","arrowInnerELe","tipPointerPosition","POINTER_ADJUST","tooltipContent","enableHtmlParse","tempArr","tempFunction","templateFunction","tipClose","onStickyClose","existingCloseIcon","addDescribedBy","removeDescribedBy","orgdescribedby","tapHoldHandler","autoCloseTimer","targetHover","touchEndHandler","TOUCHEND_HIDE_DELAY","targetClick","targetList_1","restoreElement","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showTimer","hideTimer","beforeRenderArgs","beforeRenderCallback","isHidden","tooltipBeforeRender","tooltipAfterRender","appendContainer","ctrlObj","observedArgs","beforeOpenCallback","openAnimation_1","wireMouseEvents","affectedPos","checkCollideTarget","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","eleOffset","windowCollision","arrowleft","positionString","newPos","offsetType","isTooltipOpen","tooltipHide","popupHide","unwireMouseEvents","tooltipHover","tooltipMouseOut","enteredElement","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","scrollHandler","triggerList_1","getTriggerList","wireFocusEvents","touchModule","tapHold","windowResizeBound","keyDownBound","touchEndBound","scrollWheelBound","targetList","targetsList","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","currentTarget_1","globalTimeOut","CLS_SHOWSPIN","CLS_HIDESPIN","CLS_MATERIALSPIN","CLS_MATERIAL3SPIN","CLS_TAILWIND3SPIN","CLS_FABRICSPIN","CLS_FLUENTSPIN","CLS_FLUENT2SPIN","CLS_TAILWINDSPIN","CLS_BOOTSPIN","CLS_BOOT4SPIN","CLS_BOOT5SPIN","CLS_HIGHCONTRASTSPIN","CLS_SPINWRAP","CLS_SPININWRAP","CLS_SPINCIRCLE","CLS_SPINTEMPLATE","internalCreateElement","makeElement","spinnerContainer","spinnerInnerContainer","inner_wrap","create_spinner_container","defaultSize","calculateRadius","random_generator","create_material_element","mat_calculate_attributes","createMaterialSpinner","createMaterial3Spinner","create_fabric_element","fb_calculate_attributes","createFabricSpinner","createFluentSpinner","createFluent2Spinner","svgBoot","viewBoxValue","trans","defaultRadius","bootCircle","create_bootstrap_element","rad","startArc","defineArcPoints","circleEle","boot_calculate_attributes","createBootstrapSpinner","createHighContrastSpinner","createBootstrap4Spinner","createBootstrap5Spinner","createTailwindSpinner","createTailwind3Spinner","setTheme","labelEle","createLabel","replaceContent","spinCSSClass","series","formSeries","combine","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","svgMaterial","matCirclePath","spinnerInfo","globalInfo","strokeSize","getStrokeSize","getDashOffset","updatePath","mat_animation","animateMaterial","createCircle","easeAnimation","drawArc","timecount","innerConainer","trgClass","centerX","defineCircle","endArc","defineArc","showHideSpinner","isHide","spinnerWrap","spinWrapCollection","inner","svgEle","isAnimate","globalObject","globalVariables","timeOutVar","startMatAnimate","generateSeries","boot_animate","animateBootstrap","subQuery","isChild","distincts","fKey","fromTable","lookups","expands","sortedColumns","groupedColumns","lazyLoad","always","executeQuery","DataUtil","executeLocal","cloned","subQuerySelector","isCountRequired","tableName","addParams","distinct","tables","where","fieldName","ignoreCase","ignoreAccent","matchCase","Predicate","searchKey","fieldNames","fnOperators","isFromGroup","sortByForeignKey","sorts","fnSort","filterQueries","sortByDesc","pageIndex","nos","selectorFn","foreignKey","requiresCount","filterQueryLists","singles","isComplex","processOperator","predicates","combinePredicates","ornot","andnot","fromJSONData","pred","isAnd","toJson","preds","GroupGuid","notEndsWith","notStartsWith","wildCard","asteriskSplit","optionalSplit","like","fnAscending","fnDescending","extractFields","jsonArray","aggregates","groupDs","isLazyLoad","indx","childLevels","grouped","groupedArray","this_2","getVal","tempObj","_loop_3","aggs","buildHierarchy","lookup","pKey","grp","fKeyData","getFieldList","lowerCaseNameSpace","upperCaseNameSpace","casing","ds","ignoreDiacritics","callAdaptorFunction","adaptor","fnName","param1","param2","getAddParams","adp","dm","reqParams","isCors","getGuid","getItemFromComparer","castRequired","requiresCompleteRecord","processData","prepareQuery","sampledata","DataManager","requiresCounts","parseJson","predicateList","getPredicate","mainPred","childPred","cpre","serverTimezoneOffset","timeZoneHandling","average","truecount","falsecount","operatorSymbols","odBiOperator","lessthan","lessthanorequal","greaterthan","greaterthanorequal","notequal","odUniOperator","endswith","startswith","doesnotendwith","doesnotstartwith","doesnotcontain","wildcard","odv4UniOperator","isnotnull","isnull","isempty","isnotempty","processSymbols","jsonText","iterateAndReviveArray","iterateAndReviveJson","jsonReviver","keys_2","dateParse","toTimeZone","secondsMs","utcFormat","hrs","addSelfOffset","isGuid","replacer","jsonReplacer","arrayReplacer","keys_3","jsonDateReplacer","toUTC","toLocalTime","datefn","differenceString","localtimefn","norm","consts$1","Adaptor","requestType","pvt","processResponse","JsonAdaptor","processQuery","countFlg","keyCount","agg","isGroupByFormat","lazyLoadData","lazyLoadGroup","getAggregate","onDemandGroupInfo","field_1","onSortBy","onPage","formGroupResult","onWhere","childLevel","aggQuery","batchRequest","deletedRecordsLen","deletedRecords","addedRecords","changedRecords","onAggregates","onSearch","isLazyLoadGroupSort","fnCompare","onGroup","onRange","onTake","onSkip","keyField","UrlAdaptor","hierarchyFilters","getQueryRequest","searches","getFiltersFrom","getRequestQuery","pvtData","convertToQueryString","request1","selects","handleTimeZone","requests","isExpand","formRemoteGroupedData","getAggregateResult","lvl","childLvl","getGroupedRecords","hasRecords","childGroupedRecords","batchUrl","crudUrl","removeUrl","deleted","table","insertUrl","keyColumn","updateUrl","predicats","aggregateData","isServerGrouping","groupQuery","ODataAdaptor","multipartAccept","batch","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","onPredicate","requiresCast","getField","splittedStringValue","splittedValue","onComplexPredicate","onEachWhere","onEachSearch","onEachSort","onCount","metaCheck","rootUrl","dataUrls","resourceTableName","dataCopy","emptyAndBatch","processBatchResponse","versionCheck","oDataCount","requiresFormat","keys_4","localTimeReplacer","convertObj","localTime","compareAndRemove","initialGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","generateBodyContent","org","cIdx","jsonObj","exVal","RemoteSaveAdaptor","updateKey","CustomDataAdaptor","addRecord","updateRecord","deleteRecord","batchUpdate","CacheAdaptor","isCrudAction","isInsertAction","cacheAdaptor","guidId","forDel","generateKey","currentFilter","newQuery","cachedItems","crossDomain","persistQuery","isInitialLoad","offline","timeTillExpiration","cachingPageSize","enableCaching","jsonp","defaultQuery","isDataAvailable","getPersistedData","persistedData","persistData","setPersistQuery","persistedQuery","keyword","allPredicates","predicateObj","nestedPredicates","nestedPredicate","setDefaultQuery","makeRequest","deffered","isCustomDataAdaptor","getDeferedArgs","nextTick","extendRequest","fnSuccess","fnFail","isSelector","virtualSelectRecords","fnQueryChild","subDeffer","childArgs","subUrl","childReq","subData","isGraphQLAdaptor","fetchReqOption","virtualRecords","fetch_1","pResult","cResult","dofetchRequest","deff_1","fetch_2","successFunc","failureFunc","fetchDeffered","fetchFunc","fetch_3","clearPersistence","ul","defaultIdx","liIdx","selectedLi","isValidLI","li","Item","DropDownMenuAnimationSettings","DropDownButton","isPopupCreated","canOpen","openPopUp","createPopupOnClick","createPopup","newItem","createItems","isUniqueId","len_1","getULElement","dropDown","getTargetElement","popupContent","splitButton","activeElem","isColorPicker","appendItems","hasIcon","itemTemplate","compiledTemplate_1","compiletemplate","tempItem","createAnchor","beforeDisabled","getPopUpElement","blankIcon","blankIconList","iconLi","cssProp","fontSize","setBlankIconStyle","appendArrowSpan","setActiveElem","prevElem","previousSibling","popupUnWireEvents","destroyPopup","popupEle","keyBoardHandler","dropDownButton","dropDownBtn","delegateMousedownHandler","mousedownHandler","popupWireEvents","popupElement","closeActionEvents","focusoutHandler","rippleFn","ITEM","upDownKeyHandler","keyEventHandler","triggerSelect","getLI","trgt","liTarget","selectEventArgs","popupElem","appendReactElement","ul_1","wrapperWidth","popupLeft","btnWidth","focusEle","ul_2","arrowSpan","containerAttributes","TEXTBOX_FOCUS","isBindClearAction","checkInputValue","floatLabelType","calculateWidth","bindFocusEventHandler","blurHandler","bindBlurEventHandler","bindInputEventHandler","__eventHandlers","inputFocusHandler","inputBlurHandler","inputParent","grandParent","LABELBOTTOM","_focusFn","_blurFn","wireFloatingEvents","createInputContainer","customTag","floatLinelement","floatLabelElement","encodePlaceHolder","inputWrap","updateLabelState","inputFloatHandler","validateLabel","inputEventHandler","blurFloatHandler","blurEventHandler","floatInputHandler","floatBlurHandler","unWireFloatLabelEvents","CLEARICONHIDE","clickHandlerEvent","clearClickHandler","inputHandlerEvent","updateIconState","focusHandlerEvent","blurHandlerEvent","clearInputHandler","clearFocusHandler","clearBlurHandler","tagClass","spanEle","_isElementVisible","elementWidth","floatTextContent","isReadonly","isEnable","disabledAttrs","considerWrapper","isClear","clearButton","wireClearBtnEvents","createClearButton","labelSpanElement","isRipple","argsButton","_onMouseDownRipple","_onMouseUpRipple","_onMouseRipple","iconClass","createIconEle","innerWrapper","_internalRipple","createInput","bindClearAction","createFloatingInput","bindInitialEvent","setClearButton","appendSpan","validateInputType","checkFloatLabelType","setPlaceholder","setReadonly","setPropertyValue","createSpanElement","blurHandler_1","inputHandler_1","unbindInitialEvent","unWireClearBtnEvents","unwireFloatingEvents","removeFloating","inputEle","addFloating","iconEle","inputObj","isPrependIcon","floatLine","floatText","setRipple","internalCreate","result_2","prependSpan","updateHTMLAttributesToElement","updateCssClass","getInputValidClassList","updateHTMLAttributesToWrapper","updatedClassValues","ListBase","INPUT_WRAPPER","DROP_AREA","LIST_PARENT","FILE","FILE_NAME","FILE_TYPE","FILE_SIZE","REMOVE_ICON","DELETE_ICON","SPINNER_PANE","ABORT_ICON","RETRY_ICON","DRAG_HOVER","PROGRESS_WRAPPER","PROGRESSBAR","PROGRESSBAR_TEXT","UPLOAD_INPROGRESS","UPLOAD_SUCCESS","UPLOAD_FAILED","TEXT_CONTAINER","VALIDATION_FAILS","RTL_CONTAINER","ICON_FOCUSED","PAUSE_UPLOAD","RESUME_UPLOAD","RESTRICT_RETRY","wrapperAttr$1","FORM_UPLOAD","INVALID_FILE","FilesProp","ButtonsProps","AsyncSettings","Uploader","initialAttr","uploadedFilesData","isForm","allTypes","pausedData","uploadMetaData","btnTabIndex","disableKeyboardNavigation","actionCompleteCount","selectedFiles","uploaderName","fileStreams","newFileRef","isFirstFileOnSelection","dragCounter","fileList","filesData","uploaderOptions","setExtensions","allowedExtensions","clearAll","setControlStatus","setMultipleSelection","reRenderFileList","browse","renderButtonTemplates","unBindDropEvents","updateDropArea","updateHTMLAttrToElement","updateHTMLAttrToWrapper","checkHTMLAttributes","renderPreLoadFiles","updateDirectoryAttributes","setLocalizedTexts","preLocaleObj","browseButton","localizedTexts","uploadWrapper","updateFileList","getKeyValue","keyValue","uploadButton","listParent","internalCreateFileList","actionButtons","removeActionButtons","renderActionButtons","checkActionButtonStatus","Browse","Clear","Upload","invalidFileName","dropFilesHint","invalidMaxFileSize","invalidMinFileSize","invalidFileType","uploadFailedMessage","uploadSuccessMessage","removedSuccessMessage","removedFailedMessage","readyToUploadMessage","pauseUpload","retry","fileUploadCancel","invalidFileSelection","formRendered","browserName","formElement","directoryUpload","renderBrowseButton","initializeUpload","isPreloadFiles","wireActionButtonEvents","serverActionButtonsEventBind","unwireActionButtonEvents","uploadButtonClick","clearButtonClick","uploadText","clearText","inputWrapper","dropAreaWrapper","setDropArea","clearData","files_1","fileData","validationMessages","minSize","statusCode","allowUpload","showFileList","sequentialUpload","dropTextArea","dropArea","dropZoneElement","enableDropText","createDropTextHint","bindDropEvents","fileDropArea","pro","uploadStyle","newAttr","createAttribute","setAttributeNode","checkAutoUpload","sequenceUpload","isFileListCreated","updatedOldCssClass","updatedCssClassValue","browseButtonClick","onSelectFiles","removeFocus","keyboardModule","keyActionHandler","getCurrentMetaData","abortUpload","resumeUpload","chunkUpload","removeFiles","fileInfo","targetMetaData","dropElement","dragHover","onPasteFile","pasteFile","getAsFile","renderSelectedFiles","getSelectedFiles","liElement","allFiles","getFilesData","nameElements","formUpload","isFormUpload","getFilesInArray","spinnerTarget","createSpinner","showSpinner","uploadSequential","checkActionComplete","removeFilesData","customTemplate","getLiElement","removeUploadedFile","removeDirectly","ajax","asyncSettings","currentRequest","removingEventCallback","removeCompleted","removeFailed","postRawFile","updateFormData","customFormData","updateCustomheader","getResponse","operation","updateStatus","statusElement","hideSpinner","getFilesFromFolder","filesEntries","checkDirectoryUpload","webkitGetAsEntry","files_2","fileObj","isDirectory","traverseFileTree","directoryReader","createReader","readFileFromDirectory","readEntries","pushFilesEntries","_loop_4","targetFiles","sortFilesList","sortFileList","getBase64","fileReader","FileReader","readAsDataURL","paste","isModified","modifiedFilesData","progressInterval","isCanceled","updateInitialFileDetails","sanitizeFile","sanitizeFileName","currentFileName","i_1","hasHTMLString","encodedFileName","checkExtension","_internalRenderSelect","fileDetails","getFileType","webkitRelativePath","validatedFileSize","fileSource","dataFiles","updateSortedFileList","raiseActionComplete","allowFormUpload","saveUrl","singleUpload","previousListClone","createParentUL","dropFiles","extensions_1","checkFileType","fileSize","minSizeError","maxSizeError","minFileSize","isPreLoadFile","isPreload","createCustomfileList","fileData_1","listItem","listElement","uploadTemplateFn","templateComplier","liTempCompiler","eventsArgs","formFileList","statusMessage","fileContainer","fileData_2","fileNameEle","getFileNameOnly","fileTypeEle","fileType","rtlContainer","truncateName","formValidateFileInfo","setListToFileInfo","infoEle","bytesToSize","getFileSize","createFormInput","iconElement","mergeFileInfo","addInvalidClass","typeValidationMessage","fileData_3","fileData_4","fileNames","fileData_5","statusForFormUpload","fileData_6","formCustomFileList","createFileList","fileData_7","textContainer","textElement","fileExtension","preventActionComplete","getSlicedName","nameElement","fileData_8","setInitialAttributes","filterfileList","filterFiles","updateLiStatus","createProgressBar","progressbarWrapper","progressbarInnerWrapper","progressbarText","updateProgressbar","changeProgressValue","progressValue","uploadInProgress","customUI","cancelUploadingFile","updateProgressBarClasses","ajax_1","removecanceledFile","renderFailureState","requestResponse","removeProgressbar","deleteIcon","pauseButton","reloadcanceledFile","uploadComplete","raiseSuccessEvent","uploadFailed","spinnerEle","getSelectedFileStatus","matchFiles","matchFilesIndex","selectFileIndex","selectedFileData","fileDataIndex","callType","animateProgressBar","extensions","uploadTemplate","exception","attributes_1","isMutiple","fileIndex","chunkSize","sendRequest","chunkIndex","retryCount","totalChunk","chunkUploadComplete","chunkUploadInProgress","currentChunkIndex","uploadingEventCallback","chunkUploadFailed","eventCancelByArgs","checkChunkUpload","updateMetaData","sendNextRequest","removeChunkFile","removeChunkProgressBar","pauseIcon","chunkCount","retryRequest","retryAfterDelay","file_1","failureMessage","checkPausePlayAction","retryUpload","fromcanceledStage","retryElement","clearIcon","progressVal","totalChunks","abortIcon","sortedFilesData","sortedFileNames_1","name_3","attributes_2","uploadFiles_1","customFormDatas","uploadFiles","serverReadFileBase64","totalCount","reader","uploadFileCount","getFileRead","fileCount","uploadFilesRequest","chunkEnabled","name_4","spliceFiles","liIndex","beforeEventArgs","isLiRemoved","removingFiles_1","validUrl","_loop_5","fileUploadedIndex","removeFiles_1","fileDataFiles","pauseUploading","getFiles","resumeFiles","retryFailedFiles","cancelingFiles","cancelUpload","showHideUploadSpinner","TextBox","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","bindClearEvent","raiseChangeEvent","checkAttributes","multiline","globalize","cloneElement","apiAttributes","attrs_1","setInitialValue","animationHandler","resetValue","isInteraction","resetInputHandler","keyupEvent","keyEntity","hasChild","iconWrapper","anchorWrap","navigable","fieldData","isHeader","dataField","defaultMappedFields","isChecked","urlAttributes","imageAttributes","defaultAriaAttributes","listRole","itemRole","groupItemRole","itemText","wrapperRole","defaultListBaseOptions","showCheckBox","expandCollapse","ariaAttributes","listClass","itemClass","processSubChild","groupTemplate","expandIconClass","expandIconPosition","itemNavigable","isSingleLevel","generateUL","createListItemFromArray","subChild","curOpt","getModuleClass","generateId","itemCreating","Cr","generateSingleLevelLI","generateLI","itemCreated","checkboxElement","anchorElement","typeofData","getFieldValues","curItem","innerEle","tooltipTextElement","imageElemnt","createListItemFromJson","elementArray","liCollections","typeof","elementAttributes","subDS","subLi","createListFromJson","innerElements","grpLI","elementID","_o","anchorTag","isFullNavigation","anchorWrapper","uID","compiledString","compileTemplate","groupTemplateID","templateID","innerDiv","ulElement","createList","createListFromArray","getSiblingLI","isPrevious","siblingLI","groupDataSource","curFields","cusQuery","getDataSource","addSorting","itemObj","grpItem","hdr","newtext","createJsonFromElement","curEle","jsonAr","childs","hasChildNodes","getAllAttributes","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","category","headerItems_1","headerData","generateIcon","expandElement","ToastUtility","CONTAINER","WIDTHFULL","CLOSEBTN","ToastPosition","ButtonModelProps","ToastAnimations","ToastAnimationSettings","toastCollection","isBlazorServer","screen","progressObj","contentTemplate","toastTemplate","initRenderClass","toastObj","collectionObj","templateChanges","toastContainer","setPositioning","isToastModel","toastEle","setWidthHeight","personalizeToast","templateRendering","setProgress","setCloseButton","setAria","appendToTarget","swipe","swipeHandler","showToast","lastElementChild","hideToast","clearContentTemplate","clearToastTemplate","fetchEle","destroyToast","prob","tempVar","tmpArray","clo","initializeCSPTemplate","clearProgress","removeToastContainer","isClosed","clearContainerPos","customPosition","toastBeforeClose","hideAnimate","toastClose","toastBeforeCloseArgs","progressEle","setIcon","closeBtn","hideEta","maxHideTime","timeOutId","extendedTimeout","toastHoverAction","delayedToastProgress","progressBarEle","updateProgressBar","progressDirection","ICON","titleEle","msgContainer","tempEle_1","appendMessageContainer","actionBtnContainer","actionBtn","btnDom","toastBeforeOpen","toastBeforeOpenArgs","keyDownHandler","displayToast","clickArgs","clickToClose","isCloseIcon","toastClickArgs","showAnimate","toastOpen","toastContainerElement","untilToastsModel","TEXTSHAPE","CIRCLESHAPE","SQUARESHAPE","RECTANGLESHAPE","WAVEEFFECT","PULSEEFFECT","FADEEFFECT","VISIBLENONE","Skeleton","updateDimension","updateShape","updateEffect","updateVisibility","shape","shapeCss","removeCss","shimmerEffect","CLS_RTL","CLS_DISABLE","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","HScroll","browserCheck","customStep","ieCheck","touchHandler","scrollEle","createOverlay","createNavIcon","setScrollState","innerEle_1","scrollItems","navEles","rightOverlayEle","clsRight","rightEle","leftEle","eventBinding","rightAttributes","clsLeft","leftAttributes","navEle","navLeftItem","keyTimer","keyTimeout","eleScrolling","timeoutFun_1","onKeyUp","tabHoldHandler","repeatScroll","clickEventHandler","timeoutFun","scrollDis","isContinuous","rootEle","frameScrollRequest","swipeEle","scrollUpdating","scrollVal","scrollValue","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","disEle","CLS_RTL$1","CLS_DISABLE$1","CLS_NAVARROW$1","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_DEVICE$1","CLS_OVERLAY$1","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","scrollBar","navs","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","swipeElement","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","containerOffset","contentOffset","parentElem","createScrollbar","scrollObj","skipEle","FOCUSED","SELECTED","SEPARATOR","UPARROW","DOWNARROW","LEFTARROW","RIGHTARROW","HOME","END","CARET","HIDE","ICONS","POPUP","FieldSettings","MenuItem","MenuAnimationSettings","MenuBase","navIdx","isTapHold","showSubMenuOn","isAnimationNone","isMenu","ejInst","clonedElement","refEle","renderItems","enableScrolling","addScrolling","hamburgerMode","createHeaderContainer","showItemOnClick","removeChildElement","targetElems","menuHeaderClickHandler","cmenuHandler","delegateMoverHandler","moverHandler","delegateMouseDownHandler","mouseDownHandler","domKeyHandler","delegateClickHandler","wireKeyboardEvent","closeMenu","keyHandler","leftEscKeyHandler","actionName","actionNeeded","removeLIStateByClass","rightEnterKeyHandler","cul","getUlByNavIdx","fliIdx","fli","getLIByClass","getIdx","cli","navIdxLen","popups_1","allPopup","keyType","openMenu","aEle","sli","isCMenu","ulIndex","isIterated","item_1","items_1","wrapper_1","popups","getPopups","isClose","liElem_1","observedCloseArgs","popupId","unWireKeyboardEvent","destroyScroll","isContextMenuClosed","toggleAnimation","showSubMenu","updateReactTemplate","trgtliId","closedLi","trgtLi","trgtpopUp","submenus","afterCloseMenu","isMenusClosed","isCmenuHover","sli_1","cliIdx","item_2","removeStateWrapper","portals","getMenuItemModel","lItem","elemId","uList","hdata","hli","popupWrapper","isNestedOrVertical","generatePopup","calculateIndentSize","triggerBeforeOpen","targetEvent","liStyle","liIndent","textIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent","triggerOpen","spanElem","tempTitle","spanTitle","spanIcon","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","observedElement","menuType","observedOpenArgs","checkScrollOffset","offWidth","iconCssProps","iconSize","offsetEle","offsetRight","px","toggleVisiblity","xCollision","menuVScroll","cmenuWidth","getMenuWidth","cmenu","caretIcon","hasField","listBaseOptions","liTrgt","hdrWrapper","isDifferentElem","menuWrapper","cliWrapper","isInstLI","cliWrapperId","setLISelected","culIdx","getItems","newItems","skipHdr","ulElem","updateItemsByNavIdx","updateItem","ul_3","getChangedItemIndex","insertAfter","ul1","popStr","uls","targetSelctor","isMenuOpen","pUlHeight","pElement","animateElement","scrollMenu","nIndex","isCallBack","currentField","enableItems","skipItem","showItems","showHideItems","hideItems","ishide","validUl","iitems","insertItems","menuitem","parentId","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_RTL$2","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_DISABLE$2","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARCENTER","CLS_TBARPOS","CLS_HSCROLLBAR$1","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDEDPOPOPEN","resizeContext","orientationChangeContext","orientationChange","moveLeft","moveRight","moveUp","moveDown","popupOpen","popupClose","btnItems","destroyItems","trgtEle","ctrlTem","popObj","tbarAlign","tbarItemsCol","attrb","enableCollision","scrollModule","isExtendedOpen","popupPriCount","allowKeyboard","keyModule","docKeyDown","updateTabIndex","dataTabIndex","unwireKeyboardEvent","popCheck","overflowMode","clickEvent","clearProperty","tbarEle","tbarAlgEle","centers","docEvent","popEle","tbarItems","destroyMode","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","clst","keyHandling","navChk","scrollChk","popAnimate","eleFocus","popupCheck","extendedPopup","focusFirstVisibleEle","focusLastVisibleEle","popFrstEle","ele_1","activeEleRemove","tbarScrollChk","eleContains","sib","tbrItems","isPopupElement","clsList","popupNav","popupClickHandler","clickedArgs","getToolbarPopupWidth","getElementOffsetY","eleStyles","renderControl","refreshOverflow","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","showAlwaysInPopup","initScroll","innerItems","itemWidthCal","getScrollCntEle","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","ariaAttr","eleItem","multiVar","extendVar","eleInlineItem","innerNav","createPopupIcon","checkPriority","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodePri","re","tbResize","tbarElement","sepItem","extendEle","popupInit","tbarPopupHandler","toolEle","popupElePos","popIcon","overflowHeight","tbEleData","popupOffset","inEle","popPriority","eleWid","sepCheck","itemCount","itemPopCount","checkClass","rVal","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","sepEle","popedEle","tbarPriRef","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","btnText","eleSplice","inlineStyles","sepBeforePri_1","Lt","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","leftAlign_1","ctrlTemplate","setAttr","getElementByIndex","extendedOpen","itemsDiv","itemsRerender","itemAgn","algIndex","removeItemByIndex","eleIdx","indexAgn","clearToolbarTemplate","btnItem","templateRender","templateProp","regEx","tempArray","getDataTabindex","buttonRendering","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","tempDom","itemClick","showTextOn","sTxt","previousEle","tabindexValue","multirowele","updateHideEleTabIndex","eleIndex","nextEle","registeredTemplates","registeredItem","closestItem","portalItem","tEle","changedProb","newProperty","booleanCheck","itemCol","ContextMenu","EXPANDABLE","LISTITEM","LISTTEXT","PARENTITEM","ACTIVE","LOAD","PROCESS","TEXTWRAP","INPUTGROUP","TREEINPUT","EDITING","INTERACTION","DROPPABLE","DRAGGING","SIBLING","DROPIN","DROPNEXT","DROPOUT","NODROP","FULLROW","SELECTED$1","EXPANDED","NODECOLLAPSED","DISABLE","CHECKBOXWRAP","CHECKBOXFRAME","FOCUS","IMAGE","ITEM_ANIMATION_ACTIVE","DISABLED$1","PREVENTSELECT","treeAriaAttr","treeRole","FieldsSettings","ActionSettings","NodeAnimationSettings","TreeView","isRefreshed","preventExpand","checkedElement","disableNode","validArr","validNodes","isFieldChange","changeDataSource","hasTemplate","isFirstRender","isNodeDropped","isRightClick","mouseDownStatus","isDropIn","OldCheckedData","isHiddenItem","TreeView_1","checkActionNodes","parentNodeCheck","dragStartAction","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","ctrlA","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","shiftSpace","ctrlSpace","listBaseOption","beforeNodeCreate","fullRowNavigable","updateListProp","aniObj","treeList","isLoaded","isInitalExpand","setTouchClass","DDTTreeData","checkedNodes","expandedNodes","setDataBinding","setDisabledMode","setExpandOnType","wireEditingEvents","setDragAndDrop","allowDragAndDrop","setFullRow","fullRowSelect","setTextWrap","nodeTemplateFn","nodeTemplate","RTL$1","rippleIconFn","iconModel","FULLROWWRAP","setMultiSelect","isOffline","isNumberTypeId","setRootData","getQuery","rootData","parentID","getDataType","groupedData","getGroupedData","rootItems","getChildNodes","isChildObject","sortedData","getSortedData","loadOnDemand","renderChildNodes","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","updateParentCheckState","resultData","resultId","checkDisabledState","childData","childId","mapper_1","checkState","getCheckedNodeDetails","checkIndeterminateState","checkedId","checkedData","fieldId","childItems","updateChildCheckState","preElement","childCheckedElement","OldCheckedNodes","nodeCheck","checkedParent","checkedChild","subChildItems","checkboxEle","createCheckBox","touchClass","checkValue","addCheck","frame","frameMouseHandler","createFullRow","allowMultiSelection","addActionClass","textEle","dataId","renderNodeTemplate","nodeData","actionValue","isFromExpandAll","expandChild","updateAttributes","eNodes","updateList","updateCheckedProp","iNodes","sNodes","cNodes","disableExpandAttr","ensureIndeterminate","ensureParentCheckState","ensureChildCheckState","indeterminateNodes","checkDisabledChildren","checkBoxEle","checkedCount","matchedChildNodes","oldChildCount","dataUid_1","rootNodeChecked_1","childNodeChecked_1","parentNodeChecked","getSelectedChildNodeDetails","parentUL","currentParent","dataUid","checkedNodeId","childNodePid","pid","checkBoxes","childCheck","dataUID","childIds","parentCheck","checkedState","currentLoadData","isNodeChecked","doCheckBoxAction","doCheck","updateFieldChecked","liEle","getElement","setValidCheckedNode","dynamicCheckState","updateField","checkBox","validateCheckNode","currLi","getNodeData","updateIndeterminate","updateChildIndeterminate","indeterminateData","getTreeData","subId","childElementCheck","innerChild","isPrevent","nodeCheckAction","getCheckEvent","ariaState","removeCheck","ensureStateChange","firstUl","firstNode","updateIdAttr","allowTextWrap","updateWrap","hasPid","doExpandAction","IELISTWRAP","ulEle","liList","calculateWrap","eUids","expandGivenNodes","eNode","afterFinalized","expandCallback","eUid","doSelectionAction","sUids","sNode","selectGivenNodes","rippleIcons","removeHover","setFocusElement","checkWrapper","checkElement","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","isCheck","updateOldCheckedData","uncheckedItems","expandNode","start_1","end_1","liEle_1","activeElement_1","animateHeight","expandedNode","addExpand","expandArgs","getExpandEvent","colArgs","nodeCollapseAction","collapsedNode","removeExpand","parentLi","eicon","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","nodeLevel","dataLevel","getChildMapper","isRoot","getChildGroup","findChildNodes","findNestedChildNodes","tempField","objlen","idField","nestedChildNodes","cIcons","curLi","multiSelect","unselectNode","getSelectEvent","nodeSelectAction","removeSelectAll","startNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","selectedLI","selectedLI_1","expandOnType","expandOn","expandHandler","expandCollapseAction","nodeExpandAction","liEles","icon_1","inpEle","oldText","checkNode","openNode","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","focusNode","parentPos","isVisibleInViewport","txtWrap","isTowards","getNextNode","getPrevNode","checkWrap","nodeCheckingAction","allCheckNode","childMatchesCheckedNodes","getChildItems","filteredChildItems","itemValue","childStateChange","requiresUpdate","shouldPreventUpdate","childIsCheck","newCheck","validateCheck","hierChildId","childId_1","toBeOpened","focusNextNode","isBackwards","getEndNode","selectedItem","fNode","ariaChecked","prevNode","endNode","preNode","currentLi","setHover","hoveredNode","fromDS","nodeFields","destroyTemplate","reRenderNodes","editingHandler","oldInpEle","updateOldText","getEditEvent","style_1","renderTextBox","wireInputEvents","editData","editFields","inputFocusOut","newText","txtEle","crudOperation","appendNewText","updateText","getNode","getChildNodeObject","toBind","initializeDrag","destroyDrag","virtualEle","dragRoot","dragWrap","dragLi","isSameNode","cloneEle","DRAGITEM","nLen","cNode","getDragEvent","draggedNode","dragCancelAction","dragAction","removeVirtualEle","dropRoot","preventTargetExpand","dragParent","draggedParentNode","dropObj","dropAction","getOffsetX","getOffsetY","dropWrap","dropLi","isDescendant","templateTarget","appendIndicator","renderVirtualEle","dropIndicator","virEle","liArray","dragInstance","appendNode","dropAsChildNode","dropAsSiblingNode","dropUl","dragParentUl","dragParentLi","moveData","updateAriaLevel","updateInstance","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","dropIcon","collapseIcon","dragIcon","updateChildAriaLevel","sibEle","dragNode","dropData","draggedNodeData","newParent","dragLiParent","targetParent","indexValue","dropTar","parent_2","clonedNode","droppedNode","droppedNodeData","dropIndex","dropLevel","addFullRow","rowDiv","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons_1","vNodes","removeData","updateSelectedNodes","updateExpandedNodes","currId","doGivenAction","toExpand","addGivenNodes","isRemote","dropEle","updateMapper","dropIcon1","refNode","navigateUrl","validID","checkValidId","doEnableAction","strNodes","filterNestedChild","updatePersistProp","removeField","sleNodes","slelen","enodes","nodelen","cnodes","getMapperProp","touchEditObj","isDoubleTapped","wireClickEvent","touchClickObj","wireExpandOnEvent","touchExpandObj","secondTap","firstTap","setCheckedNodes","nodeChecked","uncheckAll","setIndeterminate","checkAll","setChildCheckState","isParentNodeCheck","isRefreshChild","childValue","updateChildPosition","currID","dynamicState","newNode","prevent","crud","matchedArr","nodesID","deleteSuccess","dmFailure","editSucess","addSuccess","updatePreviousText","getHierarchicalParentId","parentsID","onLoaded","addNodes","ensureVisible","beginEdit","disableNodes","enableNodes","parentsId","behavior","preventAnimation","getAllCheckedNodes","getDisabledNodes","moveNodes","sourceNodes","refreshNode","updatedChildValue","newNodeData","refreshData","newliEle","newTextEle","newIcon","fullEle","gi","removeNodes","updateNode","queryString","prevString","tempQueryString","prevElementId","elementId","queryStringUpdated","isVirtual","VM","listItems","indexUpdated","TimePickerBase","dropDownBaseClasses","DropDownBase","isDynamicDataChange","addedNewItem","isAddNewItemTemplate","isRequesting","isVirtualizationEnabled","isCustomDataUpdated","isAllowFiltering","virtualizedItemsCount","isCheckBoxSelection","totalItemCount","dataCount","remoteDataCount","isRemoteDataUpdated","isIncrementalRequest","virtualListHeight","isVirtualScrolling","isPreventScrollAction","scrollPreStartIndex","isScrollActionTriggered","previousStartIndex","isMouseScrollAction","isKeyBoardAction","isScrollChanged","isUpwardScrolling","currentPageNumber","isPreventKeyAction","generatedDataObject","skeletonCount","isVirtualTrackHeight","virtualSelectAll","incrementalQueryString","incrementalEndIndex","incrementalStartIndex","incrementalPreQueryString","isObjectCustomValue","appendUncheckList","getInitialData","preventPopupOpen","virtualSelectAllState","CurrentEvent","isDynamicData","isPrimitiveData","virtualListInfo","sentinelInfo","viewPortInfo","selectedValueInfo","getPropObject","oldProperty","getValueByText","listData","checkValueCase","isTextByValue","fields_1","typeOfData","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","compareValue_1","textItem","typedText","getFormattedValue","templateCompiler","baseTemplate","checkTemplate","l10nUpdate","actionFailure","noRecordsTemplate","actionFailureTemplate","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","noDataElement","liElem","componentLocale","getLocaleName","checkAndResetCache","virtualItemStartIndex","virtualItemEndIndex","updateIncrementalInfo","updateVirtualItemIndex","resetList","updateIncrementalView","UpdateSkeleton","getFilteringSkeletonCount","currentSkeletonCount","getSkeletonCount","skeletonUpdated","GetVirtualTrackHeight","virualElement","getTransformValues","retainSkeleton","listContainerHeight","actualCount","virtualItemCount","heightDimension","translateY","styleText","isSkeletonCountChange","isContainSkeleton","isContainVirtualList","totalSkeletonCount","getTextByValue","allowCustomValue","enableRtlElements","jsonElement","setListData","renderItemsBySelect","updateDataAttribute","invalidAttr","isSelectGroupCheck","isGroupChecking","getJSONfromOption","optionGroup","updateFields","isRequested","isDataFetched","itemTemplateId","displayTemplateId","spinnerTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","NORECORDSTEMPLATE_PROPERTY","isWhereExist_1","emptyDataRequest","isReOrder","queryElements","onActionComplete","bindChildItems","setCurrentView","handleVirtualKeyboardActions","virtualSelectAllData","virtualSelectionAll","onActionFailure","virtualGroupDataSource","localDataArgs","updateDataList","updatePopupState","updateRemoteData","remainingItems","updateListValues","raiseDataBound","isObjectInArray","objectToFind","findListElement","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","noData","fixedHeaderElement","postRender","disableListItem","focusItem","updateVirtualizationProperties","filtering","isCheckbox","listEle","groupcheck","tempHeaders","createListItems","getSortedDataSource","preventDefActionFilter","fieldValues","setFloatingHeader","setFixedHeader","scrollStop","isDownkey","getValidLi","liHeight","virtualListCount","updateGroupHeader","getPageCount","returnExactCount","updateGroupFixedHeader","isCheckBoxUpdate","incrementalLiCollections","incrementalUlElement","incrementalListData","oldUlElement","virtualUlElement","reOrderList","updateListElements","createVirtualContent","itemcheck","liWidth","firstLi","textField","getIndexByValue","getIndexByValueFilter","setFields","selectData","updateSelectElementData","isFiltering","renderList","updateDataSource","setUpdateInitial","setZIndex","isEmptyData","rippleFun","removeScrollEvent","itemIndex","itemsCount","isListboxEmpty","selectedItemValue","itemCheck","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","isDisabledElement","isDisabledItemByIndex","validationAttribute","getDataByValue","dropDownListClasses","inputFocus","iconAnimation","device","backIcon","filterBarClearIcon","filterInput","filterParent","mobileFilter","clearIconHide","popupFullScreen","disableIcon","hiddenElement","virtualList","DropDownList","isListSearched","isTouched","autoFill","isUpdateHeaderHeight","isUpdateFooterHeight","valueTempElement","initializeData","activeIndex","isPopupOpen","isDocumentClick","isFilterFocus","beforePopupOpen","initialRemoteRender","isNotSearchList","preventAutoFill","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isCustomFilter","isSecondClick","keyConfigure","pageUp","pageDown","enableVirtualization","unWireListEvents","wireListEvents","floatLabelChange","floatElement","resetHandler","previousEndIndex","resetFocusElement","removeSelection","previousItemData","itemData","resetSelection","getItemData","allowObjectBinding","allowCustom","updateInitialData","onChangeEvent","allowFiltering","setSelection","setHTMLAttributes","htmlAttr","updatedClassValue","setEnable","defaultAttr","getAriaAttributes","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","updateValues","isDisableItemValue","objectValue","setHiddenValue","onBlurHandler","isFilterLayout","focusOutAction","resizingWireEvent","resizePopup","stopResizing","resizingUnWireEvent","resetValueHandler","wireEvent","dropDownClick","bindCommonEvent","mobileKeyActionHandler","unBindCommonEvent","onMouseClick","searchKeyEvent","onServerIncrementalSearch","incrementalSearch","startResizing","resizeWidth","resizeHeight","hoveredItem","updateIncrementalItemIndex","updatingincrementalindex","setScrollPosition","enableLiCollections","spinnerElement","filterInputObj","preventAction","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","pageDownSelection","updateHomeEndAction","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isVirtualKeyAction","filterIndex","isSelectFocusItem","selectedLiOffsetTop","selectedData","focusAtFirstElement","findLi","previousItem","validIndex","PageUpDownSelection","unWireEvent","checkSelector","activeStateChange","proxy_1","updateSelectedItem","preventSelect","isSelection","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","focusedItem","valueTemplate","setValueTemplate","previousSelectedLI","dropdownCompiler","dropdownTemplate","valuecheck","valueCompTemp","dataText","eve","isCustomValue","datas","detachChangeEvent","preItems","onFilterUp","filterArgs","searchLists","executeCloneElements","onFilterDown","getSelectionPoints","removeFillSelection","filterQuery","customFilterQuery","takeValue","getTakeValue","alreadySkipAdded","queryTakeValue","querySkipValue","selectionStart","selectionEnd","preventDefaultAction","filteringAction","baseEventArgs","isNoData","popupContentElement","focusIndexItem","setSearchBox","isDeviceFullScreen","filterBarPlaceholder","spellcheck","clearIconElement","searchKeyModule","onInput","pasteHandler","updateActionCompleteDataValues","tempItemCount","checkField_1","value_1","fieldValue_1","checkVal","setInputValue","isValueInList","addNewItem","valueToFind","fieldValue","checkField","newElement","value_2","actionCompleteDataUpdate","updateSelectionList","findEle","highlightedItem","refreshPopup","searchBox","popupHeight","setHeaderTemplate","listitems","searchBoxHeight","getOffsetValue","isEmptyList","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","selectedElementID","scrollBottom","popupHeightValue","listHeight","allowResize","resizer","popupStyles","actionList","targetExitViewport","isElementInViewport","lastItem","isInitial","isInitialSelection","selectedListMargin","lastElementValue","nextBottom","nextOffset","isScrollerCHanged","boxRange","currentElementValue","liCount","IsScrollerAtEnd","firstElementValue","isPageUpKeyAction","isPopupButton","setEleWidth","isFilterValue","scrollableParentElements_1","dataSourceCount","fixedHeader","preselectedIndex","updatedCssClassValues","getListHeight","selectElement","onselect","listParentHeight","footercheck","footerCompTemp","headercheck","headerCompTemp","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","checkValidLi","setSelectionData","listLength_1","listLength_2","value_3","ddlProps","state_1","invokeRenderPopup","proxy_2","onpopstate","renderHightSearch","isSelectVal","disableItem","HTMLLIElement","parsedData","resetIncrementalSearchValues","attrArray","createdEl","timeCollections","listTag","Save","getMimeType","isMicrosoftBrowser","msSaveBlob","downloadLink","saveInternal","hasDownloadAttribute","dataUrl_1","reader_1","onloadend","Encoding","includeBom","emitBOM","encodingType","initBOM","getByteCount","validateNullOrUndefined","utf8Len","getByteCountInternal","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","getBytes","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","getString","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","bufview","charcode","uint","uint16","byteUni","byte16","StreamWriter","bufferBlob","bufferText","setBomByte","arrayUnicode","arrayUtf8","utf8","bufferArray","writeLine","Utils","bitReverse","reverseBits","bitConverterToInt32","bitConverterToInt16","bitConverterToUInt32","bitConverterToUInt16","bitConverterUintToInt32","bitConverterInt32ToUint","bitConverterInt32ToInt16","byteToString","byteIntToString","arrayCopy","sourceIndex","destinationIndex","dataToCopy","subarray","mergeArray","arrayOne","arrayTwo","mergedArray","encodedString","chr2","chr3","encode1","encode2","encode3","encode4","keyStr","resultIndex","totalLength","huffCodeLengthOrders","CRC32TABLE","ZipArchive","initCrc32Table","ZipArchiveItem","addDirectory","directoryName","zipByteArray","DOMException","Stream","lCentralDirEndPosition","findValueFromEnd","iCentralDirSize","ReadInt32","readCentralDirectoryDataAndExtractItems","itemHelper","ZipArchiveItemHelper","readCentralDirectoryData","readData","checkCrc","decompressData","unCompressedStream","zipArchive","saveAsBlob","skipFileSave","zipData","dirLength","getCompressedData","constructZippedObject","writeZippedContent","crc32Value","compressedData","compressedSize","uncompressedDataSize","compressionType","compressData","calculateCrc32Value","readAsArrayBuffer","crc32Table","compressor","CompressedStreamWriter","subArray","zipParts","extFileAttr","writeHeader","localHeader","centralDir","writeCentralDirectory","zipHeader","getModifiedTime","getModifiedDate","localDirLen","cenDirLen","getArrayBuffer","writeFooter","externalFileAttribute","directoryHeader","centralLength","localLength","dirEnd","modTime","modiDate","lStreamSize","inputStream","arrBuffer","lLastPos","lCurrentPosition","uiCurValue","bFound","readByte","ReadInt16","ReadUInt16","headerSignature","crc32","compressionMethod","originalSize","iFileNameLength","iExtraFieldLenth","iCommentLength","externalAttributes","localHeaderOffset","m_strItemName","readLocalHeader","readCompressedData","decompressDataOld","decompressedData","CompressedStreamReader","compressedStream","iReadBytes","toByteArray","iNameLength","iExtraLength","dataStream","iBytesLeft","iBytesToRead","itemName","decompressedStream","ARR_LITERAL_CODES","ARR_LITERAL_LENGTHS","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","noWrap","pendingBuffer","pendingBufLength","pendingBufCache","pendingBufBitsInCache","bufferPosition","extraBits","currentHash","matchStart","matchLength","matchPrevAvail","blockStart","stringStart","lookAhead","totalBytesIn","inputOffset","inputEnd","windowSize","windowMask","hashSize","hashMask","hashShift","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","arrLiterals","dataWindow","hashHead","hashPrevious","writeZLibHeader","compressedString","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","headerDate","pendingBufferWriteShortBytes","fillWindow","compressSlow","lookAheadCompleted","slideWindow","prevMatch","prevLen","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","more","updateHash","chainLen","niceLen","bestEnd","bestLength","stringEnd","scanEnd1","scanEnd","literal","codeFrequencies","dist","lc","huffmanLengthCode","dc","huffmanDistanceCode","storedOffset","storedLength","buildTree","calculateBLFreq","blTreeCodes","codeLengths","opt_len","getEncodedLength","static_len","huffmanFlushStoredBlock","pendingBufferWriteBits","setStaticCodes","huffmanCompressBlock","huffmanReset","huffmanSendAllTrees","pendingBufferAlignToByte","pendingBufferWriteShort","pendingBufferWriteByteBlock","buildCodes","treeLength","rank","writeTree","literalLen","writeCodeToStream","bits","pendingBufferFlushBits","writer","elementCount","minCodes","codeMinCount","codeFrequency","lengthCount","codeCount","codeLength","lengths","lengthTemp","nextCode","bitsCount","blTree","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","freq","pPos","nodesCount","iIndex","constructHuffmanTree","buildLength","lastVal","minDepth","numNodes","numLeafs","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","bitLength","checksum","checksum_uint","checkSumBitOffset","checksumIterationCount","checksumBase","DecompressorHuffmanTree","m_LengthTree","m_DistanceTree","prepareData","blCount","treeSize","MAX_BITLEN","treeFromData","revcode","subTree","treeLen","m_Tree","unpackSymbol","lookahead","peekBits","skipBits","availableBits","ChecksumCalculator$1","ChecksumUpdate","checkSumUInt","DEF_CHECKSUM_BIT_OFFSET","DEF_CHECKSUM_ITERATIONSCOUNT","DEF_CHECKSUM_BASE","ChecksumGenerate","bNoWrap","defaultHuffmanDynamicTree","DEF_HEADER_METHOD_MASK","DEF_HEADER_INFO_MASK","DEF_HEADER_FLAGS_FCHECK","DEF_HEADER_FLAGS_FDICT","DEF_HEADER_FLAGS_FLEVEL","DEF_MAX_WINDOW_SIZE","DEF_HUFFMAN_REPEATE_MAX","DEF_HUFFMAN_END_BLOCK","DEF_HUFFMAN_LENGTH_MINIMUMCODE","DEF_HUFFMAN_LENGTH_MAXIMUMCODE","DEF_HUFFMAN_DISTANCE_MAXIMUMCODE","mCheckSum","tBuffer","mBufferedBits","mTempBuffer","mBlockBuffer","mbNoWrap","mWindowSize","mCurrentPosition","mDataLength","mbCanReadNextBlock","mbCanReadMoreData","mbCheckSumRead","mInputStream","readZLibHeader","decodeBlockHeader","fillBuffer","mBuffer","bytesRead","readInt16","readBits","bFinalBlock","blockType","mbReadingUncompressed","skipToBoundary","readInt16Inverted","mUncompressedDataLength","mCurrentLengthTree","mCurrentDistanceTree","lengthTree","distanceTree","trees","decodeDynamicHeader","bLastSymbol","iLengthsCount","iDistancesCount","iCodeLengthsCount","iResultingCodeLengthsCount","arrResultingCodeLengths","arrDecoderCodeLengths","iCurrentCode","treeInternalDecoder","bNeedBreak","miRepSymbol","DEF_HUFFMAN_DYNTREE_REPEAT_BITS","DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS","readHuffman","free","dataRead","readdata","numDataRead","numReadMore","iRepeatLength","DEF_HUFFMAN_REPEAT_LENGTH_BASE","iRepeatExtraBits","DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION","DEF_HUFFMAN_REPEAT_DISTANCE_BASE","iRepeatDistance","DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION","initialLength","inBlockPosition","oldDataLength","dataToRead","readPackedBytes","readInt32","DEF_REVERSE_BITS","CellStyle","numFmtId","backColor","fontName","fontColor","strikeThrough","hAlign","vAlign","numberFormat","borders","Borders","isGlobalStyle","Font","sz","strike","CellXfs","Alignment","CellStyleXfs","CellStyles","xfId","NumFmt","formatCode","Border","mLine","mColor","lineStyle","Cell","Cells","inserted","Row","Rows","Worksheets","Worksheet","isSummaryRowBelow","showGridLines","HyperLink","Grouping","FreezePane","MergeCell","MergeCells","mergeCell","mCell","isIntersecting","intersectingCell","Width","Height","ValueFormatter","intl","getFormatFunction","toView","displayText","CsvHelper","csvStr","globalStyles","worksheets","parseWorksheet","parseRows","rows_1","parseRow","parseCell","csv","parseCellValue","dwlLink","encodeString","BlobHelper","AutoFilters","Workbook","saveType","currencyString","sharedStringCount","unitsProportions","hyperlinkStyle","mSaveType","mArchive","sharedString","mFonts","mBorders","mStyles","printTitles","cellStyles","mNumFmt","mFills","mCellXfs","mCellStyleXfs","drawingCount","imageCount","parserCellStyle","cellStylesIn","tFormat","parserWorksheets","builtInProperties","BuiltInProperties","parserBuiltInProperties","csvHelper","jsonBuiltInProperties","author","comments","company","createdDate","modifiedDate","jsonSheet","mergeCells","mergedCellsStyle","mHyperLinks","parserColumns","parserRows","parserFreezePanes","printTitle","parserPrintTitle","pageSetup","images","parserImages","autoFilters","parseFilters","hyperLinks","applyProperties","sourceJson","destJson","getCellName","getColumnName","strColumnName","iCurrentDigit","titleRowName","titleColName","printTitleName","fromRow","toRow","fromColumn","toColumn","freezePanes","leftCell","columnsLength","rowsLength","parserRow","insertMergedCellsStyle","rowToInsert","createCell","insertIndex","styleIndex","cellToInsert","grouping","parseGrouping","parseCells","outlineLevel","cellsLength","spanMin","spanMax","jsonCell","hyperlink","hyperLink","getCellValueType","rId","formula","parseCellType","processMergeCells","spans","GetColors","colors","processColor","colorVal","rgbColors","processCellValue","processedVal","startindex","processString","subSplit","subSplit_1","applyGlobalStyle","cellType","defStyleIndex","parserBorder","leftBorder","rightBorder","topBorder","bottomBorder","processCellStyle","switchNumberFormat","numFmt","cellStyleXfs","cellXfs","changeNumberFormats","returnFormat","processNumFormatId","compareStyle","isNewFont","toCompareStyle","isNewBorder","bStyle","isAllBorder","toCompareBorder","allBorderStyle","baseStyle","toOADate","sstvalue","imagesLength","parserImage","horizontalFlip","verticalFlip","blobSaveType","blobData","proxyUrl","xlsxMatch","csvMatch","saveWorkbook","saveWorksheets","saveSharedString","saveStyles","saveApp","saveCore","saveContentType","saveTopLevelRelation","saveWorkbookRelation","workbookTemp","sheets","sheetName","printTitle_1","addToArchive","saveWorksheet","sheetBlob","sheetString","saveSheetView","colString","pixelsToColumnWidth","rowString","pixelsToRowHeight","hLink","saveDrawings","saveSheetRelations","drawings","sheetDrawingString","imgId","pic","updatelastRowOffset","updatelastColumnOffSet","lastRowOffset","lastColOffset","imageData","convertBase64toImage","saveDrawingRelations","picture","iCurHeight","iCurRow","iCurOffset","iRowHeight","iSpaceInCell","convertToPixels","rowHiddenHeight","iCurWidth","iCurCol","iColWidth","ColumnWidthToPixels","colHiddenWidth","byteStr","drawingRelation","dDigitWidth","trunc","relStr","paneString","sstStart","updateCellXfsStyleXfs","styleTemp","saveNumberFormats","saveFonts","saveFills","saveBorders","saveCellStyleXfs","saveCellXfs","saveCellStyles","compareFontResult","fontId","fillId","borderId","applyAlignment","numFmtStyle_1","fontStyle","fillsStyle","bordersStyle","cellStyleString","cellXfsStyle","cellStyleXf","saveAlignment","cellXf","alignString","appString","coreString","wbRelation","contentTypeString","sheetsOverride","drawingIndex","xmlString","archiveItem","startCell","updatedMergedCellStyles","sCell","dateToTicks","ticksPerDay","timeToTicks","ticks","daysTo1899","millisPerDay","InternalEnum","Dictionary","toStringFunction","nElements","toStr","defaultToString","keysArray","namesOfKeys","index1","valuesArray","namesOfValues","index2","retutnValue","PdfName","stringStartMark","internalValue","isSaving6","position6","status6","index6","crossTable","newName","delimiters","replacements","Operators","forTest","endObj","whiteSpace","newLine","endStream","xref","trailer","startxref","eof","beginText","endText","beginPath","appendLineSegment","fillEvenOdd","fillStroke","fillStrokeEvenOdd","appendbeziercurve","appendRectangle","saveState","restoreState","paintXObject","modifyCtm","modifyTM","setLineWidth","setLineCapStyle","setLineJoinStyle","setDashPattern","setFlatnessTolerance","closePath","closeStrokePath","closeFillStrokePath","setCharacterSpace","setWordSpace","setHorizontalScaling","setTextLeading","setFont","setRenderingMode","setTextRise","setTextScaling","setCoords","goToNextLine","setTextWithFormatting","setTextOnNewLine","selectcolorspaceforstroking","selectcolorspacefornonstroking","setrbgcolorforstroking","setrbgcolorfornonstroking","setcmykcolorforstroking","setcmykcolorfornonstroking","setgraycolorforstroking","setgraycolorfornonstroking","clipPath","clipPathEvenOdd","endPath","setGraphicsState","evenOdd","setMiterLimit","setColorAndPattern","setColorAndPatternStroking","DictionaryProperties","kids","mediaBox","decodeParms","type1","baseFont","procset","colorSpace","extGState","xObject","bitsPerComponent","dctdecode","blackIs1","predictor","deviceRgb","annot","annots","xyz","flatedecode","bBox","cIDFontType2","cIDToGIDMap","dw","fontDescriptor","cIDSystemInfo","fontBBox","missingWidth","stemV","italicAngle","capHeight","ascent","descent","avgWidth","fontFile2","xHeight","stemH","supplement","type0","identityH","toUnicode","descendantFonts","shading","antiAlias","function","shadingType","coords","domain","functionType","bitsPerSample","patternType","paintType","tilingType","xStep","yStep","viewerPreferences","centerWindow","displayTitle","fitWindow","hideMenuBar","hideToolBar","hideWindowUI","pageMode","pageLayout","duplex","printScaling","PdfDictionary","dictionary","position7","primitiveItems","isResource","dictionaryProperties","freezeChanges","status7","isSaving7","index7","getArchive","setArchive","setEncrypt","modify","getEncrypt","freezer","bChanged","newDict","onBeginSave","beginSave","onFontDictionaryBeginSave","fontDictionaryBeginSave","onDescendantFontBeginSave","descendantFontBeginSave","onTemplateBeginSave","pageBeginDrawTemplate","pageBeginSave","onBeginAnnotationSave","annotationBeginSave","onSectionBeginSave","saveEvent","sectionBeginSave","bRaiseEvent","Count","saveItems","SaveSectionCollectionEventHandler","SaveDescendantFontEventHandler","SaveFontDictionaryEventHandler","SaveAnnotationEventHandler","SaveSectionEventHandler","SaveTemplateEventHandler","PdfNumber","position5","status5","isSaving5","index5","rValue","intValue","newNumber","floatToString","returnString","PdfArray","startMark","endMark","position9","clonedObject9","isFont","internalElements","tempNumberArray","pdfNumber","status9","isSaving9","index9","pdfCrossTable","markedChange","fromRectangle","tempElements","markChanged","PdfStream","dicPrefix","dicSuffix","clonedObject2","bCompress","dataStream2","bCompress2","internalStream","writeBytes","onCmapBeginSave","cmapBeginSave","onFontProgramBeginSave","fontProgramBeginSave","compressContent","byteArray","dataArray","getCompressedString","addFilter","filterName","PdfReferenceHolder","bytesToString","SaveCmapEventHandler","SaveFontProgramEventHandler","ForceEncoding","Ascii","SourceType","PdfString","bHex","position1","clonedObject1","bDecrypted","isParentDecrypted","isFormField","isColorSpace","isHexString","status1","isSaving1","bConverted","bForceEncoding","bytesToHex","pdfEncode","stringMark","escapeSymbols","CrossTable","newString","toUnicodeArray","bAddPrefix","hexStringMark","hexFormatPattern","PdfReference","objNumber","genNumber","index3","position3","status3","isSaving3","returnObject3","obj2","index4","position4","objectIndex","status4","isSaving4","primitiveObject","pdfReference","cTable","isSaving","getReference","PdfAction","pdfDictionary","PdfUriAction","uniformResourceIdentifier","PdfVerticalAlignment","Top","Middle","Bottom","PdfTextAlignment","Center","Justify","TextRenderingMode","Fill","Stroke","FillStroke","ClipFlag","ClipFill","ClipStroke","ClipFillStroke","Clip","PdfLineCap","Flat","Round","Square","PdfDashStyle","Solid","Dash","Dot","DashDot","DashDotDot","Custom","PdfFillMode","Winding","Alternate","PdfColorSpace","Rgb","Cmyk","GrayScale","Indexed","PdfBlendMode","Multiply","Screen","Darken","Lighten","ColorDodge","ColorBurn","HardLight","SoftLight","Difference","Exclusion","Hue","Saturation","Luminosity","PdfGraphicsUnit","Centimeter","Pica","Pixel","Point","Inch","Document","Millimeter","PdfTextDirection","LeftToRight","RightToLeft","PdfColor","color1","color2","color3","color4","assignRGB","filled","redColor","greenColor","blueColor","grayColor","maxColourChannelValue","cyanColor","magentaColor","yellowColor","blackColor","assignCMYK","rgbToString","grayScaleToString","cmykToString","ifStroking","colour","grayStringsSroke","grayStringsFill","rgbStrings","PointF","SizeF","RectangleF","arg1","arg2","arg3","arg4","pointf","sizef","Rectangle","PdfBrush","PdfSolidBrush","pdfColor","monitorChanges","brush","streamWriter","getResources","currentColorSpace","setColorAndSpace","resetChanges","PdfFontStyle","Regular","Bold","Italic","Underline","Strikeout","PdfFontFamily","Helvetica","Courier","TimesRoman","ZapfDingbats","PdfWordWrapType","WordOnly","Character","PdfSubSuperScript","SuperScript","SubScript","FontEncoding","Unknown","StandardEncoding","MacRomanEncoding","MacExpertEncoding","WinAnsiEncoding","PdfDocEncoding","IdentityH","TtfCmapFormat","Apple","Microsoft","Trimmed","TtfCmapEncoding","Macintosh","TtfPlatformID","AppleUnicode","Iso","TtfMicrosoftEncodingID","Undefined","TtfMacintoshEncodingID","Roman","Japanese","Chinese","FontDescriptorFlags","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","ForceBold","TtfCompositeGlyphFlags","Arg1And2AreWords","ArgsAreXyValues","RoundXyToGrid","WeHaveScale","Reserved","MoreComponents","WeHaveAnXyScale","WeHaveTwoByTwo","WeHaveInstructions","UseMyMetrics","PdfStringFormat","scalingFactor","wordWrapType","internalLineLimit","textAlignment","verticalAlignment","isRightToLeft","internalCharacterSpacing","internalWordSpacing","clip","pdfSubSuperScript","internalParagraphIndent","firstLineIndent","trailingSpaces","isNoClip","initialLineIndent","StringTokenizer","getCharsCount","numSymbols","readLine","text2","peekLine","readWord","peekWord","readToEnd","spaces","whiteSpacePattern","PdfStringLayouter","isOverloadWithPosition","arg5","arg6","arg7","clientSize","rectSize","pageHeight","rectangle","PdfStringLayoutResult","lineResult","lines","lineIndent","getLineIndent","layoutLine","numSymbolsInserted","returnedValue","copyToResult","numInserted","finalizeResult","firstLine","paragraphIndent","getLineHeight","lineSpacing","getLineWidth","layoutLineHeight","lineWidth","lineType","LineType","FirstParagraphLine","addToLineResult","NewLineBreak","curLine","curIndent","curLineWidth","getWrapType","textRemainder","wordWrap","LayoutBreak","LastParagraphLine","layoutLines","breakType","LineInfo","allowPartialLines","lineLimit","expHeight","trimLine","size1","wrapType","PdfFont","metrics","fontMetrics","pdfFontInternals","measureString","temparg2","linesFilled","layoutArea","temparg3","equalsTo","equalsToFont","getInternals","setInternals","internals","applyFormatSettings","realWidth","characterSpacing","wordSpacing","charSizeMultiplier","syncObject","PdfWriter","pdfDocument","overload","tempOverload","PdfWriterHelper","PdfArrayBuffer","ObjectStatus","Registered","PdfMainObjectCollection","objectCollections","mainObjectCollection","primitiveObjectCollection","objInfo","ObjectInfo","lookFor","wasNew","trySetReference","setReference","pdfObject","objectCollectionIndex","PdfDocumentBase","isStreamCopied","PdfDocument","currentSavingObject","pdfCatalog","setMainObjectCollection","setCrossTable","setCatalog","catalog","filename","SW","encoding_1","SW_1","docSave","_save","_docSave","ObjectType","Free","Packed","PdfBoolean","objectStatus","saving","boolToStr","PdfViewerPreferences","_dictionaryProperties","_centerWindow","_fitWindow","_displayTitle","_splitWindow","_hideMenuBar","_hideToolBar","_hideWindowUI","_pageMode","PdfPageMode","UseNone","_pageLayout","PdfPageLayout","SinglePage","_dictionary","_duplex","DuplexMode","_catalog","_mapPageMode","_mapDuplexMode","_mapPageLayout","_pageScaling","PageScalingMode","AppDefault","Simplex","DuplexFlipShortEdge","DuplexFlipLongEdge","UseOutlines","UseThumbs","UseOC","UseAttachments","OneColumn","TwoColumnLeft","TwoColumnRight","TwoPageLeft","TwoPageRight","PdfCatalog","tempDictionaryProperties","_viewerPreferences","PdfCrossTable","maxGenNumIndex","objectCount","merging","internalTrailer","pdfObjects","_saveProcess","saveHead","mappedReferences","markTrailerReferences","saveObjects","saveCount","xrefPos","registerObject","saveSections","saveTrailer","saveTheEndess","objectCollection","prevXRef","objectNum","prepareSubsection","saveSubsection","generation","isFree","addOffsetLength","addGenNumberLength","generateFileVersion","bNew","getSubReference","nextObjNumber","saveIndirectObject","currentSavingObj","doSaveObject","RegisteredObject","dereference","offsetNumber","tempReference","PdfPageSize","note","legal","a5","a6","a7","a8","a9","a10","b4","b5","archE","archD","archC","archB","archA","flsa","halfLetter","letter11x17","ledger","PdfPageOrientation","Portrait","Landscape","PdfPageRotateAngle","RotateAngle0","RotateAngle90","RotateAngle180","RotateAngle270","PdfNumberStyle","Numeric","LowerLatin","LowerRoman","UpperLatin","UpperRoman","PdfDockStyle","PdfAlignmentStyle","TopLeft","TopCenter","TopRight","MiddleLeft","MiddleCenter","MiddleRight","BottomLeft","BottomCenter","BottomRight","TemplateType","PdfMargins","pdfMargin","setMargins","leftMargin","topMargin","rightMargin","bottomMargin","margin1","margin2","margin3","margin4","PdfPageSettings","margins","pageMargins","rotateAngle","pageOrientation","pageOrigin","isRotation","setSize","getActualSize","PdfStreamWriter","dictionaryName","writeOperator","executeObject","useEvenOddRule","fillStrokePath","fillPath","closeFillPath","textScaling","strokePath","restoreGraphicsState","saveGraphicsState","startNextLine","writePoint","showText","checkTextParam","writeText","setLeading","setTextRenderingMode","renderingMode","setCharacterSpacing","charSpacing","setWordSpacing","showNextLineText","setColorSpace","opcode","updateY","writeComment","forStroking","setLineDashPattern","patternOffset","setLineDashPatternHelper","tempPattern","miterLimit","setLineCap","lineCapStyle","setLineJoin","lineJoinStyle","appendBezierSegment","setColourWithPattern","colours","patternName","PdfPen","dashOffsetValue","penDashPattern","pdfDashStyle","pdfLineCap","pdfLineJoin","penWidth","internalMiterLimit","setBrush","pen","sBrush","pdfBrush","currentPen","dashControl","lineJoin","lineCap","dashOffset","dashPattern","PdfTransformationMatrix","radDegFactor","transformationMatrix","Matrix","degreesToRadians","degreesX","degRadFactor","radiansToDegrees","metrixElements","y2","tempMatrix","ProcedureSets","imageB","imageC","imageI","TemporaryDictionary","mKeys","mValues","PdfTransparency","PdfAutomaticFieldInfoCollection","automaticFieldsInformation","fieldInfo","automaticFields","PdfGraphicsElement","drawHelper","graphics","bNeedSave","gState","translateTransform","drawInternal","restore","PdfAutomaticField","internalBounds","internalTemplateSize","internalFont","internalBrush","internalPen","internalStringFormat","performDrawHelper","scalingX","scalingY","getFont","stringFormat","draw","location_1","PdfAutomaticFieldInfo","getBrush","defaultFont","getPageFromGraphics","pageNumberFieldLocation","pageNumberField","ByteArray","mPosition","getBuffer","writeFromBase64String","enc1","enc2","enc3","readNextTwoBytes","ImageFormat","Bmp","Emf","Gif","Jpeg","Png","Wmf","ImageDecoder","sof1Marker","sof2Marker","sof3Marker","sof5Marker","sof6Marker","sof7Marker","sof9Marker","sof10Marker","sof11Marker","sof13Marker","sof14Marker","sof15Marker","mFormat","mbitsPerComponent","mStream","mHeight","mWidth","mImageData","internalBuffer","checkIfJpeg","parseJpegImage","imgData","isLengthExceed","readExceededJPGImage","mJpegHeader","getImageDictionary","imageStream","tempString","decodedString","imageDataAsNumberArray","getColorSpace","getDecodeParams","decodeParams","isContinueReading","getMarker","skipStream","noOfBytes","markerLength","mPngHeader","GIF_HEADER","BMP_HEADER","PdfUnitConverter","dpi","updateProportionsHelper","convertUnits","convertFromPixels","proportions","pixelPerInch","horizontalResolution","verticalResolution","PdfImage","imagePhysicalDimension","getPointSize","ucX","ucY","ptWidth","ptHeight","PdfBitmap","imageStatus","loadImage","initializeAsync","decoder","TtfTableInfo","TtfNameTable","TtfNameRecord","TtfHeadTable","TtfMetrics","macStyle","TtfHorizontalHeaderTable","TtfOS2Table","TtfPostTable","TtfLongHorMetric","TtfCmapSubTable","TtfCmapTable","TtfGlyphInfo","compareTo","TtfLocaTable","TtfAppleCmapSubTable","TtfMicrosoftCmapSubTable","TtfTrimmedCmapSubTable","TtfGlyphHeader","BigEndianWriter","capacity","int32Size","int16Size","int64Size","bufferLength","internalPosition","writeShort","writeInt","writeUInt","buff","writeString","TtfReader","fontData","isTtcFont","isMacTtf","metricsName","isMacTTF","missedGlyphs","tableNames","entrySelectors","macintoshDictionary","microsoftDictionary","internalMacintoshGlyphs","internalMicrosoftGlyphs","readFontDictionary","nameTable","readNameTable","headTable","readHeadTable","initializeFontName","checkPreambula","numTables","tableDirectory","tableKey","readString","lowestPosition","fixOffsets","minOffset","tableKeys","tableInfo","getTable","formatSelector","readUInt16","recordsCount","nameRecords","platformID","encodingID","languageID","nameID","recordSize","readFixed","fontRevision","checkSumAdjustment","readUInt32","magicNumber","unitsPerEm","readInt64","modified","xMin","yMin","xMax","yMax","lowestReadableSize","fontDirectionHint","indexToLocalFormat","glyphDataFormat","readHorizontalHeaderTable","ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","metricDataFormat","numberOfHMetrics","readOS2Table","xAvgCharWidth","usWeightClass","usWidthClass","fsType","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","sFamilyClass","panose","readBytes","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","vendorIdentifier","fsSelection","usFirstCharIndex","usLastCharIndex","sTypoAscender","sTypoDescender","sTypoLineGap","usWinAscent","usWinDescent","ulCodePageRange1","ulCodePageRange2","sxHeight","sCapHeight","usDefaultChar","usBreakChar","usMaxContext","readPostTable","formatType","underlinePosition","underlineThickness","isFixedPitch","minType42","maxType42","minType1","maxType1","readWidthTable","glyphCount","glyph","advanceWidth","lsb","glyphWidth","readCmapTable","tablesCount","subTables","subTable","readCmapSubTable","getCmapEncoding","readAppleCmapTable","readMicrosoftCmapTable","readTrimmedCmapTable","maxMacIndex","glyphInfo","macintosh","addGlyph","microsoft","segCountX2","searchRange","entrySelector","rangeShift","segCount","endCount","readUshortArray","reservedPad","idDelta","idRangeOffset","glyphID","codeOffset","firstCode","entryCount","fontFamily","postScriptName","glyphCode","microsoftGlyphs","macintoshGlyphs","initializeMetrics","horizontalHeadTable","os2Table","postTable","cmapTables","bSymbol","winAscent","macAscent","winDescent","macDescent","fontBox","widthTable","updateWidth","subScriptSizeFactor","superscriptSizeFactor","getGlyph","byteToProcess","getDefaultGlyph","readLocaTable","bShort","updateGlyphChars","glyphChars","locaTable","glyphCharKeys","processCompositeGlyph","glyphOffset","glyphHeader","numberOfContours","skipBytes","glyphIndex","generateGlyphTable","newLocaTable","newGlyphTable","activeGlyphs","glyphSize","glyphSizeAligned","nextGlyphOffset","nextGlyphIndex","oldGlyphOffset","oldNextGlyphOffset","glyphTableSize","updateLocaTable","bLocaIsShort","newLocaTableOut","newLocaUpdated","newLocaSize","getFontProgram","locaTableSize","getFontProgramLength","fontProgramLength","writeCheckSums","writeGlyphs","usedTablesSize","nextTableSize","calculateCheckSum","byte1","byte2","byte3","byte4","createInternals","bIsLocaShort","isFontPresent","getGlyphChars","charKeys","getAllGlyphs","allGlyphInfo","readFontProgram","result1","result2","fontProgram","convertString","getCharWidth","codeWidth","isUnicode","i4","written","PdfFontMetrics","getAscent","getDescent","getLineGap","subSuperScript","WidthTable","internalWidthTable","StandardWidthTable","widths","swt","UnicodeTrueTypeFont","nameString","isCompress","isEmbedFont","cmapPrefix","cmapEndCodespaceRange","cmapBeginRange","cmapEndRange","cmapSuffix","fontString","Initialize","ttfReader","ttfMetrics","fontDictionary","cmap","descendantFont","subsetName","getFontName","createDescendantFont","createCmap","createFontDictionary","createFontProgram","isBold","formatName","createFontDescriptor","systemInfo","createSystemInfo","getDescriptorFlags","getBoundBox","descFonts","usedChars","getDescendantWidth","generateCmap","generateFontProgram","firstGlyphIndex","lastGlyphIndex","firstGlyphIndexWasSet","widthDetails","middlePart","nextRange","isItalic","isCaseChange","setSymbols","ArabicShapeRenderer","arabicCharTable","alef","alefHamza","alefHamzaBelow","alefMadda","lam","hamza","zeroWidthJoiner","hamzaAbove","hamzaBelow","wawHamza","yehHamza","waw","alefMaksura","yeh","farsiYeh","shadda","madda","lwa","lwawh","lwawhb","lwawm","bwhb","fathatan","superScriptalef","vowel","arabicMapTable","getCharacterShape","doShape","ArabicShape","present","ligature","shapeCount","getShapeCount","Shapes","Value","Ligature","shapeValue","shapeType","shapeVowel","shapeLigature","shapeShapes","Bidi","indexLevels","mirroringShapeCharacters","doMirrorShaping","getLogicalToVisualString","inputText","rtlCharacters","RtlCharacters","getVisualOrder","setDefaultIndexLevel","doOrder","resultBuilder","sIndex","eIndex","odd","reArrange","pstart","pend","textOrder","rtlCharacterTypes","LRO","RLO","EN","AN","CS","NSM","ON","charTypes","getCharacterCode","doVisualOrder","levels","characterCodes","setDefaultLevels","setLevels","updateLevels","getEmbeddedCharactersLength","preType","checkNSM","checkEmbeddedCharacters","startType","endType","charType","checkEuropeanDigits","checkArabicCharacters","checkEuropeanNumberSeparator","checkEuropeanNumberTerminator","checkOtherNeutrals","checkOtherCharacters","pst","checkCommanCharacters","validSet","RtlRenderer","openBracket","closeBracket","wordSpace","customLayout","splitLayout","customSplitLayout","getGlyphIndex","glyphs","fontInternal","textDirection","layouted","addChars","PdfLayoutType","Paginate","OnePage","PdfLayoutBreakType","FitPage","FitElement","FitColumnsToPage","PathPointType","Start","Line","Bezier3","Bezier","PathTypeMask","DashMode","PathMarker","CloseSubpath","PdfGradientBrush","mbackground","mbStroking","mfunction","mpatternDictionary","sh","aa","mcolorSpace","csValue","colorSpaceToDeviceName","mshading","patternDictionary","mmatrix","resetFunction","resetPatternDictionary","cloneAntiAliasingValue","cloneBackgroundValue","PdfTemplate","writeTransformation","tempSize","templateSize","pdfGraphics","gr","GetResourceEventHandler","PdfGraphics","initializeCoordinates","PdfResources","addType","addSubType","baseDictionary","getNames","primitive","sName","generateName","PdfTilingBrush","pdfNames","fonts","requireProcedureSet","procedureSetName","procSets","removeFont","Guid","getNewGuidString","xobjects","savable","transDic","parentXObjects","hasSameImageStream","oldReference","values_1","mStroking","mLocation","mDictionaryProperties","PdfPage","mPage","brushStream","mResources","setBox","setObligatoryFields","mTransformationMatrix","tempBrushStream","tempResource","mBox","tileTransform","mGraphics","name1","previousTextRenderingMode","previousCharacterSpacing","previousWordSpacing","previousTextScaling","procedureSets","isNormalRender","isUseFontSize","isEmfTextScaled","isEmf","isEmfPlus","isBaselineFormat","emfScalingFactor","colorSpaceChanged","isPointOverload","currentColorSpaces","isImageOptimized","graphicsState","istransparencySet","internalAutomaticFields","startCutIndex","canvasSize","pdfStreamWriter","pdfStringLayoutResult","internalMediaBoxUpperRightBound","clipBounds","pageLayer","bStateSaved","currentBrush","currentFont","bCSInitialized","currentStringFormat","drawPdfTemplate","bNeedScale","getTranslateTransform","getScaleTransform","newLocation","drawString","arg8","arg9","temparg4","temparg5","temparg6","temparg7","temparg8","temparg9","checkCorrectLayoutRectangle","drawStringLayoutResult","drawLine","stateControl","drawRectangle","temparg1","drawPathHelper","drawRoundedRectangle","arc","_pathPoints","_pathTypes","startFigure","_addArc","_drawPath","startAngle","sweepAngle","points","_getBezierArcPoints","_addArcPoints","pointType","_addPoint","_getLastPoint","lastPoint","x1","y1","fragAngle","numFragments","xcen","ycen","ry","halfAng","kappa","pointList","theta0","theta1","cos0","cos1","sin0","sin1","isPen","isBrush","isEvenOdd","physicalDimension","setResources","resource","getLineBounds","lineIndex","layoutRectangle","lineCount","getTextVerticalAlignShift","hShift","getHorizontalAlignShift","rightToLeft","shouldJustify","textSize","layoutedRectangle","lineAlignment","setLayer","pageSave","performDraw","applyStringSettings","horizontalScalingFactor","resultHeight","remainingString","drawLayoutResult","underlineStrikeoutText","getNextPage","getPages","nextPage","setClip","getTextRenderingMode","textHeight","boundsHeight","vAlignShift","unicode","lineInfo","hAlignShift","drawUnicodeLine","drawAsciiLine","justifyLine","useWordSpace","ttfFont","rtlRender","rightAlign","drawUnicodeBlocks","breakUnicodeLine","convertToUnicode","getUnicodeString","xShift","spaceWidth","tokenWidth","converted","boundsWidth","hasWordSpacing","whitespacesCount","justifyStyle","goodWidth","strikeout","linePen","createUnderlineStikeoutPen","vShift","underlineYOffset","strikeoutYOffset","layoutBounds","lastDocumentCS","lastGraphicsCS","initCurrentColorSpace","penControl","brushControl","fontControl","colorspace","lgb","setTransparency","trasparencies","transp","td","TransparencyData","clipTranslateMargins","clipArea","scaleTransform","rotateTransform","getRotateTransform","mediaBoxUpperRightBound","cropBox","PdfGraphicsState","textRenderingMode","doRestoreState","drawPath","pathPoints","pathTypes","fillMode","buildUpPath","constructArcPath","pathTypesValuesMask","getBezierPoints","checkFlags","typeValue","startAng","getBezierArc","numX1","numY1","numX2","numY2","fragAngle1","pointsList","thetaValue0","thetaValue1","transparencyObject","internalTextRenderingMode","internalTextScaling","pdfColorSpace","pdfPen","pdfFont","alphaPen","alphaBrush","blendMode","PdfPageLayer","streamClipPageTemplates","sublayer","contentLength","pdfPage","clipPageTemplates","layerid","layerName","initializeGraphics","PdfPageLayerCollection","oPage","sc","clipRect","getActualBounds","pageSettings","PdfCollection","parentLayerCount","optionalContent","PdfPageBase","parseLayers","firstArgument","secondArgument","addLayer","insertLayer","loadedPage","saveStream","restoreStream","saveData","defLayerIndex","pageDictionary","pdfSection","defaultLayerIndex","returnlayer","layerCollection","PdfAnnotationCollection","alreadyExistsAnnotationError","missingAnnotationException","internalAnnotations","lists","doAdd","setPage","layoutResult","setColor","annotationCollection","defaultLayer","annotations","setSection","resetProgress","isProgressOn","getClientSize","drawPageTemplates","containsTemplates","backLayer","drawTemplates","frontLayer","PageAddedEventArgs","PdfSectionPageCollection","PdfDocumentTemplate","leftTemplate","topTemplate","rightTemplate","bottomTemplate","evenLeft","evenTop","evenRight","evenBottom","oddLeft","oddTop","oddRight","oddBottom","isEven","EvenLeft","OddLeft","getTop","EvenTop","OddTop","EvenRight","OddRight","getBottom","EvenBottom","OddBottom","pageCollectionIndex","PdfSectionTemplate","rightValue","bottomValue","stampValue","PdfSection","pageAdded","pdfPages","initialSettings","sectionCollection","pagesReferences","pageTemplate","pagesCollection","pointToNativePdf","setPageSettings","PageSettingsState","foreground","documentHeaders","getDocumentTemplates","sectionTemplates","getSectionTemplates","templates","applyDocumentTopTemplate","applyDocumentBottomTemplate","applyDocumentLeftTemplate","applyDocumentRightTemplate","page_1","checkPresence","pageAddedMethod","rh","onPageAdded","getLeftIndentWidth","getTopIndentHeight","getRightIndentWidth","getBottomIndentHeight","includeMargins","templateWidth","docTemplateWidth","templateHeight","docTemplateHeight","temproaryPages","applyPageSettings","parentSettings","PdfSectionCollection","rotateFactor","sectionHeaders","drawTemplatesHelper","pageRotate","sectionCount","pdfSectionCollection","section_1","checkSection","countPages","PdfDocumentPageCollection","pdfPageCollectionIndex","getLastSection","getPageByIndex","getPage","sectionStartIndex","numPages","PdfCacheCollection","referenceObjects","pdfFontCollection","getGroup","createNewGroup","tGroup","removeGroup","isMerging","defaultMargin","isMerge","cacheCollection","documentPageCollection","defaultStandardFont","PdfStandardFont","isCacheEnabled","checkPagesPresence","PdfStandardFontMetricsFactory","getMetrics","getHelveticaMetrics","getCourierMetrics","getTimesMetrics","getSymbolMetrics","getZapfDingbatsMetrics","subSuperScriptFactor","helveticaBoldItalicAscent","helveticaBoldItalicDescent","helveticaBoldItalicName","arialBoldWidth","helveticaBoldAscent","helveticaBoldDescent","helveticaBoldName","helveticaItalicAscent","helveticaItalicDescent","helveticaItalicName","arialWidth","helveticaAscent","helveticaDescent","helveticaName","courierBoldItalicAscent","courierBoldItalicDescent","courierBoldItalicName","fixedWidth","courierBoldAscent","courierBoldDescent","courierBoldName","courierItalicAscent","courierItalicDescent","courierItalicName","courierAscent","courierDescent","courierName","timesBoldItalicAscent","timesBoldItalicDescent","timesBoldItalicName","timesRomanBoldItalicWidths","timesBoldAscent","timesBoldDescent","timesBoldName","timesRomanBoldWidth","timesItalicAscent","timesItalicDescent","timesItalicName","timesRomanItalicWidth","timesAscent","timesDescent","timesName","timesRomanWidth","symbolAscent","symbolDescent","symbolName","symbolWidth","zapfDingbatsAscent","zapfDingbatsDescent","zapfDingbatsName","zapfDingbatsWidth","fontFamilyPrototype","encodings","pdfFontFamily","checkStyle","initializeInternals","getCharWidthInternal","lineReducer","styleEqual","charOffset","PdfAnnotation","textBrush","textFont","internalColor","darkness","nativeRectangle","initialHeight","tempLoacation","PdfLinkAnnotation","PdfActionLinkAnnotation","pdfAction","getSetAction","ElementLayouter","layoutElement","layoutInternal","Layouter","getPaginateBounds","usePaginateBounds","paginateBounds","PdfLayoutFormat","baseFormat","break","boundsSet","layoutType","layoutPaginateBounds","PdfLayoutParams","layoutFormat","PdfLayoutResult","PdfBorders","defaultBorderPenLeft","dashStyle","defaultBorderPenRight","defaultBorderPenTop","defaultBorderPenBottom","leftPen","rightPen","topPen","bottomPen","PdfPaddings","hasLeftPad","hasRightPad","hasTopPad","hasBottomPad","bottomPad","topPad","leftPad","rightPad","PdfLayoutElement","beginPageLayout","endPageLayout","onBeginPageLayout","onEndPageLayout","bEmbedFonts","newBound","TextLayouter","currentBounds","pageResult","TextPageLayoutResult","layoutOnPage","getLayoutResult","PdfTextLayoutResult","lastLineBounds","checkCorrectBounds","textFinished","PdfTextWebLink","getTextPageBounds","verticalShift","remainderText","lastLineTextBounds","PdfTextElement","elementValue","hasPointOverload","isPdfTextElement","drawText","stringLayoutResult","calculateResultBounds","lineSize","maximumWidth","startPosition","PdfUriAnnotation","pdfUriAction","uriAction","uniformResourceLocator","uriAnnotation","recalculateBounds","defaultBorder","previousFontStyle","calculateBounds","drawMultipleLineWithPoint","drawMultipleLineWithBounds","PdfNumbersConvertor","intArabic","numberStyle","arabicToLetter","arabicToRoman","retval","retvalM","generateNumber","retvalCM","retvalD","retvalCD","retvalC","retvalXC","retvalL","retvalXL","retvalX","retvalIX","retvalV","retvalIV","retvalI","arabic","convertToLetter","appendChar","magnitude","numberstring","letterLimit","acsiiStartIndex","PdfTemplateValuePair","pdfTemplate","PdfMultipleValueField","drawLocation","PdfPageNumberField","internalNumberStyle","internalGetValue","PdfCompositeField","internalText","PdfSingleValueField","painterGraphics","PdfPageCountField","PdfBorderOverlapStyle","Overlap","Inside","PdfGridStyleBase","gridBackgroundBrush","gridTextBrush","gridTextPen","gridFont","gridBackgroundImage","PdfGridStyle","gridBorderOverlapStyle","bAllowHorizontalOverflow","gridHorizontalOverflowType","PdfHorizontalOverflowType","LastPage","gridCellSpacing","gridCellPadding","PdfGridCellStyle","gridCellBorders","PdfGridRowStyle","gridRowBackgroundBrush","setBackgroundBrush","getCell","backgroundBrush","gridRowTextBrush","setTextBrush","gridRowTextPen","setTextPen","textPen","gridRowFont","gridRowBorder","setBorder","gridRowBackgroundImage","setBackgroundImage","NextPage","PdfGridCell","cellWidth","tempval","fontSpilt","finsh","rowSpanRemainingHeight","hasRowSpan","hasColSpan","isFinish","gridRowSpan","internalIsCellMergeContinue","internalIsRowMergeContinue","internalIsCellMergeStart","internalIsRowMergeStart","PdfGrid","isSingleGrid","ParentCell","isChildGrid","rowSpanExists","hasRowSpanSpan","columnSpanExists","measureWidth","layouter","getTextFont","webLink","cellPadding","cellSpacing","drawCellBackground","getBackgroundBrush","backgroundImage","getBackgroundImage","adjustContentLayoutArea","returnBounds","getStringFormat","cancelSubsequentSpans","allowHorizontalOverflow","rowOverflowIndex","adjustOuterLayoutArea","getTextPen","getTextBrush","strFormat","innerLayoutArea","allowRowBreakAcrossPages","_rowHeight","splitChildRowIndex","rowFontSplit","repeatFlag","layoutRect","childGrid","PdfGridLayouter","PdfGridLayoutFormat","LayoutFormat","setSpan","checkSpan","childGridResult","rowBreakHeightValue","rowBreakHeight","NestedGridLayoutResult","imageBounds","drawCellBorders","borderOverlapStyle","currentColIndex","columnSpan","isCellMergeContinue","compWidth","currentRowIndex","rowCollection","totalHeight","rowMergeComplete","cellIndex","internalWidth","tempWidth","PdfGridCellCollection","tempcell","PdfGridColumn","isCustomWidth","PdfGridColumnCollection","internalColumns","measureColumnsWidth","isPageWidth","getDefaultWidths","subFactor","PdfGridRow","gridRowOverflowIndex","rowWidth","isrowFinish","isRowSpanRowHeightSet","noOfPageCount","isRowHeightSet","isPageBreakRowSpanApplied","isRowMergeComplete","isHeaderRow","pdfGrid","bRowSpanExists","gridCells","gridRowBreakHeight","gridResult","bColumnSpanExists","cellIn","rowin","rowWid","PdfGridRowCollection","temprow","PdfGridHeaderCollection","gridSize","isGridSplit","isRearranged","pageBounds","listOfNavigatePages","parentCellIndex","breakRow","hasColumnSpan","beginCellDraw","endCellDraw","bRepeatHeader","gridRows","gridHeaders","gridInitialWidth","gridStyle","ispageWidth","ischildGrid","measure","parentCell","onBeginCellDraw","raiseBeginCellDraw","onEndCellDraw","raiseEndCellDraw","hasChanged","gridLocation","currentCellIndex","maxSpan","isRowMergeContinue","isCellMergeStart","isRowMergeStart","maximumRowSpan","cellcolSpan","cellrowSpan","cellmaxSpan","columnCount","childGridColumnWidth","colCount_1","colCount_2","RowCount","ColCount","childGridColWidth","childheight","columnRanges","currentLocation","slr","isPaginate","gridLayoutFormat","currentPageBounds","currentGraphics","startLocation","hType","horizontalOverflowType","determineColumnDrawRanges","endColumn","cellWidths","subWidths","layoutedPages","startPage","cellBounds","cellStartIndex","cellEndIndex","returnObject","raiseBeforePageLayout","drawHeader","headerResult","drawRow","repeatRowIndex","getNextPageformat","repeatRow","rowResult","tempResult","raisePageLayouted","isRowBreaksNextPage","i_2","repeatHeader","j_1","headerRepeat","j_2","tempResult1","i_3","checkIsFisished","i_4","i_5","recalHeight","ReCalculateHeight","pageGraphics","location_2","totalwidth","childGridCell","i_6","bottomPadding","isPdfGrid","maximumCellBoundsWidth","largeNavigatePage","rowLayoutBoundsWidth","reArrangePages","FinishedDrawingCell","pageindex","CheckIfDefaultFormat","measureTrailingSpaces","noClip","RaiseBeforeCellDraw","PdfGridBeginCellDrawEventArgs","raiseAfterCellDraw","cellstyle","PdfGridEndCellDrawEventArgs","count_1","PdfGridLayoutResult","raiseBeginPageLayout","PdfGridBeginPageLayoutEventArgs","startRowIndex","PdfGridEndPageLayoutEventArgs","raiseEndPageLayout","RowLayoutResult","rowHeightWithSpan","currRowIndex","drawRowWithBreak","repeatRowNumber","isFit","isFitToCell","location_4","cancelSpans","calculateHeight","gridHeight","gridColumnWidth","cellstyle1","rowBreakPageHeightCellIndex","GridCellEventArgs","gridRowIndex","gridCellIndex","gridBounds","bSkip","PdfCancelEventArgs","BeginPageLayoutEventArgs","EndPageLayoutEventArgs","nextPdfPage","layoutedBounds","bIsFinished","PdfTrueTypeFont","createFontInternal","getUnicodeLineWidth","calculateStyle","iStyle","equalFont","enableCache","isEmbed","isUnicodeFont","glyphIndices","resultGlyph","PdfPageTemplateElement","InitiateBounds","dockStyle","resetAlignment","alignmentStyle","setAlignment","isForeground","templateType","updateDocking","dock","canBeSet","getAlignmentBounds","getDockBounds","getSimpleAlignmentBounds","getTemplateAlignmentBounds","actualBounds","convertSign","getSimpleDockBounds","getTemplateDockBounds","getParserFunction","fromView","setCulture","allowSorting","allowResizing","allowGrouping","allowReordering","enableGroupByFormat","showInColumnChooser","allowSearching","autoFit","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","setFormatter","extend$1","setParser","commandsTemplate","headerTemplateFn","fltrTemplateFn","editTemplate","filterTemplate","isForeignColumn","ddEditedData","foreignKeyField","foreignKeyValue","sortComparer","xObj","yObj","getForeignData","getSortDirection","setSortDirection","getFreezeTableName","freezeTable","refreshReactColumnTemplateByUid","refreshReactHeaderTemplateByUid","getFormatter","formatFn","getParser","parserFn","getColumnTemplate","getHeaderTemplate","getFilterItemTemplate","getDomSetter","rowDataBound","queryCellInfo","headerCellInfo","actionBegin","actionComplete","dataBound","rowSelecting","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","columnDragStart","columnDrop","beforePrint","printComplete","batchCancel","beforeOpenAdaptiveDialog","resizeStop","filterChoiceRequest","exportGroupCaption","initialLoad","initialEnd","dataReady","contentReady","uiUpdate","onEmpty","inBoundModelChanged","modelChanged","colGroupRefresh","headerRefreshed","sortComplete","searchComplete","groupComplete","ungroupComplete","groupAggregates","refreshFooterRenderer","refreshAggregateCell","destroyAutoFillElements","beforeCellFocused","keyPressed","columnVisibilityChanged","columnWidthChanged","columnPositionChanged","rowsAdded","rowsRemoved","headerDrop","dataSourceModified","refreshVirtualBlock","dblclick","tooltipDestroy","preventBatch","addDeleteAction","exportDetailDataBound","exportDetailTemplate","pdfExportComplete","freezeRender","getForeignKeyData","generateQuery","showEmptyGrid","foreignKeyData","dataStateChange","dataSourceChanged","beforeFragAppend","textWrapRefresh","recordAdded","cancelBegin","hierarchyPrint","exportRowDataBound","selectVirtualRow","columnsPrepared","cBoxFltrComplete","fltrPrevent","detailIndentCellInfo","virtaulCellFocus","virtualScrollEdit","editReset","getVirtualData","infiniteEditHandler","groupCollapse","refreshHandlers","beforeRefreshOnDataChange","filterDialogClose","refreshCustomFilterOkBtn","setFullScreenDialog","refreshExpandandCollapse","enterKeyHandler","refreshVirtualMaxPage","setVirtualPageQuery","selectRowOnContextOpen","pagerRefresh","resetVirtualFocus","refreshVirtualEditFormCells","scrollToEdit","createVirtualValidationForm","validateVirtualForm","refreshInfinitePersistSelection","refreshFrozenPosition","refreshResizePosition","refreshSplitFrozenColumn","renderResponsiveChangeAction","renderResponsiveColumnChooserDiv","showAddNewRowFocus","destroyEditForm","CellType","Data","Header","Summary","GroupSummary","CaptionSummary","Filter","Indent","GroupCaption","GroupCaptionEmpty","Expand","HeaderIndent","StackedHeader","DetailHeader","DetailExpand","CommandColumn","DetailFooterIntent","RowDragIcon","RowDragHIcon","RenderType","Content","ResponsiveDialogAction","isEdit","isSort","isColMenu","isColumnChooser","serviceLocator","dataState","foreignKeyDataState","initDataManager","addRows","reorderRows","removeRows","crudActions","refreshFilteredCols","getDataModule","getCurrentViewRecords","gObj","isQueryInvokedFromData","skipPage","isAutoCompleteCall","columnQueryMode","isPrimaryKey","selectQueryFields","searchQuery","aggregateQuery","sortQuery","virtualGroupPageQuery","pageQuery","fName","allowPaging","enableInfiniteScrolling","infiniteScrollModule","pagerModule","pagerObj","isAllPage","isManualRefresh","groupSettings","enableLazyLoading","getColumnByField","columnName","formatGroupColumn","sortSettings","sortGrp","fcolumn","isForeignKey","sSettings","searchSettings","getSearchColumnFieldNames","needForeignKeySearch","getForeignKeyColumns","fGeneratePredicate","Predicate$1","predList","skipFoerign","foreignColEmpty","foreignColumn","filterSettings","colType","foreignCols","defaultFltrCols","columns_1","getColumnByUid","grabColumnByFieldFromAllCols","excelPredicate","CheckBoxFilterBase","foreignCols_1","grabColumnByUidFromAllCols","getColumnByForeignKeyValue","columnData","fPredicate","getPrimaryKeyFieldNames","eventPromise","deferred_1","formatVal","pr","previousData","deff","endEdit","getForeignKeyDataState","setForeignKeyDataState","getStateEventArgument","adaptr","dataArgs","disablePageWiseAggregates","isDataChanged","editArgs_1","cancelEdit","colFieldNames","columns_2","filteredCols","enableColumnVirtualization","getColumnModelByFieldName","refreshFilteredColsUid","setRowValue","setCellValue","pKeyField","makechanges","isSpanned","isRowSpanned","CellMergeRender","cellArgs","spannedCell","getService","cellSpan","rowsObject","getRowsObject","isDataRow","targetCell_1","uid_1","colSpanLen","colSpanRange","rowSpanRange","spanText","rowspan","backupMergeCells","setMergeCells","generteKey","fname","splitKey","getMergeCells","updateVirtualCells","mCells","getIndexFromAllColumns","vColumnIndices","getColumnIndexesInView","iterateArrayOrObject","getVisibleColumns","rowCell","gridHeader","gridContent","gridFooter","movableContent","movableHeader","gridChkBox","editedRow","addedRow","leftRight","frozenRight","dataColIndex","ariaColIndex","dataRowIndex","tbody","colGroup","initialFrozenColumnIndex","isSpan","rowTemplate","refreshRow","extendObjWithFn","refreshMergeCells","tempCells","cells_1","attributes$1","rowArgs","chekBoxEnable","isFrozenGrid","isFirstVisibleCell","selIndex","getSelectedRowIndexes","checkAllRows","buildAttributeFromRow","setStyleAndAttributes","cellRendererFact","isColumnSelected","isGroupFirstCell","gridLines","requireTemplateRef","parentDetails","parentInstObj","printGridParent","isTemplate","thisRef_1","renderTemplates","requestTypeAction","prevRowCell","prevRowCells","resetrowSpanvalue","frozenRows","getFrozenRightColumnsCount","getFrozenLeftCount","movableCount","cellIdx","cellMerge","resetColandRowSpanStickyPosition","currentRowCell","nextRowCell","emptyColspan","getFrozenLeftColumnsCount","freezeCells","groupCaptionRowLeftRightPos","applyStickyLeftRightPosition","oldColspan","colspan","resetColspanGroupCaption","eventArg_1","isSelectable","isReactChild","cellTemplate","thisRef_2","disableRowSelection","isRowDragable","selectionSettings","persistSelection","primaryKey_1","pKey_1","SelectedRecords","partialSelectedRecords","disableSelectedRecords","detailTemplate","lazyLoadCssClass","rowRenderingMode","textWrapSettings","wrapMode","summarycell","thisRef","eventArg","selectionModule","isPartialSelection","selRowIndex","chkBox","isDetail","row$1","isAltRow","isCaptionRow","isAggregateRow","parentUid","RowModelGenerator","generateRows","getInfiniteIndex","enableImmutableMode","generateRow","ensureColumns","generateCell","tIndex","parentGid","hierarchyPrintMode","expandedRows","enableAltRow","refreshForeignKeyRow","getFrozenMode","generateCells","foreignKeyColumns","dummies","oIndex","isDataCell","rowID","refreshRows","SummaryModelGenerator","groupFooterTemplate","groupCaptionTemplate","columnSelector","loadSummaryOnEmpty","buildSummaryData","getGeneratedRow","summaryRow","indents","getIndentByLevel","isDetailGridAlone","indentLength","getIndentCount","allowRowDragAndDrop","getGeneratedCell","getCellType","sColumn","scolumn","headerText","dummy","summaryRows","single","disp","disablePageWiseAggregatesGroup","calculateAggregate","GroupSummaryModelGenerator","CaptionSummaryModelGenerator","initVal","GroupModelGenerator","infiniteChildCount","renderInfiniteAgg","summaryModelGen","captionModelGen","isInfiniteScroll","isCollapseStateEnabled","ensureRowVisibility","parentid","generateDataRows","preCaption","captionRow","generateCaptionRow","getPreCaption","isRenderAggregate","aggregatesCount","setInfiniteRowVisibility","preCap","getCaptionRowCells","visibles","groupedLen","generateIndentCell","captionCells","cIndex_1","wFlag","tmpFlag","childID","childGid","gSummary","fkValue","cRow","caption","childRow","ContentRender","freezeRows","movableRows","freezeRowElements","prevCurrentView","visibleRows","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","tempFreezeRows","rafCallback","ariaService","setBusy","getPanel","setRowsInLazyGroup","infiniteScrollSettings","prevPage","maxBlock","maxBlocks","rowIdx","rowElements","editSettings","showAddNewRow","addNewRowFocus","preventAdjustColumns","focusModule","setFirstFocusableTabIndex","groupCaptionAction","case","getContentTable","setPadding","removePadding","widthService","enableDeepCompare","getModelGenerator","enableAfterRender","refreshContentRows","droppableDestroy","pressedKey","byKey","keyArgs","renderPanel","busy","setPanel","renderHorizontalScrollbar","scrollbarHeight","getScrollBarWidth","setScrollbarHeight","renderTable","contentDiv","virtualTable","virtualTrack","createContentTable","setTable","multiselectable","initializeContentDrop","getHeaderContent","table$1","cellspacing","setColGroup","getHeaderTable","getColGroup","editModule","formObj","showConfirmDialog","destroyForm","currentMovableRows","isReactPrintGrid","initialPageRecords","refFrag","refHdrfrag","hdrfrag","hdrTbody","trElement","isColumnVirtualInfiniteProcess","isInfiniteColumnvirtualization","modelData","isGroupFrozenHdr","isGroupAdaptive","emptyVcRows","checkCache","setGroupCache","templatetoclear","clearReactVueTemplates","blockLoad","vcRows","virtualInfo","offsets_1","vGroupOffsets","bSize","contentModule","isEndBlock","blockIndexes","contentPanel","rowObject","isVFFrozenOnly","bIndex","mhdrData","vgenerator","addFixedColumnBorder","virtualFrozenHdrRefresh","lazyLoadRender","refRowsObj","setInfiniteVisibleRows","getBlockSize","rowTemplateID","getRowTemplate","colcount","appendChildren","isTR","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","isVue3","groupCache","removeMaskRow","parentTable","getUpdateUsingRaf","updateBlazorTemplate","resetStickyLeftPos","refreshFrozenScrollbar","newRow","startAdd","isAddNewRow","getVisibleFrozenRightCount","enableCacheOnInfiniteColumnVirtual","vRows","headerCellHeight","getVisibleFrozenLeftCount","maintainRows","getGroupCache","initialGroupRows","getCurrentBlockInfiniteRecords","getReorderedRows","getReorderedFrozenRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","infiniteRows","contentTable","getRowElements","setRowElements","colgroup","testRow","needFullRefresh","getDataRows","contentrows","infiniteRowVisibility","isDetailRow","clen","getNormalizedColumnIndex","getColumnIndexByUid","displayVal","setDisplayNone","invokedFromMedia","hideAtMedia","updateMediaColumns","trs","actualIndex","parentsUntil","setDisplayValue","isFreeze","infiniteData","getHeaderColGroup","renderEmpty","tbody$1","getRowByIndex","getInfiniteRowIndex","fRows","getVirtualRowIndex","setRowObjects","immutableModeRendering","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","hasBatch","oldRowElements","currentLen","args_1","refreshImmutableContent","objectEqualityChecker","primaryKey","getBatchChanges","newRowPosition","updateCellIndex","rowEle","HeaderRender","frzIdx","notfrzIdx","visualElement","headercelldiv","getStackedHeaderColumnByHeaderText","lockColumn","getColumnIndexByField","closest$1","colPosRefresh","renderCustomToolbar","updateCustomResponsiveToolbar","toggleStackClass","headerDiv","createHeaderTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","headerTable","tHead","createTable","tableEle","findHeaderRow","thead","colGroup$1","rowBody","updateColGroup","colHeader","headerRow","colDepth","measureColumnDepth","getHeaderCells","len_2","lockcolPositionCount","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","isStackLastCol","isLockColumn","getCellCnt","stackedLockColsCount","getStackedLockColsCount","isFirstCol_1","isLaststackedCol","frozenColumns","lockColsCount","refreshUI","setWidthToColumns","updateDefaultCursor","gCells","isXaxis","firstHeaderCell","showDropArea","toolbarItems","toolbarLeft","toolbarItem","showResponsiveCustomSort","showResponsiveCustomFilter","enableAdaptiveUI","resToolbar","CellRenderer","localizer","rowChkBox","isReactCompiler","literals_1","dummyData","invokeFormatter","checkFor","doesImplementInterface","refreshTD","parentRow","newTD","cloneAttributes","arialabelText","displayAsCheckBox","localeStr","fromFormatter","addStickyColumnPosition","buildAttributeFromCell","customAttributes","clipMode","isCheckBoxType","AriaService","setStateAndProperties","setExpand","isBusy","setGrabbed","isGrabbed","grabbed","setDropTarget","isTarget","dropeffect","datarole","haspopup","rowcount","HeaderCellRenderer","hTxtEle","sortEle","chkAllBox","fltrMenuEle","prepareHeader","hValueAccer","elementDesc","innerDIV","headerValueAccessor","checkAllWrap","matchFlColumns","extendPrepareHeader","gridObj","headerTempID","headerTextAlign","Ji","titleElem","matchFilteredColumns","StackedHeaderCellRenderer","toolTip","frozenDirection","isChildColumn","IndentCellRenderer","GroupCaptionCellRenderer","cellUid","fKeyValue","gTemplateValue","domSetter","gCaptionTemp","tempValue_1","captionTemplate","tempID","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","emptyGrid","headerRenderer","getRenderer","contentRenderer","isLayoutRendered","emptyRow","refreshDataManager","filterModule","filterObjIndex","prevFilterObject","flIcon","checkboxPrevFilterObject","Columns","headerCell","getColumnHeaderByField","groupModule","preventFocusOnGroup","searchString","rmtHdrChkbxClicked","pageSizes","dataLength","totalRecordsCount","prevPageMoving","resetTemplates","detailTemplateID","resetBlazorTemplate","toolbarTemplate","refreshComplete","maskRow","loadingIndicator","indicatorType","enableVirtualMaskRow","isCaptionCollapse","showMaskRow","isFActon","isNeedForeignAction","getFData","foreignKeyLength","deffered_1","validateGroupRecords","dataManagerSuccess","dataManagerFailure","fbool","sendBulkRequest","dmSuccess","renderEmptyRow","spanCount","rowDropSettings","targetID","emptyRecordTemplate","emptyRecordTemplateID","getEmptyRecordTemplate","dynamicColumnChange","updateColumnType","cFormat","fmtr","validationRules","isColTypeDef","actionArgs","isInfiniteDelete","isInfiniteEnd","totalDataRecordsCount","updatesOnInitialRender","content$1","dataRowCount","isEmptyCol","buildColumns","prepareColumns","isAutoGen","iterateComplexColumns","complexCols","instantiateRenderer","addRenderer","cellrender","addCellRenderer","group0","groupN","addWhere","curFilter","rPredicate","updateGroupInfo","getDatePredicate","updatedGroup","itemGroup","updatedGroupItem","data_1","customAggregate","CellRendererFactory","cellRenderMap","getEnumValue","ResponsiveDialogRenderer","isCustomDialog","evtHandlers","closeCustomDialog","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","refreshCustomFilterClearBtn","addRemoveEventListener","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeDialog","saveBtn","backBtn","localeObj","customExcelFilterParent","filterClearBtn","isFiltered","getHeaderTitle","columnChooserModule","responsiveDialogRenderer","columnMenuResponsiveContent","cDiv","customColumnDiv","renderResponsiveContent","sortColumns","showColumnChooser","sortBtnParent","getSortedFieldsAndDirections","buttonInnerText","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","allowMultiSorting","isSortApplied","resetSortButtons","directionTxt","setSortedCols","getCurrentSortedFields","menuCol","filteredCol","autoFitColumns","closeCustomFilter","Hi","groupColumn","ungroupColumn","sortColumn","showResponsiveCustomColumnChooser","isRowResponsive","showResponsiveDialog","colDiv","isDialogClose","clearCustomFilter","removeCustomDlgFilterEle","renderCustomFilterDialog","renderResponsiveDialog","openDialog","createOptions","setTopToChildDialog","checkBoxBase","excelFilterBase","showMask","dialogEle","colMenu","outerDiv","customFilterDlg","getDialogOptions","adaptiveDlgTarget","dialogCreated","beforeDialogClose","renderResponsiveHeader","addBiggerDialog","sortField","closeResponsiveDialog","clearSorting","primaryKeyValue","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","clearFiltering","filterClear","removeCustomFilterElement","custommenu","applyCustomFilter","mainfilterdiv","destroyCustomFilterDialog","customEle","ServiceLocator","registerAdaptiveService","isAdaptiveUI","RendererFactory","rendererMap","rName","ColumnWidthService","totalColumnsWidth","getTableWidth","setMinwidthBycalculation","maxWidthColumns","tWidth","tmWidth","collection_1","isWidthUndefined","setUndefinedColumnWidth","cWidth","tgridWidth","getFrozenColumns","setWidthToTable","ispercentageWidth","fWidth","headerCol","contentCol","editTableCol","movableScrollbar","movableWidth","placeHolder","getSiblingsHeight","getHeightFromDirection","isWidUndefCount","resetIndentWidth","isAutoColumn","isMaxWidth","isAutoResize","resizeSettings","FocusStrategy","oneTime","swap","virtualSelectionInfo","forget","skipFocus","focusByClick","firstHeaderCellClick","prevIndexes","refMatrix","refreshMatrix","isVirtualScroll","groupedFrozenRow","rowModelGen","focusCheck","setActive","enableHeaderFocus","generate","passiveFocus","firstHeaderCellIndex","findCellIndex","addFocus","getFocusInfo","skipAction","isGantt","setLastContentCellTabIndex","focusableGroupedItems","getFocusableGroupedItems","toolbarElement","toolbarModule","focusableToolbarItems","getFocusableToolbarItems","isFocusFirstCell","beforeArgs","byClick","handleFilterNavigation","inputSelector","buttonSelector","focusablePagerElements","getFocusablePagerElements","allowToPaging","checkPagerHasFocus","lastHeaderCellIndex","isValidBatchEditCell","findBatchEditCell","getDropDownPage","changePagerFocus","setPagerFocus","checkFirstPagerFocus","skipOn","setLastContentCellActive","focusOutFromChildGrid","focusFirstHeaderCell","activeKey","bValue","prevBatchValue","outline","swapInfo","jump","toHeader","getNextCurrent","setActiveByKey","lastIdxCell","nextHeaderCellIndex","firstContentCellIndex","virtual","firstCellFocus","previousCellIndex","focusOutFromHeader","addBatchRow","clearIndicator","setPagerContainerFocus","focusType","focusElement","searchModule","headerFocus","cellColIndex","cellCol","limitRow","tempCellIndex","cellIndexObtain","prevTempCellIndex","lastContentCellIndex","parentGrid","parentRows","parentRowIndex","nextFocusCell","rowCells","allowAdding","commandColumnFocusElement","addNewRow","filterCell","inputElements","firstEditCell","focusVirtualElement","virtualData","isKeyFocus","selectedRowIndex","getFocusedElement","setFocusedElement","filterMenuElement","cellElem","getCellFromIndex","addOutline","resetFocus","isJump","getInfo","focusedColumnUid","getColumnByIndex","ContentFocus","HeaderFocus","cFocus","frozenRow","batchLen","updateRow","isRowTemplate","matrixcs","hdrLen","headerModule","isScroll","lastRowHeaderIdx","refreshAddNewRowMatrix","handlerInstance","index_1","frzLeftCount","frzRightCount","isGroup","gridPosition","freezeLeftColWidth","freezeRightColWidth","leftrightColumnWidth","passiveHandler","filterfocus","restoreFocusWithAction","internalCellFocus","startIdx","startCellIdx","headrIdx","findNextCellFocus","addedrow","groupSortFocus","groupTextFocus","showGroupedColumn","groupCancelFocus","getPrevIndexes","forgetPrevious","toFrozen","getFocusable","isLast","commandButtons","emptyTable","inValid","vector","moveTo","incrementNumber","columnsCount","rowColumns","currentColumnCount","keyActions","shiftTab","upArrow","downArrow","shiftRight","shiftLeft","indexesByKey","getCurrentFromAction","editNextRow","allowNextRowEdit","isLastCellPrimaryKey","visibleIndex","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","nextRowFocusValidate","previousRowFocusValidate","enterFrozen","headerSwap","isHeaderFocus","optionals","defaultLen","rIndex","cIndex","isData","isCellWidth","getGridSeletion","allowColumnSelection","isLastCell","current1","checkFilterColumn","getHeaderType","PageSettings","ColumnChooserSettings","Selection","selectedRowIndexes","selectedRowCellIndexes","selectedRecords","selectedColumnsIndexes","checkBoxState","isMultiShiftRequest","isMultiCtrlRequest","isMultiCtrlRequestCell","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","unSelectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","virtualSelectedData","deSelectedData","isHdrSelectAllClicked","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isMultiSelection","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","isKeyAction","isRowDragSelected","isCheckboxReset","isRowDeselect","autoFillRLselection","isFocusLastCell","right_bottom","bottom_left","top_right","top_left","top_bottom","top_right_bottom","top_bottom_left","top_right_left","right_bottom_left","all_border","initializeSelection","onActionBegin","fDataUpdate","getRowObj","gridElement","hidePopUp","isPersistSelection","getCurrentBatchRecordChanges","currentRecords","iterateExtend","deletedRecords$1","selectRow","enableSimpleMultiRowSelection","addRowsToSelection","selectedRow","getRowObjectFromUID","isAvailable","getSelectedRecords","clearRowSelection","isRowType","activeTarget","isCheckboxModeResetOnRowClick","checkboxMode","isSelectionTypeMultiple","rowDeselect","actualTarget","selectRowIndex","rowSelectingCallBack","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","isHeaderCheckboxClicked","isRemoved","can","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","isHeaderCheckBoxClicked","rowIndexes","updateRowProps","selectRowsByRange","selectRows","getCollectionFromIndexes","selectedDataUpdate","selectableRowIndex","isSingleSel","prevRow","selectRowFn","selectableRowIndex_1","checkboxOnly","checkboxColumn","rowIndexes_1","isUnSelected","enableToggle","checkVirtualCheckBox","addRemoveClassesForRow","clearRowCallBack","selectedEle","updatePersistCollection","updateCheckBoxes","getPkValue","pkField","isComplexField","chkState","ensureCheckboxFieldSelection","updatePersistDelete","removeAddCboxClasses","setChecked","checkedTarget","setCheckAllState","contextMenuModule","mouseButton","checkSelectAllClicked","clearCellSelection","clearColumnSelection","prevCIdxs","prevECIdxs","row_1","rowIndex_1","foreignKeyData_1","target_1","isRowClicked","getCheckAllStatus","updatePersistSelectedData","mRow","rowDeselectCallBack","frozenRightRow","rowDeselectObj","rowidxex","rowInString","target_2","rowidx","dataTxt","cancl_1","selectCell","isCellType","selectedCell","getColIndex","isCellSelected","successCallBack","previousRowCell","getCellIndex","previousRowCellIndex","cellSelectingArgs","cncl","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","rIdx","selectCellsByRange","cellIndexes","getCellFromRow","stIndex","edIndex","cellSelectionMode","getLastColIndex","addAttribute","cellSelectedArgs","selectCells","rowCellIndexes","cellSelectArgs","cellLen","addRowCellIndex","prvRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","selectedCellIdx","cellDeselect","getCellsByTableName","cancl","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","bdrElement","showHideBorders","gBRect","isCellDrag","startAFCell","endAFCell","selectLikeExcel","startDIndex","updateScrollPosition","timer1","timer2","isAutoFillSel","nextElement_1","findNextCell","nextElement","positionAFBorders","siblingEles","nextEleInd","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","setFrozenBorders","bdrStr","fixedCells","firstRowIdx","firstColIdx","lastRowIdx","lastColIdx","preCell","refreshFrozenBorders","frcBdrElement","fhBdrElement","frhBdrElement","createBorders","positionBorders","isLastRow","isFirstRow","isFirstCell","setBorders","stOff","endOff","parentOff","rightOffset","selectDirection","updateStartEndCells","mcBdrElement","mhBdrElement","applyBorders","applyBothFrozenBorders","drawAFBorders","bdrAFBottom","createAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","getFooterContent","scrolloffSet","borderAFRightValue","bdrAFRight","bdrAFTop","leftRemove","topRemove","autofill","hideAFBorders","createBeforeAutoFill","updateCell","getAutoFillCells","isApply","startrowIdx","endrowIdx","endCellIdx","colLen","startCellIndex","trIdx","mUPTarget","closeRowCell","updateAutoFillPosition","updateStartCellsIndex","enableAutoFill","rindex","isFrozenRow","isFrozenRight","enableDrag","isUpdate","postion","clearSelAfterRefresh","pkValue","actionBeginFunction","actionCompleteFunction","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","gobj","chkField","dataSuccess","renderModule","checkedFieldData","setRowSelection","selectedStateKeys","unSelectedRowStateKeys","rowData_1","rowObj_1","selectedData_1","getAvailableSelectedData","filteredSearchedSelectedData","refreshPersistSelection","editChkBox","onDataBound","totalRecords","checkSelectAllAction","cRenderer","editForm","virtualCheckBoxData","checkSelectAll","updateSelectedRowIndexes","triggerChkChangeEvent","DOMTokenList","checkSelect","rowCellSelectionHandler","moveIntoUncheckCollection","rowObj_2","rowObj_3","updateSelectedRowIndex","selectedVal","isAllSelected","isSelectAllRowCount","someDataSelected","checkToSelectAll","checkedLen","getRecord","targetHeadCell","targetRowCell","popUpClickHandler","chkSelect","headerSelectionHandler","setCssInGridPopUp","checkboxColumnIndexCheck","headerAction","hdrLength","getKeyColIndex","targetLabel","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","clipboardModule","ctrlPlusA","applySpaceSelection","stackedHeader","innerColumn","getstackedColumns","applyUpDown","selectColumn","selectColumnsByRange","innerColumnIndexes","detailIndentCell","dragdropIndentCell","addRemoveActiveClasses","selectedCol","getColumnHeaderByUid","isColSelected","isMultiColumns","clearColDependency","previousColumnIndex","updateColSelection","updateColProps","selectColumns","columnIndexes","getselectedCols","selectingArgs","selectedArgs","selectColumnWithExisting","clearIndex","deselectedArgs","columnDeselect","selectedHeader","getSelectedColumnCells","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteFunc","actionCompleteHandler","resizeEndFn","checkAllBox","isSelectedRowIndexUpdating","Search","hasNonNumericCharacters","decimalFound","searchString_1","isActionPrevent","refreshSearch","onSearchComplete","cancelBeginEvent","ShowHide","colName","isShowHide","batchChanges","changedCol","showBy","getToggleFields","hideBy","getKeyBy","batchActionPrevent","changedStateColumns","closeEdit","showHideArgs","currentViewCols","isModeChg","previousValues","oneTimeReady","uiupdate","tlbrElement","tlbrLeftElement","tlbrCenterElement","tlbrRightElement","tlbrItems","tlbrWidth","mHdrHeight","ensureOverflow","getThreshold","getCssProperties","hDiv","footerDiv","setPageXY","onTouchScroll","mScrollBar","onCustomScrollbarScroll","contentScrollHandler","headerScrollHandler","onContentScroll","scrollTarget","isPreventScrollEvent","errorFreeze","errorFixed","scrollRight","scrollDown","isFooter","cont","pageXY","getPointXY","mHdr","mCont","getScrollbleParent","addStickyListener","makeStickyHeader","resizeFrozenRowBorder","frzCols","enableStickyHeader","sLeft","sHeight","setLastRowCell","windowScale","devicePixelRatio","toolbarEle","groupHeaderEle","parentTop","colMenuEle","elemTop","setSticky","ccDlg","AggregateColumn","setPropertiesSilent","AggregateRow","copyContent","isSelect","isMacLike","getSelectedRowCellIndexes","clipBoardTextArea","x_1","y_1","setCopyData","withHeader","getSelection","selectedIndexes","headerTextArray","getCopyData","checkBoxSelection","colIndexes","getColumnHeaderByIndex","isCell","queryCommandSupported","removeAllRanges","rowCellIndxes","BASE_DOC_URL","DOC_URL","WARNING","patchadaptor","detailLists","cOp","generateMessage","module_missing","injected","promise_enabled","primary_column_missing","selection_key_missing","actionfailure","formatErrorHandler","ajaxError","ajaxErrorHandler","locale_missing","lObj","limitation","check_datasource_columns","virtual_height","grid_remote_edit","grid_sort_comparer","resize_min_max","action_disabled_column","destColumn","exporting_begin","exporting_complete","foreign_key_failure","initial_action","frozen_rows_columns","column_type_missing","datasource_syntax_mismatch","jsonResult","SortDescriptor","SortSettings","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","LoadingIndicator","_this_1","inViewIndexes","keyA","frozenRightCount","freezeColumnRefresh","rightcount","frozenLeftCount","leftcount","movablecount","fixedcount","fixedCount","visibleFrozenLeft","visibleFrozenFixed","isPreparedFrozenColumns","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","fixedColumns","stackedLeft","stackedRight","stackedFixed","stackedMovable","stackedarrayLeft","stackedarrayRight","stackedarrayFixed","stackedarrayMovable","autoFitColumnsResize","tableIndex","componentRefresh","isChangeDataSourceCall","mergedColumns","isVirtualAdaptive","rowUid","isAutoFitColumns","islazyloadRequest","pageTemplateChange","isAutoGenerateColumns","pageRequireRefresh","mediaBindInstance","commandDelIndex","preventAutoFit","asyncTimeOut","isExportGrid","isWidgetsDestroyed","enableLogger","Grid_1","mergePersistGridData","getPageFromTop","captionTemplateRef","isAngularCaptionTemplate","pagerTemplate","setFrozenCount","enableInfiniteAggrgate","allowExcelExport","allowPdfExport","resizeCheck","isCommandColumn","allowDeleting","extendRequiredModules","contextMenuItems","isForeignKeyEnabled","columnMenu","columnMenuItems","contextMenu","initProperties","initializeServices","mediaCol","filterOperators","notNull","defaultLocale","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Cancel","Update","Print","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Items","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","ColumnMenu","SearchColumns","Matchs","FilterButton","FilterTitle","FilterIcon","ClearButton","StartsWith","NotStartsWith","Like","EndsWith","NotEndsWith","Contains","NotContains","IsNull","NotNull","IsEmpty","IsNotEmpty","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Ungroup","GroupButton","UnGroupAria","GroupSeperator","UnGroupIcon","GroupedSortIcon","GroupedDrag","CheckBoxLabel","SelectAllCheckbox","SelectRow","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","PreviousPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","SelectAll","AddCurrentSelection","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","AND","OR","ShowRowsWhere","ToolbarMenuDialogARIA","FilterMenuDialogARIA","ExcelFilterDialogARIA","CheckBoxFilterDialogARIA","DialogEditARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","Sort","SortIcon","FilterDescription","SortDescription","ColumnMenuDescription","GroupDescription","ColumnHeader","TemplateCell","CommandColumnAria","DialogEdit","ClipBoard","AscendingText","DescendingText","NoneText","Expanded","Collapsed","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","altDownArrow","altUpArrow","ctrlDownArrow","ctrlUpArrow","ctrlPlusP","ctrlPlusC","ctrlShiftPlusH","ctrlLeftArrow","ctrlRightArrow","enableQueryString","pageValue","currentPageValue","aggregateModule","updateColumnModel","getMediaColumns","setColumnIndex","setInitialFrozenColumnIndex","checkLockColumns","processModel","gridRender","updateStackedFilter","refreshMaskRow","axisDirection","dialogHolder","maskRowCount","maskTemplate","getShimmerTemplate","maskSpan","maskTableHeight","contentRowCount","headerMaskTable","createEmptyMaskTable","contentMaskTable","maskRowContentScroll","createMaskTable","getContentMaskColumns","footerContentMaskTable","translateMaskRow","maskElement","gridContentScrollHeight","maskTable","maskColgroup","createMaskRow","frzTd","valueX","maskTHead","maskTBody","altRow","addEditRow","addEditRowIndex","applyMaskRow","addEditMaskRow","tfoot","maskTFoot","minScrollTop","maskCells","maskCell","displayAsCheckBoxCell","refColgroup","refColumns","localTD","addShimmerEffect","maskTables","refreshMaskRowColgroupWidth","gcol","getShowHideService","pushMediaColumn","updateFrozenColumnsWidth","mediaQueryUpdate","mediaColumn","showHider","refreshMediaCol","footerContent","enableHover","removeMediaListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","printModule","enableBoxSelection","checkCursor","requireRefresh","requireGridRefresh","freezeRefresh","childGridParent","parentInstance","isEllipsisTooltip","updateColumnObject","properties_1","rowTemplateFn","emptyRecordTemplateFn","detailTemplateFn","childGridObject","currentParentInstance","currentChildObject","restoreAdjustColumns","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","getContextMenu","columnMenuModule","getColumnMenu","showFilterBarOperator","resizeModule","updateResizeLines","updateGridLines","refreshToolbarItems","applyTextWrap","removeTextWrap","requestPendingState","deepWatch","gResult","enableVerticalRendering","fn_1","refreshFilter","getTablesCount","headerCells","stdHdrCell","isRecursion","updateLockableColumns","frozenName","frozenCount","getFrozenLeftColumns","getFrozenRightColumns","isRefresh","inview","vLen","isLeftRightFrozen","individualColumn","stackedColumn","getLocaleConstants","setColumnIndexesInView","getCurrentVisibleColumns","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","gridPager","setGridPager","getMovableRowByIndex","getFrozenRowByIndex","getFrozenRightRowByIndex","getRowInfo","row_2","getMovableRows","getFrozenRightRows","getAllDataRows","includeAdd","addMovableRows","dataRows","mrows","includAdd","dRows","getMovableDataRows","getAllMovableDataRows","getFrozenDataRows","getAllFrozenDataRows","getFrozenRightDataRows","getAllFrozenRightDataRows","pkName","fieldIdx","rowuID","columnUid","refreshReactTemplateTD","childIndent","isChildRow","rowsObj","refreshGroupCaptionFooterTemplate","headerCellRenderer","filterElement","rowObjects","selectRowEle","fRowTr","setFrozenRowData","fTr","refreshForeignData","getCellByColAndRowIndex","getMovableCellFromIndex","getFrozenRightCellFromIndex","getMovableColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getFrozenLeftColumnHeaderByIndex","getMovableRowsObject","getFrozenRightRowsObject","isColumns","getStackedColumns","getUidByColumnField","getColumnFieldNames","columnNames","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedColumnsUid","showColumns","getFrozenCount","getMovableColumnsCount","isAutoWidth","autoCol_1","difference_1","autoWidth_1","isFrozenAuto","tWidth_1","gWidth","isPercentageWidthGrid","splitFrozenCount","getVisibleMovableCount","getMovableColumns","splitStackedColumns","pushStackedColumns","stackedcol","stockCol","pushallcol","text1","resetStackedColumns","headercol","gridcolumns","tempHead","firstcol","removeBorder","frozenLeftBorderColumns","lastVisibleLeftCol","frozenRightBorderColumns","firstVisibleRightCol","isVisibleColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","getFilterUIInfo","visibleFrozenColumns","pageNo","updateExternalMessage","isMultiSort","sortModule","removeSortColumn","clearGridActions","filterByColumn","filterOperator","actualFilterValue","actualOperator","removeFilteredColsByField","isClearFilterBar","fieldname","startEdit","deleteRow","editCell","saveCell","enableToolbarItems","recalcIndentWidth","indentWidth","perPixel","applyWidth","reorderColumns","fromFName","toFName","reorderModule","reorderColumnByIndex","reorderColumnByTargetIndex","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","headerRows","disValue","endRowIndex","tableWidth","percentageWidth","widthUnit","defaultIndentWidth","indentWidthUnitFormat","headerIndentCol","contentIndentCol","tableWidthUnitFormat","indentWidthUnitFormat_1","createColumnchooser","renderColumnChooser","gCols","sCols","sLen","this_3","parentKeyFieldValue","initForeignColumn","adaptiveUIMode","createGridPopUpElement","createTooltip","getTooltipStatus","headerDivTag","htable","ctable","prevElement","innerElement","myTableDiv","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","dblClickHandler","tapEvent","dataBoundFunction","checkEdit","dataRow","ariaOwns","keyPress","editFormValidate","isShowAddedRowValidate","dataObj","mergeColumns","storedColumn","storedColumns","localCol","tCol","this_4","presskey","alertDObj","setInjectedModules","refreshColumns","excelExportProperties","isMultipleExport","workbook","exportGrids","gridIds","exportMultipleExcelGrids","excelExportModule","pdfExport","pdfExportProperties","pdfDoc","exportMultiplePdfGrids","pdfExportModule","currentGridId","currentGridInstance","exportedGridResults","groupExpandAll","groupCollapseAll","clearGrouping","openColumnChooser","detailCollapseAll","detailRowModule","detailExpandAll","isContextMenuOpen","ensureModuleInjected","propertyNames","loggerModule","applyBiggerTheme","getPreviousRowData","previousRowData","hideScroll","getRowIndexByPrimaryKey","pKvalue","performComplexDataOperation","getFilteredRecords","Global","getRowUid","getRowElementByUID","cntRows","rows_2","getHiddenColumns","calculatePageSizeByParentHeight","pagesize","getNoncontentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","serverCsvExport","gridModel","setHeaderText","gridInput","headerInput","updateRowValue","setForeignKeyData","colpending","resetFilterDlgPosition","filterDlg","gClient","fClient","processRowChanges","batchAsyncUpdate","processBulkRowChanges","dataToBeUpdated","loopstring","compareChanges","setNewData","oldValues","bulkRefresh","deleteRowElement","this_5","_loop_6","isRowExist","this_6","renderRowElement","resetRowIndex","addRowObject","updateVisibleExpandCollapseRows","getFrozenRightContent","getFrozenRightHeader","getMovableHeaderTbody","getMovableContentTbody","getFrozenHeaderTbody","getFrozenLeftContentTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","isCustom","showCustomFilter","showCustomSort","showCustomColumnChooser","showAdaptiveFilterDialog","showAdaptiveSortDialog","isColVirtualization","gridCols_1","isAsyncPrint","defered","isContentReady","isPrintGrid","removeColGroup","printGridObj","renderPrintGrid","printGrid","getPrintGridModel","injectedModues","printgrid","vueInstance","waitingPop","printGridElement","printWind","resizeTo","availWidth","availHeight","groupCaption","contentColGroups","footerColGroups","hideColGroup","printGridProp","updateFunction","exportProperties","exportColumns","gLen","dataRowCnt","agrCnt","gLevel","nLevel","rCount","validSelector","copyAttr","literals","ind","autoWidth","popUp","popUpSpan","targetPosition","isBottomTail","getPopupLeftPosition","isID","coll","divNode","dlg","clName","lValue","fField","fdata","filterObject","isExecuteLocal","datePredicate","prevObj","nextObj","predicateSt","predicateEnd","dateOnlyString","padZero","ejpredicate","newCase","printGridModel","getActualPropFromColl","printMode","getExpandedState","getPrototypesOfObj","cpy","cln","checkDepth","replacedTv","scrollElem","newColspan","percentageCol","undefinedWidthCol","rowElms","uids","pushuid","mRules","frRules","getComplexFieldID","mtch_1","mapObject","returnObj","duplicateMap","evt_1","removeElem","appendElem","isChooser","listDiv","checkActiveMatrix","checkCellIndex","activeMatrix","currentCellIndexPass","blockes","visiblePage","searchInputArgs","queryFilteredColumn","existingPredicate","foreignKeyQuery","filterState","isCheckboxFilterTemplate","infiniteRenderMod","infiniteInitialLoad","infiniteSearchValChange","infinitePermenantLocalData","infiniteQueryExecutionPending","infiniteSkipCnt","infiniteScrollAppendDiff","prevInfiniteScrollDirection","infiniteLoadedElem","infiniteDataCount","infiniteLocalSelectAll","localInfiniteSelectAllClicked","localInfiniteSelectionInteracted","infiniteManualSelectMaintainPred","cBoxTrue","cBoxFalse","keyupHandler","searchHandler","searchBoxKeyUp","foreignKeyFilter","fColl","mPredicate","filterCollection","fpred","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","sIcon","getLocalizedLabel","actualPredicate","filteredColumns","allowCaseSensitive","infiniteUnloadParentExistPred","getAndSetChkElem","sBox","hideSearchbox","spinner","cBox","showDialog","btnClick","renderResponsiveFilter","dialogLabel","isResponsiveFilter","dlgObj","sbPanel","sbPos","resetDialogAppend","getAllData","elementVisible","dlgWidth","leftPos","getFilterMenuPostion","isBlanks","filterTemplateCol","filterItemTemplate","isColumnMenuFilterClosing","fltrBtnHandler","optr","ddlValue","isMenuNotEqual","isNotEqual","itemsCnt","infiniteSearchPred","infiniteFltrBtnHandler","complexQueryPredicate","addCurrSelection","existingPredicate_1","initiateFilter","checkBoxChecked","fObj","generateNullValuePredicates","notifyFilterPrevEvent","parentCurrentViewDataCount","firstVal","foreignQuery","predicte","addDistinct","filterChoiceCount","filterargs","filterObj","emptyValPredicte","generatePredicate","Vn","fullData","makeInfiniteScrollRequest","filterEvent","processSearch","getPredicateFromCols","isGrid","customQuery","queryGenerate","processDataOperation","filteredColumn","gridQuery","queryOptions","getPredicateFields","parentFilteredLocalRecords","moduleName_1","defObj","addInfiniteScrollEvent","dataResult","infiniteQuery","infiniteScrollHandler","infiniteScrollMouseKeyUpHandler","infiniteScrollMouseKeyDownHandler","maskItemHeight","maskList","wrapperElem","removeMask","borderStyle","maskLists","infiniteRemoveElements","infiniteAppendElements","existQuery","allPromise","runArray","colData","executeQueryOperations","args1","filteredData","getDistinct","processDataSource","filterColumn","updateResult","createFilterItems","updateAllCBoxes","toogleCheckbox","caseSen","updateInfiniteManualSelectPred","parentTotalDataCount","updateIndeterminatenBtn","predmdl","focusNextOrPrev","cBoxes_1","createCheckbox","checkboxUid","cBoxes","nullCounter","selectAllValue","createCboxWithWrap","isColFiltered","predicateCheckBox","predicateElement","checkBoxListElem","reduceHeight","increaseHeight","isRndere","updateInfiniteUnLoadedCheckboxExistPred","getCheckedState","selectAllParent","addCurrSelectionParent","updatePredArr","foreignKeyData$1","checkboxFilter","currentFilterValue","enableCaseSensitivity","ejValue","foreignDataObj","updateDateFilter","getCaseValue","operate","contentRefresh","isModelChanged","aria","sortedColumn","getSortedColsIndexByField","sCol","getSortColumnFromField","lastSortedCol","isRemove","backupSettings","removeSortIcons","updateSortedCols","lastSortedCols","lastCols","restoreSettings","refreshSortSettings","addSortIcons","refreshSortIcons","excelFilterSortAction","excelFilterSortActionHandler","colObj","initiateSort","showPopUp","colUid","enableSortMultiTouch","allowUnsort","updateAriaAttr","NumericContainer","pagerElement","renderNumericContainer","refreshNumericLinks","updateTotalPages","updateLinksHtml","refreshAriaAttrLabel","auxiliaryClickHandler","renderFirstNPrev","renderPrevPagerSet","renderNextPagerSet","renderNextNLast","pagerContainer","prevPager","PP","nextPager","previousPageNo","currentPageSet","isLastSet","numItems","isPagerResized","focusedorTarget","prevFocused","nextFocused","firstFocused","lastFocused","numItemFocused","npFocused","ppFocused","isPageAvailable","Pe","customText","ppIndex","avgNumItems","NPIndex","updateFirstNPrevStyles","updatePrevPagerSetStyles","updateNextPagerSetStyles","updateNextNLastStyles","currentPageIndex","firstPage","firstPageDisabled","prevPageDisabled","lastPageDisabled","nextPageDisabled","PagerMessage","pageNoMsgElem","pageCountMsgElem","hideMessage","showMessage","regx","isValidLocale","toLocaleString","Pager","pageRefresh","firstPagerFocus","enableExternalMessage","checkpagesizes","defaultConstants","currentPageInfo","totalItemsInfo","totalItemInfo","firstPageTooltip","lastPageTooltip","nextPageTooltip","previousPageTooltip","nextPagerTooltip","previousPagerTooltip","pagerDropDown","pagerAllDropDown","CurrentPageInfo","TotalItemsInfo","FirstPageTooltip","LastPageTooltip","NextPageTooltip","PreviousPageTooltip","NextPagerTooltip","PreviousPagerTooltip","PagerDropDown","PagerAllDropDown","All","Container","Information","ExternalMsg","Page","Of","Pages","containerModule","pagerMessageModule","initLocalization","isReactTemplate","renderFirstPrevDivForDevice","enablePagerMessage","renderNextLastDivForDevice","pagerdropdownModule","addAriaLabel","externalMessageModule","checkGoToPage","currentPageChanged","setDropDownValue","resizePager","focusedTabIndexElement","getFocusedTabindexElement","dropDownPage","setTabIndexForFocusLastElement","setPagerFocusForActiveElement","currentActivePage","getActiveElement","changeFocusByShiftTab","changeFocusByTab","navigateToPageByEnterOrSpace","navigateToPageByKey","tabindexElements","currentItemPagerFocus","decrementNumber","selectedClass","classElement","getElementByClass","checkFocusInAdaptiveMode","changeFocusInAdaptiveMode","pagingItem","removeTabindexLastElements","tabIndexElements","dropDownPageHolder","previousElements","targetChildrens","pagerElements","element_1","tabindexElement","addFocusClass","removeFocusClass","oldPageNo","updateQueryString","dropDownListObject","getPagerTemplate","updatedUrl","getUpdatedURL","calculateActualWidth","isStyleApplied","pagerWidth","hiddenNumItems","hideFrom","bufferWidth","detailItems","totDetailWidth_1","averageDetailWidth","numericItemWidth","numToHide","hideIndex","pagerDetailItemsWidth","detailtoHide","hiddenDetailItems","numToShow","lesserIndexItems","greaterIndexItems","pagerDropDownDiv","dropDownDiv","defaultTextDiv","pagerCons","pageSizesModule","pageSizesArray","convertValue","isPageSizeAll","beforeValueChange","pageSizeValue","isbeforeAll","ExternalMessage","externalMessage","isInitialRender","pagerDestroy","dropDownChanged","addAriaAttr","renderReactPagerTemplate","numericContainerNew","numericContainer","numericContainerDiv","isAddAction","isForceCancel","previousPage","appendToElement","updateLayout","inboundChange","resizeClassList","Resize","isDblClk","resizeProcess","isCancelAutoFit","findColumn","isMaxWidthCount","newarray","getCellElementsByColumnIndex","resizeColumn","footerTable","footerTextClone","headerTextClone","contentTextClone","columnIndexByField","indentWidthClone","detailsElement","contentText","footerText","wHeader","wFooter","wContent","columnbyindex","calcTableWidth","refreshResizefrzCols","offsetWidthValue","refreshHeight","setHandlerHeight","getResizeHandlers","touchResizeStart","callAutoFit","getTargetColumn","cancelResizeAction","refreshColumnWidth","refreshStackedColumnWidth","parentElementWidth","appendHelper","getPointX","minMove","removeHelper","updateCursor","removeEvents","updateResizeEleHeight","getColData","refreshResizeFixedCols","colSpanwidth","calculateColspanWidth","isAutoFitCol","width_1","frzHdrRefresh","width_2","columnsRight","refreshGroupCaptionRow","capRow","getParticularCol","setHelperHeight","prevWidth","finalColumns","getSubColumns","calulateColumnsWidth","minMaxCols","distributedCols","distributeColWidth","usedWidth","finalColumns_1","updateHelper","distributeWidth","incDecWidth","absIncDecWidth","appliedColumns","availableColumns","extraWidth","columns_3","afterIncDec","remainWidth","columns_4","subColumns","isFrozenColResized","doubleTapEvent","columns_5","getStackedWidth","headerRows_1","calcPos","timeoutHandler","sortRequired","isAppliedGroup","isAppliedUnGroup","isAppliedCaptionRowBorder","reorderingColumns","animateDropper","draggableType","preventDrop","rearrangeGroup","dragField","dropField","dragIndex","addColToGroupDrop","addLabel","removeColFromGroupDrop","groupGenerator","dragLabel","onGroupAggregates","updateExpand","grpRow","expandCollapseRows","applySortFromTarget","unGroupFromTarget","focusableGroupedHeaderItems","auxilaryclickHandler","addOrRemoveFocus","toogleGroupFromHeader","showToggleButton","gHeader","updateVirtualRows","captionExpand","captionCollapse","rowObjs","rowsState","cacheStartIdx","lastCaptionRowBorder","isCollapse","borderCells","rObj","nRows","actualRows","getCollapsedRowsCount","updatecloneRow","renderGroupDropArea","initDragAndDrop","refreshToggleBtn","groupElem","updateGroupDropArea","initializeGHeaderDrop","initializeGHeaderDrag","groupAddSortingQuery","animator","groupedColumn","childDiv","showUngroupButton","getParsedFieldID","getGHeaderCell","updateGroupedColumn","updateButtonVisibility","editedData","updateLazyLoadGroupAggregates","iterateGroupAggregates","updateSummaryRows","remoteResult","groupCaptionTemplates","getGroupAggregateTemplates","groupFooterTemplates","updatedData","groupedCols","groupLazyLoadRenderer","currentPageGroupCache","groupField","groupCaptionRowObject","getGroupCaptionRowObject","prevGroupKey_1","updateLazyLoadGroupAggregatesRow","getPredicates","filterCols","generateExpandPredicates","destroyRefreshGroupCaptionFooterTemplate","updatedGroupCaptionData","updateLazyLoadGroupAggregatesCell","groupFooterRowObject","captionFooterRowObject","captionFooterTemplates","prevCaptionFooterData","updatedGroupCaptionDataAggregates","groupCaptionIndex","parentCaptionRowObject","aggregateRows","aggr","groupedRowReorder","fromRowObj","toRowObj","dragRow","dropRow","dropArgs","groupReorderHandler","dropRObj","rowObjectDropIndex","orderChangeRowObjects","dropRowObject","orderChangeRowObject","resetInfiniteCache","groupReorderRowObject","rowElement","resetCachedRowIndex","dragRowObject","dragRowObjectData","dropRowObjectData","groupAggregateTemplate","dropParentRowObject","dragParentRowObject","dropRootParentRowObjects","dragRootParentRowObjects","updatedCurrentViewData","dragRowObjects","dropRowObjects","updatedDragCurrentViewData","updatedDropCurrentViewData","updatedRowObject","dragRootParentAggregateRowObject","dropRootParentAggregateRowObject","getGroupParentFooterAggregateRowObject","updatedRowObjChange","groupReorderRefreshHandler","rootParentRowObjects","updatedRowObjects","isDraggedRow","virtualCacheRowObjects","keyPresent","parentRowObject","isParentKeyPresent","nextParentObject","vIndex","evaluateGroupAggregateValueChange","vcIndex","parentRowObjects","parentFooterAggregates","gettingVirtualData","parentRowObjs","curViewRec","pK","draggedData_1","dragParentRowObjects","dropParentRowObjects","dropRootKey","dragRootKey","isInfiniteGroup","deletedCols","changeds","pKeyVal","cItem","types_1","lastGroupKey","groups_1","predicate_1","updatedGroupData","closestParent","InterSectionObserver","movableEle","fromWheel","onEnterCallback","virtualScrollHandler","debounced100","debounced50","axes","sentinel","setPageHeight","VirtualRowModelGenerator","cOffsets","rowCache","rowModelGenerator","columnInfiniteRows","currentRowStartIndex","getRowIndexFromElement","newResult","checkIsVirtual","getBlockIndexes","loadNext","loadSelf","loadedBlocks","includePrevPage","isBlockAvailable","getStartIndex","median","getGroupVirtualRecordsByIndex","setBlockForManualRefresh","getVisiblePage","prevEndIndex","indexes_1","dataRowObject","pageRecord","median_1","updateGroupRow","renderMovableContent","renderFrozenRightContent","DataRecord_1","blk","getColumnIndexes","calWidth","frzLeftWidth","diffWidth","iOffset","refreshColOffsets","currentFirst","iterateGroup","oRow","getGroupedTotalBlocks","VirtualContentRenderer","prevHeight","preStartIndex","preventEvent","tmpOffsets","VirtualElementHandler","offsetKeys","heightChange","requestTypes","isNormaledit","virtualInfiniteData","emptyRowData","isSelectionScroll","validationCheck","eventListener","widthServices","renderWrapper","renderPlaceHolder","debounceEvent","getBlockHeight","adjustTable","colsIndex","recordslength","firstRecords","virtualRows","scrollListener","scrollArgs","scrollAfterEdit","viewInfo","getInfoFromView","restoreEdit","isBlockAdded","tempBlocks","infoType","preEndIndex","ensureBlocks","firstBlock","mIdx","preventSelf","getTotalBlocks","cBlock","cOffset","getColumnOffset","refreshOffsets","vHeight","reduceWidth","frzLeftWidth_1","getTranslateY","setWrapperWidth","setVirtualHeight","getOffset","restoreAdd","ensureSelectedRowPosition","validationScrollLeft","initialRowTop","gridTop","validationCol","isRowInView","editedRowIndex","getRowObjectByIndex","getVirtualEditedData","editForms","getCurrentEditedData","maxPage","onDataReady","resetScrollPosition","virtualHeight","totalBlocks","placeHolderBottom","wrapperBottom","sTop","cHeight","isOnenter","endTranslate","blockHeight","onEntered","isWheel","firstOffSetKey","lastOffSetKey","disableShowMaskRow","frzLeftWidth_2","maxLeft","frzRightWidth","isLastBlockRow","remainHeight","wrapperInfo","contentInfo","visibleRowCount","refreshMaxPage","refreshVirtualLazyLoadCache","virtualCellFocus","editActionBegin","addActionBegin","editSuccess","resetIsedit","editCancel","allowScroll","getEditedDataIndex","updateCurrentViewData","ensureLastRow","ensureFirstRow","scrollEleInfo","nextFocusRow","nextFocusRowInfo","viewDifference","getEditedRowObject","editedrow","editRowObject","editRequestTypes","refreshVirtualElement","addForm","createEmptyRowdata","getRowCollection","isOddPageSize","getOddBlockSize","getMovableVirtualRowByIndex","getFrozenRightVirtualRowByIndex","isRowObject","vGroupedRows","oddBlockSize","rem","colGrp","selectedRowObjectIndex","VirtualHeaderRenderer","gen","tablewidth","renderFrozenWrapper","renderFrozenPlaceHolder","xValue","yValue","setFreezeWrapperWidth","VirtualScroll","ensurePageSize","virtualEditFormValidation","prevData","argsCreator","isCustomFormValidation","setValidationRuels","virtualFormObj","createFormObj","errorDomRect","contentLeft","editIdx","addIdx","existingErrors","setEditedDataToValidationForm","isRenderer","setComplexFieldID","getColumnModelByUid","ExportHelper","hideColumnInclude","getGridRowModel","processColumns","childGridLevel","getColumnData","columnPromise","fColumns","isHideColumnInclude","processHeaderCells","generateActualColumns","getConvertedWidth","actualColumns","getCellCount","appendGridCells","isIgnoreFirstCell","checkAndExport","gridPool","globalResolve","childGridObj","createChildGrid","exportType","getGridModel","parentPrimaryKeys","parentKeyField","parentRowData","exportId","getGridExportColumns","actualGridColumns","ExportValueFormatter","internationalization","returnFormattedValue","formatCellValue","ExcelExport","workSheet","rowLength","expType","includeHiddenColumn","isCsvExport","isElementIdChanged","grpFooterTemplates","footerTemplates","aggIndex","totalAggregates","isExporting","exportValueFormatter","isCsv","hierarchyExportMode","gridObject","isBlb","Child","isExportColumns","updateColumnTypeForExportColumns","processRecords","isMultiEx","workbk","exportingSuccess","blobPromise","gridInstance","processInnerRecords","allPromise_1","query_1","groupedColLength","blankRows","isExportPropertiesPresent","multipleExport","processExcelHeader","processGridExport","organisedRows","organiseRows","processExcelFooter","enableFilter","childRows","excelRows","gColumns","processHeaderContent","processRecordContent","capTemplate","returnType","currentViewRecords","excelRow","processRecordRows","processGroupedRows","processAggregates","cArgs","captionText","getCaptionThemeStyle","groupCaptionSummaryRows","fillAggregates","lIndex","hIndex","tCell","templateRowHeight","gCell","fkData","excelCellArgs","setImage","getColumnStyle","processDetailTemplate","childExportProperties","beforeDataBound","templateData","detailCellIndex","columnHeader","processCell_1","getHeaderThemeStyle","getRecordThemeStyle","excelHAlign","excelVAlign","excelRotation","excelBorders","excelNumberFormat","excelType","excelDetailCells","detailCell","excelImage","excelExportProps","gRow","intent","rec","byGroup","summaryModel","prepareSummaryInfo","groupSummaryRows","sRows","customIndex","columnsDetails","getAggreateValue","Sum","Average","Max","Min","TrueCount","FalseCount","aggregateStyle","gridCellStyle","dummyGrouping","dummyOutlineLevel","JSON1","JSON2","attrname","headerRotation","degree","spannedCells","parseStyles","excelHeaderCellArgs","updateThemeStyle","themestyle","noRows","updatedCellIndex","footerRows","spannedCells_1","PdfExport","customDataSource","isGrouping","headerOnPages","drawPosition","pdfPageSettings","exportWithData","processExport","headerPageNumbers","gridDrawPosition","drawPos","processSectionExportProperties","blankSpace","gridTheme","processExportProperties","headerThemeStyle","headerFont","headerBrush","processGridHeaders","setColumnProperties","captionThemeStyle","getSummaryCaptionThemeStyle","processGroupedRecords","processRecord","getFontFamily","getFontStyle","penBrushColor","hexToRgb","borderCaption","getBorderStyle","getGridPdfFont","isTrueType","headerSize","headerStyle","fontFamily_1","captionFont","captionSize","captionStyle","fontFamily_2","recordFont","recordStyle","fontFamily_3","groupIndex","dataSourceItems","captionSummaryModel","eCols","applyTextAndSpan","pdfCell","getHorizontalAlignment","getVerticalAlignment","evtArgs","setCellBorder","setCellFont","setHeaderBrush","setHyperLink","recuHeader","spanCnt","cidx","newSpanCnt","drawPageTemplate","fromTop","headerTemplate_1","processContentValidation","drawPageNumber","getBrushFromContent","textPenColor","penColor","setContentFormat","documentHeader","textBrushColor","brushColor","compositeField","getPageNumberStyle","pageNumberType","getPenFromContent","penSize","getDashStyle","isCaption","isGroupedFooter","isAggregate","sRows_1","leastCaptionSummaryIndex","aggIdx","getTemplateFunction","getSummaryWithoutTemplate","setRecordThemeStyle","borderRecord","cellLength","gridRow_1","startIndexVal","border_1","headerFont_1","headerBrush_1","pdfTextAlignment","pdfVerticalAlignment","pdfTextPenColor","pdfBorder","pdfParagraphIndent","pdfCellPadding","textLink","verticalAlign","bigint","menuClass","batchEdit","editIcon","pager","ungroup","excel","fPage","nPage","lPage","pPage","ascending","descending","groupHeader","touchPop","autofit","autofitall","defaultItems","disableItems","hiddenItems","setLocaleKey","gridID","enableAfterRenderMenu","ContextMenu$1","getMenuItems","contextMenuItemClick","contextMenuBeforeOpen","contextMenuOpen","contextMenuOnClose","exportItems","getDefaultItems","buildDefaultItems","exportGroup","getLastPage","totalpage","getKeyFromId","targetColumn","rowInfo","targetRowdata","updateItemStatus","closestGrid","hideSepItems","showSepItems","dItem","ensureDisabledStatus","ensureTarget","ensureFrozenHeader","generateID","CsvExport","PrevPage","localeKeys","AjaxSettings","defaultToolbarItems","ToolbarSettings","ToolbarItem","columnArray","DetailsViewSettings","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","TOOLBAR_ID","LAYOUT_ID","TREE_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","UPLOAD_DIALOG_ID","CONTEXT_MENU_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","SEARCH_ID","CHECK_SELECT","ROOT_POPUP","MOB_POPUP","MULTI_SELECT","LARGE_ICONS","LIST_ITEM","LIST_TEXT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","CB_WRAP","ROW","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","LARGE_ICON","GRID_HEADER","TREE_VIEW","MENU_ITEM","MENU_ICON","SUBMENU_ICON","GRID_VIEW","ICON_UPLOAD","ICON_CUT","ICON_COPY","ICON_PASTE","ICON_DELETE","ICON_RENAME","ICON_NEWFOLDER","ICON_DETAILS","ICON_SHORTBY","ICON_REFRESH","ICON_SELECTALL","ICON_DOWNLOAD","ICON_GRID","ICON_LARGE","DISPLAY_NONE","HEADER_CHECK","finalizeEnd","createEnd","filterEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","splitterResize","pathChanged","beforeRequest","skipUpload","afterRequest","layoutRefresh","openInit","openEnd","selectAllInit","clearAllInit","clearPathInit","layoutChange","sortByChange","nodeExpand","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","cutCopyInit","pasteInit","cutEnd","hideLayout","updateTreeSelection","pathColumn","searchTextChange","downloadInit","dropInit","dragEnd","dropPath","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionDownload","getPath","pathId","getPathId","pathNames","getParents","getPathNames","isId","parentText","isCut","removeBlur","actionRecords","enablePaste","isSearchCut","activeElements","blurEle","targetPath","activeModule","getParentPath","addBlur","activeRecords","breadcrumbbarModule","searchObj","fileSystemData","allChildren","getAllChildItems","isLayoutChange","searchWord","isFileSystemData","currData","feParent","searchValue","showHiddenItems","getPathObject","isSortByClicked","oldView","detailsviewModule","largeiconsviewModule","allItems","layoutSelectedItems","searchWordHandler","tartgetModule","targetModule","WD","createDeniedDialog","fileAction","filetype","iconType","imgUrl","baseUrl","ajaxSettings","getImageUrl","pathUrl","fPath","filePath","feFiles","addressBarHeight","emptyDiv","emptyFolder","emptyEle","dragFile","getSortField","detailsViewSettings","currfolders","originalPath","navData","searchData","setNextPath","selectedNode","isDragDrop","folderPath","getTargetPath","validateSubFolder","fileExists","dragPath","subFolder","srcData","dragNodes","tempTarget","oldPath","cwd","duplicateItems","pasteNodes","droppedObjects","duplicateRecords","isDropEnd","isPasteError","isSearchDrag","isPathDrag","readDropPath","expandedId","navigationpaneModule","treeObj","getItemName","cloneIcon","cloneName","badge","virtualDragElement","dragArgs","treeExpandTimer","uploadObj","getTargetModule","dragCount","dropHandler","dragCancel","removeItemClass","nodeClass","elementData","currentItemText","filterPath","hasEditAccess","hasDownloadAccess","Download","newIds","hasContentAccess","hasUploadAccess","isPathPermision","accessMessage","copyOrMovePermission","createAjax","readSuccess","createSuccess","filterDataVal","filterData","filterSuccess","itemNewName","showFileExtension","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","detailsSuccess","isExists","isCopy","dateCreated","dateModified","renameEventArgs","isFileExists","createErrorObject","filterById","oldName","updateChildrenFilterPath","createEventArgs","folderName","parentFolder","newObject","createNewItem","triggerFolderCreation","deleteEventArgs","findIndexById","subItem","triggerDeleteOperation","triggerRenameOperation","moveEventArgs","itemPermission","getAccessDetails","pathPermission","folderSubItems_1","filterByParent","existingFileCount","copyFolderItems","getTargetFiles","currItem","targetItem","subItems","pathArray","triggerMoveOrCopyOperation","searchEventArgs","searchResults","searchText","triggerSearchOperation","triggerClientEvents","beforeSendArgs","idValue","renamedItem","isFileOperation","rootId","isMultipleFiles","itemNames","totalSize","hz","multipleFiles","performReadOperation","triggerAjaxFailure","rootAliasName","generatePath","localeString","setDateObject","dirs","getDirectories","setNodeId","rootName","copiedItems","handleCatchError","createdItem","pathObject","pathLevel","renamePath","renameText","previousSelected","fileLength","doPasteUpdate","createExtDialog","searchSuccess","downloadUrl","useFormPost","downloadArgs","namedItem","contentDisposition_1","fileName_1","filenameMatch","extractedFilename","blobUrl","formattedString","strArr","dialogName","triggerPopupOpen","triggerPopupClose","onSubmit","onFolderDialogOpen","onDeleteSubmit","onReSubmit","onRenameDialogOpen","toLocaleUpperCase","keydownAction","beforeClose","triggerPopupBeforeClose","popupTarget","getCssClass","changeOptions","replaceItems","extOptions","duplicateContent","extDialogObj","rename","getDuplicateData","indexval","retryFiles","onRetryOpen","isRetryOpened","retryDlgClose","retryDlgUpdate","isApplySame","getExtOptions","beforeExtOpen","dlgModule","popupName","popupModule","eventargs","isKeepBoth","retryArgs","onKeepBothAll","onReplaceAll","checkContainer","onValidate","onkeyup","onFocusRenameInput","preventKeydown","triggerPopupBeforeOpen","dlgName","btnElement","btnCount","onkeydown","onSubmitValidate","createFolder","renamedId","oldExtension","newExtension","addInvalid","viewerObj","openImage","updateImage","imgWrap","cssObj","LargeIconsView","uploadOperation","isSelectAllCalled","isPasteOperation","ctrlLeft","ctrlRight","csLeft","csRight","csSpace","altEnter","del","ctrlX","isMac","ctrlC","ctrlV","shiftdel","ctrlD","visitedItem","startItem","resetMultiSelect","listObj","iconsView","onItemCreated","virtualizationModule","setUIVirtualization","itemList","preventImgDrag","createDragObj","emptyList","createEmptyElement","selectItems","getItemCount","setUlElementHeight","wireScrollEvent","checkItem","ondragstart","dragHelper","dragCursorPosition","dragStopHandler","draggingHandler","dragStartHandler","getItemObject","createVirtualDragElement","onDropInit","cwdData","renderCheckbox","showItemCheckBoxes","onLayoutChange","getIndexes","checkEle","checkLength","getAccessClass","showThumbnail","hasReadAccess","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","getFirstItem","getLastItem","doSelection","onClearAllInit","onBeforeRequest","onAfterRequest","onLayoutRefresh","onUpdateSelectionData","onPathColumn","onMethodCall","onMenuItemData","splitterResizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","onDetailsInit","onDropPath","getDirectoryPath","currentSelected","keyboardDownModule","keydownActionHandler","clickObj","doTapAction","isMacRightClick","cList","addActive","triggerSelection","removeActive","details_1","fileOpenArgs","createImageDialog","openSearchFolder","openAction","fItem","getFocusedItem","navigateItem","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","GetDetails","performDelete","copyFiles","cutFiles","performRename","doDownload","traverseBackward","doRename","updateRenamingData","getActiveItem","nItem","getNextItem","perRow","marginValue","liParent","liScrPos","getCurFocusedItem","rItem","uItem","getDataName","preItem","toCheck","eles","visitedData","eveArgs","byId","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","doDeleteFiles","doDownloadFiles","V0","BreadCrumbBar","addressPath","addressBarLink","searchTimer","searchWrapWidth","allowSearchOnTyping","searchEventBind","onPathChange","addressbarUL","addressbarLI","pathNamesLen","addressATag","breadCrumbBarNavigation","subMenuObj","searchWrap","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","searchContainer","searchEle","onShowInput","searchChangeHandler","utext","subMenuLi","subMenuSpan","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","currentPath","triggerFileOpen","treeNodeId","liElementId","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onPasteEnd","onSearchTextChange","isMenuItemClicked","currentItems","disabledItems","onBeforeItemRender","onBeforeClose","getMenuId","menuCloseArgs","menuTarget","parentKey","itemKeys_1","_fm_id","treeFolder","targetNodeElement","activeNode","getTargetView","updateActiveModule","setLayoutItem","navUid","setFileItem","setFolderItem","itemsToRemove","pasteEle","pasteIndex","isSubMenu","getMenuItemData","menuModule","menuOpenArgs","checkValidItem","isTree","contextMenuSettings","selectedTreeNode","renameIndex","nameEle","menuClickArgs","sItems","openFileOnContextMenuClick","createNewFolder","sortbyClickHandler","NewFolder","Rename","Cut","Paste","SortBy","Refresh","View","Details","Name","Size","DateModified","DateCreated","Path","Modified","Created","Permission","Ascending","Descending","KB","FileManager","previousPath","nextPath","deleteRecords","isSameAction","isOpened","uploadingCount","uploadedCount","dragSelectedItems","FileManager_1","ensurePath","checkMobile","navigationPaneSettings","isBigger","addWrapper","altN","ctrlShift1","ctrlShift2","ctrlU","toolbarSettings","slItems","fileView","setRtl","adjustHeight","splitterObj","renderFileUpload","headerWrap","layoutWrap","navigationWrap","treeWrap","contentWrap","gridWrap","largeiconWrap","dialogWrap","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","splitterAdjust","oldOne","newOne","uploadEle","uploadDialogObj","renderUploadBox","uploadUrl","uploadSettings","uploading","onUploading","chunkUploading","onChunkUploading","removing","onRemoving","canceling","clearing","onClearing","onSelected","onUploadSuccess","onUploadFailure","fileListRendering","onFileListRender","updateUploader","uploadEventArgs","onFileUploadSuccess","onChunkUploadComplete","onInitialEnd","q8","wireSelectOnDragEvent","viewElem","dragX","dragY","dragSelectElement","onDrag","dragRect","allItems_1","itemRect","setPath","requiresRefresh","ajaxSettingSetModel","localeSetModelOption","contextmenuModule","disableToolbarItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","refreshFiles","refreshLayout","toolbarItemData","toolbarCreateArgs","toolbarObj","Toolbar$1","toolbarCreateHandler","clicked","onClicked","currItems","toolbarClickArgs","getPupupId","layoutBtnObj","tickIcon","viewText","hideStatus","updateSortByButton","propItem","getItemModel","itemTooltip","spanElement","mergedItems","reRenderToolbar","itemsToProcess","tools","toHide","Virtualization","filemanagerInstance","largeIconInstance","currentViewItems","lastRowCount","rowItemCount","topElement","bottomElement","topElementHeight","bottomElementHeight","listDiff","renderedCount","dataSourceLength","widthMargin","onVirtualUiScroll","getscrollerHeight","onNormalScroll","startingHeight","isScrollingDown","updateUI","lastItemIndex","isAllRendered","NavigationPane","moveNames","expandTree","isPathDragged","isRenameParent","isSameNodeClicked","isNodeExpandCalled","renameParent","isNodeClickCalled","restrictSelecting","ctrlShiftN","shiftF10","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","nodeEditing","onNodeEditing","drawNode","onDrowNode","addDragDrop","getDragPath","getDropPath","directories","targetDirectory","_fm_icon","childElements","selecEventArgs","expandNodeTarget","onPathDrag","selectResultNode","onNodeExpanded","currFiles","updateTree","updateTreeNode","onOpenEnd","sleId","updateItemData","updateActionData","selcetedEle","selectedNodeEle","onRenameEndParent","onDownLoadInit","onClearPathInit","onDragEnd","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","dataobj","DetailsView","isColumnRefresh","firstItemIndex","isSelectionUpdate","currentSelectedItem","isNameWidth","isMultiSelect","ContextMenu$2","gridPersistenceValue","checkNameWidth","isValidSortField","onSelection","onDeSelection","columnResizing","recordDoubleClick","DblClickEvents","onBeforeDataBound","onRowDataBound","onHeaderCellInfo","getGridHeight","beforeCopy","reactTemplateRender","emptyArgs","headerMaxHeight","initialColumn","adjustWidth","nameWidth","_fm_modified","template_1","iWidth","_fm_iconClass","renderCheckBox","sizeEle","modifiedSize","sizeFormat","dateEle","sortItem","sortSelectedNodes","nameColumn","selectRecords","hdTable","cnTable","checkEmptyDiv","gridRecords","sRecords","Str2","rData","onSortColumn","onDetailsResize","pathField","updatePathColumn","removePathColumn","openContent","onSearchFiles","onPasteInit","onDetailsResizeHandler","gridHeaderColGroup","gridContentColGroup","gridHeaderColNames","gridSelectNodes","selectSize","thElements","getFocusedItemIndex","gridItems","gridLength","focIndex","selRowIndeces","crtSrlPos","crtFocusIndex","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","shiftSelectedItem","shiftSelectFocusItem","InnerItems","itemArr","fIndex","selRowIndexes","nameFocus","treeFocus","getRecords","dRecords","outputs$1","ToolbarItemDirective","Template","ToolbarItemsDirective","twoWays","FileManagerComponent","childToolbarItems","ComponentMixins","FileManagerModule","DetailsViewService","NavigationPaneService","LargeIconsViewService","ToolbarService","BreadCrumbBarService","VirtualizationService","FileManagerAllModule","Icon123","Icon24Hours","Icon2fa","Icon360View","Icon360","Icon3dCubeSphereOff","Icon3dCubeSphere","Icon3dRotate","IconAB2","IconABOff","IconAB","IconAbacusOff","IconAbacus","IconAbc","IconAccessPointOff","IconAccessPoint","IconAccessibleOff","IconAccessible","IconActivityHeartbeat","IconActivity","IconAd2","IconAdOff","IconAd","IconAddressBookOff","IconAddressBook","IconAdjustmentsAlt","IconAdjustmentsHorizontal","IconAdjustmentsOff","IconAdjustments","IconAerialLift","IconAffiliate","IconAirBalloon","IconAirConditioningDisabled","IconAirConditioning","IconAlarmMinus","IconAlarmOff","IconAlarmPlus","IconAlarmSnooze","IconAlarm","IconAlbumOff","IconAlbum","IconAlertCircle","IconAlertOctagon","IconAlertTriangle","IconAlien","IconAlignBoxBottomCenter","IconAlignBoxBottomLeft","IconAlignBoxBottomRight","IconAlignBoxLeftBottom","IconAlignBoxLeftMiddle","IconAlignBoxLeftTop","IconAlignBoxRightBottom","IconAlignBoxRightMiddle","IconAlignBoxRightTop","IconAlignBoxTopCenter","IconAlignBoxTopLeft","IconAlignBoxTopRight","IconAlignCenter","IconAlignJustified","IconAlignLeft","IconAlignRight","IconAlpha","IconAlphabetCyrillic","IconAlphabetGreek","IconAlphabetLatin","IconAmbulance","IconAmpersand","IconAnalyzeOff","IconAnalyze","IconAnchorOff","IconAnchor","IconAngle","IconAnkh","IconAntennaBars1","IconAntennaBars2","IconAntennaBars3","IconAntennaBars4","IconAntennaBars5","IconAntennaBarsOff","IconAntennaOff","IconAntenna","IconApertureOff","IconAperture","IconApiAppOff","IconApiApp","IconApiOff","IconApi","IconAppWindow","IconApple","IconAppsOff","IconApps","IconArchiveOff","IconArchive","IconArmchair2Off","IconArmchair2","IconArmchairOff","IconArmchair","IconArrowAutofitContent","IconArrowAutofitDown","IconArrowAutofitHeight","IconArrowAutofitLeft","IconArrowAutofitRight","IconArrowAutofitUp","IconArrowAutofitWidth","IconArrowBackUp","IconArrowBack","IconArrowBadgeDown","IconArrowBadgeLeft","IconArrowBadgeRight","IconArrowBadgeUp","IconArrowBarDown","IconArrowBarLeft","IconArrowBarRight","IconArrowBarToDown","IconArrowBarToLeft","IconArrowBarToRight","IconArrowBarToUp","IconArrowBarUp","IconArrowBearLeft2","IconArrowBearLeft","IconArrowBearRight2","IconArrowBearRight","IconArrowBigDownLine","IconArrowBigDownLines","IconArrowBigDown","IconArrowBigLeftLine","IconArrowBigLeftLines","IconArrowBigLeft","IconArrowBigRightLine","IconArrowBigRightLines","IconArrowBigRight","IconArrowBigTop","IconArrowBigUpLine","IconArrowBigUpLines","IconArrowBounce","IconArrowCurveLeft","IconArrowCurveRight","IconArrowDownBar","IconArrowDownCircle","IconArrowDownLeftCircle","IconArrowDownLeft","IconArrowDownRhombus","IconArrowDownRightCircle","IconArrowDownRight","IconArrowDownSquare","IconArrowDownTail","IconArrowDown","IconArrowFork","IconArrowForwardUp","IconArrowForward","IconArrowGuide","IconArrowIteration","IconArrowLeftBar","IconArrowLeftCircle","IconArrowLeftRhombus","IconArrowLeftRight","IconArrowLeftSquare","IconArrowLeftTail","IconArrowLeft","IconArrowLoopLeft2","IconArrowLoopLeft","IconArrowLoopRight2","IconArrowLoopRight","IconArrowMergeBoth","IconArrowMergeLeft","IconArrowMergeRight","IconArrowMerge","IconArrowMoveDown","IconArrowMoveLeft","IconArrowMoveRight","IconArrowMoveUp","IconArrowNarrowDown","IconArrowNarrowLeft","IconArrowNarrowRight","IconArrowNarrowUp","IconArrowRampLeft2","IconArrowRampLeft3","IconArrowRampLeft","IconArrowRampRight2","IconArrowRampRight3","IconArrowRampRight","IconArrowRightBar","IconArrowRightCircle","IconArrowRightRhombus","IconArrowRightSquare","IconArrowRightTail","IconArrowRight","IconArrowRotaryFirstLeft","IconArrowRotaryFirstRight","IconArrowRotaryLastLeft","IconArrowRotaryLastRight","IconArrowRotaryLeft","IconArrowRotaryRight","IconArrowRotaryStraight","IconArrowRoundaboutLeft","IconArrowRoundaboutRight","IconArrowSharpTurnLeft","IconArrowSharpTurnRight","IconArrowUpBar","IconArrowUpCircle","IconArrowUpLeftCircle","IconArrowUpLeft","IconArrowUpRhombus","IconArrowUpRightCircle","IconArrowUpRight","IconArrowUpSquare","IconArrowUpTail","IconArrowUp","IconArrowWaveLeftDown","IconArrowWaveLeftUp","IconArrowWaveRightDown","IconArrowWaveRightUp","IconArrowZigZag","IconArrowsCross","IconArrowsDiagonal2","IconArrowsDiagonalMinimize2","IconArrowsDiagonalMinimize","IconArrowsDiagonal","IconArrowsDiff","IconArrowsDoubleNeSw","IconArrowsDoubleNwSe","IconArrowsDoubleSeNw","IconArrowsDoubleSwNe","IconArrowsDownUp","IconArrowsDown","IconArrowsExchange2","IconArrowsExchange","IconArrowsHorizontal","IconArrowsJoin2","IconArrowsJoin","IconArrowsLeftDown","IconArrowsLeftRight","IconArrowsLeft","IconArrowsMaximize","IconArrowsMinimize","IconArrowsMoveHorizontal","IconArrowsMoveVertical","IconArrowsMove","IconArrowsRandom","IconArrowsRightDown","IconArrowsRightLeft","IconArrowsRight","IconArrowsShuffle2","IconArrowsShuffle","IconArrowsSort","IconArrowsSplit2","IconArrowsSplit","IconArrowsTransferDown","IconArrowsTransferUp","IconArrowsUpDown","IconArrowsUpLeft","IconArrowsUpRight","IconArrowsUp","IconArrowsVertical","IconArtboardOff","IconArtboard","IconArticleOff","IconArticle","IconAspectRatioOff","IconAspectRatio","IconAssemblyOff","IconAssembly","IconAsset","IconAsteriskSimple","IconAsterisk","IconAtOff","IconAt","IconAtom2","IconAtomOff","IconAtom","IconAugmentedReality2","IconAugmentedRealityOff","IconAugmentedReality","IconAwardOff","IconAward","IconAxe","IconAxisX","IconAxisY","IconBabyBottle","IconBabyCarriage","IconBackhoe","IconBackpackOff","IconBackpack","IconBackspace","IconBadge3d","IconBadge4k","IconBadge8k","IconBadgeAd","IconBadgeAr","IconBadgeCc","IconBadgeHd","IconBadgeOff","IconBadgeSd","IconBadgeTm","IconBadgeVo","IconBadgeVr","IconBadgeWc","IconBadge","IconBadgesOff","IconBadges","IconBaguette","IconBallAmericanFootballOff","IconBallAmericanFootball","IconBallBaseball","IconBallBasketball","IconBallBowling","IconBallFootballOff","IconBallFootball","IconBallTennis","IconBallVolleyball","IconBallonOff","IconBallon","IconBallpenOff","IconBallpen","IconBan","IconBandageOff","IconBandage","IconBarbellOff","IconBarbell","IconBarcodeOff","IconBarcode","IconBarrelOff","IconBarrel","IconBarrierBlockOff","IconBarrierBlock","IconBaseline","IconBasketOff","IconBasket","IconBat","IconBathOff","IconBath","IconBattery1","IconBattery2","IconBattery3","IconBattery4","IconBatteryAutomotive","IconBatteryCharging2","IconBatteryCharging","IconBatteryEco","IconBatteryOff","IconBattery","IconBeachOff","IconBeach","IconBedOff","IconBed","IconBeerOff","IconBeer","IconBellMinus","IconBellOff","IconBellPlus","IconBellRinging2","IconBellRinging","IconBellSchool","IconBellX","IconBellZ","IconBell","IconBeta","IconBible","IconBikeOff","IconBike","IconBinaryOff","IconBinaryTree2","IconBinaryTree","IconBinary","IconBiohazardOff","IconBiohazard","IconBlade","IconBleachChlorine","IconBleachNoChlorine","IconBleachOff","IconBleach","IconBlockquote","IconBluetoothConnected","IconBluetoothOff","IconBluetoothX","IconBluetooth","IconBlurOff","IconBlur","IconBmp","IconBoldOff","IconBold","IconBoltOff","IconBolt","IconBomb","IconBoneOff","IconBone","IconBongOff","IconBong","IconBook2","IconBookDownload","IconBookOff","IconBookUpload","IconBook","IconBookmarkOff","IconBookmark","IconBookmarksOff","IconBookmarks","IconBooksOff","IconBooks","IconBorderAll","IconBorderBottom","IconBorderHorizontal","IconBorderInner","IconBorderLeft","IconBorderNone","IconBorderOuter","IconBorderRadius","IconBorderRight","IconBorderStyle2","IconBorderStyle","IconBorderTop","IconBorderVertical","IconBottleOff","IconBottle","IconBounceLeft","IconBounceRight","IconBow","IconBowl","IconBoxAlignBottomLeft","IconBoxAlignBottomRight","IconBoxAlignBottom","IconBoxAlignLeft","IconBoxAlignRight","IconBoxAlignTopLeft","IconBoxAlignTopRight","IconBoxAlignTop","IconBoxMargin","IconBoxModel2Off","IconBoxModel2","IconBoxModelOff","IconBoxModel","IconBoxMultiple0","IconBoxMultiple1","IconBoxMultiple2","IconBoxMultiple3","IconBoxMultiple4","IconBoxMultiple5","IconBoxMultiple6","IconBoxMultiple7","IconBoxMultiple8","IconBoxMultiple9","IconBoxMultiple","IconBoxOff","IconBoxPadding","IconBoxSeam","IconBox","IconBracesOff","IconBraces","IconBracketsContainEnd","IconBracketsContainStart","IconBracketsContain","IconBracketsOff","IconBrackets","IconBraile","IconBrain","IconBrand4chan","IconBrandAbstract","IconBrandAdobe","IconBrandAdonisJs","IconBrandAirbnb","IconBrandAirtable","IconBrandAlgolia","IconBrandAlpineJs","IconBrandAmazon","IconBrandAmd","IconBrandAmigo","IconBrandAmongus","IconBrandAndroid","IconBrandAngular","IconBrandAo3","IconBrandAppgallery","IconBrandAppleArcade","IconBrandApplePodcast","IconBrandApple","IconBrandAppstore","IconBrandAsana","IconBrandBackbone","IconBrandBadoo","IconBrandBaidu","IconBrandBandcamp","IconBrandBandlab","IconBrandBeats","IconBrandBehance","IconBrandBinance","IconBrandBing","IconBrandBitbucket","IconBrandBlackbery","IconBrandBlender","IconBrandBlogger","IconBrandBooking","IconBrandBootstrap","IconBrandBulma","IconBrandBumble","IconBrandBunpo","IconBrandCampaignmonitor","IconBrandCarbon","IconBrandCashapp","IconBrandChrome","IconBrandCitymapper","IconBrandCodecov","IconBrandCodepen","IconBrandCodesandbox","IconBrandCohost","IconBrandCoinbase","IconBrandComedyCentral","IconBrandCoreos","IconBrandCouchdb","IconBrandCouchsurfing","IconBrandCpp","IconBrandCss3","IconBrandCtemplar","IconBrandCucumber","IconBrandCupra","IconBrandCypress","IconBrandD3","IconBrandDaysCounter","IconBrandDcos","IconBrandDebian","IconBrandDeliveroo","IconBrandDeno","IconBrandDenodo","IconBrandDeviantart","IconBrandDingtalk","IconBrandDiscord","IconBrandDisney","IconBrandDisqus","IconBrandDjango","IconBrandDocker","IconBrandDoctrine","IconBrandDolbyDigital","IconBrandDouban","IconBrandDribbble","IconBrandDrops","IconBrandDrupal","IconBrandEdge","IconBrandElastic","IconBrandEmber","IconBrandEnvato","IconBrandEtsy","IconBrandEvernote","IconBrandFacebook","IconBrandFigma","IconBrandFinder","IconBrandFirebase","IconBrandFirefox","IconBrandFlickr","IconBrandFlightradar24","IconBrandFlipboard","IconBrandFlutter","IconBrandFortnite","IconBrandFoursquare","IconBrandFramer","IconBrandFunimation","IconBrandGatsby","IconBrandGit","IconBrandGithubCopilot","IconBrandGithub","IconBrandGitlab","IconBrandGmail","IconBrandGoogleAnalytics","IconBrandGoogleBigQuery","IconBrandGoogleDrive","IconBrandGoogleFit","IconBrandGoogleHome","IconBrandGoogleOne","IconBrandGooglePhotos","IconBrandGooglePlay","IconBrandGooglePodcasts","IconBrandGoogle","IconBrandGrammarly","IconBrandGraphql","IconBrandGravatar","IconBrandGrindr","IconBrandGuardian","IconBrandGumroad","IconBrandHbo","IconBrandHeadlessui","IconBrandHipchat","IconBrandHtml5","IconBrandInertia","IconBrandInstagram","IconBrandIntercom","IconBrandJavascript","IconBrandKickstarter","IconBrandKotlin","IconBrandLaravel","IconBrandLastfm","IconBrandLinkedin","IconBrandLinktree","IconBrandLinqpad","IconBrandLoom","IconBrandMailgun","IconBrandMantine","IconBrandMastercard","IconBrandMastodon","IconBrandMatrix","IconBrandMcdonalds","IconBrandMedium","IconBrandMercedes","IconBrandMessenger","IconBrandMeta","IconBrandMiniprogram","IconBrandMixpanel","IconBrandMonday","IconBrandMongodb","IconBrandMyOppo","IconBrandMysql","IconBrandNationalGeographic","IconBrandNem","IconBrandNetbeans","IconBrandNeteaseMusic","IconBrandNetflix","IconBrandNexo","IconBrandNextcloud","IconBrandNextjs","IconBrandNordVpn","IconBrandNotion","IconBrandNpm","IconBrandNuxt","IconBrandNytimes","IconBrandOffice","IconBrandOkRu","IconBrandOnedrive","IconBrandOnlyfans","IconBrandOpenSource","IconBrandOpenvpn","IconBrandOpera","IconBrandPagekit","IconBrandPatreon","IconBrandPaypal","IconBrandPaypay","IconBrandPeanut","IconBrandPepsi","IconBrandPhp","IconBrandPicsart","IconBrandPinterest","IconBrandPocket","IconBrandPolymer","IconBrandPowershell","IconBrandPrisma","IconBrandProducthunt","IconBrandPushbullet","IconBrandPushover","IconBrandPython","IconBrandQq","IconBrandReactNative","IconBrandReact","IconBrandReason","IconBrandReddit","IconBrandRedhat","IconBrandRedux","IconBrandRevolut","IconBrandSafari","IconBrandSamsungpass","IconBrandSass","IconBrandSentry","IconBrandSharik","IconBrandShazam","IconBrandShopee","IconBrandSketch","IconBrandSkype","IconBrandSlack","IconBrandSnapchat","IconBrandSnapseed","IconBrandSnowflake","IconBrandSocketIo","IconBrandSolidjs","IconBrandSoundcloud","IconBrandSpacehey","IconBrandSpotify","IconBrandStackoverflow","IconBrandStackshare","IconBrandSteam","IconBrandStorybook","IconBrandStorytel","IconBrandStrava","IconBrandStripe","IconBrandSublimeText","IconBrandSuperhuman","IconBrandSupernova","IconBrandSurfshark","IconBrandSvelte","IconBrandSymfony","IconBrandTabler","IconBrandTailwind","IconBrandTaobao","IconBrandTed","IconBrandTelegram","IconBrandTether","IconBrandThreejs","IconBrandTidal","IconBrandTiktok","IconBrandTinder","IconBrandTopbuzz","IconBrandTorchain","IconBrandToyota","IconBrandTrello","IconBrandTripadvisor","IconBrandTumblr","IconBrandTwilio","IconBrandTwitch","IconBrandTwitter","IconBrandTypescript","IconBrandUber","IconBrandUbuntu","IconBrandUnity","IconBrandUnsplash","IconBrandUpwork","IconBrandValorant","IconBrandVercel","IconBrandVimeo","IconBrandVinted","IconBrandVisa","IconBrandVisualStudio","IconBrandVite","IconBrandVivaldi","IconBrandVk","IconBrandVolkswagen","IconBrandVsco","IconBrandVscode","IconBrandVue","IconBrandWalmart","IconBrandWaze","IconBrandWebflow","IconBrandWechat","IconBrandWeibo","IconBrandWhatsapp","IconBrandWindows","IconBrandWindy","IconBrandWish","IconBrandWix","IconBrandWordpress","IconBrandXbox","IconBrandXing","IconBrandYahoo","IconBrandYatse","IconBrandYcombinator","IconBrandYoutubeKids","IconBrandYoutube","IconBrandZalando","IconBrandZapier","IconBrandZeit","IconBrandZhihu","IconBrandZoom","IconBrandZulip","IconBrandZwift","IconBreadOff","IconBread","IconBriefcaseOff","IconBriefcase","IconBrightness2","IconBrightnessDown","IconBrightnessHalf","IconBrightnessOff","IconBrightnessUp","IconBrightness","IconBroadcastOff","IconBroadcast","IconBrowserCheck","IconBrowserOff","IconBrowserPlus","IconBrowserX","IconBrowser","IconBrushOff","IconBrush","IconBucketDroplet","IconBucketOff","IconBucket","IconBugOff","IconBug","IconBuildingArch","IconBuildingBank","IconBuildingBridge2","IconBuildingBridge","IconBuildingBroadcastTower","IconBuildingCarousel","IconBuildingCastle","IconBuildingChurch","IconBuildingCircus","IconBuildingCommunity","IconBuildingCottage","IconBuildingEstate","IconBuildingFactory2","IconBuildingFactory","IconBuildingFortress","IconBuildingHospital","IconBuildingLighthouse","IconBuildingMonument","IconBuildingPavilon","IconBuildingSkyscraper","IconBuildingStadium","IconBuildingStore","IconBuildingTunnel","IconBuildingWarehouse","IconBuildingWindTurbine","IconBuilding","IconBulbOff","IconBulb","IconBulldozer","IconBusOff","IconBusStop","IconBus","IconBusinessplan","IconButterfly","IconCSharp","IconCactusOff","IconCactus","IconCakeOff","IconCake","IconCalculatorOff","IconCalculator","IconCalendarDue","IconCalendarEvent","IconCalendarMinus","IconCalendarOff","IconCalendarPlus","IconCalendarStats","IconCalendarTime","IconCalendar","IconCameraMinus","IconCameraOff","IconCameraPlus","IconCameraRotate","IconCameraSelfie","IconCamera","IconCampfire","IconCandle","IconCandyOff","IconCandy","IconCane","IconCannabis","IconCaptureOff","IconCapture","IconCarCrane","IconCarCrash","IconCarOff","IconCarTurbine","IconCar","IconCaravan","IconCardboardsOff","IconCardboards","IconCards","IconCaretDown","IconCaretLeft","IconCaretRight","IconCaretUp","IconCarouselHorizontal","IconCarouselVertical","IconCarrotOff","IconCarrot","IconCashBanknoteOff","IconCashBanknote","IconCashOff","IconCash","IconCastOff","IconCast","IconCat","IconCategory2","IconCategory","IconCeOff","IconCe","IconCellSignal1","IconCellSignal2","IconCellSignal3","IconCellSignal4","IconCellSignal5","IconCellSignalOff","IconCell","IconCertificate2Off","IconCertificate2","IconCertificateOff","IconCertificate","IconChairDirector","IconChalkboardOff","IconChalkboard","IconChargingPile","IconChartArcs3","IconChartArcs","IconChartAreaLine","IconChartArea","IconChartArrowsVertical","IconChartArrows","IconChartBarOff","IconChartBar","IconChartBubble","IconChartCandle","IconChartCircles","IconChartDonut2","IconChartDonut3","IconChartDonut4","IconChartDonut","IconChartDots2","IconChartDots3","IconChartDots","IconChartGridDots","IconChartHistogram","IconChartInfographic","IconChartLine","IconChartPie2","IconChartPie3","IconChartPie4","IconChartPieOff","IconChartPie","IconChartPpf","IconChartRadar","IconChartSankey","IconChartTreemap","IconCheck","IconCheckbox","IconChecklist","IconChecks","IconCheckupList","IconCheese","IconChefHatOff","IconChefHat","IconCherry","IconChessBishop","IconChessKing","IconChessKnight","IconChessQueen","IconChessRook","IconChess","IconChevronDownLeft","IconChevronDownRight","IconChevronDown","IconChevronLeft","IconChevronRight","IconChevronUpLeft","IconChevronUpRight","IconChevronUp","IconChevronsDownLeft","IconChevronsDownRight","IconChevronsDown","IconChevronsLeft","IconChevronsRight","IconChevronsUpLeft","IconChevronsUpRight","IconChevronsUp","IconChisel","IconChristmasTreeOff","IconChristmasTree","IconCircleCaretDown","IconCircleCaretLeft","IconCircleCaretRight","IconCircleCaretUp","IconCircleCheck","IconCircleChevronDown","IconCircleChevronLeft","IconCircleChevronRight","IconCircleChevronUp","IconCircleChevronsDown","IconCircleChevronsLeft","IconCircleChevronsRight","IconCircleChevronsUp","IconCircleDashed","IconCircleDot","IconCircleDotted","IconCircleHalf2","IconCircleHalfVertical","IconCircleHalf","IconCircleKey","IconCircleLetterA","IconCircleLetterB","IconCircleLetterC","IconCircleLetterD","IconCircleLetterE","IconCircleLetterF","IconCircleLetterG","IconCircleLetterH","IconCircleLetterI","IconCircleLetterJ","IconCircleLetterK","IconCircleLetterL","IconCircleLetterM","IconCircleLetterN","IconCircleLetterO","IconCircleLetterP","IconCircleLetterQ","IconCircleLetterR","IconCircleLetterS","IconCircleLetterT","IconCircleLetterU","IconCircleLetterV","IconCircleLetterW","IconCircleLetterX","IconCircleLetterY","IconCircleLetterZ","IconCircleMinus","IconCircleNumber0","IconCircleNumber1","IconCircleNumber2","IconCircleNumber3","IconCircleNumber4","IconCircleNumber5","IconCircleNumber6","IconCircleNumber7","IconCircleNumber8","IconCircleNumber9","IconCircleOff","IconCirclePlus","IconCircleRectangleOff","IconCircleRectangle","IconCircleSquare","IconCircleTriangle","IconCircleX","IconCircle","IconCirclesRelation","IconCircles","IconCircuitAmmeter","IconCircuitBattery","IconCircuitBulb","IconCircuitCapacitorPolarized","IconCircuitCapacitor","IconCircuitCellPlus","IconCircuitCell","IconCircuitChangeover","IconCircuitDiodeZener","IconCircuitDiode","IconCircuitGroundDigital","IconCircuitGround","IconCircuitInductor","IconCircuitMotor","IconCircuitPushbutton","IconCircuitResistor","IconCircuitSwitchClosed","IconCircuitSwitchOpen","IconCircuitVoltmeter","IconClearAll","IconClearFormatting","IconClick","IconClipboardCheck","IconClipboardCopy","IconClipboardData","IconClipboardHeart","IconClipboardList","IconClipboardOff","IconClipboardPlus","IconClipboardText","IconClipboardTypography","IconClipboardX","IconClipboard","IconClock2","IconClockCancel","IconClockEdit","IconClockHour1","IconClockHour10","IconClockHour11","IconClockHour12","IconClockHour2","IconClockHour3","IconClockHour4","IconClockHour5","IconClockHour6","IconClockHour7","IconClockHour8","IconClockHour9","IconClockOff","IconClockPause","IconClockPlay","IconClockRecord","IconClockStop","IconClock","IconClothesRackOff","IconClothesRack","IconCloudComputing","IconCloudDataConnection","IconCloudDownload","IconCloudFog","IconCloudLockOpen","IconCloudLock","IconCloudOff","IconCloudRain","IconCloudSnow","IconCloudStorm","IconCloudUpload","IconCloud","IconClover2","IconClover","IconClubs","IconCodeAsterix","IconCodeCircle2","IconCodeCircle","IconCodeDots","IconCodeMinus","IconCodeOff","IconCodePlus","IconCode","IconCoffeeOff","IconCoffee","IconCoffin","IconCoinBitcoin","IconCoinEuro","IconCoinMonero","IconCoinOff","IconCoinPound","IconCoinRupee","IconCoinYen","IconCoinYuan","IconCoin","IconCoins","IconColorFilter","IconColorPickerOff","IconColorPicker","IconColorSwatchOff","IconColorSwatch","IconColumnInsertLeft","IconColumnInsertRight","IconColumnsOff","IconColumns","IconComet","IconCommandOff","IconCommand","IconCompassOff","IconCompass","IconComponentsOff","IconComponents","IconCone2","IconConeOff","IconCone","IconConfettiOff","IconConfetti","IconConfucius","IconContainerOff","IconContainer","IconContrast2Off","IconContrast2","IconContrastOff","IconContrast","IconCooker","IconCookieMan","IconCookieOff","IconCookie","IconCopyOff","IconCopy","IconCopyleftOff","IconCopyleft","IconCopyrightOff","IconCopyright","IconCornerDownLeftDouble","IconCornerDownLeft","IconCornerDownRightDouble","IconCornerDownRight","IconCornerLeftDownDouble","IconCornerLeftDown","IconCornerLeftUpDouble","IconCornerLeftUp","IconCornerRightDownDouble","IconCornerRightDown","IconCornerRightUpDouble","IconCornerRightUp","IconCornerUpLeftDouble","IconCornerUpLeft","IconCornerUpRightDouble","IconCornerUpRight","IconCpu2","IconCpuOff","IconCpu","IconCraneOff","IconCrane","IconCreativeCommonsBy","IconCreativeCommonsNc","IconCreativeCommonsNd","IconCreativeCommonsOff","IconCreativeCommonsSa","IconCreativeCommonsZero","IconCreativeCommons","IconCreditCardOff","IconCreditCard","IconCricket","IconCrop","IconCrossOff","IconCross","IconCrosshair","IconCrownOff","IconCrown","IconCrutchesOff","IconCrutches","IconCrystalBall","IconCubeSend","IconCubeUnfolded","IconCupOff","IconCup","IconCurling","IconCurlyLoop","IconCurrencyAfghani","IconCurrencyBahraini","IconCurrencyBaht","IconCurrencyBitcoin","IconCurrencyCent","IconCurrencyDinar","IconCurrencyDirham","IconCurrencyDogecoin","IconCurrencyDollarAustralian","IconCurrencyDollarBrunei","IconCurrencyDollarCanadian","IconCurrencyDollarGuyanese","IconCurrencyDollarOff","IconCurrencyDollarSingapore","IconCurrencyDollarZimbabwean","IconCurrencyDollar","IconCurrencyDong","IconCurrencyDram","IconCurrencyEthereum","IconCurrencyEuroOff","IconCurrencyEuro","IconCurrencyForint","IconCurrencyFrank","IconCurrencyGuarani","IconCurrencyHryvnia","IconCurrencyKip","IconCurrencyKroneCzech","IconCurrencyKroneDanish","IconCurrencyKroneSwedish","IconCurrencyLari","IconCurrencyLeu","IconCurrencyLira","IconCurrencyLitecoin","IconCurrencyLyd","IconCurrencyManat","IconCurrencyMonero","IconCurrencyNaira","IconCurrencyOff","IconCurrencyPaanga","IconCurrencyPeso","IconCurrencyPoundOff","IconCurrencyPound","IconCurrencyQuetzal","IconCurrencyReal","IconCurrencyRenminbi","IconCurrencyRipple","IconCurrencyRiyal","IconCurrencyRubel","IconCurrencyRufiyaa","IconCurrencyRupeeNepalese","IconCurrencyRupee","IconCurrencyShekel","IconCurrencySolana","IconCurrencySom","IconCurrencyTaka","IconCurrencyTenge","IconCurrencyTugrik","IconCurrencyWon","IconCurrencyYenOff","IconCurrencyYen","IconCurrencyYuan","IconCurrencyZloty","IconCurrency","IconCurrentLocationOff","IconCurrentLocation","IconCursorOff","IconCursorText","IconCut","IconCylinder","IconDashboardOff","IconDashboard","IconDatabaseExport","IconDatabaseImport","IconDatabaseOff","IconDatabase","IconDeer","IconDelta","IconDentalBroken","IconDentalOff","IconDental","IconDetailsOff","IconDetails","IconDeviceAirpodsCase","IconDeviceAirpods","IconDeviceAnalytics","IconDeviceAudioTape","IconDeviceCameraPhone","IconDeviceCctvOff","IconDeviceCctv","IconDeviceComputerCameraOff","IconDeviceComputerCamera","IconDeviceDesktopAnalytics","IconDeviceDesktopOff","IconDeviceDesktop","IconDeviceFloppy","IconDeviceGamepad2","IconDeviceGamepad","IconDeviceHeartMonitor","IconDeviceIpadHorizontal","IconDeviceIpad","IconDeviceLandlinePhone","IconDeviceLaptopOff","IconDeviceLaptop","IconDeviceMobileCharging","IconDeviceMobileMessage","IconDeviceMobileOff","IconDeviceMobileRotated","IconDeviceMobileVibration","IconDeviceMobile","IconDeviceNintendoOff","IconDeviceNintendo","IconDeviceSdCard","IconDeviceSim1","IconDeviceSim2","IconDeviceSim3","IconDeviceSim","IconDeviceSpeakerOff","IconDeviceSpeaker","IconDeviceTabletOff","IconDeviceTablet","IconDeviceTvOff","IconDeviceTvOld","IconDeviceTv","IconDeviceWatchOff","IconDeviceWatchStats2","IconDeviceWatchStats","IconDeviceWatch","IconDevices2","IconDevicesOff","IconDevicesPcOff","IconDevicesPc","IconDevices","IconDialpadOff","IconDialpad","IconDiamondOff","IconDiamond","IconDiamonds","IconDice1","IconDice2","IconDice3","IconDice4","IconDice5","IconDice6","IconDice","IconDimensions","IconDirectionHorizontal","IconDirectionSignOff","IconDirectionSign","IconDirection","IconDirectionsOff","IconDirections","IconDisabled2","IconDisabledOff","IconDisabled","IconDiscGolf","IconDiscOff","IconDisc","IconDiscount2Off","IconDiscount2","IconDiscountCheck","IconDiscountOff","IconDiscount","IconDivide","IconDna2Off","IconDna2","IconDnaOff","IconDna","IconDogBowl","IconDog","IconDoorEnter","IconDoorExit","IconDoorOff","IconDoor","IconDotsCircleHorizontal","IconDotsDiagonal2","IconDotsDiagonal","IconDotsVertical","IconDots","IconDownloadOff","IconDownload","IconDragDrop2","IconDragDrop","IconDroneOff","IconDrone","IconDropCircle","IconDropletFilled2","IconDropletFilled","IconDropletHalf2","IconDropletHalf","IconDropletOff","IconDroplet","IconEPassport","IconEarOff","IconEar","IconEaseInControlPoint","IconEaseInOutControlPoints","IconEaseInOut","IconEaseIn","IconEaseOutControlPoint","IconEaseOut","IconEditCircleOff","IconEditCircle","IconEditOff","IconEdit","IconEggCracked","IconEggFried","IconEggOff","IconEgg","IconEggs","IconElevatorOff","IconElevator","IconEmergencyBed","IconEmpathizeOff","IconEmpathize","IconEmphasis","IconEngineOff","IconEngine","IconEqualDouble","IconEqualNot","IconEqual","IconEraserOff","IconEraser","IconError404Off","IconError404","IconExchangeOff","IconExchange","IconExclamationCircle","IconExclamationMarkOff","IconExclamationMark","IconExplicitOff","IconExplicit","IconExposure0","IconExposureMinus1","IconExposureMinus2","IconExposureOff","IconExposurePlus1","IconExposurePlus2","IconExposure","IconExternalLinkOff","IconExternalLink","IconEyeCheck","IconEyeOff","IconEyeTable","IconEye","IconEyeglass2","IconEyeglassOff","IconEyeglass","IconFaceIdError","IconFaceId","IconFaceMaskOff","IconFaceMask","IconFall","IconFeatherOff","IconFeather","IconFenceOff","IconFence","IconFidgetSpinner","IconFile3d","IconFileAlert","IconFileAnalytics","IconFileArrowLeft","IconFileArrowRight","IconFileBarcode","IconFileBroken","IconFileCertificate","IconFileChart","IconFileCheck","IconFileCode2","IconFileCode","IconFileDatabase","IconFileDelta","IconFileDescription","IconFileDiff","IconFileDigit","IconFileDislike","IconFileDollar","IconFileDots","IconFileDownload","IconFileEuro","IconFileExport","IconFileFunction","IconFileHorizontal","IconFileImport","IconFileInfinity","IconFileInfo","IconFileInvoice","IconFileLambda","IconFileLike","IconFileMinus","IconFileMusic","IconFileOff","IconFileOrientation","IconFilePencil","IconFilePercent","IconFilePhone","IconFilePlus","IconFilePower","IconFileReport","IconFileRss","IconFileScissors","IconFileSearch","IconFileSettings","IconFileShredder","IconFileSignal","IconFileSpreadsheet","IconFileStack","IconFileStar","IconFileSymlink","IconFileText","IconFileTime","IconFileTypography","IconFileUnknown","IconFileUpload","IconFileVector","IconFileX","IconFileZip","IconFile","IconFilesOff","IconFiles","IconFilterOff","IconFilter","IconFingerprintOff","IconFingerprint","IconFireHydrantOff","IconFireHydrant","IconFiretruck","IconFirstAidKitOff","IconFirstAidKit","IconFishBone","IconFishChristianity","IconFishHookOff","IconFishHook","IconFishOff","IconFish","IconFlag2Off","IconFlag2","IconFlag3","IconFlagOff","IconFlag","IconFlameOff","IconFlame","IconFlare","IconFlask2Off","IconFlask2","IconFlaskOff","IconFlask","IconFlipFlops","IconFlipHorizontal","IconFlipVertical","IconFloatCenter","IconFloatLeft","IconFloatNone","IconFloatRight","IconFlowerOff","IconFlower","IconFocus2","IconFocusCentered","IconFocus","IconFoldDown","IconFoldUp","IconFold","IconFolderMinus","IconFolderOff","IconFolderPlus","IconFolderX","IconFolder","IconFoldersOff","IconFolders","IconForbid2","IconForbid","IconForklift","IconForms","IconFountainOff","IconFountain","IconFrameOff","IconFrame","IconFreeRights","IconFridgeOff","IconFridge","IconFriendsOff","IconFriends","IconFunctionOff","IconFunction","IconGardenCartOff","IconGardenCart","IconGasStationOff","IconGasStation","IconGaugeOff","IconGauge","IconGavel","IconGenderAgender","IconGenderAndrogyne","IconGenderBigender","IconGenderDemiboy","IconGenderDemigirl","IconGenderEpicene","IconGenderFemale","IconGenderFemme","IconGenderGenderfluid","IconGenderGenderless","IconGenderGenderqueer","IconGenderHermaphrodite","IconGenderIntergender","IconGenderMale","IconGenderNeutrois","IconGenderThird","IconGenderTransgender","IconGenderTrasvesti","IconGeometry","IconGhost2","IconGhostOff","IconGhost","IconGif","IconGiftCard","IconGiftOff","IconGift","IconGitBranchDeleted","IconGitBranch","IconGitCherryPick","IconGitCommit","IconGitCompare","IconGitFork","IconGitMerge","IconGitPullRequestClosed","IconGitPullRequestDraft","IconGitPullRequest","IconGizmo","IconGlassFull","IconGlassOff","IconGlass","IconGlobeOff","IconGlobe","IconGoGame","IconGolfOff","IconGolf","IconGps","IconGradienter","IconGrain","IconGraphOff","IconGraph","IconGrave2","IconGrave","IconGridDots","IconGridPattern","IconGrillFork","IconGrillOff","IconGrillSpatula","IconGrill","IconGripHorizontal","IconGripVertical","IconGrowth","IconGuitarPick","IconH1","IconH2","IconH3","IconH4","IconH5","IconH6","IconHammerOff","IconHammer","IconHandClick","IconHandFingerOff","IconHandFinger","IconHandGrab","IconHandLittleFinger","IconHandMiddleFinger","IconHandMove","IconHandOff","IconHandRingFinger","IconHandRock","IconHandSanitizer","IconHandStop","IconHandThreeFingers","IconHandTwoFingers","IconHanger2","IconHangerOff","IconHanger","IconHash","IconHaze","IconHeadingOff","IconHeading","IconHeadphonesOff","IconHeadphones","IconHeadsetOff","IconHeadset","IconHealthRecognition","IconHeartBroken","IconHeartHandshake","IconHeartMinus","IconHeartOff","IconHeartPlus","IconHeartRateMonitor","IconHeart","IconHeartbeat","IconHeartsOff","IconHearts","IconHelicopterLanding","IconHelicopter","IconHelmetOff","IconHelmet","IconHelpOff","IconHelp","IconHexagon3d","IconHexagonLetterA","IconHexagonLetterB","IconHexagonLetterC","IconHexagonLetterD","IconHexagonLetterE","IconHexagonLetterF","IconHexagonLetterG","IconHexagonLetterH","IconHexagonLetterI","IconHexagonLetterJ","IconHexagonLetterK","IconHexagonLetterL","IconHexagonLetterM","IconHexagonLetterN","IconHexagonLetterO","IconHexagonLetterP","IconHexagonLetterQ","IconHexagonLetterR","IconHexagonLetterS","IconHexagonLetterT","IconHexagonLetterU","IconHexagonLetterV","IconHexagonLetterW","IconHexagonLetterX","IconHexagonLetterY","IconHexagonLetterZ","IconHexagonNumber0","IconHexagonNumber1","IconHexagonNumber2","IconHexagonNumber3","IconHexagonNumber4","IconHexagonNumber5","IconHexagonNumber6","IconHexagonNumber7","IconHexagonNumber8","IconHexagonNumber9","IconHexagonOff","IconHexagon","IconHexagonsOff","IconHexagons","IconHierarchy2","IconHierarchy3","IconHierarchyOff","IconHierarchy","IconHighlightOff","IconHighlight","IconHistoryOff","IconHistoryToggle","IconHistory","IconHome2","IconHomeBolt","IconHomeCancel","IconHomeCheck","IconHomeCog","IconHomeDollar","IconHomeDot","IconHomeDown","IconHomeEco","IconHomeEdit","IconHomeExclamation","IconHomeHand","IconHomeHeart","IconHomeInfinity","IconHomeLink","IconHomeMinus","IconHomeMove","IconHomeOff","IconHomePlus","IconHomeQuestion","IconHomeRibbon","IconHomeSearch","IconHomeShare","IconHomeShield","IconHomeSignal","IconHomeStar","IconHomeStats","IconHomeUp","IconHomeX","IconHome","IconHorseToy","IconHotelService","IconHourglassEmpty","IconHourglassHigh","IconHourglassLow","IconHourglassOff","IconHourglass","IconIceCream2","IconIceCreamOff","IconIceCream","IconIceSkating","IconIconsOff","IconIcons","IconIdBadge2","IconIdBadgeOff","IconIdBadge","IconIdOff","IconId","IconInboxOff","IconInbox","IconIndentDecrease","IconIndentIncrease","IconInfinityOff","IconInfinity","IconInfoCircle","IconInfoSquareRounded","IconInfoSquare","IconInnerShadowBottomLeft","IconInnerShadowBottomRight","IconInnerShadowBottom","IconInnerShadowLeft","IconInnerShadowRight","IconInnerShadowTopLeft","IconInnerShadowTopRight","IconInnerShadowTop","IconInputSearch","IconIroning1","IconIroning2","IconIroning3","IconIroningOff","IconIroningSteamOff","IconIroningSteam","IconItalic","IconJacket","IconJetpack","IconJewishStar","IconJpg","IconJumpRope","IconKarate","IconKayak","IconKering","IconKeyOff","IconKey","IconKeyboardHide","IconKeyboardOff","IconKeyboardShow","IconKeyboard","IconKeyframeAlignCenter","IconKeyframeAlignHorizontal","IconKeyframeAlignVertical","IconKeyframe","IconKeyframes","IconLadderOff","IconLadder","IconLambda","IconLamp2","IconLampOff","IconLamp","IconLanguageHiragana","IconLanguageKatakana","IconLanguageOff","IconLanguage","IconLassoOff","IconLassoPolygon","IconLasso","IconLayersDifference","IconLayersIntersect2","IconLayersIntersect","IconLayersLinked","IconLayersOff","IconLayersSubtract","IconLayersUnion","IconLayout2","IconLayoutAlignBottom","IconLayoutAlignCenter","IconLayoutAlignLeft","IconLayoutAlignMiddle","IconLayoutAlignRight","IconLayoutAlignTop","IconLayoutBoardSplit","IconLayoutBoard","IconLayoutBottombarCollapse","IconLayoutBottombarExpand","IconLayoutBottombar","IconLayoutCards","IconLayoutCollage","IconLayoutColumns","IconLayoutDashboard","IconLayoutDistributeHorizontal","IconLayoutDistributeVertical","IconLayoutGridAdd","IconLayoutGrid","IconLayoutKanban","IconLayoutList","IconLayoutNavbarCollapse","IconLayoutNavbarExpand","IconLayoutNavbar","IconLayoutOff","IconLayoutRows","IconLayoutSidebarLeftCollapse","IconLayoutSidebarLeftExpand","IconLayoutSidebarRightCollapse","IconLayoutSidebarRightExpand","IconLayoutSidebarRight","IconLayoutSidebar","IconLayout","IconLeafOff","IconLeaf","IconLegoOff","IconLego","IconLemon2","IconLemon","IconLetterA","IconLetterB","IconLetterC","IconLetterCaseLower","IconLetterCaseToggle","IconLetterCaseUpper","IconLetterCase","IconLetterD","IconLetterE","IconLetterF","IconLetterG","IconLetterH","IconLetterI","IconLetterJ","IconLetterK","IconLetterL","IconLetterM","IconLetterN","IconLetterO","IconLetterP","IconLetterQ","IconLetterR","IconLetterS","IconLetterSpacing","IconLetterT","IconLetterU","IconLetterV","IconLetterW","IconLetterX","IconLetterY","IconLetterZ","IconLicenseOff","IconLicense","IconLifebuoyOff","IconLifebuoy","IconLineDashed","IconLineDotted","IconLineHeight","IconLine","IconLinkOff","IconLink","IconListCheck","IconListDetails","IconListNumbers","IconListSearch","IconList","IconLivePhotoOff","IconLivePhoto","IconLiveView","IconLoader2","IconLoader3","IconLoaderQuarter","IconLoader","IconLocationBroken","IconLocationOff","IconLocation","IconLockAccessOff","IconLockAccess","IconLockOff","IconLockOpenOff","IconLockOpen","IconLockSquareRounded","IconLockSquare","IconLock","IconLogicAnd","IconLogicBuffer","IconLogicNand","IconLogicNor","IconLogicNot","IconLogicOr","IconLogicXnor","IconLogicXor","IconLogin","IconLogout","IconLollipopOff","IconLollipop","IconLuggageOff","IconLuggage","IconLungsOff","IconLungs","IconMacroOff","IconMacro","IconMagnetOff","IconMagnet","IconMailFast","IconMailForward","IconMailOff","IconMailOpened","IconMail","IconMailboxOff","IconMailbox","IconMan","IconManualGearbox","IconMap2","IconMapOff","IconMapPinOff","IconMapPin","IconMapPins","IconMapSearch","IconMap","IconMarkdownOff","IconMarkdown","IconMarquee2","IconMarqueeOff","IconMarquee","IconMars","IconMaskOff","IconMask","IconMasksTheaterOff","IconMasksTheater","IconMassage","IconMatchstick","IconMath1Divide2","IconMath1Divide3","IconMathAvg","IconMathEqualGreater","IconMathEqualLower","IconMathFunctionOff","IconMathFunctionY","IconMathFunction","IconMathGreater","IconMathIntegralX","IconMathIntegral","IconMathIntegrals","IconMathLower","IconMathMax","IconMathMin","IconMathNot","IconMathOff","IconMathPiDivide2","IconMathPi","IconMathSymbols","IconMathXDivide2","IconMathXDivideY2","IconMathXDivideY","IconMathXMinusX","IconMathXMinusY","IconMathXPlusX","IconMathXPlusY","IconMathXy","IconMathYMinusY","IconMathYPlusY","IconMath","IconMaximizeOff","IconMaximize","IconMeatOff","IconMeat","IconMedal2","IconMedal","IconMedicalCrossOff","IconMedicalCross","IconMedicineSyrup","IconMeeple","IconMenorah","IconMenu2","IconMenuOrder","IconMenu","IconMessage2Code","IconMessage2Off","IconMessage2Share","IconMessage2","IconMessageChatbot","IconMessageCircle2","IconMessageCircleOff","IconMessageCircle","IconMessageCode","IconMessageDots","IconMessageForward","IconMessageLanguage","IconMessageOff","IconMessagePlus","IconMessageReport","IconMessageShare","IconMessage","IconMessagesOff","IconMessages","IconMeteorOff","IconMeteor","IconMickey","IconMicrophone2Off","IconMicrophone2","IconMicrophoneOff","IconMicrophone","IconMicroscopeOff","IconMicroscope","IconMicrowaveOff","IconMicrowave","IconMilitaryAward","IconMilitaryRank","IconMilkOff","IconMilk","IconMilkshake","IconMinimize","IconMinusVertical","IconMinus","IconMistOff","IconMist","IconMoneybag","IconMoodAngry","IconMoodAnnoyed2","IconMoodAnnoyed","IconMoodBoy","IconMoodConfuzed","IconMoodCrazyHappy","IconMoodCry","IconMoodEmpty","IconMoodHappy","IconMoodKid","IconMoodLookLeft","IconMoodLookRight","IconMoodNerd","IconMoodNervous","IconMoodNeutral","IconMoodOff","IconMoodSad2","IconMoodSadDizzy","IconMoodSadSquint","IconMoodSad","IconMoodSick","IconMoodSilence","IconMoodSing","IconMoodSmileBeam","IconMoodSmileDizzy","IconMoodSmile","IconMoodSuprised","IconMoodTongueWink2","IconMoodTongueWink","IconMoodTongue","IconMoodUnamused","IconMoodWink2","IconMoodWink","IconMoodWrrr","IconMoodXd","IconMoon2","IconMoonOff","IconMoonStars","IconMoon","IconMoped","IconMotorbike","IconMountainOff","IconMountain","IconMouse2","IconMouseOff","IconMouse","IconMoustache","IconMovieOff","IconMovie","IconMugOff","IconMug","IconMultiplier05x","IconMultiplier15x","IconMultiplier1x","IconMultiplier2x","IconMushroomOff","IconMushroom","IconMusicOff","IconMusic","IconNavigationOff","IconNavigation","IconNeedleThread","IconNeedle","IconNetworkOff","IconNetwork","IconNewSection","IconNewsOff","IconNews","IconNfcOff","IconNfc","IconNoCopyright","IconNoCreativeCommons","IconNoDerivatives","IconNorthStar","IconNoteOff","IconNote","IconNotebookOff","IconNotebook","IconNotesOff","IconNotes","IconNotificationOff","IconNotification","IconNumber0","IconNumber1","IconNumber2","IconNumber3","IconNumber4","IconNumber5","IconNumber6","IconNumber7","IconNumber8","IconNumber9","IconNumber","IconNumbers","IconNurse","IconOctagonOff","IconOctagon","IconOld","IconOlympicsOff","IconOlympics","IconOm","IconOmega","IconOutbound","IconOutlet","IconOvalVertical","IconOval","IconOverline","IconPackageOff","IconPackage","IconPackages","IconPackgeExport","IconPackgeImport","IconPacman","IconPageBreak","IconPaintOff","IconPaint","IconPaletteOff","IconPalette","IconPanoramaHorizontalOff","IconPanoramaHorizontal","IconPanoramaVerticalOff","IconPanoramaVertical","IconPaperBagOff","IconPaperBag","IconPaperclip","IconParachuteOff","IconParachute","IconParenthesesOff","IconParentheses","IconParkingOff","IconParking","IconPassword","IconPawOff","IconPaw","IconPeace","IconPencilMinus","IconPencilOff","IconPencilPlus","IconPencil","IconPennant2","IconPennantOff","IconPennant","IconPentagonOff","IconPentagon","IconPentagram","IconPepperOff","IconPepper","IconPercentage","IconPerfume","IconPerspectiveOff","IconPerspective","IconPhoneCall","IconPhoneCalling","IconPhoneCheck","IconPhoneIncoming","IconPhoneOff","IconPhoneOutgoing","IconPhonePause","IconPhonePlus","IconPhoneX","IconPhone","IconPhotoCancel","IconPhotoCheck","IconPhotoDown","IconPhotoEdit","IconPhotoHeart","IconPhotoMinus","IconPhotoOff","IconPhotoPlus","IconPhotoSearch","IconPhotoShield","IconPhotoStar","IconPhotoUp","IconPhotoX","IconPhoto","IconPhysotherapist","IconPictureInPictureOff","IconPictureInPictureOn","IconPictureInPictureTop","IconPictureInPicture","IconPigMoney","IconPigOff","IconPig","IconPilcrow","IconPillOff","IconPill","IconPills","IconPin","IconPingPong","IconPinnedOff","IconPinned","IconPizzaOff","IconPizza","IconPlaceholder","IconPlaneArrival","IconPlaneDeparture","IconPlaneInflight","IconPlaneOff","IconPlaneTilt","IconPlane","IconPlanetOff","IconPlanet","IconPlant2Off","IconPlant2","IconPlantOff","IconPlant","IconPlayCardOff","IconPlayCard","IconPlayerEject","IconPlayerPause","IconPlayerPlay","IconPlayerRecord","IconPlayerSkipBack","IconPlayerSkipForward","IconPlayerStop","IconPlayerTrackNext","IconPlayerTrackPrev","IconPlaylistAdd","IconPlaylistOff","IconPlaylistX","IconPlaylist","IconPlaystationCircle","IconPlaystationSquare","IconPlaystationTriangle","IconPlaystationX","IconPlugConnectedX","IconPlugConnected","IconPlugOff","IconPlugX","IconPlug","IconPlus","IconPng","IconPodiumOff","IconPodium","IconPointOff","IconPoint","IconPointer","IconPokeballOff","IconPokeball","IconPokerChip","IconPolaroid","IconPolygonOff","IconPolygon","IconPoo","IconPoolOff","IconPool","IconPower","IconPray","IconPremiumRights","IconPrescription","IconPresentationAnalytics","IconPresentationOff","IconPresentation","IconPrinterOff","IconPrinter","IconPrison","IconPrompt","IconPropellerOff","IconPropeller","IconPumpkinScary","IconPuzzle2","IconPuzzleOff","IconPuzzle","IconPyramidOff","IconPyramid","IconQrcodeOff","IconQrcode","IconQuestionCircle","IconQuestionMark","IconQuoteOff","IconQuote","IconRadar2","IconRadarOff","IconRadar","IconRadioOff","IconRadio","IconRadioactiveOff","IconRadioactive","IconRadiusBottomLeft","IconRadiusBottomRight","IconRadiusTopLeft","IconRadiusTopRight","IconRainbowOff","IconRainbow","IconRating12Plus","IconRating14Plus","IconRating16Plus","IconRating18Plus","IconRating21Plus","IconRazorElectric","IconRazor","IconReceipt2","IconReceiptOff","IconReceiptRefund","IconReceiptTax","IconReceipt","IconRecharging","IconRecordMailOff","IconRecordMail","IconRectangleVertical","IconRectangle","IconRecycleOff","IconRecycle","IconRefreshAlert","IconRefreshDot","IconRefreshOff","IconRefresh","IconRegexOff","IconRegex","IconRegistered","IconRelationManyToMany","IconRelationOneToMany","IconRelationOneToOne","IconReload","IconRepeatOff","IconRepeatOnce","IconRepeat","IconReplaceOff","IconReplace","IconReportAnalytics","IconReportMedical","IconReportMoney","IconReportOff","IconReportSearch","IconReport","IconResize","IconRibbonHealth","IconRippleOff","IconRipple","IconRoadOff","IconRoadSign","IconRoad","IconRobotOff","IconRobot","IconRocketOff","IconRocket","IconRollerSkating","IconRollercoasterOff","IconRollercoaster","IconRosetteNumber0","IconRosetteNumber1","IconRosetteNumber2","IconRosetteNumber3","IconRosetteNumber4","IconRosetteNumber5","IconRosetteNumber6","IconRosetteNumber7","IconRosetteNumber8","IconRosetteNumber9","IconRosette","IconRotate2","IconRotate360","IconRotateClockwise2","IconRotateClockwise","IconRotateDot","IconRotateRectangle","IconRotate","IconRoute2","IconRouteOff","IconRoute","IconRouterOff","IconRouter","IconRowInsertBottom","IconRowInsertTop","IconRss","IconRubberStampOff","IconRubberStamp","IconRuler2Off","IconRuler2","IconRuler3","IconRulerMeasure","IconRulerOff","IconRuler","IconRun","IconSTurnDown","IconSTurnLeft","IconSTurnRight","IconSTurnUp","IconSailboat2","IconSailboatOff","IconSailboat","IconSalad","IconSalt","IconSatelliteOff","IconSatellite","IconSausage","IconScaleOff","IconScaleOutlineOff","IconScaleOutline","IconScale","IconScanEye","IconScan","IconSchemaOff","IconSchema","IconSchoolBell","IconSchoolOff","IconSchool","IconScissorsOff","IconScissors","IconScooterElectric","IconScooter","IconScreenShareOff","IconScreenShare","IconScreenshot","IconScribbleOff","IconScribble","IconScriptMinus","IconScriptPlus","IconScriptX","IconScript","IconScubaMaskOff","IconScubaMask","IconSdk","IconSearchOff","IconSearch","IconSectionSign","IconSection","IconSeedingOff","IconSeeding","IconSelect","IconSelector","IconSendOff","IconSend","IconSeo","IconSeparatorHorizontal","IconSeparatorVertical","IconSeparator","IconServer2","IconServerBolt","IconServerCog","IconServerOff","IconServer","IconServicemark","IconSettings2","IconSettingsAutomation","IconSettingsOff","IconSettings","IconShadowOff","IconShadow","IconShape2","IconShape3","IconShapeOff","IconShape","IconShareOff","IconShare","IconShieldCheck","IconShieldCheckered","IconShieldChevron","IconShieldHalfFilled","IconShieldHalf","IconShieldLock","IconShieldOff","IconShieldX","IconShield","IconShipOff","IconShip","IconShirtOff","IconShirtSport","IconShirt","IconShoeOff","IconShoe","IconShoppingBag","IconShoppingCartDiscount","IconShoppingCartOff","IconShoppingCartPlus","IconShoppingCartX","IconShoppingCart","IconShovel","IconShredder","IconSignLeft","IconSignRight","IconSignal3g","IconSignal4gPlus","IconSignal4g","IconSignal5g","IconSignatureOff","IconSignature","IconSitemapOff","IconSitemap","IconSkateboardOff","IconSkateboard","IconSkull","IconSlash","IconSlashes","IconSleigh","IconSlice","IconSlideshow","IconSmartHomeOff","IconSmartHome","IconSmokingNo","IconSmoking","IconSnowflakeOff","IconSnowflake","IconSnowman","IconSoccerField","IconSocialOff","IconSocial","IconSock","IconSofaOff","IconSofa","IconSort09","IconSort90","IconSortAZ","IconSortAscending2","IconSortAscendingLetters","IconSortAscendingNumbers","IconSortAscending","IconSortDescending2","IconSortDescendingLetters","IconSortDescendingNumbers","IconSortDescending","IconSortZA","IconSos","IconSoupOff","IconSoup","IconSourceCode","IconSpaceOff","IconSpace","IconSpacingHorizontal","IconSpacingVertical","IconSpade","IconSpeakerphone","IconSpeedboat","IconSpider","IconSpiralOff","IconSpiral","IconSportBillard","IconSpray","IconSpyOff","IconSpy","IconSquareArrowDown","IconSquareArrowLeft","IconSquareArrowRight","IconSquareArrowUp","IconSquareAsterisk","IconSquareCheck","IconSquareChevronDown","IconSquareChevronLeft","IconSquareChevronRight","IconSquareChevronUp","IconSquareChevronsDown","IconSquareChevronsLeft","IconSquareChevronsRight","IconSquareChevronsUp","IconSquareDot","IconSquareF0","IconSquareF1","IconSquareF2","IconSquareF3","IconSquareF4","IconSquareF5","IconSquareF6","IconSquareF7","IconSquareF8","IconSquareF9","IconSquareForbid2","IconSquareForbid","IconSquareHalf","IconSquareKey","IconSquareLetterA","IconSquareLetterB","IconSquareLetterC","IconSquareLetterD","IconSquareLetterE","IconSquareLetterF","IconSquareLetterG","IconSquareLetterH","IconSquareLetterI","IconSquareLetterJ","IconSquareLetterK","IconSquareLetterL","IconSquareLetterM","IconSquareLetterN","IconSquareLetterO","IconSquareLetterP","IconSquareLetterQ","IconSquareLetterR","IconSquareLetterS","IconSquareLetterT","IconSquareLetterU","IconSquareLetterV","IconSquareLetterW","IconSquareLetterX","IconSquareLetterY","IconSquareLetterZ","IconSquareMinus","IconSquareNumber0","IconSquareNumber1","IconSquareNumber2","IconSquareNumber3","IconSquareNumber4","IconSquareNumber5","IconSquareNumber6","IconSquareNumber7","IconSquareNumber8","IconSquareNumber9","IconSquareOff","IconSquarePlus","IconSquareRoot2","IconSquareRoot","IconSquareRotatedForbid2","IconSquareRotatedForbid","IconSquareRotatedOff","IconSquareRotated","IconSquareRoundedArrowDown","IconSquareRoundedArrowLeft","IconSquareRoundedArrowRight","IconSquareRoundedArrowUp","IconSquareRoundedCheck","IconSquareRoundedChevronDown","IconSquareRoundedChevronLeft","IconSquareRoundedChevronRight","IconSquareRoundedChevronUp","IconSquareRoundedChevronsDown","IconSquareRoundedChevronsLeft","IconSquareRoundedChevronsRight","IconSquareRoundedChevronsUp","IconSquareRoundedLetterA","IconSquareRoundedLetterB","IconSquareRoundedLetterC","IconSquareRoundedLetterD","IconSquareRoundedLetterE","IconSquareRoundedLetterF","IconSquareRoundedLetterG","IconSquareRoundedLetterH","IconSquareRoundedLetterI","IconSquareRoundedLetterJ","IconSquareRoundedLetterK","IconSquareRoundedLetterL","IconSquareRoundedLetterM","IconSquareRoundedLetterN","IconSquareRoundedLetterO","IconSquareRoundedLetterP","IconSquareRoundedLetterQ","IconSquareRoundedLetterR","IconSquareRoundedLetterS","IconSquareRoundedLetterT","IconSquareRoundedLetterU","IconSquareRoundedLetterV","IconSquareRoundedLetterW","IconSquareRoundedLetterX","IconSquareRoundedLetterY","IconSquareRoundedLetterZ","IconSquareRoundedMinus","IconSquareRoundedNumber0","IconSquareRoundedNumber1","IconSquareRoundedNumber2","IconSquareRoundedNumber3","IconSquareRoundedNumber4","IconSquareRoundedNumber5","IconSquareRoundedNumber6","IconSquareRoundedNumber7","IconSquareRoundedNumber8","IconSquareRoundedNumber9","IconSquareRoundedPlus","IconSquareRoundedX","IconSquareRounded","IconSquareToggleHorizontal","IconSquareToggle","IconSquareX","IconSquare","IconSquaresDiagonal","IconSquaresFilled","IconStack2","IconStack3","IconStackPop","IconStackPush","IconStack","IconStairsDown","IconStairsUp","IconStairs","IconStarHalf","IconStarOff","IconStar","IconStarsOff","IconStars","IconStatusChange","IconSteam","IconSteeringWheelOff","IconSteeringWheel","IconStepInto","IconStepOut","IconStereoGlasses","IconStethoscopeOff","IconStethoscope","IconSticker","IconStormOff","IconStorm","IconStretching","IconStrikethrough","IconSubmarine","IconSubscript","IconSubtask","IconSumOff","IconSum","IconSunHigh","IconSunLow","IconSunMoon","IconSunOff","IconSunWind","IconSun","IconSunglasses","IconSunrise","IconSunset2","IconSunset","IconSuperscript","IconSvg","IconSwimming","IconSwipe","IconSwitch2","IconSwitch3","IconSwitchHorizontal","IconSwitchVertical","IconSwitch","IconSwordOff","IconSword","IconSwords","IconTableAlias","IconTableExport","IconTableImport","IconTableOff","IconTableOptions","IconTableShortcut","IconTable","IconTagOff","IconTag","IconTagsOff","IconTags","IconTallymark1","IconTallymark2","IconTallymark3","IconTallymark4","IconTallymarks","IconTank","IconTargetArrow","IconTargetOff","IconTarget","IconTeapot","IconTelescopeOff","IconTelescope","IconTemperatureCelsius","IconTemperatureFahrenheit","IconTemperatureMinus","IconTemperatureOff","IconTemperaturePlus","IconTemperature","IconTemplateOff","IconTemplate","IconTentOff","IconTent","IconTerminal2","IconTerminal","IconTestPipe2","IconTestPipeOff","IconTestPipe","IconTex","IconTextCaption","IconTextColor","IconTextDecrease","IconTextDirectionLtr","IconTextDirectionRtl","IconTextIncrease","IconTextOrientation","IconTextPlus","IconTextRecognition","IconTextResize","IconTextSize","IconTextSpellcheck","IconTextWrapDisabled","IconTextWrap","IconTexture","IconThermometer","IconThumbDownOff","IconThumbDown","IconThumbUpOff","IconThumbUp","IconTicTac","IconTicketOff","IconTicket","IconTie","IconTilde","IconTiltShiftOff","IconTiltShift","IconTimelineEventExclamation","IconTimelineEventMinus","IconTimelineEventPlus","IconTimelineEventText","IconTimelineEventX","IconTimelineEvent","IconTimeline","IconTir","IconToggleLeft","IconToggleRight","IconToiletPaperOff","IconToiletPaper","IconTool","IconToolsKitchen2Off","IconToolsKitchen2","IconToolsKitchenOff","IconToolsKitchen","IconToolsOff","IconTools","IconTooltip","IconTopologyBus","IconTopologyComplex","IconTopologyFullHierarchy","IconTopologyFull","IconTopologyRing2","IconTopologyRing3","IconTopologyRing","IconTopologyStar2","IconTopologyStar3","IconTopologyStarRing2","IconTopologyStarRing3","IconTopologyStarRing","IconTopologyStar","IconTorii","IconTornado","IconTournament","IconTowerOff","IconTower","IconTrack","IconTractor","IconTrademark","IconTrafficConeOff","IconTrafficCone","IconTrafficLightsOff","IconTrafficLights","IconTrain","IconTransferIn","IconTransferOut","IconTransform","IconTransitionBottom","IconTransitionLeft","IconTransitionRight","IconTransitionTop","IconTrashOff","IconTrashX","IconTrash","IconTree","IconTrees","IconTrekking","IconTrendingDown2","IconTrendingDown3","IconTrendingDown","IconTrendingUp2","IconTrendingUp3","IconTrendingUp","IconTriangleInverted","IconTriangleOff","IconTriangleSquareCircle","IconTriangle","IconTriangles","IconTrident","IconTrolley","IconTrophyOff","IconTrophy","IconTrowel","IconTruckDelivery","IconTruckLoading","IconTruckOff","IconTruckReturn","IconTruck","IconTxt","IconTypographyOff","IconTypography","IconUfOff","IconUfo","IconUmbrellaOff","IconUmbrella","IconUnderline","IconUnlink","IconUpload","IconUrgent","IconUsb","IconUserCheck","IconUserCircle","IconUserExclamation","IconUserMinus","IconUserOff","IconUserPlus","IconUserSearch","IconUserX","IconUser","IconUsers","IconUvIndex","IconUxCircle","IconVaccineBottleOff","IconVaccineBottle","IconVaccineOff","IconVaccine","IconVacuumCleaner","IconVariableMinus","IconVariableOff","IconVariablePlus","IconVariable","IconVectorBezier2","IconVectorBezierArc","IconVectorBezierCircle","IconVectorBezier","IconVectorOff","IconVectorSpline","IconVectorTriangleOff","IconVectorTriangle","IconVector","IconVenus","IconVersionsOff","IconVersions","IconVideoMinus","IconVideoOff","IconVideoPlus","IconVideo","IconView360Off","IconView360","IconViewfinderOff","IconViewfinder","IconViewportNarrow","IconViewportWide","IconVinyl","IconVipOff","IconVip","IconVirusOff","IconVirusSearch","IconVirus","IconVocabularyOff","IconVocabulary","IconVolume2","IconVolume3","IconVolumeOff","IconVolume","IconWalk","IconWallOff","IconWall","IconWalletOff","IconWallet","IconWallpaperOff","IconWallpaper","IconWandOff","IconWand","IconWashDry1","IconWashDry2","IconWashDry3","IconWashDryA","IconWashDryDip","IconWashDryF","IconWashDryHang","IconWashDryOff","IconWashDryP","IconWashDryShade","IconWashDryW","IconWashDry","IconWashDrycleanOff","IconWashDryclean","IconWashGentle","IconWashMachine","IconWashOff","IconWashPress","IconWashTemperature1","IconWashTemperature2","IconWashTemperature3","IconWashTemperature4","IconWashTemperature5","IconWashTemperature6","IconWashTumbleDry","IconWashTumbleOff","IconWash","IconWaveSawTool","IconWaveSine","IconWaveSquare","IconWebhookOff","IconWebhook","IconWeight","IconWheelchairOff","IconWheelchair","IconWhirl","IconWifi0","IconWifi1","IconWifi2","IconWifiOff","IconWifi","IconWindOff","IconWind","IconWindmillOff","IconWindmill","IconWindowMaximize","IconWindowMinimize","IconWindowOff","IconWindow","IconWindsock","IconWiperWash","IconWiper","IconWoman","IconWood","IconWorldDownload","IconWorldLatitude","IconWorldLongitude","IconWorldOff","IconWorldUpload","IconWorldWww","IconWorld","IconWreckingBall","IconWritingOff","IconWritingSignOff","IconWritingSign","IconWriting","IconX","IconXboxA","IconXboxB","IconXboxX","IconXboxY","IconYinYang","IconYoga","IconZeppelinOff","IconZeppelin","IconZip","IconZodiacAquarius","IconZodiacAries","IconZodiacCancer","IconZodiacCapricorn","IconZodiacGemini","IconZodiacLeo","IconZodiacLibra","IconZodiacPisces","IconZodiacSagittarius","IconZodiacScorpio","IconZodiacTaurus","IconZodiacVirgo","IconZoomCancel","IconZoomCheck","IconZoomCode","IconZoomExclamation","IconZoomInArea","IconZoomIn","IconZoomMoney","IconZoomOutArea","IconZoomOut","IconZoomPan","IconZoomQuestion","IconZoomReplace","IconZoomReset","IconZzzOff","IconZzz","OptionsProvider","TablerIconComponent","firstLetter","uppercamelcase","ignoreWarnings","TablerIconsModule","lightGalleryCoreSettings","licenseKey","startClass","backdropDuration","startAnimationDuration","zoomFromOrigin","hideBarsDelay","showBarsAfter","slideDelay","supportLegacyBrowser","videoMaxSize","loadYouTubePoster","defaultCaptionHeight","ariaLabelledby","ariaDescribedby","hideScrollbar","swipeToClose","closeOnTap","showMaximizeIcon","loop","escKey","trapFocus","slideEndAnimation","hideControlOnEnd","mousewheel","getCaptionFromTitleOrAlt","appendSubHtmlTo","subHtmlSelectorRelative","numberOfSlideItemsInDom","selectWithin","nextHtml","prevHtml","iframeWidth","iframeHeight","iframeMaxWidth","iframeMaxHeight","appendCounterTo","swipeThreshold","enableSwipe","dynamicEl","exThumbImage","mobileSettings","strings","previousSlide","mediaLoadingFailed","lgQuery","cssVenderPrefixes","_getSelector","firstElement","_getFirstEl","generateUUID","_each","_setCssVendorPrefix","cssProperty","group1","isEventMatched","eventNamespace","eventListeners","customEvent","bodyMarginLeft","currentStyle","initLgPolyfills","defaultDynamicOptions","spacing","defaultLgSize","isResponsiveSizes","wWidth","size_1","imageSize","wHeight","elStyle","altAttr","imgMarkup","sourceTag","LightGallery","currentItemsInDom","prevScrollTop","bodyPaddingRight","isDummyImageRemoved","dragOrSwipeEnabled","generateSettings","buildModules","normalizeSettings","validateLicense","addSlideVideoInfo","buildStructure","triggerPosterClick","openGalleryOnItemClick","$element","uuid","openGallery","getSlideItemId","manageSingleSlideClassName","subHtmlCont","containerClassName","$backdrop","outerClassNames","refreshOnResize","hideBars","manageCloseGallery","initModules","getMediaContainerPosition","currentImageSize","resizeVideoSlide","imgStyle","getDummyImgStyles","containerResize","lgVideoStyle","getVideoContStyle","updateSlides","currentSrc","updateControls","galleryItem","organizeSlideItems","loadContent","updateCurrentCounter","dynamicElements","availableDynamicOptions","specified","dynamicAttr","subHtml","shouldHideScrollbar","bodyRect","resetScrollBar","itemsToBeInsertedToDom","getItemsToBeInsertedToDom","addHtml","setMediaContainerPosition","currentSlide_1","afterOpen","captionHeight","thumbContainer","hideBarTimeout","initPictureFill","$img","picturefill","counterHtml","subHtmlUrl","fL","currentSlide","getDummyImageContent","$currentSlide","$currentItem","_dummyImgSrc","dummyImgContent","setImgMarkup","imgContent","isFirstSlideWithZoomAnimation","onSlideObjectLoad","isHTML5VideoWithoutPoster","mediaObject","onLgObjectLoad","triggerSlideItemLoad","isHTML5VIdeo","_html5Video","responsive","srcDyItms","srcItms","rsWidth","rsSrc","videoSize","markup","iframeTitle","dummyImg","_poster","videoContStyle","playVideoString","_isVideo","loadContentOnFirstSlideLoad","numberOfItems","possibleNumberOfItems","prevIndexItem","numberOfExistingItems","getPreviousSlideIndex","currentItemId","setDownloadValue","$download","makeSlideAnimation","currentSlideItem","previousSlideItem","fromTouch","fromThumb","numberOfGalleryItems","previousSlideItem_1","arrowDisable","touchPrev","touchNext","updateCounterTotal","allowSwipe","gutter","triggerClick","distanceAbs","goToPrevSlide","isPosterElement","posterClick","isSwiping","manageSwipeClass","isDraging","dragMove","_touchNext","_touchPrev","_loop","$prev","$next","lastCall","isSlideElement","playButton","invalidateItems","focusableEls","visibleElements","firstFocusableEl","lastFocusableEl","top_4","destroyModules","removeTimeout","destroyGallery","closeTimeout","LightgalleryComponent","lgInitialized","LG","lightGallery","onAfterAppendSlide","onContainerResize","onAfterAppendSubHtml","onAfterOpen","onPosterClick","onDragMove","onBeforeNextSlide","onBeforePrevSlide","onRotateLeft","onRotateRight","onFlipHorizontal","onFlipVertical","LightgalleryModule","imageLoadedInView","loadImageError","keyboardAccess","CropperSettings","maintainAspectRatio","resetCropOnAspectRatioChange","resizeToWidth","resizeToHeight","cropperMinWidth","cropperMinHeight","cropperMaxHeight","cropperMaxWidth","cropperStaticWidth","cropperStaticHeight","canvasRotation","initialStepSize","roundCropper","onlyScaleDown","imageQuality","autoCrop","containWithinAspectRatio","hideResizeSquares","alignImage","cropperScaledMinWidth","cropperScaledMinHeight","cropperScaledMaxWidth","cropperScaledMaxHeight","stepSize","validateOptions","MoveTypes","Drag","Move","totalValue","CropService","sourceImage","loadedImage","cropper","imagePosition","getImagePosition","cropCanvas","fillStyle","fillRect","flipH","flipV","getCanvasTranslate","transformedImage","translateH","translateV","cropperPosition","offsetImagePosition","getOffsetImagePosition","resizeRatio","getResizeRatio","canvas","width_source","height_source","ratio_w","ratio_h","ratio_w_half","ratio_h_half","getImageData","img2","createImageData","data2","center_y","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","xx_start","yy_start","xx_stop","yy_stop","center_x","w0","xx","pos_x","putImageData","resizeCanvas","cropToBlob","toDataURL","getQuality","toBlob","objectUrl","translateUnit","getRatio","exifTransform","ratioWidth","ratioHeight","CropperPositionService","sourceImageElement","cropperWidth","cropperHeight","cropperHeightWithAspectRatio","cropperWidthWithAspectRatio","getClientX","getClientY","moveX","moveY","checkAspectRatio","overflowX1","overflowX2","overflowY1","overflowY2","exifRotationOrArrayBuffer","getUint16","getUint32","little","getExifRotation","LoadImageService","autoRotateSupported","testAutoOrientationImageURL","supportsAutomaticRotation","cropperSettings","checkImageTypeAndLoadImageFromArrayBuffer","imageType","isValidImageType","loadImageFromArrayBuffer","imageBase64","base64ToArrayBuffer","binaryString","originalImage","originalObjectUrl","originalArrayBuffer","transformImageFromArrayBuffer","autoRotate","getTransformationsFromExifData","transformLoadedImage","transformedSize","getTransformedSize","loadImageFromObjectUrl","minHeightToContain","ImageCropperComponent","cropService","cropperPositionService","loadImageService","setImageMaxSizeRetries","resizedWhileHidden","moveTypes","imageVisible","allowMoveImage","imageCropped","startCropImage","imageLoaded","cropperReady","loadImageFailed","transformChange","onChangesUpdateSettings","onChangesInputImage","setLoadedImage","setMaxSize","setCropperScaledMinSize","setCropperScaledMaxSize","aspectRatioIsCorrect","checkCropperPosition","doAutoCrop","resetCropperPosition","setCssTransform","setOptionsFromChanges","imageChangedEvent","imageURL","imageFile","isValidImageChangedEvent","loadImageFile","loadImageFromURL","loadBase64Image","safeTransformStyle","bypassSecurityTrustStyle","activatePinchGesture","safeImgDataUrl","bypassSecurityTrustResourceUrl","checkImageMaxSizeRecursively","sourceImageLoaded","resizeCropperPosition","hammer","onPinch","pinchStop","startPinch","changeKeyboardStepSize","keyboardMoveCropper","moveType","getInvertedPositionForKey","getPositionForKey","getEventForKey","startMove","moveImg","moveStop","setCropperScaledMinWidth","setCropperScaledMinHeight","maintainSize","cropToBase64","i5","ImageCropperModule","BsDropdownConfig","insideClick","BsDropdownState","isOpenChange","isDisabledChange","toggleClick","dropdownMenu","Jt","resolveDropdownMenu","dropdownAnimation","BsDropdownContainerComponent","_builder","_factoryDropDownAnimation","BsDropdownDirective","_cis","_isInlineOpen","_isInited","_showInline","$t","_inlinedMenu","attachInline","addBs4Polyfills","playAnimation","_dropup","dropup","removeShowClass","removeDropupStyles","addShowClass","checkRightAlignment","addDropupStyles","isRightAligned","BsDropdownMenuDirective","BsDropdownToggleDirective","_documentClickListener","_escKeyUpListener","BsDropdownModule","searchCountry","CountryISO","Afghanistan","Albania","Algeria","AmericanSamoa","Andorra","Angola","Anguilla","AntiguaAndBarbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","BosniaAndHerzegovina","Botswana","Brazil","BritishIndianOceanTerritory","BritishVirginIslands","Brunei","Bulgaria","BurkinaFaso","Burundi","Cambodia","Cameroon","Canada","CapeVerde","CaribbeanNetherlands","CaymanIslands","CentralAfricanRepublic","Chad","Chile","China","ChristmasIsland","Cocos","Colombia","Comoros","CongoDRCJamhuriYaKidemokrasiaYaKongo","CongoRepublicCongoBrazzaville","CookIslands","CostaRica","Croatia","Cuba","Cyprus","CzechRepublic","Denmark","Djibouti","Dominica","DominicanRepublic","Ecuador","Egypt","ElSalvador","EquatorialGuinea","Eritrea","Estonia","Ethiopia","FalklandIslands","FaroeIslands","Fiji","Finland","France","FrenchGuiana","FrenchPolynesia","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","GuineaBissau","Guyana","Haiti","Honduras","HongKong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","IsleOfMan","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Kosovo","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macau","Macedonia","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","MarshallIslands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","NewCaledonia","NewZealand","Nicaragua","Niger","Nigeria","Niue","NorfolkIsland","NorthKorea","NorthernMarianaIslands","Norway","Oman","Pakistan","Palau","Palestine","Panama","PapuaNewGuinea","Paraguay","Peru","Philippines","Poland","Portugal","PuertoRico","Qatar","Romania","Russia","Rwanda","SaintHelena","SaintKittsAndNevis","SaintLucia","SaintMartin","SaintPierreAndMiquelon","SaintVincentAndTheGrenadines","Samoa","SanMarino","SaudiArabia","Senegal","Serbia","Seychelles","SierraLeone","Singapore","SintMaarten","Slovakia","Slovenia","SolomonIslands","Somalia","SouthAfrica","SouthKorea","SouthSudan","Spain","SriLanka","Sudan","Suriname","SvalbardAndJanMayen","Swaziland","Sweden","Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","TimorLeste","Togo","Tokelau","Tonga","TrinidadAndTobago","Tunisia","Turkey","Turkmenistan","TurksAndCaicosIslands","Tuvalu","USVirginIslands","Uganda","Ukraine","UnitedArabEmirates","UnitedKingdom","UnitedStates","Uruguay","Uzbekistan","Vanuatu","VaticanCity","Venezuela","Vietnam","WallisAndFutuna","WesternSahara","Yemen","Zambia","Zimbabwe","CountryCode","allCountries","CôteDIvoire","Curaçao","Réunion","SaintBarthélemy","SãoToméAndPríncipe","ÅlandIslands","SearchCountryField","DialCode","Iso2","phoneNumberValidator","inputBox","isCheckValidation","validatePhoneNumber","setCustomValidity","lpn","countryCode","clearValidators","International","National","NativeElementInjectorDirective","controlDir","NgxIntlTelInputComponent","countryCodeData","preferredCountries","enablePlaceholder","onlyCountries","enableAutoCountrySelect","searchCountryFlag","searchCountryField","searchCountryPlaceholder","selectFirstCountry","phoneValidation","inputId","separateDialCode","countryChange","selectedCountry","areaCodes","dialCode","flagClass","iso2","phoneNumber","preferredCountriesInDropDown","phoneUtil","countrySearchText","selectedISO","selectedCountryISO","updateSelectedCountry","updatePreferredCountries","checkSeparateDialCodeStyle","fetchCountryData","setSelectedCountry","country","countrySearchTextLower","countryList","numberObj","getCountryIsoCode","newCountry","intlNo","removeDialCode","internationalNumber","nationalNumber","e164Number","onPhoneNumberChange","customPlaceholder","separateDialCodeClass","rawNumber","countries","mainCountry","secondaryCountries","matchedCountry","areaCode","getPhoneNumberPlaceHolder","preferredCountry","dropdownModuleForRoot","NgxIntlTelInputModule","NgxLoadingConfig","backdropBorderRadius","backdropBackgroundColour","fullScreenBackdrop","animationType","primaryColour","secondaryColour","tertiaryColour","ngxLoadingAnimationTypes","chasingDots","circleSwish","cubeGrid","doubleBounce","none","pulse","rectangleBounce","rotatingPlane","threeBounce","wanderingCubes","NgxLoadingService","loadingConfig","NgxLoadingComponent","LoadingService","setupConfig","NgxLoadingModule"],"sourceRoot":"webpack:///","sources":["./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/a11y.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/bidi.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/clipboard.js","./node_modules/rxjs/_esm2015/internal/observable/interval.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/drag-drop.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/keycodes.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/overlay.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/platform.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/portal.js","./node_modules/@angular/cdk/__ivy_ngcc__/fesm2015/scrolling.js","./node_modules/@angular/cdk/fesm2015/coercion.js","./node_modules/@angular/flex-layout/__ivy_ngcc__/esm2015/core.js","./node_modules/@angular/flex-layout/__ivy_ngcc__/esm2015/extended.js","./node_modules/@angular/flex-layout/__ivy_ngcc__/esm2015/flex.js","./node_modules/@angular/flex-layout/__ivy_ngcc__/esm2015/grid.js","./node_modules/@angular/flex-layout/__ivy_ngcc__/esm2015/flex-layout.js","./node_modules/@angular/google-maps/__ivy_ngcc__/fesm2015/google-maps.js","./node_modules/@angular/http/__ivy_ngcc__/fesm2015/http.js","./node_modules/@angular/cdk/fesm2015/cdk.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/core.js","./node_modules/@angular/material/__ivy_ngcc__/fesm2015/dialog.js","./node_modules/@ctrl/ngx-rightclick/__ivy_ngcc__/fesm2015/ctrl-ngx-rightclick.js","./node_modules/@firebase/logger/dist/index.esm.js","./node_modules/@firebase/app/dist/index.esm.js","./node_modules/@firebase/component/dist/index.esm.js","./node_modules/@firebase/util/dist/index.esm.js","./node_modules/preact/dist/preact.module.js","./node_modules/preact/hooks/dist/hooks.module.js","./node_modules/preact/compat/dist/compat.module.js","./node_modules/@fullcalendar/core/vdom.js","./node_modules/@fullcalendar/core/main.js","./node_modules/@fullcalendar/angular/__ivy_ngcc__/fesm2015/fullcalendar-angular.js","./node_modules/@fullcalendar/common/vdom.js","./node_modules/@fullcalendar/common/main.js","./node_modules/@fullcalendar/daygrid/main.js","./node_modules/@fullcalendar/interaction/main.js","./node_modules/@fullcalendar/list/main.js","./node_modules/@fullcalendar/timegrid/main.js","./node_modules/@ng-select/ng-select/__ivy_ngcc__/fesm2015/ng-select-ng-select.js","./node_modules/@ngx-translate/core/__ivy_ngcc__/fesm2015/ngx-translate-core.js","./node_modules/@syncfusion/ej2-base/dist/es6/ej2-base.es5.js","./node_modules/ag-grid-community/dist/ag-grid-community.auto.esm.js","./node_modules/ag-grid-angular/fesm2015/ag-grid-angular.js","./node_modules/angular-in-memory-web-api/__ivy_ngcc__/http-client-backend.service.js","./node_modules/angular-in-memory-web-api/__ivy_ngcc__/http-status-codes.js","./node_modules/angular-in-memory-web-api/__ivy_ngcc__/interfaces.js","./node_modules/angular-in-memory-web-api/__ivy_ngcc__/backend.service.js","./node_modules/angular-in-memory-web-api/__ivy_ngcc__/delay-response.js","./node_modules/angular-in-memory-web-api/__ivy_ngcc__/http-client-in-memory-web-api.module.js","./node_modules/angular-in-memory-web-api/__ivy_ngcc__/in-memory-web-api.module.js","./node_modules/crypto-js/aes.js","./node_modules/crypto-js/cipher-core.js","./node_modules/crypto-js/core.js","./node_modules/crypto-js/enc-base64.js","./node_modules/crypto-js/enc-base64url.js","./node_modules/crypto-js/enc-utf16.js","./node_modules/crypto-js/evpkdf.js","./node_modules/crypto-js/format-hex.js","./node_modules/crypto-js/hmac.js","./node_modules/crypto-js/index.js","./node_modules/crypto-js/lib-typedarrays.js","./node_modules/crypto-js/md5.js","./node_modules/crypto-js/mode-cfb.js","./node_modules/crypto-js/mode-ctr-gladman.js","./node_modules/crypto-js/mode-ctr.js","./node_modules/crypto-js/mode-ecb.js","./node_modules/crypto-js/mode-ofb.js","./node_modules/crypto-js/pad-ansix923.js","./node_modules/crypto-js/pad-iso10126.js","./node_modules/crypto-js/pad-iso97971.js","./node_modules/crypto-js/pad-nopadding.js","./node_modules/crypto-js/pad-zeropadding.js","./node_modules/crypto-js/pbkdf2.js","./node_modules/crypto-js/rabbit-legacy.js","./node_modules/crypto-js/rabbit.js","./node_modules/crypto-js/rc4.js","./node_modules/crypto-js/ripemd160.js","./node_modules/crypto-js/sha1.js","./node_modules/crypto-js/sha224.js","./node_modules/crypto-js/sha256.js","./node_modules/crypto-js/sha3.js","./node_modules/crypto-js/sha384.js","./node_modules/crypto-js/sha512.js","./node_modules/crypto-js/tripledes.js","./node_modules/crypto-js/x64-core.js","./node_modules/fast-deep-equal/index.js","./node_modules/feather-icons/dist/feather.js","./node_modules/firebase/app/dist/index.esm.js","./node_modules/@firebase/installations/dist/index.esm.js","./node_modules/@firebase/messaging/dist/index.esm.js","./node_modules/flatpickr/dist/esm/types/options.js","./node_modules/flatpickr/dist/esm/l10n/default.js","./node_modules/flatpickr/dist/esm/utils/index.js","./node_modules/flatpickr/dist/esm/utils/dom.js","./node_modules/flatpickr/dist/esm/utils/formatting.js","./node_modules/flatpickr/dist/esm/utils/dates.js","./node_modules/flatpickr/dist/esm/index.js","./node_modules/flatpickr/dist/esm/utils/polyfills.js","./node_modules/google-libphonenumber/dist/libphonenumber.js","./node_modules/hammerjs/hammer.js","./node_modules/idb/build/idb.js","./node_modules/lightgallery/plugins/autoplay/lg-autoplay.es5.js","./node_modules/lightgallery/plugins/fullscreen/lg-fullscreen.es5.js","./node_modules/lightgallery/plugins/rotate/lg-rotate.es5.js","./node_modules/lightgallery/plugins/thumbnail/lg-thumbnail.es5.js","./node_modules/lightgallery/plugins/video/lg-video.es5.js","./node_modules/lightgallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js","./node_modules/lightgallery/plugins/zoom/lg-zoom.es5.js","./node_modules/lodash/lodash.js","./node_modules/moment/locale/af.js","./node_modules/moment/locale/ar-dz.js","./node_modules/moment/locale/ar-kw.js","./node_modules/moment/locale/ar-ly.js","./node_modules/moment/locale/ar-ma.js","./node_modules/moment/locale/ar-ps.js","./node_modules/moment/locale/ar-sa.js","./node_modules/moment/locale/ar-tn.js","./node_modules/moment/locale/ar.js","./node_modules/moment/locale/az.js","./node_modules/moment/locale/be.js","./node_modules/moment/locale/bg.js","./node_modules/moment/locale/bm.js","./node_modules/moment/locale/bn-bd.js","./node_modules/moment/locale/bn.js","./node_modules/moment/locale/bo.js","./node_modules/moment/locale/br.js","./node_modules/moment/locale/bs.js","./node_modules/moment/locale/ca.js","./node_modules/moment/locale/cs.js","./node_modules/moment/locale/cv.js","./node_modules/moment/locale/cy.js","./node_modules/moment/locale/da.js","./node_modules/moment/locale/de-at.js","./node_modules/moment/locale/de-ch.js","./node_modules/moment/locale/de.js","./node_modules/moment/locale/dv.js","./node_modules/moment/locale/el.js","./node_modules/moment/locale/en-au.js","./node_modules/moment/locale/en-ca.js","./node_modules/moment/locale/en-gb.js","./node_modules/moment/locale/en-ie.js","./node_modules/moment/locale/en-il.js","./node_modules/moment/locale/en-in.js","./node_modules/moment/locale/en-nz.js","./node_modules/moment/locale/en-sg.js","./node_modules/moment/locale/eo.js","./node_modules/moment/locale/es-do.js","./node_modules/moment/locale/es-mx.js","./node_modules/moment/locale/es-us.js","./node_modules/moment/locale/es.js","./node_modules/moment/locale/et.js","./node_modules/moment/locale/eu.js","./node_modules/moment/locale/fa.js","./node_modules/moment/locale/fi.js","./node_modules/moment/locale/fil.js","./node_modules/moment/locale/fo.js","./node_modules/moment/locale/fr-ca.js","./node_modules/moment/locale/fr-ch.js","./node_modules/moment/locale/fr.js","./node_modules/moment/locale/fy.js","./node_modules/moment/locale/ga.js","./node_modules/moment/locale/gd.js","./node_modules/moment/locale/gl.js","./node_modules/moment/locale/gom-deva.js","./node_modules/moment/locale/gom-latn.js","./node_modules/moment/locale/gu.js","./node_modules/moment/locale/he.js","./node_modules/moment/locale/hi.js","./node_modules/moment/locale/hr.js","./node_modules/moment/locale/hu.js","./node_modules/moment/locale/hy-am.js","./node_modules/moment/locale/id.js","./node_modules/moment/locale/is.js","./node_modules/moment/locale/it-ch.js","./node_modules/moment/locale/it.js","./node_modules/moment/locale/ja.js","./node_modules/moment/locale/jv.js","./node_modules/moment/locale/ka.js","./node_modules/moment/locale/kk.js","./node_modules/moment/locale/km.js","./node_modules/moment/locale/kn.js","./node_modules/moment/locale/ko.js","./node_modules/moment/locale/ku-kmr.js","./node_modules/moment/locale/ku.js","./node_modules/moment/locale/ky.js","./node_modules/moment/locale/lb.js","./node_modules/moment/locale/lo.js","./node_modules/moment/locale/lt.js","./node_modules/moment/locale/lv.js","./node_modules/moment/locale/me.js","./node_modules/moment/locale/mi.js","./node_modules/moment/locale/mk.js","./node_modules/moment/locale/ml.js","./node_modules/moment/locale/mn.js","./node_modules/moment/locale/mr.js","./node_modules/moment/locale/ms-my.js","./node_modules/moment/locale/ms.js","./node_modules/moment/locale/mt.js","./node_modules/moment/locale/my.js","./node_modules/moment/locale/nb.js","./node_modules/moment/locale/ne.js","./node_modules/moment/locale/nl-be.js","./node_modules/moment/locale/nl.js","./node_modules/moment/locale/nn.js","./node_modules/moment/locale/oc-lnc.js","./node_modules/moment/locale/pa-in.js","./node_modules/moment/locale/pl.js","./node_modules/moment/locale/pt-br.js","./node_modules/moment/locale/pt.js","./node_modules/moment/locale/ro.js","./node_modules/moment/locale/ru.js","./node_modules/moment/locale/sd.js","./node_modules/moment/locale/se.js","./node_modules/moment/locale/si.js","./node_modules/moment/locale/sk.js","./node_modules/moment/locale/sl.js","./node_modules/moment/locale/sq.js","./node_modules/moment/locale/sr-cyrl.js","./node_modules/moment/locale/sr.js","./node_modules/moment/locale/ss.js","./node_modules/moment/locale/sv.js","./node_modules/moment/locale/sw.js","./node_modules/moment/locale/ta.js","./node_modules/moment/locale/te.js","./node_modules/moment/locale/tet.js","./node_modules/moment/locale/tg.js","./node_modules/moment/locale/th.js","./node_modules/moment/locale/tk.js","./node_modules/moment/locale/tl-ph.js","./node_modules/moment/locale/tlh.js","./node_modules/moment/locale/tr.js","./node_modules/moment/locale/tzl.js","./node_modules/moment/locale/tzm-latn.js","./node_modules/moment/locale/tzm.js","./node_modules/moment/locale/ug-cn.js","./node_modules/moment/locale/uk.js","./node_modules/moment/locale/ur.js","./node_modules/moment/locale/uz-latn.js","./node_modules/moment/locale/uz.js","./node_modules/moment/locale/vi.js","./node_modules/moment/locale/x-pseudo.js","./node_modules/moment/locale/yo.js","./node_modules/moment/locale/zh-cn.js","./node_modules/moment/locale/zh-hk.js","./node_modules/moment/locale/zh-mo.js","./node_modules/moment/locale/zh-tw.js","./node_modules/moment/moment.js","./node_modules/ng2-file-upload/__ivy_ngcc__/fesm2015/ng2-file-upload.js","./node_modules/ng2-flatpickr/node_modules/tslib/tslib.es6.js","./node_modules/ng2-flatpickr/__ivy_ngcc__/fesm2015/ng2-flatpickr.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/component-loader/fesm2015/ngx-bootstrap-component-loader.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/chronos/fesm2015/ngx-bootstrap-chronos.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/tooltip/fesm2015/ngx-bootstrap-tooltip.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/datepicker/fesm2015/ngx-bootstrap-datepicker.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/positioning/fesm2015/ngx-bootstrap-positioning.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/utils/fesm2015/ngx-bootstrap-utils.js","./node_modules/ngx-highlightjs/__ivy_ngcc__/fesm2015/ngx-highlightjs.js","./node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js","./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","./node_modules/ngx-perfect-scrollbar/__ivy_ngcc__/fesm2015/ngx-perfect-scrollbar.js","./node_modules/ngx-quill/__ivy_ngcc__/fesm2015/ngx-quill.js","./node_modules/ngx-toastr/__ivy_ngcc__/fesm2015/ngx-toastr.js","./node_modules/node-waves/src/js/waves.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/ReplaySubject.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./node_modules/rxjs/_esm2015/internal/observable/dom/WebSocketSubject.js","./node_modules/rxjs/_esm2015/internal/observable/dom/webSocket.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/rxjs/_esm2015/internal/observable/zip.js","./node_modules/rxjs/_esm2015/internal/operators/audit.js","./node_modules/rxjs/_esm2015/internal/operators/auditTime.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/rxjs/_esm2015/internal/operators/shareReplay.js","./node_modules/rxjs/_esm2015/internal/operators/skip.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/animationFrame.js","./node_modules/rxjs/_esm2015/internal/util/Immediate.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/asap.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isObservable.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./node_modules/sweetalert2/dist/sweetalert2.all.js","./node_modules/tslib/tslib.es6.js","./node_modules/@angular/animations/fesm2015/animations.mjs","./node_modules/@angular/common/fesm2015/common.mjs","./node_modules/@angular/common/fesm2015/http.mjs","./node_modules/@babel/runtime/helpers/esm/construct.js","./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","./node_modules/@angular/core/fesm2015/core.mjs","./node_modules/@angular/forms/fesm2015/forms.mjs","./node_modules/@angular/animations/fesm2015/browser.mjs","./node_modules/@angular/platform-browser/fesm2015/animations.mjs","./node_modules/@angular/platform-browser/fesm2015/platform-browser.mjs","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/@angular/router/fesm2015/router.mjs","./node_modules/rxjs/_esm2015/internal/operators/last.js","./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","./node_modules/rxjs/_esm2015/internal/observable/race.js","./node_modules/rxjs/_esm2015/internal/observable/never.js","./node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/@ng-bootstrap/ng-bootstrap/fesm2015/ng-bootstrap.mjs","./node_modules/rxjs/_esm2015/internal/operators/endWith.js","./node_modules/@ngx-translate/http-loader/fesm2015/ngx-translate-http-loader.mjs","./node_modules/@syncfusion/ej2-angular-base/src/util.js","./node_modules/@syncfusion/ej2-angular-base/src/complex-array-base.js","./node_modules/@syncfusion/ej2-angular-base/src/component-base.js","./node_modules/@syncfusion/ej2-angular-base/src/template.js","./node_modules/@syncfusion/ej2-angular-base/src/form-base.js","./node_modules/@syncfusion/ej2-layouts/dist/es6/ej2-layouts.es5.js","./node_modules/@syncfusion/ej2-buttons/dist/es6/ej2-buttons.es5.js","./node_modules/@syncfusion/ej2-popups/dist/es6/ej2-popups.es5.js","./node_modules/@syncfusion/ej2-data/dist/es6/ej2-data.es5.js","./node_modules/@syncfusion/ej2-splitbuttons/dist/es6/ej2-splitbuttons.es5.js","./node_modules/@syncfusion/ej2-inputs/dist/es6/ej2-inputs.es5.js","./node_modules/@syncfusion/ej2-lists/dist/es6/ej2-lists.es5.js","./node_modules/@syncfusion/ej2-notifications/dist/es6/ej2-notifications.es5.js","./node_modules/@syncfusion/ej2-navigations/dist/es6/ej2-navigations.es5.js","./node_modules/@syncfusion/ej2-dropdowns/dist/es6/ej2-dropdowns.es5.js","./node_modules/@syncfusion/ej2-calendars/dist/es6/ej2-calendars.es5.js","./node_modules/@syncfusion/ej2-file-utils/dist/es6/ej2-file-utils.es5.js","./node_modules/@syncfusion/ej2-compression/dist/es6/ej2-compression.es5.js","./node_modules/@syncfusion/ej2-excel-export/dist/es6/ej2-excel-export.es5.js","./node_modules/@syncfusion/ej2-pdf-export/dist/es6/ej2-pdf-export.es5.js","./node_modules/@syncfusion/ej2-grids/dist/es6/ej2-grids.es5.js","./node_modules/@syncfusion/ej2-filemanager/dist/es6/ej2-filemanager.es5.js","./node_modules/@syncfusion/ej2-angular-filemanager/fesm2015/syncfusion-ej2-angular-filemanager.mjs","./node_modules/angular-tabler-icons/fesm2015/angular-tabler-icons-icons.mjs","./node_modules/angular-tabler-icons/fesm2015/angular-tabler-icons.mjs","./node_modules/lightgallery/lightgallery.es5.js","./node_modules/lightgallery/angular/13/fesm2015/lightgallery-angular-13.mjs","./node_modules/ngx-image-cropper/fesm2015/ngx-image-cropper.mjs","./node_modules/ngx-bootstrap/__ivy_ngcc__/dropdown/fesm2015/ngx-bootstrap-dropdown.js","./node_modules/ngx-intl-tel-input/fesm2015/ngx-intl-tel-input.mjs","./node_modules/ngx-loading/fesm2015/ngx-loading.mjs","./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","./node_modules/@babel/runtime/helpers/esm/createClass.js","./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","./node_modules/@babel/runtime/helpers/esm/typeof.js","./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","./node_modules/@babel/runtime/helpers/esm/createSuper.js","./node_modules/@babel/runtime/helpers/esm/defineProperty.js","./node_modules/@babel/runtime/helpers/esm/superPropBase.js","./node_modules/@babel/runtime/helpers/esm/get.js","./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","./node_modules/@babel/runtime/helpers/esm/inherits.js","./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","./node_modules/@babel/runtime/helpers/esm/toArray.js","./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js"],"sourcesContent":["import * as i2 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, QueryList, NgZone, Directive, ElementRef, Input, InjectionToken, Optional, EventEmitter, Output, NgModule } from '@angular/core';\nimport { Subject, Subscription, BehaviorSubject, of } from 'rxjs';\nimport { hasModifierKey, A, Z, ZERO, NINE, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/platform';\nimport { Platform, _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot, PlatformModule } from '@angular/cdk/platform';\nimport { ContentObserver, ObserversModule } from '@angular/cdk/observers';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** IDs are delimited by an empty space, as per the spec. */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/platform';\nimport * as ɵngcc2 from '@angular/cdk/observers';\nconst ID_DELIMITER = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction addAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n if (ids.some(existingId => existingId.trim() == id.trim())) {\n return;\n }\n ids.push(id.trim());\n el.setAttribute(attr, ids.join(ID_DELIMITER));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction removeAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n const filteredIds = ids.filter(val => val != id.trim());\n if (filteredIds.length) {\n el.setAttribute(attr, filteredIds.join(ID_DELIMITER));\n }\n else {\n el.removeAttribute(attr);\n }\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction getAriaReferenceIds(el, attr) {\n // Get string array of all individual ids (whitespace delimited) in the attribute value\n return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** ID used for the body container where all messages are appended. */\nconst MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/** ID prefix used for each created message element. */\nconst CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/** Attribute given to each host element that is described by a message element. */\nconst CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/** Global incremental identifier for each registered message element. */\nlet nextId = 0;\n/** Global map of all registered message elements that have been placed into the document. */\nconst messageRegistry = new Map();\n/** Container for all registered messages. */\nlet messagesContainer = null;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n */\nclass AriaDescriber {\n constructor(_document) {\n this._document = _document;\n }\n describe(hostElement, message, role) {\n if (!this._canBeDescribed(hostElement, message)) {\n return;\n }\n const key = getKey(message, role);\n if (typeof message !== 'string') {\n // We need to ensure that the element has an ID.\n setMessageId(message);\n messageRegistry.set(key, { messageElement: message, referenceCount: 0 });\n }\n else if (!messageRegistry.has(key)) {\n this._createMessageElement(message, role);\n }\n if (!this._isElementDescribedByMessage(hostElement, key)) {\n this._addMessageReference(hostElement, key);\n }\n }\n removeDescription(hostElement, message, role) {\n if (!message || !this._isElementNode(hostElement)) {\n return;\n }\n const key = getKey(message, role);\n if (this._isElementDescribedByMessage(hostElement, key)) {\n this._removeMessageReference(hostElement, key);\n }\n // If the message is a string, it means that it's one that we created for the\n // consumer so we can remove it safely, otherwise we should leave it in place.\n if (typeof message === 'string') {\n const registeredMessage = messageRegistry.get(key);\n if (registeredMessage && registeredMessage.referenceCount === 0) {\n this._deleteMessageElement(key);\n }\n }\n if (messagesContainer && messagesContainer.childNodes.length === 0) {\n this._deleteMessagesContainer();\n }\n }\n /** Unregisters all created message elements and removes the message container. */\n ngOnDestroy() {\n const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}]`);\n for (let i = 0; i < describedElements.length; i++) {\n this._removeCdkDescribedByReferenceIds(describedElements[i]);\n describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n if (messagesContainer) {\n this._deleteMessagesContainer();\n }\n messageRegistry.clear();\n }\n /**\n * Creates a new element in the visually hidden message container element with the message\n * as its content and adds it to the message registry.\n */\n _createMessageElement(message, role) {\n const messageElement = this._document.createElement('div');\n setMessageId(messageElement);\n messageElement.textContent = message;\n if (role) {\n messageElement.setAttribute('role', role);\n }\n this._createMessagesContainer();\n messagesContainer.appendChild(messageElement);\n messageRegistry.set(getKey(message, role), { messageElement, referenceCount: 0 });\n }\n /** Deletes the message element from the global messages container. */\n _deleteMessageElement(key) {\n const registeredMessage = messageRegistry.get(key);\n const messageElement = registeredMessage && registeredMessage.messageElement;\n if (messagesContainer && messageElement) {\n messagesContainer.removeChild(messageElement);\n }\n messageRegistry.delete(key);\n }\n /** Creates the global container for all aria-describedby messages. */\n _createMessagesContainer() {\n if (!messagesContainer) {\n const preExistingContainer = this._document.getElementById(MESSAGES_CONTAINER_ID);\n // When going from the server to the client, we may end up in a situation where there's\n // already a container on the page, but we don't have a reference to it. Clear the\n // old container so we don't get duplicates. Doing this, instead of emptying the previous\n // container, should be slightly faster.\n if (preExistingContainer && preExistingContainer.parentNode) {\n preExistingContainer.parentNode.removeChild(preExistingContainer);\n }\n messagesContainer = this._document.createElement('div');\n messagesContainer.id = MESSAGES_CONTAINER_ID;\n // We add `visibility: hidden` in order to prevent text in this container from\n // being searchable by the browser's Ctrl + F functionality.\n // Screen-readers will still read the description for elements with aria-describedby even\n // when the description element is not visible.\n messagesContainer.style.visibility = 'hidden';\n // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that\n // the description element doesn't impact page layout.\n messagesContainer.classList.add('cdk-visually-hidden');\n this._document.body.appendChild(messagesContainer);\n }\n }\n /** Deletes the global messages container. */\n _deleteMessagesContainer() {\n if (messagesContainer && messagesContainer.parentNode) {\n messagesContainer.parentNode.removeChild(messagesContainer);\n messagesContainer = null;\n }\n }\n /** Removes all cdk-describedby messages that are hosted through the element. */\n _removeCdkDescribedByReferenceIds(element) {\n // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby')\n .filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n }\n /**\n * Adds a message reference to the element using aria-describedby and increments the registered\n * message's reference count.\n */\n _addMessageReference(element, key) {\n const registeredMessage = messageRegistry.get(key);\n // Add the aria-describedby reference and set the\n // describedby_host attribute to mark the element.\n addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, '');\n registeredMessage.referenceCount++;\n }\n /**\n * Removes a message reference from the element using aria-describedby\n * and decrements the registered message's reference count.\n */\n _removeMessageReference(element, key) {\n const registeredMessage = messageRegistry.get(key);\n registeredMessage.referenceCount--;\n removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n /** Returns true if the element has been described by the provided message ID. */\n _isElementDescribedByMessage(element, key) {\n const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n const registeredMessage = messageRegistry.get(key);\n const messageId = registeredMessage && registeredMessage.messageElement.id;\n return !!messageId && referenceIds.indexOf(messageId) != -1;\n }\n /** Determines whether a message can be described on a particular element. */\n _canBeDescribed(element, message) {\n if (!this._isElementNode(element)) {\n return false;\n }\n if (message && typeof message === 'object') {\n // We'd have to make some assumptions about the description element's text, if the consumer\n // passed in an element. Assume that if an element is passed in, the consumer has verified\n // that it can be used as a description.\n return true;\n }\n const trimmedMessage = message == null ? '' : `${message}`.trim();\n const ariaLabel = element.getAttribute('aria-label');\n // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the\n // element, because screen readers will end up reading out the same text twice in a row.\n return trimmedMessage ? (!ariaLabel || ariaLabel.trim() !== trimmedMessage) : false;\n }\n /** Checks whether a node is an Element node. */\n _isElementNode(element) {\n return element.nodeType === this._document.ELEMENT_NODE;\n }\n}\nAriaDescriber.ɵfac = function AriaDescriber_Factory(t) { return new (t || AriaDescriber)(ɵngcc0.ɵɵinject(DOCUMENT)); };\nAriaDescriber.ɵprov = i0.ɵɵdefineInjectable({ factory: function AriaDescriber_Factory() { return new AriaDescriber(i0.ɵɵinject(i2.DOCUMENT)); }, token: AriaDescriber, providedIn: \"root\" });\nAriaDescriber.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AriaDescriber, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n/** Gets a key that can be used to look messages up in the registry. */\nfunction getKey(message, role) {\n return typeof message === 'string' ? `${role || ''}/${message}` : message;\n}\n/** Assigns a unique ID to an element, if it doesn't have one already. */\nfunction setMessageId(element) {\n if (!element.id) {\n element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${nextId++}`;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nclass ListKeyManager {\n constructor(_items) {\n this._items = _items;\n this._activeItemIndex = -1;\n this._activeItem = null;\n this._wrap = false;\n this._letterKeyStream = new Subject();\n this._typeaheadSubscription = Subscription.EMPTY;\n this._vertical = true;\n this._allowedModifierKeys = [];\n this._homeAndEnd = false;\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager. By default, disabled items are skipped.\n */\n this._skipPredicateFn = (item) => item.disabled;\n // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n this._pressedLetters = [];\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n this.tabOut = new Subject();\n /** Stream that emits whenever the active item of the list manager changes. */\n this.change = new Subject();\n // We allow for the items to be an array because, in some cases, the consumer may\n // not have access to a QueryList of the items they want to manage (e.g. when the\n // items aren't being collected via `ViewChildren` or `ContentChildren`).\n if (_items instanceof QueryList) {\n _items.changes.subscribe((newItems) => {\n if (this._activeItem) {\n const itemArray = newItems.toArray();\n const newIndex = itemArray.indexOf(this._activeItem);\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n }\n }\n });\n }\n }\n /**\n * Sets the predicate function that determines which items should be skipped by the\n * list key manager.\n * @param predicate Function that determines whether the given item should be skipped.\n */\n skipPredicate(predicate) {\n this._skipPredicateFn = predicate;\n return this;\n }\n /**\n * Configures wrapping mode, which determines whether the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n * @param shouldWrap Whether the list should wrap when reaching the end.\n */\n withWrap(shouldWrap = true) {\n this._wrap = shouldWrap;\n return this;\n }\n /**\n * Configures whether the key manager should be able to move the selection vertically.\n * @param enabled Whether vertical selection should be enabled.\n */\n withVerticalOrientation(enabled = true) {\n this._vertical = enabled;\n return this;\n }\n /**\n * Configures the key manager to move the selection horizontally.\n * Passing in `null` will disable horizontal movement.\n * @param direction Direction in which the selection can be moved.\n */\n withHorizontalOrientation(direction) {\n this._horizontal = direction;\n return this;\n }\n /**\n * Modifier keys which are allowed to be held down and whose default actions will be prevented\n * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n */\n withAllowedModifierKeys(keys) {\n this._allowedModifierKeys = keys;\n return this;\n }\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n */\n withTypeAhead(debounceInterval = 200) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && (this._items.length &&\n this._items.some(item => typeof item.getLabel !== 'function'))) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n this._typeaheadSubscription.unsubscribe();\n // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n // and convert those letters back into a string. Afterwards find the first item that starts\n // with that string and select it.\n this._typeaheadSubscription = this._letterKeyStream.pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(debounceInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join(''))).subscribe(inputString => {\n const items = this._getItemsArray();\n // Start at 1 because we want to start searching at the item immediately\n // following the current active item.\n for (let i = 1; i < items.length + 1; i++) {\n const index = (this._activeItemIndex + i) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item) &&\n item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) {\n this.setActiveItem(index);\n break;\n }\n }\n this._pressedLetters = [];\n });\n return this;\n }\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled = true) {\n this._homeAndEnd = enabled;\n return this;\n }\n setActiveItem(item) {\n const previousActiveItem = this._activeItem;\n this.updateActiveItem(item);\n if (this._activeItem !== previousActiveItem) {\n this.change.next(this._activeItemIndex);\n }\n }\n /**\n * Sets the active item depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event) {\n const keyCode = event.keyCode;\n const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n const isModifierAllowed = modifiers.every(modifier => {\n return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n });\n switch (keyCode) {\n case TAB:\n this.tabOut.next();\n return;\n case DOWN_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case UP_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case RIGHT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case LEFT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case HOME:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setFirstItemActive();\n break;\n }\n else {\n return;\n }\n case END:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setLastItemActive();\n break;\n }\n else {\n return;\n }\n default:\n if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n // otherwise fall back to resolving alphanumeric characters via the keyCode.\n if (event.key && event.key.length === 1) {\n this._letterKeyStream.next(event.key.toLocaleUpperCase());\n }\n else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n this._letterKeyStream.next(String.fromCharCode(keyCode));\n }\n }\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n this._pressedLetters = [];\n event.preventDefault();\n }\n /** Index of the currently active item. */\n get activeItemIndex() {\n return this._activeItemIndex;\n }\n /** The active item. */\n get activeItem() {\n return this._activeItem;\n }\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping() {\n return this._pressedLetters.length > 0;\n }\n /** Sets the active item to the first enabled item in the list. */\n setFirstItemActive() {\n this._setActiveItemByIndex(0, 1);\n }\n /** Sets the active item to the last enabled item in the list. */\n setLastItemActive() {\n this._setActiveItemByIndex(this._items.length - 1, -1);\n }\n /** Sets the active item to the next enabled item in the list. */\n setNextItemActive() {\n this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n }\n /** Sets the active item to a previous enabled item in the list. */\n setPreviousItemActive() {\n this._activeItemIndex < 0 && this._wrap ? this.setLastItemActive()\n : this._setActiveItemByDelta(-1);\n }\n updateActiveItem(item) {\n const itemArray = this._getItemsArray();\n const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n const activeItem = itemArray[index];\n // Explicitly check for `null` and `undefined` because other falsy values are valid.\n this._activeItem = activeItem == null ? null : activeItem;\n this._activeItemIndex = index;\n }\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n */\n _setActiveItemByDelta(delta) {\n this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n }\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n */\n _setActiveInWrapMode(delta) {\n const items = this._getItemsArray();\n for (let i = 1; i <= items.length; i++) {\n const index = (this._activeItemIndex + (delta * i) + items.length) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item)) {\n this.setActiveItem(index);\n return;\n }\n }\n }\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n */\n _setActiveInDefaultMode(delta) {\n this._setActiveItemByIndex(this._activeItemIndex + delta, delta);\n }\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n */\n _setActiveItemByIndex(index, fallbackDelta) {\n const items = this._getItemsArray();\n if (!items[index]) {\n return;\n }\n while (this._skipPredicateFn(items[index])) {\n index += fallbackDelta;\n if (!items[index]) {\n return;\n }\n }\n this.setActiveItem(index);\n }\n /** Returns the items as an array. */\n _getItemsArray() {\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass ActiveDescendantKeyManager extends ListKeyManager {\n setActiveItem(index) {\n if (this.activeItem) {\n this.activeItem.setInactiveStyles();\n }\n super.setActiveItem(index);\n if (this.activeItem) {\n this.activeItem.setActiveStyles();\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass FocusKeyManager extends ListKeyManager {\n constructor() {\n super(...arguments);\n this._origin = 'program';\n }\n /**\n * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n * @param origin Focus origin to be used when focusing items.\n */\n setFocusOrigin(origin) {\n this._origin = origin;\n return this;\n }\n setActiveItem(item) {\n super.setActiveItem(item);\n if (this.activeItem) {\n this.activeItem.focus(this._origin);\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Configuration for the isFocusable method.\n */\nclass IsFocusableConfig {\n constructor() {\n /**\n * Whether to count an element as focusable even if it is not currently visible.\n */\n this.ignoreVisibility = false;\n }\n}\n// The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n/**\n * Utility for checking the interactivity of an element, such as whether is is focusable or\n * tabbable.\n */\nclass InteractivityChecker {\n constructor(_platform) {\n this._platform = _platform;\n }\n /**\n * Gets whether an element is disabled.\n *\n * @param element Element to be checked.\n * @returns Whether the element is disabled.\n */\n isDisabled(element) {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n }\n /**\n * Gets whether an element is visible for the purposes of interactivity.\n *\n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n *\n * @returns Whether the element is visible.\n */\n isVisible(element) {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n }\n /**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n *\n * @param element Element to be checked.\n * @returns Whether the element is tabbable.\n */\n isTabbable(element) {\n // Nothing is tabbable on the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n const frameElement = getFrameElement(getWindow(element));\n if (frameElement) {\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n // Browsers disable tabbing to an element inside of an invisible frame.\n if (!this.isVisible(frameElement)) {\n return false;\n }\n }\n let nodeName = element.nodeName.toLowerCase();\n let tabIndexValue = getTabIndexValue(element);\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n if (nodeName === 'iframe' || nodeName === 'object') {\n // The frame or object's content may be tabbable depending on the content, but it's\n // not possibly to reliably detect the content of the frames. We always consider such\n // elements as non-tabbable.\n return false;\n }\n // In iOS, the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n if (nodeName === 'audio') {\n // Audio elements without controls enabled are never tabbable, regardless\n // of the tabindex attribute explicitly being set.\n if (!element.hasAttribute('controls')) {\n return false;\n }\n // Audio elements with controls are by default tabbable unless the\n // tabindex attribute is set to `-1` explicitly.\n return tabIndexValue !== -1;\n }\n if (nodeName === 'video') {\n // For all video elements, if the tabindex attribute is set to `-1`, the video\n // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n // tabindex attribute is the source of truth here.\n if (tabIndexValue === -1) {\n return false;\n }\n // If the tabindex is explicitly set, and not `-1` (as per check before), the\n // video element is always tabbable (regardless of whether it has controls or not).\n if (tabIndexValue !== null) {\n return true;\n }\n // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n // has controls enabled. Firefox is special as videos are always tabbable regardless\n // of whether there are controls or not.\n return this._platform.FIREFOX || element.hasAttribute('controls');\n }\n return element.tabIndex >= 0;\n }\n /**\n * Gets whether an element can be focused by the user.\n *\n * @param element Element to be checked.\n * @param config The config object with options to customize this method's behavior\n * @returns Whether the element is focusable.\n */\n isFocusable(element, config) {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return isPotentiallyFocusable(element) && !this.isDisabled(element) &&\n ((config === null || config === void 0 ? void 0 : config.ignoreVisibility) || this.isVisible(element));\n }\n}\nInteractivityChecker.ɵfac = function InteractivityChecker_Factory(t) { return new (t || InteractivityChecker)(ɵngcc0.ɵɵinject(ɵngcc1.Platform)); };\nInteractivityChecker.ɵprov = i0.ɵɵdefineInjectable({ factory: function InteractivityChecker_Factory() { return new InteractivityChecker(i0.ɵɵinject(i1.Platform)); }, token: InteractivityChecker, providedIn: \"root\" });\nInteractivityChecker.ctorParameters = () => [\n { type: Platform }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InteractivityChecker, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc1.Platform }]; }, null); })();\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window) {\n try {\n return window.frameElement;\n }\n catch (_a) {\n return null;\n }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element) {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth || element.offsetHeight ||\n (typeof element.getClientRects === 'function' && element.getClientRects().length));\n}\n/** Gets whether an element's */\nfunction isNativeFormElement(element) {\n let nodeName = element.nodeName.toLowerCase();\n return nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'button' ||\n nodeName === 'textarea';\n}\n/** Gets whether an element is an ``. */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n let tabIndex = element.getAttribute('tabindex');\n // IE11 parses tabindex=\"\" as the value \"-32768\"\n if (tabIndex == '-32768') {\n return false;\n }\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n let nodeName = element.nodeName.toLowerCase();\n let inputType = nodeName === 'input' && element.type;\n return inputType === 'text'\n || inputType === 'password'\n || nodeName === 'select'\n || nodeName === 'textarea';\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return isNativeFormElement(element) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n hasValidTabIndex(element);\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n // ownerDocument is null if `node` itself *is* a document.\n return node.ownerDocument && node.ownerDocument.defaultView || window;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrap {\n constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {\n this._element = _element;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n this._hasAttached = false;\n // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n this.startAnchorListener = () => this.focusLastTabbableElement();\n this.endAnchorListener = () => this.focusFirstTabbableElement();\n this._enabled = true;\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n /** Whether the focus trap is active. */\n get enabled() { return this._enabled; }\n set enabled(value) {\n this._enabled = value;\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(value, this._startAnchor);\n this._toggleAnchorTabIndex(value, this._endAnchor);\n }\n }\n /** Destroys the focus trap by cleaning up the anchors. */\n destroy() {\n const startAnchor = this._startAnchor;\n const endAnchor = this._endAnchor;\n if (startAnchor) {\n startAnchor.removeEventListener('focus', this.startAnchorListener);\n if (startAnchor.parentNode) {\n startAnchor.parentNode.removeChild(startAnchor);\n }\n }\n if (endAnchor) {\n endAnchor.removeEventListener('focus', this.endAnchorListener);\n if (endAnchor.parentNode) {\n endAnchor.parentNode.removeChild(endAnchor);\n }\n }\n this._startAnchor = this._endAnchor = null;\n this._hasAttached = false;\n }\n /**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @returns Whether the focus trap managed to attach successfully. This may not be the case\n * if the target element isn't currently in the DOM.\n */\n attachAnchors() {\n // If we're not on the browser, there can be no focus to trap.\n if (this._hasAttached) {\n return true;\n }\n this._ngZone.runOutsideAngular(() => {\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n this._startAnchor.addEventListener('focus', this.startAnchorListener);\n }\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n this._endAnchor.addEventListener('focus', this.endAnchorListener);\n }\n });\n if (this._element.parentNode) {\n this._element.parentNode.insertBefore(this._startAnchor, this._element);\n this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n this._hasAttached = true;\n }\n return this._hasAttached;\n }\n /**\n * Waits for the zone to stabilize, then either focuses the first element that the\n * user specified, or the first tabbable element.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusInitialElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusInitialElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusFirstTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusLastTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\n });\n }\n /**\n * Get the specified boundary element of the trapped region.\n * @param bound The boundary to get (start or end of trapped region).\n * @returns The boundary element.\n */\n _getRegionBoundary(bound) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n let markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` +\n `[cdkFocusRegion${bound}], ` +\n `[cdk-focus-${bound}]`);\n for (let i = 0; i < markers.length; i++) {\n // @breaking-change 8.0.0\n if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated ` +\n `attribute will be removed in 8.0.0.`, markers[i]);\n }\n else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +\n `will be removed in 8.0.0.`, markers[i]);\n }\n }\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length ?\n markers[markers.length - 1] : this._getLastTabbableElement(this._element);\n }\n /**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @returns Whether focus was moved successfully.\n */\n focusInitialElement(options) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` +\n `[cdkFocusInitial]`);\n if (redirectToElement) {\n // @breaking-change 8.0.0\n if (redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +\n `use 'cdkFocusInitial' instead. The deprecated attribute ` +\n `will be removed in 8.0.0`, redirectToElement);\n }\n // Warn the consumer if the element they've pointed to\n // isn't focusable, when not in production mode.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n !this._checker.isFocusable(redirectToElement)) {\n console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n }\n if (!this._checker.isFocusable(redirectToElement)) {\n const focusableChild = this._getFirstTabbableElement(redirectToElement);\n focusableChild === null || focusableChild === void 0 ? void 0 : focusableChild.focus(options);\n return !!focusableChild;\n }\n redirectToElement.focus(options);\n return true;\n }\n return this.focusFirstTabbableElement(options);\n }\n /**\n * Focuses the first tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusFirstTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('start');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Focuses the last tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusLastTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('end');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Checks whether the focus trap has successfully been attached.\n */\n hasAttached() {\n return this._hasAttached;\n }\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n _getFirstTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in DOM order. Note that IE doesn't have `children` for SVG so we fall\n // back to `childNodes` which includes text nodes, comments etc.\n let children = root.children || root.childNodes;\n for (let i = 0; i < children.length; i++) {\n let tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ?\n this._getFirstTabbableElement(children[i]) :\n null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Get the last tabbable element from a DOM subtree (inclusive). */\n _getLastTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in reverse DOM order.\n let children = root.children || root.childNodes;\n for (let i = children.length - 1; i >= 0; i--) {\n let tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ?\n this._getLastTabbableElement(children[i]) :\n null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Creates an anchor element. */\n _createAnchor() {\n const anchor = this._document.createElement('div');\n this._toggleAnchorTabIndex(this._enabled, anchor);\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n anchor.setAttribute('aria-hidden', 'true');\n return anchor;\n }\n /**\n * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n * @param isEnabled Whether the focus trap is enabled.\n * @param anchor Anchor on which to toggle the tabindex.\n */\n _toggleAnchorTabIndex(isEnabled, anchor) {\n // Remove the tabindex completely, rather than setting it to -1, because if the\n // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n }\n /**\n * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n * @param enabled: Whether the anchors should trap Tab.\n */\n toggleAnchors(enabled) {\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(enabled, this._startAnchor);\n this._toggleAnchorTabIndex(enabled, this._endAnchor);\n }\n }\n /** Executes a function when the zone is stable. */\n _executeOnStable(fn) {\n if (this._ngZone.isStable) {\n fn();\n }\n else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrapFactory {\n constructor(_checker, _ngZone, _document) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n }\n /**\n * Creates a focus-trapped region around the given element.\n * @param element The element around which focus will be trapped.\n * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n * manually by the user.\n * @returns The created focus trap instance.\n */\n create(element, deferCaptureElements = false) {\n return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n }\n}\nFocusTrapFactory.ɵfac = function FocusTrapFactory_Factory(t) { return new (t || FocusTrapFactory)(ɵngcc0.ɵɵinject(InteractivityChecker), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(DOCUMENT)); };\nFocusTrapFactory.ɵprov = i0.ɵɵdefineInjectable({ factory: function FocusTrapFactory_Factory() { return new FocusTrapFactory(i0.ɵɵinject(InteractivityChecker), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i2.DOCUMENT)); }, token: FocusTrapFactory, providedIn: \"root\" });\nFocusTrapFactory.ctorParameters = () => [\n { type: InteractivityChecker },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FocusTrapFactory, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: InteractivityChecker }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n/** Directive for trapping focus within a region. */\nclass CdkTrapFocus {\n constructor(_elementRef, _focusTrapFactory, \n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 13.0.0\n */\n _document) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n this._previouslyFocusedElement = null;\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n /** Whether the focus trap is active. */\n get enabled() { return this.focusTrap.enabled; }\n set enabled(value) { this.focusTrap.enabled = coerceBooleanProperty(value); }\n /**\n * Whether the directive should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n get autoCapture() { return this._autoCapture; }\n set autoCapture(value) { this._autoCapture = coerceBooleanProperty(value); }\n ngOnDestroy() {\n this.focusTrap.destroy();\n // If we stored a previously focused element when using autoCapture, return focus to that\n // element now that the trapped region is being destroyed.\n if (this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n this._previouslyFocusedElement = null;\n }\n }\n ngAfterContentInit() {\n this.focusTrap.attachAnchors();\n if (this.autoCapture) {\n this._captureFocus();\n }\n }\n ngDoCheck() {\n if (!this.focusTrap.hasAttached()) {\n this.focusTrap.attachAnchors();\n }\n }\n ngOnChanges(changes) {\n const autoCaptureChange = changes['autoCapture'];\n if (autoCaptureChange && !autoCaptureChange.firstChange && this.autoCapture &&\n this.focusTrap.hasAttached()) {\n this._captureFocus();\n }\n }\n _captureFocus() {\n this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n this.focusTrap.focusInitialElementWhenReady();\n }\n}\nCdkTrapFocus.ɵfac = function CdkTrapFocus_Factory(t) { return new (t || CdkTrapFocus)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(FocusTrapFactory), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nCdkTrapFocus.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkTrapFocus, selectors: [[\"\", \"cdkTrapFocus\", \"\"]], inputs: { enabled: [\"cdkTrapFocus\", \"enabled\"], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"] }, exportAs: [\"cdkTrapFocus\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nCdkTrapFocus.ctorParameters = () => [\n { type: ElementRef },\n { type: FocusTrapFactory },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nCdkTrapFocus.propDecorators = {\n enabled: [{ type: Input, args: ['cdkTrapFocus',] }],\n autoCapture: [{ type: Input, args: ['cdkTrapFocusAutoCapture',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkTrapFocus, [{\n type: Directive,\n args: [{\n selector: '[cdkTrapFocus]',\n exportAs: 'cdkTrapFocus'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { enabled: [{\n type: Input,\n args: ['cdkTrapFocus']\n }], autoCapture: [{\n type: Input,\n args: ['cdkTrapFocusAutoCapture']\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\nclass ConfigurableFocusTrap extends FocusTrap {\n constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {\n super(_element, _checker, _ngZone, _document, config.defer);\n this._focusTrapManager = _focusTrapManager;\n this._inertStrategy = _inertStrategy;\n this._focusTrapManager.register(this);\n }\n /** Whether the FocusTrap is enabled. */\n get enabled() { return this._enabled; }\n set enabled(value) {\n this._enabled = value;\n if (this._enabled) {\n this._focusTrapManager.register(this);\n }\n else {\n this._focusTrapManager.deregister(this);\n }\n }\n /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n destroy() {\n this._focusTrapManager.deregister(this);\n super.destroy();\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _enable() {\n this._inertStrategy.preventFocus(this);\n this.toggleAnchors(true);\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _disable() {\n this._inertStrategy.allowFocus(this);\n this.toggleAnchors(false);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the inert strategy. */\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** IE 11 compatible closest implementation that is able to start from non-Element Nodes. */\nfunction closest(element, selector) {\n if (!(element instanceof Node)) {\n return null;\n }\n let curr = element;\n while (curr != null && !(curr instanceof Element)) {\n curr = curr.parentNode;\n }\n return curr && (hasNativeClosest ?\n curr.closest(selector) : polyfillClosest(curr, selector));\n}\n/** Polyfill for browsers without Element.closest. */\nfunction polyfillClosest(element, selector) {\n let curr = element;\n while (curr != null && !(curr instanceof Element && matches(curr, selector))) {\n curr = curr.parentNode;\n }\n return (curr || null);\n}\nconst hasNativeClosest = typeof Element != 'undefined' && !!Element.prototype.closest;\n/** IE 11 compatible matches implementation. */\nfunction matches(element, selector) {\n return element.matches ?\n element.matches(selector) :\n element['msMatchesSelector'](selector);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\nclass EventListenerFocusTrapInertStrategy {\n constructor() {\n /** Focus event handler. */\n this._listener = null;\n }\n /** Adds a document event listener that keeps focus inside the FocusTrap. */\n preventFocus(focusTrap) {\n // Ensure there's only one listener per document\n if (this._listener) {\n focusTrap._document.removeEventListener('focus', this._listener, true);\n }\n this._listener = (e) => this._trapFocus(focusTrap, e);\n focusTrap._ngZone.runOutsideAngular(() => {\n focusTrap._document.addEventListener('focus', this._listener, true);\n });\n }\n /** Removes the event listener added in preventFocus. */\n allowFocus(focusTrap) {\n if (!this._listener) {\n return;\n }\n focusTrap._document.removeEventListener('focus', this._listener, true);\n this._listener = null;\n }\n /**\n * Refocuses the first element in the FocusTrap if the focus event target was outside\n * the FocusTrap.\n *\n * This is an event listener callback. The event listener is added in runOutsideAngular,\n * so all this code runs outside Angular as well.\n */\n _trapFocus(focusTrap, event) {\n const target = event.target;\n const focusTrapRoot = focusTrap._element;\n // Don't refocus if target was in an overlay, because the overlay might be associated\n // with an element inside the FocusTrap, ex. mat-select.\n if (!focusTrapRoot.contains(target) && closest(target, 'div.cdk-overlay-pane') === null) {\n // Some legacy FocusTrap usages have logic that focuses some element on the page\n // just before FocusTrap is destroyed. For backwards compatibility, wait\n // to be sure FocusTrap is still enabled before refocusing.\n setTimeout(() => {\n // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n focusTrap.focusFirstTabbableElement();\n }\n });\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nclass FocusTrapManager {\n constructor() {\n // A stack of the FocusTraps on the page. Only the FocusTrap at the\n // top of the stack is active.\n this._focusTrapStack = [];\n }\n /**\n * Disables the FocusTrap at the top of the stack, and then pushes\n * the new FocusTrap onto the stack.\n */\n register(focusTrap) {\n // Dedupe focusTraps that register multiple times.\n this._focusTrapStack = this._focusTrapStack.filter((ft) => ft !== focusTrap);\n let stack = this._focusTrapStack;\n if (stack.length) {\n stack[stack.length - 1]._disable();\n }\n stack.push(focusTrap);\n focusTrap._enable();\n }\n /**\n * Removes the FocusTrap from the stack, and activates the\n * FocusTrap that is the new top of the stack.\n */\n deregister(focusTrap) {\n focusTrap._disable();\n const stack = this._focusTrapStack;\n const i = stack.indexOf(focusTrap);\n if (i !== -1) {\n stack.splice(i, 1);\n if (stack.length) {\n stack[stack.length - 1]._enable();\n }\n }\n }\n}\nFocusTrapManager.ɵfac = function FocusTrapManager_Factory(t) { return new (t || FocusTrapManager)(); };\nFocusTrapManager.ɵprov = i0.ɵɵdefineInjectable({ factory: function FocusTrapManager_Factory() { return new FocusTrapManager(); }, token: FocusTrapManager, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FocusTrapManager, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Factory that allows easy instantiation of configurable focus traps. */\nclass ConfigurableFocusTrapFactory {\n constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._focusTrapManager = _focusTrapManager;\n this._document = _document;\n // TODO split up the strategies into different modules, similar to DateAdapter.\n this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();\n }\n create(element, config = { defer: false }) {\n let configObject;\n if (typeof config === 'boolean') {\n configObject = { defer: config };\n }\n else {\n configObject = config;\n }\n return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);\n }\n}\nConfigurableFocusTrapFactory.ɵfac = function ConfigurableFocusTrapFactory_Factory(t) { return new (t || ConfigurableFocusTrapFactory)(ɵngcc0.ɵɵinject(InteractivityChecker), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(FocusTrapManager), ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(FOCUS_TRAP_INERT_STRATEGY, 8)); };\nConfigurableFocusTrapFactory.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConfigurableFocusTrapFactory_Factory() { return new ConfigurableFocusTrapFactory(i0.ɵɵinject(InteractivityChecker), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(FocusTrapManager), i0.ɵɵinject(i2.DOCUMENT), i0.ɵɵinject(FOCUS_TRAP_INERT_STRATEGY, 8)); }, token: ConfigurableFocusTrapFactory, providedIn: \"root\" });\nConfigurableFocusTrapFactory.ctorParameters = () => [\n { type: InteractivityChecker },\n { type: NgZone },\n { type: FocusTrapManager },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [FOCUS_TRAP_INERT_STRATEGY,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ConfigurableFocusTrapFactory, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: InteractivityChecker }, { type: ɵngcc0.NgZone }, { type: FocusTrapManager }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_TRAP_INERT_STRATEGY]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\nfunction isFakeMousedownFromScreenReader(event) {\n // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are\n // zero. Note that there's an edge case where the user could click the 0x0 spot of the screen\n // themselves, but that is unlikely to contain interaction elements. Historially we used to check\n // `event.buttons === 0`, however that no longer works on recent versions of NVDA.\n return event.offsetX === 0 && event.offsetY === 0;\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\nfunction isFakeTouchstartFromScreenReader(event) {\n const touch = (event.touches && event.touches[0]) ||\n (event.changedTouches && event.changedTouches[0]);\n // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n return !!touch && touch.identifier === -1 && (touch.radiusX == null || touch.radiusX === 1) &&\n (touch.radiusY == null || touch.radiusY === 1);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n * in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n * confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n * these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT],\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\nclass InputModalityDetector {\n constructor(_platform, ngZone, document, options) {\n this._platform = _platform;\n /**\n * The most recently detected input modality event target. Is null if no input modality has been\n * detected or if the associated event target is null for some unknown reason.\n */\n this._mostRecentTarget = null;\n /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n this._modality = new BehaviorSubject(null);\n /**\n * The timestamp of the last touch input modality. Used to determine whether mousedown events\n * should be attributed to mouse or touch.\n */\n this._lastTouchMs = 0;\n /**\n * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n * bound.\n */\n this._onKeydown = (event) => {\n var _a, _b;\n // If this is one of the keys we should ignore, then ignore it and don't update the input\n // modality to keyboard.\n if ((_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.ignoreKeys) === null || _b === void 0 ? void 0 : _b.some(keyCode => keyCode === event.keyCode)) {\n return;\n }\n this._modality.next('keyboard');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onMousedown = (event) => {\n // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n // after the previous touch event.\n if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n return;\n }\n // Fake mousedown events are fired by some screen readers when controls are activated by the\n // screen reader. Attribute them to keyboard input modality.\n this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onTouchstart = (event) => {\n // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n // events are fired. Again, attribute to keyboard input modality.\n if (isFakeTouchstartFromScreenReader(event)) {\n this._modality.next('keyboard');\n return;\n }\n // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n // triggered via mouse vs touch.\n this._lastTouchMs = Date.now();\n this._modality.next('touch');\n this._mostRecentTarget = _getEventTarget(event);\n };\n this._options = Object.assign(Object.assign({}, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS), options);\n // Skip the first emission as it's null.\n this.modalityDetected = this._modality.pipe(skip(1));\n this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());\n // If we're not in a browser, this service should do nothing, as there's no relevant input\n // modality to detect.\n if (_platform.isBrowser) {\n ngZone.runOutsideAngular(() => {\n document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n });\n }\n }\n /** The most recently detected input modality. */\n get mostRecentModality() {\n return this._modality.value;\n }\n ngOnDestroy() {\n this._modality.complete();\n if (this._platform.isBrowser) {\n document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n }\n }\n}\nInputModalityDetector.ɵfac = function InputModalityDetector_Factory(t) { return new (t || InputModalityDetector)(ɵngcc0.ɵɵinject(ɵngcc1.Platform), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(INPUT_MODALITY_DETECTOR_OPTIONS, 8)); };\nInputModalityDetector.ɵprov = i0.ɵɵdefineInjectable({ factory: function InputModalityDetector_Factory() { return new InputModalityDetector(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i2.DOCUMENT), i0.ɵɵinject(INPUT_MODALITY_DETECTOR_OPTIONS, 8)); }, token: InputModalityDetector, providedIn: \"root\" });\nInputModalityDetector.ctorParameters = () => [\n { type: Platform },\n { type: NgZone },\n { type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [INPUT_MODALITY_DETECTOR_OPTIONS,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InputModalityDetector, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc1.Platform }, { type: ɵngcc0.NgZone }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [INPUT_MODALITY_DETECTOR_OPTIONS]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n providedIn: 'root',\n factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY,\n});\n/** @docs-private */\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass LiveAnnouncer {\n constructor(elementToken, _ngZone, _document, _defaultOptions) {\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n // We inject the live element and document as `any` because the constructor signature cannot\n // reference browser globals (HTMLElement, Document) on non-browser environments, since having\n // a class decorator causes TypeScript to preserve the constructor signature types.\n this._document = _document;\n this._liveElement = elementToken || this._createLiveElement();\n }\n announce(message, ...args) {\n const defaultOptions = this._defaultOptions;\n let politeness;\n let duration;\n if (args.length === 1 && typeof args[0] === 'number') {\n duration = args[0];\n }\n else {\n [politeness, duration] = args;\n }\n this.clear();\n clearTimeout(this._previousTimeout);\n if (!politeness) {\n politeness =\n (defaultOptions && defaultOptions.politeness) ? defaultOptions.politeness : 'polite';\n }\n if (duration == null && defaultOptions) {\n duration = defaultOptions.duration;\n }\n // TODO: ensure changing the politeness works on all environments we support.\n this._liveElement.setAttribute('aria-live', politeness);\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n // second time without clearing and then using a non-zero delay.\n // (using JAWS 17 at time of this writing).\n return this._ngZone.runOutsideAngular(() => {\n return new Promise(resolve => {\n clearTimeout(this._previousTimeout);\n this._previousTimeout = setTimeout(() => {\n this._liveElement.textContent = message;\n resolve();\n if (typeof duration === 'number') {\n this._previousTimeout = setTimeout(() => this.clear(), duration);\n }\n }, 100);\n });\n });\n }\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n clear() {\n if (this._liveElement) {\n this._liveElement.textContent = '';\n }\n }\n ngOnDestroy() {\n clearTimeout(this._previousTimeout);\n if (this._liveElement && this._liveElement.parentNode) {\n this._liveElement.parentNode.removeChild(this._liveElement);\n this._liveElement = null;\n }\n }\n _createLiveElement() {\n const elementClass = 'cdk-live-announcer-element';\n const previousElements = this._document.getElementsByClassName(elementClass);\n const liveEl = this._document.createElement('div');\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (let i = 0; i < previousElements.length; i++) {\n previousElements[i].parentNode.removeChild(previousElements[i]);\n }\n liveEl.classList.add(elementClass);\n liveEl.classList.add('cdk-visually-hidden');\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n this._document.body.appendChild(liveEl);\n return liveEl;\n }\n}\nLiveAnnouncer.ɵfac = function LiveAnnouncer_Factory(t) { return new (t || LiveAnnouncer)(ɵngcc0.ɵɵinject(LIVE_ANNOUNCER_ELEMENT_TOKEN, 8), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(LIVE_ANNOUNCER_DEFAULT_OPTIONS, 8)); };\nLiveAnnouncer.ɵprov = i0.ɵɵdefineInjectable({ factory: function LiveAnnouncer_Factory() { return new LiveAnnouncer(i0.ɵɵinject(LIVE_ANNOUNCER_ELEMENT_TOKEN, 8), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i2.DOCUMENT), i0.ɵɵinject(LIVE_ANNOUNCER_DEFAULT_OPTIONS, 8)); }, token: LiveAnnouncer, providedIn: \"root\" });\nLiveAnnouncer.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [LIVE_ANNOUNCER_ELEMENT_TOKEN,] }] },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LiveAnnouncer, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n }] }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n }] }]; }, null); })();\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\nclass CdkAriaLive {\n constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) {\n this._elementRef = _elementRef;\n this._liveAnnouncer = _liveAnnouncer;\n this._contentObserver = _contentObserver;\n this._ngZone = _ngZone;\n this._politeness = 'polite';\n }\n /** The aria-live politeness level to use when announcing messages. */\n get politeness() { return this._politeness; }\n set politeness(value) {\n this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n if (this._politeness === 'off') {\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n else if (!this._subscription) {\n this._subscription = this._ngZone.runOutsideAngular(() => {\n return this._contentObserver\n .observe(this._elementRef)\n .subscribe(() => {\n // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n const elementText = this._elementRef.nativeElement.textContent;\n // The `MutationObserver` fires also for attribute\n // changes which we don't want to announce.\n if (elementText !== this._previousAnnouncedText) {\n this._liveAnnouncer.announce(elementText, this._politeness);\n this._previousAnnouncedText = elementText;\n }\n });\n });\n }\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n}\nCdkAriaLive.ɵfac = function CdkAriaLive_Factory(t) { return new (t || CdkAriaLive)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(LiveAnnouncer), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.ContentObserver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nCdkAriaLive.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkAriaLive, selectors: [[\"\", \"cdkAriaLive\", \"\"]], inputs: { politeness: [\"cdkAriaLive\", \"politeness\"] }, exportAs: [\"cdkAriaLive\"] });\nCdkAriaLive.ctorParameters = () => [\n { type: ElementRef },\n { type: LiveAnnouncer },\n { type: ContentObserver },\n { type: NgZone }\n];\nCdkAriaLive.propDecorators = {\n politeness: [{ type: Input, args: ['cdkAriaLive',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkAriaLive, [{\n type: Directive,\n args: [{\n selector: '[cdkAriaLive]',\n exportAs: 'cdkAriaLive'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: LiveAnnouncer }, { type: ɵngcc2.ContentObserver }, { type: ɵngcc0.NgZone }]; }, { politeness: [{\n type: Input,\n args: ['cdkAriaLive']\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** InjectionToken for FocusMonitorOptions. */\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\nclass FocusMonitor {\n constructor(_ngZone, _platform, _inputModalityDetector, \n /** @breaking-change 11.0.0 make document required */\n document, options) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._inputModalityDetector = _inputModalityDetector;\n /** The focus origin that the next focus event is a result of. */\n this._origin = null;\n /** Whether the window has just been focused. */\n this._windowFocused = false;\n /**\n * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n * focus events to touch interactions requires special logic.\n */\n this._originFromTouchInteraction = false;\n /** Map of elements being monitored to their info. */\n this._elementInfo = new Map();\n /** The number of elements currently being monitored. */\n this._monitoredElementCount = 0;\n /**\n * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n * as well as the number of monitored elements that they contain. We have to treat focus/blur\n * handlers differently from the rest of the events, because the browser won't emit events\n * to the document when focus moves inside of a shadow root.\n */\n this._rootNodeFocusListenerCount = new Map();\n /**\n * Event listener for `focus` events on the window.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._windowFocusListener = () => {\n // Make a note of when the window regains focus, so we can\n // restore the origin info for the focused element.\n this._windowFocused = true;\n this._windowFocusTimeoutId = setTimeout(() => this._windowFocused = false);\n };\n /** Subject for stopping our InputModalityDetector subscription. */\n this._stopInputModalityDetector = new Subject();\n /**\n * Event listener for `focus` and 'blur' events on the document.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._rootNodeFocusAndBlurListener = (event) => {\n const target = _getEventTarget(event);\n const handler = event.type === 'focus' ? this._onFocus : this._onBlur;\n // We need to walk up the ancestor chain in order to support `checkChildren`.\n for (let element = target; element; element = element.parentElement) {\n handler.call(this, event, element);\n }\n };\n this._document = document;\n this._detectionMode = (options === null || options === void 0 ? void 0 : options.detectionMode) || 0 /* IMMEDIATE */;\n }\n monitor(element, checkChildren = false) {\n const nativeElement = coerceElement(element);\n // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n return of(null);\n }\n // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n // the shadow root, rather than the `document`, because the browser won't emit focus events\n // to the `document`, if focus is moving within the same shadow root.\n const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n const cachedInfo = this._elementInfo.get(nativeElement);\n // Check if we're already monitoring this element.\n if (cachedInfo) {\n if (checkChildren) {\n // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n // observers into ones that behave as if `checkChildren` was turned on. We need a more\n // robust solution.\n cachedInfo.checkChildren = true;\n }\n return cachedInfo.subject;\n }\n // Create monitored element info.\n const info = {\n checkChildren: checkChildren,\n subject: new Subject(),\n rootNode\n };\n this._elementInfo.set(nativeElement, info);\n this._registerGlobalListeners(info);\n return info.subject;\n }\n stopMonitoring(element) {\n const nativeElement = coerceElement(element);\n const elementInfo = this._elementInfo.get(nativeElement);\n if (elementInfo) {\n elementInfo.subject.complete();\n this._setClasses(nativeElement);\n this._elementInfo.delete(nativeElement);\n this._removeGlobalListeners(elementInfo);\n }\n }\n focusVia(element, origin, options) {\n const nativeElement = coerceElement(element);\n const focusedElement = this._getDocument().activeElement;\n // If the element is focused already, calling `focus` again won't trigger the event listener\n // which means that the focus classes won't be updated. If that's the case, update the classes\n // directly without waiting for an event.\n if (nativeElement === focusedElement) {\n this._getClosestElementsInfo(nativeElement)\n .forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n }\n else {\n this._setOrigin(origin);\n // `focus` isn't available on the server\n if (typeof nativeElement.focus === 'function') {\n nativeElement.focus(options);\n }\n }\n }\n ngOnDestroy() {\n this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n _toggleClass(element, className, shouldSet) {\n if (shouldSet) {\n element.classList.add(className);\n }\n else {\n element.classList.remove(className);\n }\n }\n _getFocusOrigin(focusEventTarget) {\n if (this._origin) {\n // If the origin was realized via a touch interaction, we need to perform additional checks\n // to determine whether the focus origin should be attributed to touch or program.\n if (this._originFromTouchInteraction) {\n return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n }\n else {\n return this._origin;\n }\n }\n // If the window has just regained focus, we can restore the most recent origin from before the\n // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n // focus. This typically means one of two things happened:\n //\n // 1) The element was programmatically focused, or\n // 2) The element was focused via screen reader navigation (which generally doesn't fire\n // events).\n //\n // Because we can't distinguish between these two cases, we default to setting `program`.\n return (this._windowFocused && this._lastFocusOrigin) ? this._lastFocusOrigin : 'program';\n }\n /**\n * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n * event was directly caused by the touch interaction or (2) the focus event was caused by a\n * subsequent programmatic focus call triggered by the touch interaction.\n * @param focusEventTarget The target of the focus event under examination.\n */\n _shouldBeAttributedToTouch(focusEventTarget) {\n // Please note that this check is not perfect. Consider the following edge case:\n //\n //
\n //
\n //
\n //\n // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n // #child, #parent is programmatically focused. This code will attribute the focus to touch\n // instead of program. This is a relatively minor edge-case that can be worked around by using\n // focusVia(parent, 'program') to focus #parent.\n return (this._detectionMode === 1 /* EVENTUAL */) ||\n !!(focusEventTarget === null || focusEventTarget === void 0 ? void 0 : focusEventTarget.contains(this._inputModalityDetector._mostRecentTarget));\n }\n /**\n * Sets the focus classes on the element based on the given focus origin.\n * @param element The element to update the classes on.\n * @param origin The focus origin.\n */\n _setClasses(element, origin) {\n this._toggleClass(element, 'cdk-focused', !!origin);\n this._toggleClass(element, 'cdk-touch-focused', origin === 'touch');\n this._toggleClass(element, 'cdk-keyboard-focused', origin === 'keyboard');\n this._toggleClass(element, 'cdk-mouse-focused', origin === 'mouse');\n this._toggleClass(element, 'cdk-program-focused', origin === 'program');\n }\n /**\n * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n * the origin being set.\n * @param origin The origin to set.\n * @param isFromInteraction Whether we are setting the origin from an interaction event.\n */\n _setOrigin(origin, isFromInteraction = false) {\n this._ngZone.runOutsideAngular(() => {\n this._origin = origin;\n this._originFromTouchInteraction = (origin === 'touch') && isFromInteraction;\n // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n // a touch event because when a touch event is fired, the associated focus event isn't yet in\n // the event queue. Before doing so, clear any pending timeouts.\n if (this._detectionMode === 0 /* IMMEDIATE */) {\n clearTimeout(this._originTimeoutId);\n const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n this._originTimeoutId = setTimeout(() => this._origin = null, ms);\n }\n });\n }\n /**\n * Handles focus events on a registered element.\n * @param event The focus event.\n * @param element The monitored element.\n */\n _onFocus(event, element) {\n // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n // focus event affecting the monitored element. If we want to use the origin of the first event\n // instead we should check for the cdk-focused class here and return if the element already has\n // it. (This only matters for elements that have includesChildren = true).\n // If we are not counting child-element-focus as focused, make sure that the event target is the\n // monitored element itself.\n const elementInfo = this._elementInfo.get(element);\n const focusEventTarget = _getEventTarget(event);\n if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {\n return;\n }\n this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n }\n /**\n * Handles blur events on a registered element.\n * @param event The blur event.\n * @param element The monitored element.\n */\n _onBlur(event, element) {\n // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n // order to focus another child of the monitored element.\n const elementInfo = this._elementInfo.get(element);\n if (!elementInfo || (elementInfo.checkChildren && event.relatedTarget instanceof Node &&\n element.contains(event.relatedTarget))) {\n return;\n }\n this._setClasses(element);\n this._emitOrigin(elementInfo.subject, null);\n }\n _emitOrigin(subject, origin) {\n this._ngZone.run(() => subject.next(origin));\n }\n _registerGlobalListeners(elementInfo) {\n if (!this._platform.isBrowser) {\n return;\n }\n const rootNode = elementInfo.rootNode;\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n if (!rootNodeFocusListeners) {\n this._ngZone.runOutsideAngular(() => {\n rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n });\n }\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);\n // Register global listeners when first element is monitored.\n if (++this._monitoredElementCount === 1) {\n // Note: we listen to events in the capture phase so we\n // can detect them even if the user stops propagation.\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n window.addEventListener('focus', this._windowFocusListener);\n });\n // The InputModalityDetector is also just a collection of global listeners.\n this._inputModalityDetector.modalityDetected\n .pipe(takeUntil(this._stopInputModalityDetector))\n .subscribe(modality => { this._setOrigin(modality, true /* isFromInteraction */); });\n }\n }\n _removeGlobalListeners(elementInfo) {\n const rootNode = elementInfo.rootNode;\n if (this._rootNodeFocusListenerCount.has(rootNode)) {\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n if (rootNodeFocusListeners > 1) {\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n }\n else {\n rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n this._rootNodeFocusListenerCount.delete(rootNode);\n }\n }\n // Unregister global listeners when last element is unmonitored.\n if (!--this._monitoredElementCount) {\n const window = this._getWindow();\n window.removeEventListener('focus', this._windowFocusListener);\n // Equivalently, stop our InputModalityDetector subscription.\n this._stopInputModalityDetector.next();\n // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n clearTimeout(this._windowFocusTimeoutId);\n clearTimeout(this._originTimeoutId);\n }\n }\n /** Updates all the state on an element once its focus origin has changed. */\n _originChanged(element, origin, elementInfo) {\n this._setClasses(element, origin);\n this._emitOrigin(elementInfo.subject, origin);\n this._lastFocusOrigin = origin;\n }\n /**\n * Collects the `MonitoredElementInfo` of a particular element and\n * all of its ancestors that have enabled `checkChildren`.\n * @param element Element from which to start the search.\n */\n _getClosestElementsInfo(element) {\n const results = [];\n this._elementInfo.forEach((info, currentElement) => {\n if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {\n results.push([currentElement, info]);\n }\n });\n return results;\n }\n}\nFocusMonitor.ɵfac = function FocusMonitor_Factory(t) { return new (t || FocusMonitor)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(ɵngcc1.Platform), ɵngcc0.ɵɵinject(InputModalityDetector), ɵngcc0.ɵɵinject(DOCUMENT, 8), ɵngcc0.ɵɵinject(FOCUS_MONITOR_DEFAULT_OPTIONS, 8)); };\nFocusMonitor.ɵprov = i0.ɵɵdefineInjectable({ factory: function FocusMonitor_Factory() { return new FocusMonitor(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Platform), i0.ɵɵinject(InputModalityDetector), i0.ɵɵinject(i2.DOCUMENT, 8), i0.ɵɵinject(FOCUS_MONITOR_DEFAULT_OPTIONS, 8)); }, token: FocusMonitor, providedIn: \"root\" });\nFocusMonitor.ctorParameters = () => [\n { type: NgZone },\n { type: Platform },\n { type: InputModalityDetector },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [FOCUS_MONITOR_DEFAULT_OPTIONS,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FocusMonitor, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc1.Platform }, { type: InputModalityDetector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_MONITOR_DEFAULT_OPTIONS]\n }] }]; }, null); })();\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n * focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nclass CdkMonitorFocus {\n constructor(_elementRef, _focusMonitor) {\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this.cdkFocusChange = new EventEmitter();\n }\n ngAfterViewInit() {\n const element = this._elementRef.nativeElement;\n this._monitorSubscription = this._focusMonitor.monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))\n .subscribe(origin => this.cdkFocusChange.emit(origin));\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n if (this._monitorSubscription) {\n this._monitorSubscription.unsubscribe();\n }\n }\n}\nCdkMonitorFocus.ɵfac = function CdkMonitorFocus_Factory(t) { return new (t || CdkMonitorFocus)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(FocusMonitor)); };\nCdkMonitorFocus.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkMonitorFocus, selectors: [[\"\", \"cdkMonitorElementFocus\", \"\"], [\"\", \"cdkMonitorSubtreeFocus\", \"\"]], outputs: { cdkFocusChange: \"cdkFocusChange\" } });\nCdkMonitorFocus.ctorParameters = () => [\n { type: ElementRef },\n { type: FocusMonitor }\n];\nCdkMonitorFocus.propDecorators = {\n cdkFocusChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkMonitorFocus, [{\n type: Directive,\n args: [{\n selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: FocusMonitor }]; }, { cdkFocusChange: [{\n type: Output\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** CSS class applied to the document body when in black-on-white high-contrast mode. */\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\nclass HighContrastModeDetector {\n constructor(_platform, document) {\n this._platform = _platform;\n this._document = document;\n }\n /** Gets the current high-contrast-mode for the page. */\n getHighContrastMode() {\n if (!this._platform.isBrowser) {\n return 0 /* NONE */;\n }\n // Create a test element with an arbitrary background-color that is neither black nor\n // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n // appending the test element to the DOM does not affect layout by absolutely positioning it\n const testElement = this._document.createElement('div');\n testElement.style.backgroundColor = 'rgb(1,2,3)';\n testElement.style.position = 'absolute';\n this._document.body.appendChild(testElement);\n // Get the computed style for the background color, collapsing spaces to normalize between\n // browsers. Once we get this color, we no longer need the test element. Access the `window`\n // via the document so we can fake it in tests. Note that we have extra null checks, because\n // this logic will likely run during app bootstrap and throwing can break the entire app.\n const documentWindow = this._document.defaultView || window;\n const computedStyle = (documentWindow && documentWindow.getComputedStyle) ?\n documentWindow.getComputedStyle(testElement) : null;\n const computedColor = (computedStyle && computedStyle.backgroundColor || '').replace(/ /g, '');\n this._document.body.removeChild(testElement);\n switch (computedColor) {\n case 'rgb(0,0,0)': return 2 /* WHITE_ON_BLACK */;\n case 'rgb(255,255,255)': return 1 /* BLACK_ON_WHITE */;\n }\n return 0 /* NONE */;\n }\n /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n _applyBodyHighContrastModeCssClasses() {\n if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n const bodyClasses = this._document.body.classList;\n // IE11 doesn't support `classList` operations with multiple arguments\n bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n bodyClasses.remove(BLACK_ON_WHITE_CSS_CLASS);\n bodyClasses.remove(WHITE_ON_BLACK_CSS_CLASS);\n this._hasCheckedHighContrastMode = true;\n const mode = this.getHighContrastMode();\n if (mode === 1 /* BLACK_ON_WHITE */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n bodyClasses.add(BLACK_ON_WHITE_CSS_CLASS);\n }\n else if (mode === 2 /* WHITE_ON_BLACK */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n bodyClasses.add(WHITE_ON_BLACK_CSS_CLASS);\n }\n }\n }\n}\nHighContrastModeDetector.ɵfac = function HighContrastModeDetector_Factory(t) { return new (t || HighContrastModeDetector)(ɵngcc0.ɵɵinject(ɵngcc1.Platform), ɵngcc0.ɵɵinject(DOCUMENT)); };\nHighContrastModeDetector.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighContrastModeDetector_Factory() { return new HighContrastModeDetector(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i2.DOCUMENT)); }, token: HighContrastModeDetector, providedIn: \"root\" });\nHighContrastModeDetector.ctorParameters = () => [\n { type: Platform },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HighContrastModeDetector, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc1.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass A11yModule {\n constructor(highContrastModeDetector) {\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n }\n}\nA11yModule.ɵfac = function A11yModule_Factory(t) { return new (t || A11yModule)(ɵngcc0.ɵɵinject(HighContrastModeDetector)); };\nA11yModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: A11yModule });\nA11yModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[PlatformModule, ObserversModule]] });\nA11yModule.ctorParameters = () => [\n { type: HighContrastModeDetector }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(A11yModule, [{\n type: NgModule,\n args: [{\n imports: [PlatformModule, ObserversModule],\n declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus]\n }]\n }], function () { return [{ type: HighContrastModeDetector }]; }, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(A11yModule, { declarations: function () { return [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus]; }, imports: function () { return [PlatformModule, ObserversModule]; }, exports: function () { return [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus]; } }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusTrap, FocusTrapFactory, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader, FocusTrapManager as ɵangular_material_src_cdk_a11y_a11y_a };\n\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-brower because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nimport * as ɵngcc0 from '@angular/core';\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY,\n});\n/** @docs-private */\nfunction DIR_DOCUMENT_FACTORY() {\n return inject(DOCUMENT);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\nclass Directionality {\n constructor(_document) {\n /** The current 'ltr' or 'rtl' value. */\n this.value = 'ltr';\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n this.change = new EventEmitter();\n if (_document) {\n // TODO: handle 'auto' value -\n // We still need to account for dir=\"auto\".\n // It looks like HTMLElemenet.dir is also \"auto\" when that's set to the attribute,\n // but getComputedStyle return either \"ltr\" or \"rtl\". avoiding getComputedStyle for now\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n const value = bodyDir || htmlDir;\n this.value = (value === 'ltr' || value === 'rtl') ? value : 'ltr';\n }\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDirectionality.ɵfac = function Directionality_Factory(t) { return new (t || Directionality)(ɵngcc0.ɵɵinject(DIR_DOCUMENT, 8)); };\nDirectionality.ɵprov = i0.ɵɵdefineInjectable({ factory: function Directionality_Factory() { return new Directionality(i0.ɵɵinject(DIR_DOCUMENT, 8)); }, token: Directionality, providedIn: \"root\" });\nDirectionality.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DIR_DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Directionality, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DIR_DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\nclass Dir {\n constructor() {\n /** Normalized direction that accounts for invalid/unsupported values. */\n this._dir = 'ltr';\n /** Whether the `value` has been set to its initial value. */\n this._isInitialized = false;\n /** Event emitted when the direction changes. */\n this.change = new EventEmitter();\n }\n /** @docs-private */\n get dir() { return this._dir; }\n set dir(value) {\n const old = this._dir;\n const normalizedValue = value ? value.toLowerCase() : value;\n this._rawDir = value;\n this._dir = (normalizedValue === 'ltr' || normalizedValue === 'rtl') ? normalizedValue : 'ltr';\n if (old !== this._dir && this._isInitialized) {\n this.change.emit(this._dir);\n }\n }\n /** Current layout direction of the element. */\n get value() { return this.dir; }\n /** Initialize once default value has been set. */\n ngAfterContentInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDir.ɵfac = function Dir_Factory(t) { return new (t || Dir)(); };\nDir.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Dir, selectors: [[\"\", \"dir\", \"\"]], hostVars: 1, hostBindings: function Dir_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"dir\", ctx._rawDir);\n } }, inputs: { dir: \"dir\" }, outputs: { change: \"dirChange\" }, exportAs: [\"dir\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: Directionality, useExisting: Dir }])] });\nDir.propDecorators = {\n change: [{ type: Output, args: ['dirChange',] }],\n dir: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Dir, [{\n type: Directive,\n args: [{\n selector: '[dir]',\n providers: [{ provide: Directionality, useExisting: Dir }],\n host: { '[attr.dir]': '_rawDir' },\n exportAs: 'dir'\n }]\n }], function () { return []; }, { change: [{\n type: Output,\n args: ['dirChange']\n }], dir: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass BidiModule {\n}\nBidiModule.ɵfac = function BidiModule_Factory(t) { return new (t || BidiModule)(); };\nBidiModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: BidiModule });\nBidiModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BidiModule, [{\n type: NgModule,\n args: [{\n exports: [Dir],\n declarations: [Dir]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BidiModule, { declarations: [Dir], exports: [Dir] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BidiModule, DIR_DOCUMENT, Dir, Directionality, DIR_DOCUMENT_FACTORY as ɵangular_material_src_cdk_bidi_bidi_a };\n\n","import * as i1 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, InjectionToken, EventEmitter, Directive, NgZone, Optional, Input, Output, NgModule } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A pending copy-to-clipboard operation.\n *\n * The implementation of copying text to the clipboard modifies the DOM and\n * forces a relayout. This relayout can take too long if the string is large,\n * causing the execCommand('copy') to happen too long after the user clicked.\n * This results in the browser refusing to copy. This object lets the\n * relayout happen in a separate tick from copying by providing a copy function\n * that can be called later.\n *\n * Destroy must be called when no longer in use, regardless of whether `copy` is\n * called.\n */\nimport * as ɵngcc0 from '@angular/core';\nclass PendingCopy {\n constructor(text, _document) {\n this._document = _document;\n const textarea = this._textarea = this._document.createElement('textarea');\n const styles = textarea.style;\n // Hide the element for display and accessibility. Set a fixed position so the page layout\n // isn't affected. We use `fixed` with `top: 0`, because focus is moved into the textarea\n // for a split second and if it's off-screen, some browsers will attempt to scroll it into view.\n styles.position = 'fixed';\n styles.top = styles.opacity = '0';\n styles.left = '-999em';\n textarea.setAttribute('aria-hidden', 'true');\n textarea.value = text;\n this._document.body.appendChild(textarea);\n }\n /** Finishes copying the text. */\n copy() {\n const textarea = this._textarea;\n let successful = false;\n try { // Older browsers could throw if copy is not supported.\n if (textarea) {\n const currentFocus = this._document.activeElement;\n textarea.select();\n textarea.setSelectionRange(0, textarea.value.length);\n successful = this._document.execCommand('copy');\n if (currentFocus) {\n currentFocus.focus();\n }\n }\n }\n catch (_a) {\n // Discard error.\n // Initial setting of {@code successful} will represent failure here.\n }\n return successful;\n }\n /** Cleans up DOM changes used to perform the copy operation. */\n destroy() {\n const textarea = this._textarea;\n if (textarea) {\n if (textarea.parentNode) {\n textarea.parentNode.removeChild(textarea);\n }\n this._textarea = undefined;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A service for copying text to the clipboard.\n */\nclass Clipboard {\n constructor(document) {\n this._document = document;\n }\n /**\n * Copies the provided text into the user's clipboard.\n *\n * @param text The string to copy.\n * @returns Whether the operation was successful.\n */\n copy(text) {\n const pendingCopy = this.beginCopy(text);\n const successful = pendingCopy.copy();\n pendingCopy.destroy();\n return successful;\n }\n /**\n * Prepares a string to be copied later. This is useful for large strings\n * which take too long to successfully render and be copied in the same tick.\n *\n * The caller must call `destroy` on the returned `PendingCopy`.\n *\n * @param text The string to copy.\n * @returns the pending copy operation.\n */\n beginCopy(text) {\n return new PendingCopy(text, this._document);\n }\n}\nClipboard.ɵfac = function Clipboard_Factory(t) { return new (t || Clipboard)(ɵngcc0.ɵɵinject(DOCUMENT)); };\nClipboard.ɵprov = i0.ɵɵdefineInjectable({ factory: function Clipboard_Factory() { return new Clipboard(i0.ɵɵinject(i1.DOCUMENT)); }, token: Clipboard, providedIn: \"root\" });\nClipboard.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Clipboard, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token that can be used to provide the default options to `CdkCopyToClipboard`. */\nconst CDK_COPY_TO_CLIPBOARD_CONFIG = new InjectionToken('CDK_COPY_TO_CLIPBOARD_CONFIG');\n/**\n * @deprecated Use `CDK_COPY_TO_CLIPBOARD_CONFIG` instead.\n * @breaking-change 13.0.0\n */\nconst CKD_COPY_TO_CLIPBOARD_CONFIG = CDK_COPY_TO_CLIPBOARD_CONFIG;\n/**\n * Provides behavior for a button that when clicked copies content into user's\n * clipboard.\n */\nclass CdkCopyToClipboard {\n constructor(_clipboard, _ngZone, config) {\n this._clipboard = _clipboard;\n this._ngZone = _ngZone;\n /** Content to be copied. */\n this.text = '';\n /**\n * How many times to attempt to copy the text. This may be necessary for longer text, because\n * the browser needs time to fill an intermediate textarea element and copy the content.\n */\n this.attempts = 1;\n /**\n * Emits when some text is copied to the clipboard. The\n * emitted value indicates whether copying was successful.\n */\n this.copied = new EventEmitter();\n /** Copies that are currently being attempted. */\n this._pending = new Set();\n if (config && config.attempts != null) {\n this.attempts = config.attempts;\n }\n }\n /** Copies the current text to the clipboard. */\n copy(attempts = this.attempts) {\n if (attempts > 1) {\n let remainingAttempts = attempts;\n const pending = this._clipboard.beginCopy(this.text);\n this._pending.add(pending);\n const attempt = () => {\n const successful = pending.copy();\n if (!successful && --remainingAttempts && !this._destroyed) {\n // We use 1 for the timeout since it's more predictable when flushing in unit tests.\n this._currentTimeout = this._ngZone.runOutsideAngular(() => setTimeout(attempt, 1));\n }\n else {\n this._currentTimeout = null;\n this._pending.delete(pending);\n pending.destroy();\n this.copied.emit(successful);\n }\n };\n attempt();\n }\n else {\n this.copied.emit(this._clipboard.copy(this.text));\n }\n }\n ngOnDestroy() {\n if (this._currentTimeout) {\n clearTimeout(this._currentTimeout);\n }\n this._pending.forEach(copy => copy.destroy());\n this._pending.clear();\n this._destroyed = true;\n }\n}\nCdkCopyToClipboard.ɵfac = function CdkCopyToClipboard_Factory(t) { return new (t || CdkCopyToClipboard)(ɵngcc0.ɵɵdirectiveInject(Clipboard), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(CKD_COPY_TO_CLIPBOARD_CONFIG, 8)); };\nCdkCopyToClipboard.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkCopyToClipboard, selectors: [[\"\", \"cdkCopyToClipboard\", \"\"]], hostBindings: function CdkCopyToClipboard_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function CdkCopyToClipboard_click_HostBindingHandler() { return ctx.copy(); });\n } }, inputs: { text: [\"cdkCopyToClipboard\", \"text\"], attempts: [\"cdkCopyToClipboardAttempts\", \"attempts\"] }, outputs: { copied: \"cdkCopyToClipboardCopied\" } });\nCdkCopyToClipboard.ctorParameters = () => [\n { type: Clipboard },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [CKD_COPY_TO_CLIPBOARD_CONFIG,] }] }\n];\nCdkCopyToClipboard.propDecorators = {\n text: [{ type: Input, args: ['cdkCopyToClipboard',] }],\n attempts: [{ type: Input, args: ['cdkCopyToClipboardAttempts',] }],\n copied: [{ type: Output, args: ['cdkCopyToClipboardCopied',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkCopyToClipboard, [{\n type: Directive,\n args: [{\n selector: '[cdkCopyToClipboard]',\n host: {\n '(click)': 'copy()'\n }\n }]\n }], function () { return [{ type: Clipboard }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CKD_COPY_TO_CLIPBOARD_CONFIG]\n }] }]; }, { text: [{\n type: Input,\n args: ['cdkCopyToClipboard']\n }], attempts: [{\n type: Input,\n args: ['cdkCopyToClipboardAttempts']\n }], copied: [{\n type: Output,\n args: ['cdkCopyToClipboardCopied']\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass ClipboardModule {\n}\nClipboardModule.ɵfac = function ClipboardModule_Factory(t) { return new (t || ClipboardModule)(); };\nClipboardModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ClipboardModule });\nClipboardModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ClipboardModule, [{\n type: NgModule,\n args: [{\n declarations: [CdkCopyToClipboard],\n exports: [CdkCopyToClipboard]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ClipboardModule, { declarations: [CdkCopyToClipboard], exports: [CdkCopyToClipboard] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CDK_COPY_TO_CLIPBOARD_CONFIG, CKD_COPY_TO_CLIPBOARD_CONFIG, CdkCopyToClipboard, Clipboard, ClipboardModule, PendingCopy };\n\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nexport function interval(period = 0, scheduler = async) {\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n return new Observable(subscriber => {\n subscriber.add(scheduler.schedule(dispatch, period, { subscriber, counter: 0, period }));\n return subscriber;\n });\n}\nfunction dispatch(state) {\n const { subscriber, counter, period } = state;\n subscriber.next(counter);\n this.schedule({ subscriber, counter: counter + 1, period }, period);\n}\n","import * as i0 from '@angular/core';\nimport { Injectable, NgZone, Inject, InjectionToken, Directive, Input, EventEmitter, ElementRef, ChangeDetectorRef, Optional, SkipSelf, Output, TemplateRef, ViewContainerRef, Self, ContentChildren, ContentChild, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i2 from '@angular/cdk/scrolling';\nimport { ViewportRuler, ScrollDispatcher, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { _getEventTarget, normalizePassiveListenerOptions, _getShadowRoot } from '@angular/cdk/platform';\nimport { coerceBooleanProperty, coerceElement, coerceArray, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { Subject, Subscription, interval, animationFrameScheduler, Observable, merge } from 'rxjs';\nimport { takeUntil, startWith, map, take, tap, switchMap } from 'rxjs/operators';\nimport { Directionality } from '@angular/cdk/bidi';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Shallow-extends a stylesheet object with another stylesheet-like object.\n * Note that the keys in `source` have to be dash-cased.\n * @docs-private\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/scrolling';\nimport * as ɵngcc2 from '@angular/cdk/bidi';\nfunction extendStyles(dest, source, importantProperties) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n const value = source[key];\n if (value) {\n dest.setProperty(key, value, (importantProperties === null || importantProperties === void 0 ? void 0 : importantProperties.has(key)) ? 'important' : '');\n }\n else {\n dest.removeProperty(key);\n }\n }\n }\n return dest;\n}\n/**\n * Toggles whether the native drag interactions should be enabled for an element.\n * @param element Element on which to toggle the drag interactions.\n * @param enable Whether the drag interactions should be enabled.\n * @docs-private\n */\nfunction toggleNativeDragInteractions(element, enable) {\n const userSelect = enable ? '' : 'none';\n extendStyles(element.style, {\n 'touch-action': enable ? '' : 'none',\n '-webkit-user-drag': enable ? '' : 'none',\n '-webkit-tap-highlight-color': enable ? '' : 'transparent',\n 'user-select': userSelect,\n '-ms-user-select': userSelect,\n '-webkit-user-select': userSelect,\n '-moz-user-select': userSelect\n });\n}\n/**\n * Toggles whether an element is visible while preserving its dimensions.\n * @param element Element whose visibility to toggle\n * @param enable Whether the element should be visible.\n * @param importantProperties Properties to be set as `!important`.\n * @docs-private\n */\nfunction toggleVisibility(element, enable, importantProperties) {\n extendStyles(element.style, {\n position: enable ? '' : 'fixed',\n top: enable ? '' : '0',\n opacity: enable ? '' : '0',\n left: enable ? '' : '-999em'\n }, importantProperties);\n}\n/**\n * Combines a transform string with an optional other transform\n * that exited before the base transform was applied.\n */\nfunction combineTransforms(transform, initialTransform) {\n return initialTransform && initialTransform != 'none' ?\n (transform + ' ' + initialTransform) :\n transform;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Parses a CSS time value to milliseconds. */\nfunction parseCssTimeUnitsToMs(value) {\n // Some browsers will return it in seconds, whereas others will return milliseconds.\n const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;\n return parseFloat(value) * multiplier;\n}\n/** Gets the transform transition duration, including the delay, of an element in milliseconds. */\nfunction getTransformTransitionDurationInMs(element) {\n const computedStyle = getComputedStyle(element);\n const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');\n const property = transitionedProperties.find(prop => prop === 'transform' || prop === 'all');\n // If there's no transition for `all` or `transform`, we shouldn't do anything.\n if (!property) {\n return 0;\n }\n // Get the index of the property that we're interested in and match\n // it up to the same index in `transition-delay` and `transition-duration`.\n const propertyIndex = transitionedProperties.indexOf(property);\n const rawDurations = parseCssPropertyValue(computedStyle, 'transition-duration');\n const rawDelays = parseCssPropertyValue(computedStyle, 'transition-delay');\n return parseCssTimeUnitsToMs(rawDurations[propertyIndex]) +\n parseCssTimeUnitsToMs(rawDelays[propertyIndex]);\n}\n/** Parses out multiple values from a computed style into an array. */\nfunction parseCssPropertyValue(computedStyle, name) {\n const value = computedStyle.getPropertyValue(name);\n return value.split(',').map(part => part.trim());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets a mutable version of an element's bounding `ClientRect`. */\nfunction getMutableClientRect(element) {\n const clientRect = element.getBoundingClientRect();\n // We need to clone the `clientRect` here, because all the values on it are readonly\n // and we need to be able to update them. Also we can't use a spread here, because\n // the values on a `ClientRect` aren't own properties. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect#Notes\n return {\n top: clientRect.top,\n right: clientRect.right,\n bottom: clientRect.bottom,\n left: clientRect.left,\n width: clientRect.width,\n height: clientRect.height\n };\n}\n/**\n * Checks whether some coordinates are within a `ClientRect`.\n * @param clientRect ClientRect that is being checked.\n * @param x Coordinates along the X axis.\n * @param y Coordinates along the Y axis.\n */\nfunction isInsideClientRect(clientRect, x, y) {\n const { top, bottom, left, right } = clientRect;\n return y >= top && y <= bottom && x >= left && x <= right;\n}\n/**\n * Updates the top/left positions of a `ClientRect`, as well as their bottom/right counterparts.\n * @param clientRect `ClientRect` that should be updated.\n * @param top Amount to add to the `top` position.\n * @param left Amount to add to the `left` position.\n */\nfunction adjustClientRect(clientRect, top, left) {\n clientRect.top += top;\n clientRect.bottom = clientRect.top + clientRect.height;\n clientRect.left += left;\n clientRect.right = clientRect.left + clientRect.width;\n}\n/**\n * Checks whether the pointer coordinates are close to a ClientRect.\n * @param rect ClientRect to check against.\n * @param threshold Threshold around the ClientRect.\n * @param pointerX Coordinates along the X axis.\n * @param pointerY Coordinates along the Y axis.\n */\nfunction isPointerNearClientRect(rect, threshold, pointerX, pointerY) {\n const { top, right, bottom, left, width, height } = rect;\n const xThreshold = width * threshold;\n const yThreshold = height * threshold;\n return pointerY > top - yThreshold && pointerY < bottom + yThreshold &&\n pointerX > left - xThreshold && pointerX < right + xThreshold;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Keeps track of the scroll position and dimensions of the parents of an element. */\nclass ParentPositionTracker {\n constructor(_document, _viewportRuler) {\n this._document = _document;\n this._viewportRuler = _viewportRuler;\n /** Cached positions of the scrollable parent elements. */\n this.positions = new Map();\n }\n /** Clears the cached positions. */\n clear() {\n this.positions.clear();\n }\n /** Caches the positions. Should be called at the beginning of a drag sequence. */\n cache(elements) {\n this.clear();\n this.positions.set(this._document, {\n scrollPosition: this._viewportRuler.getViewportScrollPosition(),\n });\n elements.forEach(element => {\n this.positions.set(element, {\n scrollPosition: { top: element.scrollTop, left: element.scrollLeft },\n clientRect: getMutableClientRect(element)\n });\n });\n }\n /** Handles scrolling while a drag is taking place. */\n handleScroll(event) {\n const target = _getEventTarget(event);\n const cachedPosition = this.positions.get(target);\n if (!cachedPosition) {\n return null;\n }\n // Used when figuring out whether an element is inside the scroll parent. If the scrolled\n // parent is the `document`, we use the `documentElement`, because IE doesn't support\n // `contains` on the `document`.\n const scrolledParentNode = target === this._document ? target.documentElement : target;\n const scrollPosition = cachedPosition.scrollPosition;\n let newTop;\n let newLeft;\n if (target === this._document) {\n const viewportScrollPosition = this._viewportRuler.getViewportScrollPosition();\n newTop = viewportScrollPosition.top;\n newLeft = viewportScrollPosition.left;\n }\n else {\n newTop = target.scrollTop;\n newLeft = target.scrollLeft;\n }\n const topDifference = scrollPosition.top - newTop;\n const leftDifference = scrollPosition.left - newLeft;\n // Go through and update the cached positions of the scroll\n // parents that are inside the element that was scrolled.\n this.positions.forEach((position, node) => {\n if (position.clientRect && target !== node && scrolledParentNode.contains(node)) {\n adjustClientRect(position.clientRect, topDifference, leftDifference);\n }\n });\n scrollPosition.top = newTop;\n scrollPosition.left = newLeft;\n return { top: topDifference, left: leftDifference };\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Creates a deep clone of an element. */\nfunction deepCloneNode(node) {\n const clone = node.cloneNode(true);\n const descendantsWithId = clone.querySelectorAll('[id]');\n const nodeName = node.nodeName.toLowerCase();\n // Remove the `id` to avoid having multiple elements with the same id on the page.\n clone.removeAttribute('id');\n for (let i = 0; i < descendantsWithId.length; i++) {\n descendantsWithId[i].removeAttribute('id');\n }\n if (nodeName === 'canvas') {\n transferCanvasData(node, clone);\n }\n else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {\n transferInputData(node, clone);\n }\n transferData('canvas', node, clone, transferCanvasData);\n transferData('input, textarea, select', node, clone, transferInputData);\n return clone;\n}\n/** Matches elements between an element and its clone and allows for their data to be cloned. */\nfunction transferData(selector, node, clone, callback) {\n const descendantElements = node.querySelectorAll(selector);\n if (descendantElements.length) {\n const cloneElements = clone.querySelectorAll(selector);\n for (let i = 0; i < descendantElements.length; i++) {\n callback(descendantElements[i], cloneElements[i]);\n }\n }\n}\n// Counter for unique cloned radio button names.\nlet cloneUniqueId = 0;\n/** Transfers the data of one input element to another. */\nfunction transferInputData(source, clone) {\n // Browsers throw an error when assigning the value of a file input programmatically.\n if (clone.type !== 'file') {\n clone.value = source.value;\n }\n // Radio button `name` attributes must be unique for radio button groups\n // otherwise original radio buttons can lose their checked state\n // once the clone is inserted in the DOM.\n if (clone.type === 'radio' && clone.name) {\n clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;\n }\n}\n/** Transfers the data of one canvas element to another. */\nfunction transferCanvasData(source, clone) {\n const context = clone.getContext('2d');\n if (context) {\n // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).\n // We can't do much about it so just ignore the error.\n try {\n context.drawImage(source, 0, 0);\n }\n catch (_a) { }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Options that can be used to bind a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n/** Options that can be used to bind an active event listener. */\nconst activeEventListenerOptions = normalizePassiveListenerOptions({ passive: false });\n/**\n * Time in milliseconds for which to ignore mouse events, after\n * receiving a touch event. Used to avoid doing double work for\n * touch devices where the browser fires fake mouse events, in\n * addition to touch events.\n */\nconst MOUSE_EVENT_IGNORE_TIME = 800;\n/** Inline styles to be set as `!important` while dragging. */\nconst dragImportantProperties = new Set([\n // Needs to be important, because some `mat-table` sets `position: sticky !important`. See #22781.\n 'position'\n]);\n/**\n * Reference to a draggable item. Used to manipulate or dispose of the item.\n */\nclass DragRef {\n constructor(element, _config, _document, _ngZone, _viewportRuler, _dragDropRegistry) {\n this._config = _config;\n this._document = _document;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._dragDropRegistry = _dragDropRegistry;\n /**\n * CSS `transform` applied to the element when it isn't being dragged. We need a\n * passive transform in order for the dragged element to retain its new position\n * after the user has stopped dragging and because we need to know the relative\n * position in case they start dragging again. This corresponds to `element.style.transform`.\n */\n this._passiveTransform = { x: 0, y: 0 };\n /** CSS `transform` that is applied to the element while it's being dragged. */\n this._activeTransform = { x: 0, y: 0 };\n /**\n * Whether the dragging sequence has been started. Doesn't\n * necessarily mean that the element has been moved.\n */\n this._hasStartedDragging = false;\n /** Emits when the item is being moved. */\n this._moveEvents = new Subject();\n /** Subscription to pointer movement events. */\n this._pointerMoveSubscription = Subscription.EMPTY;\n /** Subscription to the event that is dispatched when the user lifts their pointer. */\n this._pointerUpSubscription = Subscription.EMPTY;\n /** Subscription to the viewport being scrolled. */\n this._scrollSubscription = Subscription.EMPTY;\n /** Subscription to the viewport being resized. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Cached reference to the boundary element. */\n this._boundaryElement = null;\n /** Whether the native dragging interactions have been enabled on the root element. */\n this._nativeInteractionsEnabled = true;\n /** Elements that can be used to drag the draggable item. */\n this._handles = [];\n /** Registered handles that are currently disabled. */\n this._disabledHandles = new Set();\n /** Layout direction of the item. */\n this._direction = 'ltr';\n /**\n * Amount of milliseconds to wait after the user has put their\n * pointer down before starting to drag the element.\n */\n this.dragStartDelay = 0;\n this._disabled = false;\n /** Emits as the drag sequence is being prepared. */\n this.beforeStarted = new Subject();\n /** Emits when the user starts dragging the item. */\n this.started = new Subject();\n /** Emits when the user has released a drag item, before any animations have started. */\n this.released = new Subject();\n /** Emits when the user stops dragging an item in the container. */\n this.ended = new Subject();\n /** Emits when the user has moved the item into a new container. */\n this.entered = new Subject();\n /** Emits when the user removes the item its container by dragging it into another container. */\n this.exited = new Subject();\n /** Emits when the user drops the item inside a container. */\n this.dropped = new Subject();\n /**\n * Emits as the user is dragging the item. Use with caution,\n * because this event will fire for every pixel that the user has dragged.\n */\n this.moved = this._moveEvents;\n /** Handler for the `mousedown`/`touchstart` events. */\n this._pointerDown = (event) => {\n this.beforeStarted.next();\n // Delegate the event based on whether it started from a handle or the element itself.\n if (this._handles.length) {\n const targetHandle = this._handles.find(handle => {\n const target = _getEventTarget(event);\n return !!target && (target === handle || handle.contains(target));\n });\n if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {\n this._initializeDragSequence(targetHandle, event);\n }\n }\n else if (!this.disabled) {\n this._initializeDragSequence(this._rootElement, event);\n }\n };\n /** Handler that is invoked when the user moves their pointer after they've initiated a drag. */\n this._pointerMove = (event) => {\n const pointerPosition = this._getPointerPositionOnPage(event);\n if (!this._hasStartedDragging) {\n const distanceX = Math.abs(pointerPosition.x - this._pickupPositionOnPage.x);\n const distanceY = Math.abs(pointerPosition.y - this._pickupPositionOnPage.y);\n const isOverThreshold = distanceX + distanceY >= this._config.dragStartThreshold;\n // Only start dragging after the user has moved more than the minimum distance in either\n // direction. Note that this is preferrable over doing something like `skip(minimumDistance)`\n // in the `pointerMove` subscription, because we're not guaranteed to have one move event\n // per pixel of movement (e.g. if the user moves their pointer quickly).\n if (isOverThreshold) {\n const isDelayElapsed = Date.now() >= this._dragStartTime + this._getDragStartDelay(event);\n const container = this._dropContainer;\n if (!isDelayElapsed) {\n this._endDragSequence(event);\n return;\n }\n // Prevent other drag sequences from starting while something in the container is still\n // being dragged. This can happen while we're waiting for the drop animation to finish\n // and can cause errors, because some elements might still be moving around.\n if (!container || (!container.isDragging() && !container.isReceiving())) {\n // Prevent the default action as soon as the dragging sequence is considered as\n // \"started\" since waiting for the next event can allow the device to begin scrolling.\n event.preventDefault();\n this._hasStartedDragging = true;\n this._ngZone.run(() => this._startDragSequence(event));\n }\n }\n return;\n }\n // We only need the preview dimensions if we have a boundary element.\n if (this._boundaryElement) {\n // Cache the preview element rect if we haven't cached it already or if\n // we cached it too early before the element dimensions were computed.\n if (!this._previewRect || (!this._previewRect.width && !this._previewRect.height)) {\n this._previewRect = (this._preview || this._rootElement).getBoundingClientRect();\n }\n }\n // We prevent the default action down here so that we know that dragging has started. This is\n // important for touch devices where doing this too early can unnecessarily block scrolling,\n // if there's a dragging delay.\n event.preventDefault();\n const constrainedPointerPosition = this._getConstrainedPointerPosition(pointerPosition);\n this._hasMoved = true;\n this._lastKnownPointerPosition = pointerPosition;\n this._updatePointerDirectionDelta(constrainedPointerPosition);\n if (this._dropContainer) {\n this._updateActiveDropContainer(constrainedPointerPosition, pointerPosition);\n }\n else {\n const activeTransform = this._activeTransform;\n activeTransform.x =\n constrainedPointerPosition.x - this._pickupPositionOnPage.x + this._passiveTransform.x;\n activeTransform.y =\n constrainedPointerPosition.y - this._pickupPositionOnPage.y + this._passiveTransform.y;\n this._applyRootElementTransform(activeTransform.x, activeTransform.y);\n // Apply transform as attribute if dragging and svg element to work for IE\n if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {\n const appliedTransform = `translate(${activeTransform.x} ${activeTransform.y})`;\n this._rootElement.setAttribute('transform', appliedTransform);\n }\n }\n // Since this event gets fired for every pixel while dragging, we only\n // want to fire it if the consumer opted into it. Also we have to\n // re-enter the zone because we run all of the events on the outside.\n if (this._moveEvents.observers.length) {\n this._ngZone.run(() => {\n this._moveEvents.next({\n source: this,\n pointerPosition: constrainedPointerPosition,\n event,\n distance: this._getDragDistance(constrainedPointerPosition),\n delta: this._pointerDirectionDelta\n });\n });\n }\n };\n /** Handler that is invoked when the user lifts their pointer up, after initiating a drag. */\n this._pointerUp = (event) => {\n this._endDragSequence(event);\n };\n this.withRootElement(element).withParent(_config.parentDragRef || null);\n this._parentPositions = new ParentPositionTracker(_document, _viewportRuler);\n _dragDropRegistry.registerDragItem(this);\n }\n /** Whether starting to drag this element is disabled. */\n get disabled() {\n return this._disabled || !!(this._dropContainer && this._dropContainer.disabled);\n }\n set disabled(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._toggleNativeDragInteractions();\n this._handles.forEach(handle => toggleNativeDragInteractions(handle, newValue));\n }\n }\n /**\n * Returns the element that is being used as a placeholder\n * while the current element is being dragged.\n */\n getPlaceholderElement() {\n return this._placeholder;\n }\n /** Returns the root draggable element. */\n getRootElement() {\n return this._rootElement;\n }\n /**\n * Gets the currently-visible element that represents the drag item.\n * While dragging this is the placeholder, otherwise it's the root element.\n */\n getVisibleElement() {\n return this.isDragging() ? this.getPlaceholderElement() : this.getRootElement();\n }\n /** Registers the handles that can be used to drag the element. */\n withHandles(handles) {\n this._handles = handles.map(handle => coerceElement(handle));\n this._handles.forEach(handle => toggleNativeDragInteractions(handle, this.disabled));\n this._toggleNativeDragInteractions();\n // Delete any lingering disabled handles that may have been destroyed. Note that we re-create\n // the set, rather than iterate over it and filter out the destroyed handles, because while\n // the ES spec allows for sets to be modified while they're being iterated over, some polyfills\n // use an array internally which may throw an error.\n const disabledHandles = new Set();\n this._disabledHandles.forEach(handle => {\n if (this._handles.indexOf(handle) > -1) {\n disabledHandles.add(handle);\n }\n });\n this._disabledHandles = disabledHandles;\n return this;\n }\n /**\n * Registers the template that should be used for the drag preview.\n * @param template Template that from which to stamp out the preview.\n */\n withPreviewTemplate(template) {\n this._previewTemplate = template;\n return this;\n }\n /**\n * Registers the template that should be used for the drag placeholder.\n * @param template Template that from which to stamp out the placeholder.\n */\n withPlaceholderTemplate(template) {\n this._placeholderTemplate = template;\n return this;\n }\n /**\n * Sets an alternate drag root element. The root element is the element that will be moved as\n * the user is dragging. Passing an alternate root element is useful when trying to enable\n * dragging on an element that you might not have access to.\n */\n withRootElement(rootElement) {\n const element = coerceElement(rootElement);\n if (element !== this._rootElement) {\n if (this._rootElement) {\n this._removeRootElementListeners(this._rootElement);\n }\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n element.addEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n });\n this._initialTransform = undefined;\n this._rootElement = element;\n }\n if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {\n this._ownerSVGElement = this._rootElement.ownerSVGElement;\n }\n return this;\n }\n /**\n * Element to which the draggable's position will be constrained.\n */\n withBoundaryElement(boundaryElement) {\n this._boundaryElement = boundaryElement ? coerceElement(boundaryElement) : null;\n this._resizeSubscription.unsubscribe();\n if (boundaryElement) {\n this._resizeSubscription = this._viewportRuler\n .change(10)\n .subscribe(() => this._containInsideBoundaryOnResize());\n }\n return this;\n }\n /** Sets the parent ref that the ref is nested in. */\n withParent(parent) {\n this._parentDragRef = parent;\n return this;\n }\n /** Removes the dragging functionality from the DOM element. */\n dispose() {\n this._removeRootElementListeners(this._rootElement);\n // Do this check before removing from the registry since it'll\n // stop being considered as dragged once it is removed.\n if (this.isDragging()) {\n // Since we move out the element to the end of the body while it's being\n // dragged, we have to make sure that it's removed if it gets destroyed.\n removeNode(this._rootElement);\n }\n removeNode(this._anchor);\n this._destroyPreview();\n this._destroyPlaceholder();\n this._dragDropRegistry.removeDragItem(this);\n this._removeSubscriptions();\n this.beforeStarted.complete();\n this.started.complete();\n this.released.complete();\n this.ended.complete();\n this.entered.complete();\n this.exited.complete();\n this.dropped.complete();\n this._moveEvents.complete();\n this._handles = [];\n this._disabledHandles.clear();\n this._dropContainer = undefined;\n this._resizeSubscription.unsubscribe();\n this._parentPositions.clear();\n this._boundaryElement = this._rootElement = this._ownerSVGElement = this._placeholderTemplate =\n this._previewTemplate = this._anchor = this._parentDragRef = null;\n }\n /** Checks whether the element is currently being dragged. */\n isDragging() {\n return this._hasStartedDragging && this._dragDropRegistry.isDragging(this);\n }\n /** Resets a standalone drag item to its initial position. */\n reset() {\n this._rootElement.style.transform = this._initialTransform || '';\n this._activeTransform = { x: 0, y: 0 };\n this._passiveTransform = { x: 0, y: 0 };\n }\n /**\n * Sets a handle as disabled. While a handle is disabled, it'll capture and interrupt dragging.\n * @param handle Handle element that should be disabled.\n */\n disableHandle(handle) {\n if (!this._disabledHandles.has(handle) && this._handles.indexOf(handle) > -1) {\n this._disabledHandles.add(handle);\n toggleNativeDragInteractions(handle, true);\n }\n }\n /**\n * Enables a handle, if it has been disabled.\n * @param handle Handle element to be enabled.\n */\n enableHandle(handle) {\n if (this._disabledHandles.has(handle)) {\n this._disabledHandles.delete(handle);\n toggleNativeDragInteractions(handle, this.disabled);\n }\n }\n /** Sets the layout direction of the draggable item. */\n withDirection(direction) {\n this._direction = direction;\n return this;\n }\n /** Sets the container that the item is part of. */\n _withDropContainer(container) {\n this._dropContainer = container;\n }\n /**\n * Gets the current position in pixels the draggable outside of a drop container.\n */\n getFreeDragPosition() {\n const position = this.isDragging() ? this._activeTransform : this._passiveTransform;\n return { x: position.x, y: position.y };\n }\n /**\n * Sets the current position in pixels the draggable outside of a drop container.\n * @param value New position to be set.\n */\n setFreeDragPosition(value) {\n this._activeTransform = { x: 0, y: 0 };\n this._passiveTransform.x = value.x;\n this._passiveTransform.y = value.y;\n if (!this._dropContainer) {\n this._applyRootElementTransform(value.x, value.y);\n }\n return this;\n }\n /**\n * Sets the container into which to insert the preview element.\n * @param value Container into which to insert the preview.\n */\n withPreviewContainer(value) {\n this._previewContainer = value;\n return this;\n }\n /** Updates the item's sort order based on the last-known pointer position. */\n _sortFromLastPointerPosition() {\n const position = this._lastKnownPointerPosition;\n if (position && this._dropContainer) {\n this._updateActiveDropContainer(this._getConstrainedPointerPosition(position), position);\n }\n }\n /** Unsubscribes from the global subscriptions. */\n _removeSubscriptions() {\n this._pointerMoveSubscription.unsubscribe();\n this._pointerUpSubscription.unsubscribe();\n this._scrollSubscription.unsubscribe();\n }\n /** Destroys the preview element and its ViewRef. */\n _destroyPreview() {\n if (this._preview) {\n removeNode(this._preview);\n }\n if (this._previewRef) {\n this._previewRef.destroy();\n }\n this._preview = this._previewRef = null;\n }\n /** Destroys the placeholder element and its ViewRef. */\n _destroyPlaceholder() {\n if (this._placeholder) {\n removeNode(this._placeholder);\n }\n if (this._placeholderRef) {\n this._placeholderRef.destroy();\n }\n this._placeholder = this._placeholderRef = null;\n }\n /**\n * Clears subscriptions and stops the dragging sequence.\n * @param event Browser event object that ended the sequence.\n */\n _endDragSequence(event) {\n // Note that here we use `isDragging` from the service, rather than from `this`.\n // The difference is that the one from the service reflects whether a dragging sequence\n // has been initiated, whereas the one on `this` includes whether the user has passed\n // the minimum dragging threshold.\n if (!this._dragDropRegistry.isDragging(this)) {\n return;\n }\n this._removeSubscriptions();\n this._dragDropRegistry.stopDragging(this);\n this._toggleNativeDragInteractions();\n if (this._handles) {\n this._rootElement.style.webkitTapHighlightColor = this._rootElementTapHighlight;\n }\n if (!this._hasStartedDragging) {\n return;\n }\n this.released.next({ source: this });\n if (this._dropContainer) {\n // Stop scrolling immediately, instead of waiting for the animation to finish.\n this._dropContainer._stopScrolling();\n this._animatePreviewToPlaceholder().then(() => {\n this._cleanupDragArtifacts(event);\n this._cleanupCachedDimensions();\n this._dragDropRegistry.stopDragging(this);\n });\n }\n else {\n // Convert the active transform into a passive one. This means that next time\n // the user starts dragging the item, its position will be calculated relatively\n // to the new passive transform.\n this._passiveTransform.x = this._activeTransform.x;\n const pointerPosition = this._getPointerPositionOnPage(event);\n this._passiveTransform.y = this._activeTransform.y;\n this._ngZone.run(() => {\n this.ended.next({\n source: this,\n distance: this._getDragDistance(pointerPosition),\n dropPoint: pointerPosition\n });\n });\n this._cleanupCachedDimensions();\n this._dragDropRegistry.stopDragging(this);\n }\n }\n /** Starts the dragging sequence. */\n _startDragSequence(event) {\n if (isTouchEvent(event)) {\n this._lastTouchEventTime = Date.now();\n }\n this._toggleNativeDragInteractions();\n const dropContainer = this._dropContainer;\n if (dropContainer) {\n const element = this._rootElement;\n const parent = element.parentNode;\n const placeholder = this._placeholder = this._createPlaceholderElement();\n const anchor = this._anchor = this._anchor || this._document.createComment('');\n // Needs to happen before the root element is moved.\n const shadowRoot = this._getShadowRoot();\n // Insert an anchor node so that we can restore the element's position in the DOM.\n parent.insertBefore(anchor, element);\n // There's no risk of transforms stacking when inside a drop container so\n // we can keep the initial transform up to date any time dragging starts.\n this._initialTransform = element.style.transform || '';\n // Create the preview after the initial transform has\n // been cached, because it can be affected by the transform.\n this._preview = this._createPreviewElement();\n // We move the element out at the end of the body and we make it hidden, because keeping it in\n // place will throw off the consumer's `:last-child` selectors. We can't remove the element\n // from the DOM completely, because iOS will stop firing all subsequent events in the chain.\n toggleVisibility(element, false, dragImportantProperties);\n this._document.body.appendChild(parent.replaceChild(placeholder, element));\n this._getPreviewInsertionPoint(parent, shadowRoot).appendChild(this._preview);\n this.started.next({ source: this }); // Emit before notifying the container.\n dropContainer.start();\n this._initialContainer = dropContainer;\n this._initialIndex = dropContainer.getItemIndex(this);\n }\n else {\n this.started.next({ source: this });\n this._initialContainer = this._initialIndex = undefined;\n }\n // Important to run after we've called `start` on the parent container\n // so that it has had time to resolve its scrollable parents.\n this._parentPositions.cache(dropContainer ? dropContainer.getScrollableParents() : []);\n }\n /**\n * Sets up the different variables and subscriptions\n * that will be necessary for the dragging sequence.\n * @param referenceElement Element that started the drag sequence.\n * @param event Browser event object that started the sequence.\n */\n _initializeDragSequence(referenceElement, event) {\n // Stop propagation if the item is inside another\n // draggable so we don't start multiple drag sequences.\n if (this._parentDragRef) {\n event.stopPropagation();\n }\n const isDragging = this.isDragging();\n const isTouchSequence = isTouchEvent(event);\n const isAuxiliaryMouseButton = !isTouchSequence && event.button !== 0;\n const rootElement = this._rootElement;\n const target = _getEventTarget(event);\n const isSyntheticEvent = !isTouchSequence && this._lastTouchEventTime &&\n this._lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now();\n const isFakeEvent = isTouchSequence ? isFakeTouchstartFromScreenReader(event) :\n isFakeMousedownFromScreenReader(event);\n // If the event started from an element with the native HTML drag&drop, it'll interfere\n // with our own dragging (e.g. `img` tags do it by default). Prevent the default action\n // to stop it from happening. Note that preventing on `dragstart` also seems to work, but\n // it's flaky and it fails if the user drags it away quickly. Also note that we only want\n // to do this for `mousedown` since doing the same for `touchstart` will stop any `click`\n // events from firing on touch devices.\n if (target && target.draggable && event.type === 'mousedown') {\n event.preventDefault();\n }\n // Abort if the user is already dragging or is using a mouse button other than the primary one.\n if (isDragging || isAuxiliaryMouseButton || isSyntheticEvent || isFakeEvent) {\n return;\n }\n // If we've got handles, we need to disable the tap highlight on the entire root element,\n // otherwise iOS will still add it, even though all the drag interactions on the handle\n // are disabled.\n if (this._handles.length) {\n this._rootElementTapHighlight = rootElement.style.webkitTapHighlightColor || '';\n rootElement.style.webkitTapHighlightColor = 'transparent';\n }\n this._hasStartedDragging = this._hasMoved = false;\n // Avoid multiple subscriptions and memory leaks when multi touch\n // (isDragging check above isn't enough because of possible temporal and/or dimensional delays)\n this._removeSubscriptions();\n this._pointerMoveSubscription = this._dragDropRegistry.pointerMove.subscribe(this._pointerMove);\n this._pointerUpSubscription = this._dragDropRegistry.pointerUp.subscribe(this._pointerUp);\n this._scrollSubscription = this._dragDropRegistry\n .scrolled(this._getShadowRoot())\n .subscribe(scrollEvent => this._updateOnScroll(scrollEvent));\n if (this._boundaryElement) {\n this._boundaryRect = getMutableClientRect(this._boundaryElement);\n }\n // If we have a custom preview we can't know ahead of time how large it'll be so we position\n // it next to the cursor. The exception is when the consumer has opted into making the preview\n // the same size as the root element, in which case we do know the size.\n const previewTemplate = this._previewTemplate;\n this._pickupPositionInElement = previewTemplate && previewTemplate.template &&\n !previewTemplate.matchSize ? { x: 0, y: 0 } :\n this._getPointerPositionInElement(referenceElement, event);\n const pointerPosition = this._pickupPositionOnPage = this._lastKnownPointerPosition =\n this._getPointerPositionOnPage(event);\n this._pointerDirectionDelta = { x: 0, y: 0 };\n this._pointerPositionAtLastDirectionChange = { x: pointerPosition.x, y: pointerPosition.y };\n this._dragStartTime = Date.now();\n this._dragDropRegistry.startDragging(this, event);\n }\n /** Cleans up the DOM artifacts that were added to facilitate the element being dragged. */\n _cleanupDragArtifacts(event) {\n // Restore the element's visibility and insert it at its old position in the DOM.\n // It's important that we maintain the position, because moving the element around in the DOM\n // can throw off `NgFor` which does smart diffing and re-creates elements only when necessary,\n // while moving the existing elements in all other cases.\n toggleVisibility(this._rootElement, true, dragImportantProperties);\n this._anchor.parentNode.replaceChild(this._rootElement, this._anchor);\n this._destroyPreview();\n this._destroyPlaceholder();\n this._boundaryRect = this._previewRect = this._initialTransform = undefined;\n // Re-enter the NgZone since we bound `document` events on the outside.\n this._ngZone.run(() => {\n const container = this._dropContainer;\n const currentIndex = container.getItemIndex(this);\n const pointerPosition = this._getPointerPositionOnPage(event);\n const distance = this._getDragDistance(pointerPosition);\n const isPointerOverContainer = container._isOverContainer(pointerPosition.x, pointerPosition.y);\n this.ended.next({ source: this, distance, dropPoint: pointerPosition });\n this.dropped.next({\n item: this,\n currentIndex,\n previousIndex: this._initialIndex,\n container: container,\n previousContainer: this._initialContainer,\n isPointerOverContainer,\n distance,\n dropPoint: pointerPosition\n });\n container.drop(this, currentIndex, this._initialIndex, this._initialContainer, isPointerOverContainer, distance, pointerPosition);\n this._dropContainer = this._initialContainer;\n });\n }\n /**\n * Updates the item's position in its drop container, or moves it\n * into a new one, depending on its current drag position.\n */\n _updateActiveDropContainer({ x, y }, { x: rawX, y: rawY }) {\n // Drop container that draggable has been moved into.\n let newContainer = this._initialContainer._getSiblingContainerFromPosition(this, x, y);\n // If we couldn't find a new container to move the item into, and the item has left its\n // initial container, check whether the it's over the initial container. This handles the\n // case where two containers are connected one way and the user tries to undo dragging an\n // item into a new container.\n if (!newContainer && this._dropContainer !== this._initialContainer &&\n this._initialContainer._isOverContainer(x, y)) {\n newContainer = this._initialContainer;\n }\n if (newContainer && newContainer !== this._dropContainer) {\n this._ngZone.run(() => {\n // Notify the old container that the item has left.\n this.exited.next({ item: this, container: this._dropContainer });\n this._dropContainer.exit(this);\n // Notify the new container that the item has entered.\n this._dropContainer = newContainer;\n this._dropContainer.enter(this, x, y, newContainer === this._initialContainer &&\n // If we're re-entering the initial container and sorting is disabled,\n // put item the into its starting index to begin with.\n newContainer.sortingDisabled ? this._initialIndex : undefined);\n this.entered.next({\n item: this,\n container: newContainer,\n currentIndex: newContainer.getItemIndex(this)\n });\n });\n }\n // Dragging may have been interrupted as a result of the events above.\n if (this.isDragging()) {\n this._dropContainer._startScrollingIfNecessary(rawX, rawY);\n this._dropContainer._sortItem(this, x, y, this._pointerDirectionDelta);\n this._applyPreviewTransform(x - this._pickupPositionInElement.x, y - this._pickupPositionInElement.y);\n }\n }\n /**\n * Creates the element that will be rendered next to the user's pointer\n * and will be used as a preview of the element that is being dragged.\n */\n _createPreviewElement() {\n const previewConfig = this._previewTemplate;\n const previewClass = this.previewClass;\n const previewTemplate = previewConfig ? previewConfig.template : null;\n let preview;\n if (previewTemplate && previewConfig) {\n // Measure the element before we've inserted the preview\n // since the insertion could throw off the measurement.\n const rootRect = previewConfig.matchSize ? this._rootElement.getBoundingClientRect() : null;\n const viewRef = previewConfig.viewContainer.createEmbeddedView(previewTemplate, previewConfig.context);\n viewRef.detectChanges();\n preview = getRootNode(viewRef, this._document);\n this._previewRef = viewRef;\n if (previewConfig.matchSize) {\n matchElementSize(preview, rootRect);\n }\n else {\n preview.style.transform =\n getTransform(this._pickupPositionOnPage.x, this._pickupPositionOnPage.y);\n }\n }\n else {\n const element = this._rootElement;\n preview = deepCloneNode(element);\n matchElementSize(preview, element.getBoundingClientRect());\n if (this._initialTransform) {\n preview.style.transform = this._initialTransform;\n }\n }\n extendStyles(preview.style, {\n // It's important that we disable the pointer events on the preview, because\n // it can throw off the `document.elementFromPoint` calls in the `CdkDropList`.\n 'pointer-events': 'none',\n // We have to reset the margin, because it can throw off positioning relative to the viewport.\n 'margin': '0',\n 'position': 'fixed',\n 'top': '0',\n 'left': '0',\n 'z-index': `${this._config.zIndex || 1000}`\n }, dragImportantProperties);\n toggleNativeDragInteractions(preview, false);\n preview.classList.add('cdk-drag-preview');\n preview.setAttribute('dir', this._direction);\n if (previewClass) {\n if (Array.isArray(previewClass)) {\n previewClass.forEach(className => preview.classList.add(className));\n }\n else {\n preview.classList.add(previewClass);\n }\n }\n return preview;\n }\n /**\n * Animates the preview element from its current position to the location of the drop placeholder.\n * @returns Promise that resolves when the animation completes.\n */\n _animatePreviewToPlaceholder() {\n // If the user hasn't moved yet, the transitionend event won't fire.\n if (!this._hasMoved) {\n return Promise.resolve();\n }\n const placeholderRect = this._placeholder.getBoundingClientRect();\n // Apply the class that adds a transition to the preview.\n this._preview.classList.add('cdk-drag-animating');\n // Move the preview to the placeholder position.\n this._applyPreviewTransform(placeholderRect.left, placeholderRect.top);\n // If the element doesn't have a `transition`, the `transitionend` event won't fire. Since\n // we need to trigger a style recalculation in order for the `cdk-drag-animating` class to\n // apply its style, we take advantage of the available info to figure out whether we need to\n // bind the event in the first place.\n const duration = getTransformTransitionDurationInMs(this._preview);\n if (duration === 0) {\n return Promise.resolve();\n }\n return this._ngZone.runOutsideAngular(() => {\n return new Promise(resolve => {\n const handler = ((event) => {\n var _a;\n if (!event || (_getEventTarget(event) === this._preview &&\n event.propertyName === 'transform')) {\n (_a = this._preview) === null || _a === void 0 ? void 0 : _a.removeEventListener('transitionend', handler);\n resolve();\n clearTimeout(timeout);\n }\n });\n // If a transition is short enough, the browser might not fire the `transitionend` event.\n // Since we know how long it's supposed to take, add a timeout with a 50% buffer that'll\n // fire if the transition hasn't completed when it was supposed to.\n const timeout = setTimeout(handler, duration * 1.5);\n this._preview.addEventListener('transitionend', handler);\n });\n });\n }\n /** Creates an element that will be shown instead of the current element while dragging. */\n _createPlaceholderElement() {\n const placeholderConfig = this._placeholderTemplate;\n const placeholderTemplate = placeholderConfig ? placeholderConfig.template : null;\n let placeholder;\n if (placeholderTemplate) {\n this._placeholderRef = placeholderConfig.viewContainer.createEmbeddedView(placeholderTemplate, placeholderConfig.context);\n this._placeholderRef.detectChanges();\n placeholder = getRootNode(this._placeholderRef, this._document);\n }\n else {\n placeholder = deepCloneNode(this._rootElement);\n }\n placeholder.classList.add('cdk-drag-placeholder');\n return placeholder;\n }\n /**\n * Figures out the coordinates at which an element was picked up.\n * @param referenceElement Element that initiated the dragging.\n * @param event Event that initiated the dragging.\n */\n _getPointerPositionInElement(referenceElement, event) {\n const elementRect = this._rootElement.getBoundingClientRect();\n const handleElement = referenceElement === this._rootElement ? null : referenceElement;\n const referenceRect = handleElement ? handleElement.getBoundingClientRect() : elementRect;\n const point = isTouchEvent(event) ? event.targetTouches[0] : event;\n const scrollPosition = this._getViewportScrollPosition();\n const x = point.pageX - referenceRect.left - scrollPosition.left;\n const y = point.pageY - referenceRect.top - scrollPosition.top;\n return {\n x: referenceRect.left - elementRect.left + x,\n y: referenceRect.top - elementRect.top + y\n };\n }\n /** Determines the point of the page that was touched by the user. */\n _getPointerPositionOnPage(event) {\n const scrollPosition = this._getViewportScrollPosition();\n const point = isTouchEvent(event) ?\n // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\n // Also note that on real devices we're guaranteed for either `touches` or `changedTouches`\n // to have a value, but Firefox in device emulation mode has a bug where both can be empty\n // for `touchstart` and `touchend` so we fall back to a dummy object in order to avoid\n // throwing an error. The value returned here will be incorrect, but since this only\n // breaks inside a developer tool and the value is only used for secondary information,\n // we can get away with it. See https://bugzilla.mozilla.org/show_bug.cgi?id=1615824.\n (event.touches[0] || event.changedTouches[0] || { pageX: 0, pageY: 0 }) : event;\n const x = point.pageX - scrollPosition.left;\n const y = point.pageY - scrollPosition.top;\n // if dragging SVG element, try to convert from the screen coordinate system to the SVG\n // coordinate system\n if (this._ownerSVGElement) {\n const svgMatrix = this._ownerSVGElement.getScreenCTM();\n if (svgMatrix) {\n const svgPoint = this._ownerSVGElement.createSVGPoint();\n svgPoint.x = x;\n svgPoint.y = y;\n return svgPoint.matrixTransform(svgMatrix.inverse());\n }\n }\n return { x, y };\n }\n /** Gets the pointer position on the page, accounting for any position constraints. */\n _getConstrainedPointerPosition(point) {\n const dropContainerLock = this._dropContainer ? this._dropContainer.lockAxis : null;\n let { x, y } = this.constrainPosition ? this.constrainPosition(point, this) : point;\n if (this.lockAxis === 'x' || dropContainerLock === 'x') {\n y = this._pickupPositionOnPage.y;\n }\n else if (this.lockAxis === 'y' || dropContainerLock === 'y') {\n x = this._pickupPositionOnPage.x;\n }\n if (this._boundaryRect) {\n const { x: pickupX, y: pickupY } = this._pickupPositionInElement;\n const boundaryRect = this._boundaryRect;\n const previewRect = this._previewRect;\n const minY = boundaryRect.top + pickupY;\n const maxY = boundaryRect.bottom - (previewRect.height - pickupY);\n const minX = boundaryRect.left + pickupX;\n const maxX = boundaryRect.right - (previewRect.width - pickupX);\n x = clamp$1(x, minX, maxX);\n y = clamp$1(y, minY, maxY);\n }\n return { x, y };\n }\n /** Updates the current drag delta, based on the user's current pointer position on the page. */\n _updatePointerDirectionDelta(pointerPositionOnPage) {\n const { x, y } = pointerPositionOnPage;\n const delta = this._pointerDirectionDelta;\n const positionSinceLastChange = this._pointerPositionAtLastDirectionChange;\n // Amount of pixels the user has dragged since the last time the direction changed.\n const changeX = Math.abs(x - positionSinceLastChange.x);\n const changeY = Math.abs(y - positionSinceLastChange.y);\n // Because we handle pointer events on a per-pixel basis, we don't want the delta\n // to change for every pixel, otherwise anything that depends on it can look erratic.\n // To make the delta more consistent, we track how much the user has moved since the last\n // delta change and we only update it after it has reached a certain threshold.\n if (changeX > this._config.pointerDirectionChangeThreshold) {\n delta.x = x > positionSinceLastChange.x ? 1 : -1;\n positionSinceLastChange.x = x;\n }\n if (changeY > this._config.pointerDirectionChangeThreshold) {\n delta.y = y > positionSinceLastChange.y ? 1 : -1;\n positionSinceLastChange.y = y;\n }\n return delta;\n }\n /** Toggles the native drag interactions, based on how many handles are registered. */\n _toggleNativeDragInteractions() {\n if (!this._rootElement || !this._handles) {\n return;\n }\n const shouldEnable = this._handles.length > 0 || !this.isDragging();\n if (shouldEnable !== this._nativeInteractionsEnabled) {\n this._nativeInteractionsEnabled = shouldEnable;\n toggleNativeDragInteractions(this._rootElement, shouldEnable);\n }\n }\n /** Removes the manually-added event listeners from the root element. */\n _removeRootElementListeners(element) {\n element.removeEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n element.removeEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n }\n /**\n * Applies a `transform` to the root element, taking into account any existing transforms on it.\n * @param x New transform value along the X axis.\n * @param y New transform value along the Y axis.\n */\n _applyRootElementTransform(x, y) {\n const transform = getTransform(x, y);\n // Cache the previous transform amount only after the first drag sequence, because\n // we don't want our own transforms to stack on top of each other.\n // Should be excluded none because none + translate3d(x, y, x) is invalid css\n if (this._initialTransform == null) {\n this._initialTransform = this._rootElement.style.transform\n && this._rootElement.style.transform != 'none'\n ? this._rootElement.style.transform\n : '';\n }\n // Preserve the previous `transform` value, if there was one. Note that we apply our own\n // transform before the user's, because things like rotation can affect which direction\n // the element will be translated towards.\n this._rootElement.style.transform = combineTransforms(transform, this._initialTransform);\n }\n /**\n * Applies a `transform` to the preview, taking into account any existing transforms on it.\n * @param x New transform value along the X axis.\n * @param y New transform value along the Y axis.\n */\n _applyPreviewTransform(x, y) {\n var _a;\n // Only apply the initial transform if the preview is a clone of the original element, otherwise\n // it could be completely different and the transform might not make sense anymore.\n const initialTransform = ((_a = this._previewTemplate) === null || _a === void 0 ? void 0 : _a.template) ? undefined : this._initialTransform;\n const transform = getTransform(x, y);\n this._preview.style.transform = combineTransforms(transform, initialTransform);\n }\n /**\n * Gets the distance that the user has dragged during the current drag sequence.\n * @param currentPosition Current position of the user's pointer.\n */\n _getDragDistance(currentPosition) {\n const pickupPosition = this._pickupPositionOnPage;\n if (pickupPosition) {\n return { x: currentPosition.x - pickupPosition.x, y: currentPosition.y - pickupPosition.y };\n }\n return { x: 0, y: 0 };\n }\n /** Cleans up any cached element dimensions that we don't need after dragging has stopped. */\n _cleanupCachedDimensions() {\n this._boundaryRect = this._previewRect = undefined;\n this._parentPositions.clear();\n }\n /**\n * Checks whether the element is still inside its boundary after the viewport has been resized.\n * If not, the position is adjusted so that the element fits again.\n */\n _containInsideBoundaryOnResize() {\n let { x, y } = this._passiveTransform;\n if ((x === 0 && y === 0) || this.isDragging() || !this._boundaryElement) {\n return;\n }\n const boundaryRect = this._boundaryElement.getBoundingClientRect();\n const elementRect = this._rootElement.getBoundingClientRect();\n // It's possible that the element got hidden away after dragging (e.g. by switching to a\n // different tab). Don't do anything in this case so we don't clear the user's position.\n if ((boundaryRect.width === 0 && boundaryRect.height === 0) ||\n (elementRect.width === 0 && elementRect.height === 0)) {\n return;\n }\n const leftOverflow = boundaryRect.left - elementRect.left;\n const rightOverflow = elementRect.right - boundaryRect.right;\n const topOverflow = boundaryRect.top - elementRect.top;\n const bottomOverflow = elementRect.bottom - boundaryRect.bottom;\n // If the element has become wider than the boundary, we can't\n // do much to make it fit so we just anchor it to the left.\n if (boundaryRect.width > elementRect.width) {\n if (leftOverflow > 0) {\n x += leftOverflow;\n }\n if (rightOverflow > 0) {\n x -= rightOverflow;\n }\n }\n else {\n x = 0;\n }\n // If the element has become taller than the boundary, we can't\n // do much to make it fit so we just anchor it to the top.\n if (boundaryRect.height > elementRect.height) {\n if (topOverflow > 0) {\n y += topOverflow;\n }\n if (bottomOverflow > 0) {\n y -= bottomOverflow;\n }\n }\n else {\n y = 0;\n }\n if (x !== this._passiveTransform.x || y !== this._passiveTransform.y) {\n this.setFreeDragPosition({ y, x });\n }\n }\n /** Gets the drag start delay, based on the event type. */\n _getDragStartDelay(event) {\n const value = this.dragStartDelay;\n if (typeof value === 'number') {\n return value;\n }\n else if (isTouchEvent(event)) {\n return value.touch;\n }\n return value ? value.mouse : 0;\n }\n /** Updates the internal state of the draggable element when scrolling has occurred. */\n _updateOnScroll(event) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n if (scrollDifference) {\n const target = _getEventTarget(event);\n // ClientRect dimensions are based on the scroll position of the page and its parent node so\n // we have to update the cached boundary ClientRect if the user has scrolled. Check for\n // the `document` specifically since IE doesn't support `contains` on it.\n if (this._boundaryRect && (target === this._document ||\n (target !== this._boundaryElement && target.contains(this._boundaryElement)))) {\n adjustClientRect(this._boundaryRect, scrollDifference.top, scrollDifference.left);\n }\n this._pickupPositionOnPage.x += scrollDifference.left;\n this._pickupPositionOnPage.y += scrollDifference.top;\n // If we're in free drag mode, we have to update the active transform, because\n // it isn't relative to the viewport like the preview inside a drop list.\n if (!this._dropContainer) {\n this._activeTransform.x -= scrollDifference.left;\n this._activeTransform.y -= scrollDifference.top;\n this._applyRootElementTransform(this._activeTransform.x, this._activeTransform.y);\n }\n }\n }\n /** Gets the scroll position of the viewport. */\n _getViewportScrollPosition() {\n const cachedPosition = this._parentPositions.positions.get(this._document);\n return cachedPosition ? cachedPosition.scrollPosition :\n this._viewportRuler.getViewportScrollPosition();\n }\n /**\n * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n * than saving it in property directly on init, because we want to resolve it as late as possible\n * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n */\n _getShadowRoot() {\n if (this._cachedShadowRoot === undefined) {\n this._cachedShadowRoot = _getShadowRoot(this._rootElement);\n }\n return this._cachedShadowRoot;\n }\n /** Gets the element into which the drag preview should be inserted. */\n _getPreviewInsertionPoint(initialParent, shadowRoot) {\n const previewContainer = this._previewContainer || 'global';\n if (previewContainer === 'parent') {\n return initialParent;\n }\n if (previewContainer === 'global') {\n const documentRef = this._document;\n // We can't use the body if the user is in fullscreen mode,\n // because the preview will render under the fullscreen element.\n // TODO(crisbeto): dedupe this with the `FullscreenOverlayContainer` eventually.\n return shadowRoot ||\n documentRef.fullscreenElement ||\n documentRef.webkitFullscreenElement ||\n documentRef.mozFullScreenElement ||\n documentRef.msFullscreenElement ||\n documentRef.body;\n }\n return coerceElement(previewContainer);\n }\n}\n/**\n * Gets a 3d `transform` that can be applied to an element.\n * @param x Desired position of the element along the X axis.\n * @param y Desired position of the element along the Y axis.\n */\nfunction getTransform(x, y) {\n // Round the transforms since some browsers will\n // blur the elements for sub-pixel transforms.\n return `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\n}\n/** Clamps a value between a minimum and a maximum. */\nfunction clamp$1(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * Helper to remove a node from the DOM and to do all the necessary null checks.\n * @param node Node to be removed.\n */\nfunction removeNode(node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\n/** Determines whether an event is a touch event. */\nfunction isTouchEvent(event) {\n // This function is called for every pixel that the user has dragged so we need it to be\n // as fast as possible. Since we only bind mouse events and touch events, we can assume\n // that if the event's name starts with `t`, it's a touch event.\n return event.type[0] === 't';\n}\n/**\n * Gets the root HTML element of an embedded view.\n * If the root is not an HTML element it gets wrapped in one.\n */\nfunction getRootNode(viewRef, _document) {\n const rootNodes = viewRef.rootNodes;\n if (rootNodes.length === 1 && rootNodes[0].nodeType === _document.ELEMENT_NODE) {\n return rootNodes[0];\n }\n const wrapper = _document.createElement('div');\n rootNodes.forEach(node => wrapper.appendChild(node));\n return wrapper;\n}\n/**\n * Matches the target element's size to the source's size.\n * @param target Element that needs to be resized.\n * @param sourceRect Dimensions of the source element.\n */\nfunction matchElementSize(target, sourceRect) {\n target.style.width = `${sourceRect.width}px`;\n target.style.height = `${sourceRect.height}px`;\n target.style.transform = getTransform(sourceRect.left, sourceRect.top);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Moves an item one index in an array to another.\n * @param array Array in which to move the item.\n * @param fromIndex Starting index of the item.\n * @param toIndex Index to which the item should be moved.\n */\nfunction moveItemInArray(array, fromIndex, toIndex) {\n const from = clamp(fromIndex, array.length - 1);\n const to = clamp(toIndex, array.length - 1);\n if (from === to) {\n return;\n }\n const target = array[from];\n const delta = to < from ? -1 : 1;\n for (let i = from; i !== to; i += delta) {\n array[i] = array[i + delta];\n }\n array[to] = target;\n}\n/**\n * Moves an item from one array to another.\n * @param currentArray Array from which to transfer the item.\n * @param targetArray Array into which to put the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n */\nfunction transferArrayItem(currentArray, targetArray, currentIndex, targetIndex) {\n const from = clamp(currentIndex, currentArray.length - 1);\n const to = clamp(targetIndex, targetArray.length);\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray.splice(from, 1)[0]);\n }\n}\n/**\n * Copies an item from one array to another, leaving it in its\n * original position in current array.\n * @param currentArray Array from which to copy the item.\n * @param targetArray Array into which is copy the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n *\n */\nfunction copyArrayItem(currentArray, targetArray, currentIndex, targetIndex) {\n const to = clamp(targetIndex, targetArray.length);\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray[currentIndex]);\n }\n}\n/** Clamps a number between zero and a maximum. */\nfunction clamp(value, max) {\n return Math.max(0, Math.min(max, value));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Proximity, as a ratio to width/height, at which a\n * dragged item will affect the drop container.\n */\nconst DROP_PROXIMITY_THRESHOLD = 0.05;\n/**\n * Proximity, as a ratio to width/height at which to start auto-scrolling the drop list or the\n * viewport. The value comes from trying it out manually until it feels right.\n */\nconst SCROLL_PROXIMITY_THRESHOLD = 0.05;\n/**\n * Reference to a drop list. Used to manipulate or dispose of the container.\n */\nclass DropListRef {\n constructor(element, _dragDropRegistry, _document, _ngZone, _viewportRuler) {\n this._dragDropRegistry = _dragDropRegistry;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n /** Whether starting a dragging sequence from this container is disabled. */\n this.disabled = false;\n /** Whether sorting items within the list is disabled. */\n this.sortingDisabled = false;\n /**\n * Whether auto-scrolling the view when the user\n * moves their pointer close to the edges is disabled.\n */\n this.autoScrollDisabled = false;\n /** Number of pixels to scroll for each frame when auto-scrolling an element. */\n this.autoScrollStep = 2;\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n this.enterPredicate = () => true;\n /** Functions that is used to determine whether an item can be sorted into a particular index. */\n this.sortPredicate = () => true;\n /** Emits right before dragging has started. */\n this.beforeStarted = new Subject();\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n this.entered = new Subject();\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n this.exited = new Subject();\n /** Emits when the user drops an item inside the container. */\n this.dropped = new Subject();\n /** Emits as the user is swapping items while actively dragging. */\n this.sorted = new Subject();\n /** Whether an item in the list is being dragged. */\n this._isDragging = false;\n /** Cache of the dimensions of all the items inside the container. */\n this._itemPositions = [];\n /**\n * Keeps track of the item that was last swapped with the dragged item, as well as what direction\n * the pointer was moving in when the swap occured and whether the user's pointer continued to\n * overlap with the swapped item after the swapping occurred.\n */\n this._previousSwap = { drag: null, delta: 0, overlaps: false };\n /** Draggable items in the container. */\n this._draggables = [];\n /** Drop lists that are connected to the current one. */\n this._siblings = [];\n /** Direction in which the list is oriented. */\n this._orientation = 'vertical';\n /** Connected siblings that currently have a dragged item. */\n this._activeSiblings = new Set();\n /** Layout direction of the drop list. */\n this._direction = 'ltr';\n /** Subscription to the window being scrolled. */\n this._viewportScrollSubscription = Subscription.EMPTY;\n /** Vertical direction in which the list is currently scrolling. */\n this._verticalScrollDirection = 0 /* NONE */;\n /** Horizontal direction in which the list is currently scrolling. */\n this._horizontalScrollDirection = 0 /* NONE */;\n /** Used to signal to the current auto-scroll sequence when to stop. */\n this._stopScrollTimers = new Subject();\n /** Shadow root of the current element. Necessary for `elementFromPoint` to resolve correctly. */\n this._cachedShadowRoot = null;\n /** Starts the interval that'll auto-scroll the element. */\n this._startScrollInterval = () => {\n this._stopScrolling();\n interval(0, animationFrameScheduler)\n .pipe(takeUntil(this._stopScrollTimers))\n .subscribe(() => {\n const node = this._scrollNode;\n const scrollStep = this.autoScrollStep;\n if (this._verticalScrollDirection === 1 /* UP */) {\n incrementVerticalScroll(node, -scrollStep);\n }\n else if (this._verticalScrollDirection === 2 /* DOWN */) {\n incrementVerticalScroll(node, scrollStep);\n }\n if (this._horizontalScrollDirection === 1 /* LEFT */) {\n incrementHorizontalScroll(node, -scrollStep);\n }\n else if (this._horizontalScrollDirection === 2 /* RIGHT */) {\n incrementHorizontalScroll(node, scrollStep);\n }\n });\n };\n this.element = coerceElement(element);\n this._document = _document;\n this.withScrollableParents([this.element]);\n _dragDropRegistry.registerDropContainer(this);\n this._parentPositions = new ParentPositionTracker(_document, _viewportRuler);\n }\n /** Removes the drop list functionality from the DOM element. */\n dispose() {\n this._stopScrolling();\n this._stopScrollTimers.complete();\n this._viewportScrollSubscription.unsubscribe();\n this.beforeStarted.complete();\n this.entered.complete();\n this.exited.complete();\n this.dropped.complete();\n this.sorted.complete();\n this._activeSiblings.clear();\n this._scrollNode = null;\n this._parentPositions.clear();\n this._dragDropRegistry.removeDropContainer(this);\n }\n /** Whether an item from this list is currently being dragged. */\n isDragging() {\n return this._isDragging;\n }\n /** Starts dragging an item. */\n start() {\n this._draggingStarted();\n this._notifyReceivingSiblings();\n }\n /**\n * Emits an event to indicate that the user moved an item into the container.\n * @param item Item that was moved into the container.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param index Index at which the item entered. If omitted, the container will try to figure it\n * out automatically.\n */\n enter(item, pointerX, pointerY, index) {\n this._draggingStarted();\n // If sorting is disabled, we want the item to return to its starting\n // position if the user is returning it to its initial container.\n let newIndex;\n if (index == null) {\n newIndex = this.sortingDisabled ? this._draggables.indexOf(item) : -1;\n if (newIndex === -1) {\n // We use the coordinates of where the item entered the drop\n // zone to figure out at which index it should be inserted.\n newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY);\n }\n }\n else {\n newIndex = index;\n }\n const activeDraggables = this._activeDraggables;\n const currentIndex = activeDraggables.indexOf(item);\n const placeholder = item.getPlaceholderElement();\n let newPositionReference = activeDraggables[newIndex];\n // If the item at the new position is the same as the item that is being dragged,\n // it means that we're trying to restore the item to its initial position. In this\n // case we should use the next item from the list as the reference.\n if (newPositionReference === item) {\n newPositionReference = activeDraggables[newIndex + 1];\n }\n // Since the item may be in the `activeDraggables` already (e.g. if the user dragged it\n // into another container and back again), we have to ensure that it isn't duplicated.\n if (currentIndex > -1) {\n activeDraggables.splice(currentIndex, 1);\n }\n // Don't use items that are being dragged as a reference, because\n // their element has been moved down to the bottom of the body.\n if (newPositionReference && !this._dragDropRegistry.isDragging(newPositionReference)) {\n const element = newPositionReference.getRootElement();\n element.parentElement.insertBefore(placeholder, element);\n activeDraggables.splice(newIndex, 0, item);\n }\n else if (this._shouldEnterAsFirstChild(pointerX, pointerY)) {\n const reference = activeDraggables[0].getRootElement();\n reference.parentNode.insertBefore(placeholder, reference);\n activeDraggables.unshift(item);\n }\n else {\n coerceElement(this.element).appendChild(placeholder);\n activeDraggables.push(item);\n }\n // The transform needs to be cleared so it doesn't throw off the measurements.\n placeholder.style.transform = '';\n // Note that the positions were already cached when we called `start` above,\n // but we need to refresh them since the amount of items has changed and also parent rects.\n this._cacheItemPositions();\n this._cacheParentPositions();\n // Notify siblings at the end so that the item has been inserted into the `activeDraggables`.\n this._notifyReceivingSiblings();\n this.entered.next({ item, container: this, currentIndex: this.getItemIndex(item) });\n }\n /**\n * Removes an item from the container after it was dragged into another container by the user.\n * @param item Item that was dragged out.\n */\n exit(item) {\n this._reset();\n this.exited.next({ item, container: this });\n }\n /**\n * Drops an item into this container.\n * @param item Item being dropped into the container.\n * @param currentIndex Index at which the item should be inserted.\n * @param previousIndex Index of the item when dragging started.\n * @param previousContainer Container from which the item got dragged in.\n * @param isPointerOverContainer Whether the user's pointer was over the\n * container when the item was dropped.\n * @param distance Distance the user has dragged since the start of the dragging sequence.\n */\n drop(item, currentIndex, previousIndex, previousContainer, isPointerOverContainer, distance, dropPoint) {\n this._reset();\n this.dropped.next({\n item,\n currentIndex,\n previousIndex,\n container: this,\n previousContainer,\n isPointerOverContainer,\n distance,\n dropPoint\n });\n }\n /**\n * Sets the draggable items that are a part of this list.\n * @param items Items that are a part of this list.\n */\n withItems(items) {\n const previousItems = this._draggables;\n this._draggables = items;\n items.forEach(item => item._withDropContainer(this));\n if (this.isDragging()) {\n const draggedItems = previousItems.filter(item => item.isDragging());\n // If all of the items being dragged were removed\n // from the list, abort the current drag sequence.\n if (draggedItems.every(item => items.indexOf(item) === -1)) {\n this._reset();\n }\n else {\n this._cacheItems();\n }\n }\n return this;\n }\n /** Sets the layout direction of the drop list. */\n withDirection(direction) {\n this._direction = direction;\n return this;\n }\n /**\n * Sets the containers that are connected to this one. When two or more containers are\n * connected, the user will be allowed to transfer items between them.\n * @param connectedTo Other containers that the current containers should be connected to.\n */\n connectedTo(connectedTo) {\n this._siblings = connectedTo.slice();\n return this;\n }\n /**\n * Sets the orientation of the container.\n * @param orientation New orientation for the container.\n */\n withOrientation(orientation) {\n this._orientation = orientation;\n return this;\n }\n /**\n * Sets which parent elements are can be scrolled while the user is dragging.\n * @param elements Elements that can be scrolled.\n */\n withScrollableParents(elements) {\n const element = coerceElement(this.element);\n // We always allow the current element to be scrollable\n // so we need to ensure that it's in the array.\n this._scrollableElements =\n elements.indexOf(element) === -1 ? [element, ...elements] : elements.slice();\n return this;\n }\n /** Gets the scrollable parents that are registered with this drop container. */\n getScrollableParents() {\n return this._scrollableElements;\n }\n /**\n * Figures out the index of an item in the container.\n * @param item Item whose index should be determined.\n */\n getItemIndex(item) {\n if (!this._isDragging) {\n return this._draggables.indexOf(item);\n }\n // Items are sorted always by top/left in the cache, however they flow differently in RTL.\n // The rest of the logic still stands no matter what orientation we're in, however\n // we need to invert the array when determining the index.\n const items = this._orientation === 'horizontal' && this._direction === 'rtl' ?\n this._itemPositions.slice().reverse() : this._itemPositions;\n return findIndex(items, currentItem => currentItem.drag === item);\n }\n /**\n * Whether the list is able to receive the item that\n * is currently being dragged inside a connected drop list.\n */\n isReceiving() {\n return this._activeSiblings.size > 0;\n }\n /**\n * Sorts an item inside the container based on its position.\n * @param item Item to be sorted.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param pointerDelta Direction in which the pointer is moving along each axis.\n */\n _sortItem(item, pointerX, pointerY, pointerDelta) {\n // Don't sort the item if sorting is disabled or it's out of range.\n if (this.sortingDisabled || !this._clientRect ||\n !isPointerNearClientRect(this._clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n return;\n }\n const siblings = this._itemPositions;\n const newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY, pointerDelta);\n if (newIndex === -1 && siblings.length > 0) {\n return;\n }\n const isHorizontal = this._orientation === 'horizontal';\n const currentIndex = findIndex(siblings, currentItem => currentItem.drag === item);\n const siblingAtNewPosition = siblings[newIndex];\n const currentPosition = siblings[currentIndex].clientRect;\n const newPosition = siblingAtNewPosition.clientRect;\n const delta = currentIndex > newIndex ? 1 : -1;\n // How many pixels the item's placeholder should be offset.\n const itemOffset = this._getItemOffsetPx(currentPosition, newPosition, delta);\n // How many pixels all the other items should be offset.\n const siblingOffset = this._getSiblingOffsetPx(currentIndex, siblings, delta);\n // Save the previous order of the items before moving the item to its new index.\n // We use this to check whether an item has been moved as a result of the sorting.\n const oldOrder = siblings.slice();\n // Shuffle the array in place.\n moveItemInArray(siblings, currentIndex, newIndex);\n this.sorted.next({\n previousIndex: currentIndex,\n currentIndex: newIndex,\n container: this,\n item\n });\n siblings.forEach((sibling, index) => {\n // Don't do anything if the position hasn't changed.\n if (oldOrder[index] === sibling) {\n return;\n }\n const isDraggedItem = sibling.drag === item;\n const offset = isDraggedItem ? itemOffset : siblingOffset;\n const elementToOffset = isDraggedItem ? item.getPlaceholderElement() :\n sibling.drag.getRootElement();\n // Update the offset to reflect the new position.\n sibling.offset += offset;\n // Since we're moving the items with a `transform`, we need to adjust their cached\n // client rects to reflect their new position, as well as swap their positions in the cache.\n // Note that we shouldn't use `getBoundingClientRect` here to update the cache, because the\n // elements may be mid-animation which will give us a wrong result.\n if (isHorizontal) {\n // Round the transforms since some browsers will\n // blur the elements, for sub-pixel transforms.\n elementToOffset.style.transform = combineTransforms(`translate3d(${Math.round(sibling.offset)}px, 0, 0)`, sibling.initialTransform);\n adjustClientRect(sibling.clientRect, 0, offset);\n }\n else {\n elementToOffset.style.transform = combineTransforms(`translate3d(0, ${Math.round(sibling.offset)}px, 0)`, sibling.initialTransform);\n adjustClientRect(sibling.clientRect, offset, 0);\n }\n });\n // Note that it's important that we do this after the client rects have been adjusted.\n this._previousSwap.overlaps = isInsideClientRect(newPosition, pointerX, pointerY);\n this._previousSwap.drag = siblingAtNewPosition.drag;\n this._previousSwap.delta = isHorizontal ? pointerDelta.x : pointerDelta.y;\n }\n /**\n * Checks whether the user's pointer is close to the edges of either the\n * viewport or the drop list and starts the auto-scroll sequence.\n * @param pointerX User's pointer position along the x axis.\n * @param pointerY User's pointer position along the y axis.\n */\n _startScrollingIfNecessary(pointerX, pointerY) {\n if (this.autoScrollDisabled) {\n return;\n }\n let scrollNode;\n let verticalScrollDirection = 0 /* NONE */;\n let horizontalScrollDirection = 0 /* NONE */;\n // Check whether we should start scrolling any of the parent containers.\n this._parentPositions.positions.forEach((position, element) => {\n // We have special handling for the `document` below. Also this would be\n // nicer with a for...of loop, but it requires changing a compiler flag.\n if (element === this._document || !position.clientRect || scrollNode) {\n return;\n }\n if (isPointerNearClientRect(position.clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n [verticalScrollDirection, horizontalScrollDirection] = getElementScrollDirections(element, position.clientRect, pointerX, pointerY);\n if (verticalScrollDirection || horizontalScrollDirection) {\n scrollNode = element;\n }\n }\n });\n // Otherwise check if we can start scrolling the viewport.\n if (!verticalScrollDirection && !horizontalScrollDirection) {\n const { width, height } = this._viewportRuler.getViewportSize();\n const clientRect = { width, height, top: 0, right: width, bottom: height, left: 0 };\n verticalScrollDirection = getVerticalScrollDirection(clientRect, pointerY);\n horizontalScrollDirection = getHorizontalScrollDirection(clientRect, pointerX);\n scrollNode = window;\n }\n if (scrollNode && (verticalScrollDirection !== this._verticalScrollDirection ||\n horizontalScrollDirection !== this._horizontalScrollDirection ||\n scrollNode !== this._scrollNode)) {\n this._verticalScrollDirection = verticalScrollDirection;\n this._horizontalScrollDirection = horizontalScrollDirection;\n this._scrollNode = scrollNode;\n if ((verticalScrollDirection || horizontalScrollDirection) && scrollNode) {\n this._ngZone.runOutsideAngular(this._startScrollInterval);\n }\n else {\n this._stopScrolling();\n }\n }\n }\n /** Stops any currently-running auto-scroll sequences. */\n _stopScrolling() {\n this._stopScrollTimers.next();\n }\n /** Starts the dragging sequence within the list. */\n _draggingStarted() {\n const styles = coerceElement(this.element).style;\n this.beforeStarted.next();\n this._isDragging = true;\n // We need to disable scroll snapping while the user is dragging, because it breaks automatic\n // scrolling. The browser seems to round the value based on the snapping points which means\n // that we can't increment/decrement the scroll position.\n this._initialScrollSnap = styles.msScrollSnapType || styles.scrollSnapType || '';\n styles.scrollSnapType = styles.msScrollSnapType = 'none';\n this._cacheItems();\n this._viewportScrollSubscription.unsubscribe();\n this._listenToScrollEvents();\n }\n /** Caches the positions of the configured scrollable parents. */\n _cacheParentPositions() {\n const element = coerceElement(this.element);\n this._parentPositions.cache(this._scrollableElements);\n // The list element is always in the `scrollableElements`\n // so we can take advantage of the cached `ClientRect`.\n this._clientRect = this._parentPositions.positions.get(element).clientRect;\n }\n /** Refreshes the position cache of the items and sibling containers. */\n _cacheItemPositions() {\n const isHorizontal = this._orientation === 'horizontal';\n this._itemPositions = this._activeDraggables.map(drag => {\n const elementToMeasure = drag.getVisibleElement();\n return {\n drag,\n offset: 0,\n initialTransform: elementToMeasure.style.transform || '',\n clientRect: getMutableClientRect(elementToMeasure),\n };\n }).sort((a, b) => {\n return isHorizontal ? a.clientRect.left - b.clientRect.left :\n a.clientRect.top - b.clientRect.top;\n });\n }\n /** Resets the container to its initial state. */\n _reset() {\n this._isDragging = false;\n const styles = coerceElement(this.element).style;\n styles.scrollSnapType = styles.msScrollSnapType = this._initialScrollSnap;\n // TODO(crisbeto): may have to wait for the animations to finish.\n this._activeDraggables.forEach(item => {\n var _a;\n const rootElement = item.getRootElement();\n if (rootElement) {\n const initialTransform = (_a = this._itemPositions\n .find(current => current.drag === item)) === null || _a === void 0 ? void 0 : _a.initialTransform;\n rootElement.style.transform = initialTransform || '';\n }\n });\n this._siblings.forEach(sibling => sibling._stopReceiving(this));\n this._activeDraggables = [];\n this._itemPositions = [];\n this._previousSwap.drag = null;\n this._previousSwap.delta = 0;\n this._previousSwap.overlaps = false;\n this._stopScrolling();\n this._viewportScrollSubscription.unsubscribe();\n this._parentPositions.clear();\n }\n /**\n * Gets the offset in pixels by which the items that aren't being dragged should be moved.\n * @param currentIndex Index of the item currently being dragged.\n * @param siblings All of the items in the list.\n * @param delta Direction in which the user is moving.\n */\n _getSiblingOffsetPx(currentIndex, siblings, delta) {\n const isHorizontal = this._orientation === 'horizontal';\n const currentPosition = siblings[currentIndex].clientRect;\n const immediateSibling = siblings[currentIndex + delta * -1];\n let siblingOffset = currentPosition[isHorizontal ? 'width' : 'height'] * delta;\n if (immediateSibling) {\n const start = isHorizontal ? 'left' : 'top';\n const end = isHorizontal ? 'right' : 'bottom';\n // Get the spacing between the start of the current item and the end of the one immediately\n // after it in the direction in which the user is dragging, or vice versa. We add it to the\n // offset in order to push the element to where it will be when it's inline and is influenced\n // by the `margin` of its siblings.\n if (delta === -1) {\n siblingOffset -= immediateSibling.clientRect[start] - currentPosition[end];\n }\n else {\n siblingOffset += currentPosition[start] - immediateSibling.clientRect[end];\n }\n }\n return siblingOffset;\n }\n /**\n * Gets the offset in pixels by which the item that is being dragged should be moved.\n * @param currentPosition Current position of the item.\n * @param newPosition Position of the item where the current item should be moved.\n * @param delta Direction in which the user is moving.\n */\n _getItemOffsetPx(currentPosition, newPosition, delta) {\n const isHorizontal = this._orientation === 'horizontal';\n let itemOffset = isHorizontal ? newPosition.left - currentPosition.left :\n newPosition.top - currentPosition.top;\n // Account for differences in the item width/height.\n if (delta === -1) {\n itemOffset += isHorizontal ? newPosition.width - currentPosition.width :\n newPosition.height - currentPosition.height;\n }\n return itemOffset;\n }\n /**\n * Checks if pointer is entering in the first position\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n */\n _shouldEnterAsFirstChild(pointerX, pointerY) {\n if (!this._activeDraggables.length) {\n return false;\n }\n const itemPositions = this._itemPositions;\n const isHorizontal = this._orientation === 'horizontal';\n // `itemPositions` are sorted by position while `activeDraggables` are sorted by child index\n // check if container is using some sort of \"reverse\" ordering (eg: flex-direction: row-reverse)\n const reversed = itemPositions[0].drag !== this._activeDraggables[0];\n if (reversed) {\n const lastItemRect = itemPositions[itemPositions.length - 1].clientRect;\n return isHorizontal ? pointerX >= lastItemRect.right : pointerY >= lastItemRect.bottom;\n }\n else {\n const firstItemRect = itemPositions[0].clientRect;\n return isHorizontal ? pointerX <= firstItemRect.left : pointerY <= firstItemRect.top;\n }\n }\n /**\n * Gets the index of an item in the drop container, based on the position of the user's pointer.\n * @param item Item that is being sorted.\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n * @param delta Direction in which the user is moving their pointer.\n */\n _getItemIndexFromPointerPosition(item, pointerX, pointerY, delta) {\n const isHorizontal = this._orientation === 'horizontal';\n const index = findIndex(this._itemPositions, ({ drag, clientRect }, _, array) => {\n if (drag === item) {\n // If there's only one item left in the container, it must be\n // the dragged item itself so we use it as a reference.\n return array.length < 2;\n }\n if (delta) {\n const direction = isHorizontal ? delta.x : delta.y;\n // If the user is still hovering over the same item as last time, their cursor hasn't left\n // the item after we made the swap, and they didn't change the direction in which they're\n // dragging, we don't consider it a direction swap.\n if (drag === this._previousSwap.drag && this._previousSwap.overlaps &&\n direction === this._previousSwap.delta) {\n return false;\n }\n }\n return isHorizontal ?\n // Round these down since most browsers report client rects with\n // sub-pixel precision, whereas the pointer coordinates are rounded to pixels.\n pointerX >= Math.floor(clientRect.left) && pointerX < Math.floor(clientRect.right) :\n pointerY >= Math.floor(clientRect.top) && pointerY < Math.floor(clientRect.bottom);\n });\n return (index === -1 || !this.sortPredicate(index, item, this)) ? -1 : index;\n }\n /** Caches the current items in the list and their positions. */\n _cacheItems() {\n this._activeDraggables = this._draggables.slice();\n this._cacheItemPositions();\n this._cacheParentPositions();\n }\n /**\n * Checks whether the user's pointer is positioned over the container.\n * @param x Pointer position along the X axis.\n * @param y Pointer position along the Y axis.\n */\n _isOverContainer(x, y) {\n return this._clientRect != null && isInsideClientRect(this._clientRect, x, y);\n }\n /**\n * Figures out whether an item should be moved into a sibling\n * drop container, based on its current position.\n * @param item Drag item that is being moved.\n * @param x Position of the item along the X axis.\n * @param y Position of the item along the Y axis.\n */\n _getSiblingContainerFromPosition(item, x, y) {\n return this._siblings.find(sibling => sibling._canReceive(item, x, y));\n }\n /**\n * Checks whether the drop list can receive the passed-in item.\n * @param item Item that is being dragged into the list.\n * @param x Position of the item along the X axis.\n * @param y Position of the item along the Y axis.\n */\n _canReceive(item, x, y) {\n if (!this._clientRect || !isInsideClientRect(this._clientRect, x, y) ||\n !this.enterPredicate(item, this)) {\n return false;\n }\n const elementFromPoint = this._getShadowRoot().elementFromPoint(x, y);\n // If there's no element at the pointer position, then\n // the client rect is probably scrolled out of the view.\n if (!elementFromPoint) {\n return false;\n }\n const nativeElement = coerceElement(this.element);\n // The `ClientRect`, that we're using to find the container over which the user is\n // hovering, doesn't give us any information on whether the element has been scrolled\n // out of the view or whether it's overlapping with other containers. This means that\n // we could end up transferring the item into a container that's invisible or is positioned\n // below another one. We use the result from `elementFromPoint` to get the top-most element\n // at the pointer position and to find whether it's one of the intersecting drop containers.\n return elementFromPoint === nativeElement || nativeElement.contains(elementFromPoint);\n }\n /**\n * Called by one of the connected drop lists when a dragging sequence has started.\n * @param sibling Sibling in which dragging has started.\n */\n _startReceiving(sibling, items) {\n const activeSiblings = this._activeSiblings;\n if (!activeSiblings.has(sibling) && items.every(item => {\n // Note that we have to add an exception to the `enterPredicate` for items that started off\n // in this drop list. The drag ref has logic that allows an item to return to its initial\n // container, if it has left the initial container and none of the connected containers\n // allow it to enter. See `DragRef._updateActiveDropContainer` for more context.\n return this.enterPredicate(item, this) || this._draggables.indexOf(item) > -1;\n })) {\n activeSiblings.add(sibling);\n this._cacheParentPositions();\n this._listenToScrollEvents();\n }\n }\n /**\n * Called by a connected drop list when dragging has stopped.\n * @param sibling Sibling whose dragging has stopped.\n */\n _stopReceiving(sibling) {\n this._activeSiblings.delete(sibling);\n this._viewportScrollSubscription.unsubscribe();\n }\n /**\n * Starts listening to scroll events on the viewport.\n * Used for updating the internal state of the list.\n */\n _listenToScrollEvents() {\n this._viewportScrollSubscription = this._dragDropRegistry\n .scrolled(this._getShadowRoot())\n .subscribe(event => {\n if (this.isDragging()) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n if (scrollDifference) {\n // Since we know the amount that the user has scrolled we can shift all of the\n // client rectangles ourselves. This is cheaper than re-measuring everything and\n // we can avoid inconsistent behavior where we might be measuring the element before\n // its position has changed.\n this._itemPositions.forEach(({ clientRect }) => {\n adjustClientRect(clientRect, scrollDifference.top, scrollDifference.left);\n });\n // We need two loops for this, because we want all of the cached\n // positions to be up-to-date before we re-sort the item.\n this._itemPositions.forEach(({ drag }) => {\n if (this._dragDropRegistry.isDragging(drag)) {\n // We need to re-sort the item manually, because the pointer move\n // events won't be dispatched while the user is scrolling.\n drag._sortFromLastPointerPosition();\n }\n });\n }\n }\n else if (this.isReceiving()) {\n this._cacheParentPositions();\n }\n });\n }\n /**\n * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n * than saving it in property directly on init, because we want to resolve it as late as possible\n * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n */\n _getShadowRoot() {\n if (!this._cachedShadowRoot) {\n const shadowRoot = _getShadowRoot(coerceElement(this.element));\n this._cachedShadowRoot = shadowRoot || this._document;\n }\n return this._cachedShadowRoot;\n }\n /** Notifies any siblings that may potentially receive the item. */\n _notifyReceivingSiblings() {\n const draggedItems = this._activeDraggables.filter(item => item.isDragging());\n this._siblings.forEach(sibling => sibling._startReceiving(this, draggedItems));\n }\n}\n/**\n * Finds the index of an item that matches a predicate function. Used as an equivalent\n * of `Array.prototype.findIndex` which isn't part of the standard Google typings.\n * @param array Array in which to look for matches.\n * @param predicate Function used to determine whether an item is a match.\n */\nfunction findIndex(array, predicate) {\n for (let i = 0; i < array.length; i++) {\n if (predicate(array[i], i, array)) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Increments the vertical scroll position of a node.\n * @param node Node whose scroll position should change.\n * @param amount Amount of pixels that the `node` should be scrolled.\n */\nfunction incrementVerticalScroll(node, amount) {\n if (node === window) {\n node.scrollBy(0, amount);\n }\n else {\n // Ideally we could use `Element.scrollBy` here as well, but IE and Edge don't support it.\n node.scrollTop += amount;\n }\n}\n/**\n * Increments the horizontal scroll position of a node.\n * @param node Node whose scroll position should change.\n * @param amount Amount of pixels that the `node` should be scrolled.\n */\nfunction incrementHorizontalScroll(node, amount) {\n if (node === window) {\n node.scrollBy(amount, 0);\n }\n else {\n // Ideally we could use `Element.scrollBy` here as well, but IE and Edge don't support it.\n node.scrollLeft += amount;\n }\n}\n/**\n * Gets whether the vertical auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getVerticalScrollDirection(clientRect, pointerY) {\n const { top, bottom, height } = clientRect;\n const yThreshold = height * SCROLL_PROXIMITY_THRESHOLD;\n if (pointerY >= top - yThreshold && pointerY <= top + yThreshold) {\n return 1 /* UP */;\n }\n else if (pointerY >= bottom - yThreshold && pointerY <= bottom + yThreshold) {\n return 2 /* DOWN */;\n }\n return 0 /* NONE */;\n}\n/**\n * Gets whether the horizontal auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerX Position of the user's pointer along the x axis.\n */\nfunction getHorizontalScrollDirection(clientRect, pointerX) {\n const { left, right, width } = clientRect;\n const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;\n if (pointerX >= left - xThreshold && pointerX <= left + xThreshold) {\n return 1 /* LEFT */;\n }\n else if (pointerX >= right - xThreshold && pointerX <= right + xThreshold) {\n return 2 /* RIGHT */;\n }\n return 0 /* NONE */;\n}\n/**\n * Gets the directions in which an element node should be scrolled,\n * assuming that the user's pointer is already within it scrollable region.\n * @param element Element for which we should calculate the scroll direction.\n * @param clientRect Bounding client rectangle of the element.\n * @param pointerX Position of the user's pointer along the x axis.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getElementScrollDirections(element, clientRect, pointerX, pointerY) {\n const computedVertical = getVerticalScrollDirection(clientRect, pointerY);\n const computedHorizontal = getHorizontalScrollDirection(clientRect, pointerX);\n let verticalScrollDirection = 0 /* NONE */;\n let horizontalScrollDirection = 0 /* NONE */;\n // Note that we here we do some extra checks for whether the element is actually scrollable in\n // a certain direction and we only assign the scroll direction if it is. We do this so that we\n // can allow other elements to be scrolled, if the current element can't be scrolled anymore.\n // This allows us to handle cases where the scroll regions of two scrollable elements overlap.\n if (computedVertical) {\n const scrollTop = element.scrollTop;\n if (computedVertical === 1 /* UP */) {\n if (scrollTop > 0) {\n verticalScrollDirection = 1 /* UP */;\n }\n }\n else if (element.scrollHeight - scrollTop > element.clientHeight) {\n verticalScrollDirection = 2 /* DOWN */;\n }\n }\n if (computedHorizontal) {\n const scrollLeft = element.scrollLeft;\n if (computedHorizontal === 1 /* LEFT */) {\n if (scrollLeft > 0) {\n horizontalScrollDirection = 1 /* LEFT */;\n }\n }\n else if (element.scrollWidth - scrollLeft > element.clientWidth) {\n horizontalScrollDirection = 2 /* RIGHT */;\n }\n }\n return [verticalScrollDirection, horizontalScrollDirection];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Event options that can be used to bind an active, capturing event. */\nconst activeCapturingEventOptions = normalizePassiveListenerOptions({\n passive: false,\n capture: true\n});\n/**\n * Service that keeps track of all the drag item and drop container\n * instances, and manages global event listeners on the `document`.\n * @docs-private\n */\n// Note: this class is generic, rather than referencing CdkDrag and CdkDropList directly, in order\n// to avoid circular imports. If we were to reference them here, importing the registry into the\n// classes that are registering themselves will introduce a circular import.\nclass DragDropRegistry {\n constructor(_ngZone, _document) {\n this._ngZone = _ngZone;\n /** Registered drop container instances. */\n this._dropInstances = new Set();\n /** Registered drag item instances. */\n this._dragInstances = new Set();\n /** Drag item instances that are currently being dragged. */\n this._activeDragInstances = [];\n /** Keeps track of the event listeners that we've bound to the `document`. */\n this._globalListeners = new Map();\n /**\n * Predicate function to check if an item is being dragged. Moved out into a property,\n * because it'll be called a lot and we don't want to create a new function every time.\n */\n this._draggingPredicate = (item) => item.isDragging();\n /**\n * Emits the `touchmove` or `mousemove` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n this.pointerMove = new Subject();\n /**\n * Emits the `touchend` or `mouseup` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n this.pointerUp = new Subject();\n /**\n * Emits when the viewport has been scrolled while the user is dragging an item.\n * @deprecated To be turned into a private member. Use the `scrolled` method instead.\n * @breaking-change 13.0.0\n */\n this.scroll = new Subject();\n /**\n * Event listener that will prevent the default browser action while the user is dragging.\n * @param event Event whose default action should be prevented.\n */\n this._preventDefaultWhileDragging = (event) => {\n if (this._activeDragInstances.length > 0) {\n event.preventDefault();\n }\n };\n /** Event listener for `touchmove` that is bound even if no dragging is happening. */\n this._persistentTouchmoveListener = (event) => {\n if (this._activeDragInstances.length > 0) {\n // Note that we only want to prevent the default action after dragging has actually started.\n // Usually this is the same time at which the item is added to the `_activeDragInstances`,\n // but it could be pushed back if the user has set up a drag delay or threshold.\n if (this._activeDragInstances.some(this._draggingPredicate)) {\n event.preventDefault();\n }\n this.pointerMove.next(event);\n }\n };\n this._document = _document;\n }\n /** Adds a drop container to the registry. */\n registerDropContainer(drop) {\n if (!this._dropInstances.has(drop)) {\n this._dropInstances.add(drop);\n }\n }\n /** Adds a drag item instance to the registry. */\n registerDragItem(drag) {\n this._dragInstances.add(drag);\n // The `touchmove` event gets bound once, ahead of time, because WebKit\n // won't preventDefault on a dynamically-added `touchmove` listener.\n // See https://bugs.webkit.org/show_bug.cgi?id=184250.\n if (this._dragInstances.size === 1) {\n this._ngZone.runOutsideAngular(() => {\n // The event handler has to be explicitly active,\n // because newer browsers make it passive by default.\n this._document.addEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);\n });\n }\n }\n /** Removes a drop container from the registry. */\n removeDropContainer(drop) {\n this._dropInstances.delete(drop);\n }\n /** Removes a drag item instance from the registry. */\n removeDragItem(drag) {\n this._dragInstances.delete(drag);\n this.stopDragging(drag);\n if (this._dragInstances.size === 0) {\n this._document.removeEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);\n }\n }\n /**\n * Starts the dragging sequence for a drag instance.\n * @param drag Drag instance which is being dragged.\n * @param event Event that initiated the dragging.\n */\n startDragging(drag, event) {\n // Do not process the same drag twice to avoid memory leaks and redundant listeners\n if (this._activeDragInstances.indexOf(drag) > -1) {\n return;\n }\n this._activeDragInstances.push(drag);\n if (this._activeDragInstances.length === 1) {\n const isTouchEvent = event.type.startsWith('touch');\n // We explicitly bind __active__ listeners here, because newer browsers will default to\n // passive ones for `mousemove` and `touchmove`. The events need to be active, because we\n // use `preventDefault` to prevent the page from scrolling while the user is dragging.\n this._globalListeners\n .set(isTouchEvent ? 'touchend' : 'mouseup', {\n handler: (e) => this.pointerUp.next(e),\n options: true\n })\n .set('scroll', {\n handler: (e) => this.scroll.next(e),\n // Use capturing so that we pick up scroll changes in any scrollable nodes that aren't\n // the document. See https://github.com/angular/components/issues/17144.\n options: true\n })\n // Preventing the default action on `mousemove` isn't enough to disable text selection\n // on Safari so we need to prevent the selection event as well. Alternatively this can\n // be done by setting `user-select: none` on the `body`, however it has causes a style\n // recalculation which can be expensive on pages with a lot of elements.\n .set('selectstart', {\n handler: this._preventDefaultWhileDragging,\n options: activeCapturingEventOptions\n });\n // We don't have to bind a move event for touch drag sequences, because\n // we already have a persistent global one bound from `registerDragItem`.\n if (!isTouchEvent) {\n this._globalListeners.set('mousemove', {\n handler: (e) => this.pointerMove.next(e),\n options: activeCapturingEventOptions\n });\n }\n this._ngZone.runOutsideAngular(() => {\n this._globalListeners.forEach((config, name) => {\n this._document.addEventListener(name, config.handler, config.options);\n });\n });\n }\n }\n /** Stops dragging a drag item instance. */\n stopDragging(drag) {\n const index = this._activeDragInstances.indexOf(drag);\n if (index > -1) {\n this._activeDragInstances.splice(index, 1);\n if (this._activeDragInstances.length === 0) {\n this._clearGlobalListeners();\n }\n }\n }\n /** Gets whether a drag item instance is currently being dragged. */\n isDragging(drag) {\n return this._activeDragInstances.indexOf(drag) > -1;\n }\n /**\n * Gets a stream that will emit when any element on the page is scrolled while an item is being\n * dragged.\n * @param shadowRoot Optional shadow root that the current dragging sequence started from.\n * Top-level listeners won't pick up events coming from the shadow DOM so this parameter can\n * be used to include an additional top-level listener at the shadow root level.\n */\n scrolled(shadowRoot) {\n const streams = [this.scroll];\n if (shadowRoot && shadowRoot !== this._document) {\n // Note that this is basically the same as `fromEvent` from rjxs, but we do it ourselves,\n // because we want to guarantee that the event is bound outside of the `NgZone`. With\n // `fromEvent` it'll only happen if the subscription is outside the `NgZone`.\n streams.push(new Observable((observer) => {\n return this._ngZone.runOutsideAngular(() => {\n const eventOptions = true;\n const callback = (event) => {\n if (this._activeDragInstances.length) {\n observer.next(event);\n }\n };\n shadowRoot.addEventListener('scroll', callback, eventOptions);\n return () => {\n shadowRoot.removeEventListener('scroll', callback, eventOptions);\n };\n });\n }));\n }\n return merge(...streams);\n }\n ngOnDestroy() {\n this._dragInstances.forEach(instance => this.removeDragItem(instance));\n this._dropInstances.forEach(instance => this.removeDropContainer(instance));\n this._clearGlobalListeners();\n this.pointerMove.complete();\n this.pointerUp.complete();\n }\n /** Clears out the global event listeners from the `document`. */\n _clearGlobalListeners() {\n this._globalListeners.forEach((config, name) => {\n this._document.removeEventListener(name, config.handler, config.options);\n });\n this._globalListeners.clear();\n }\n}\nDragDropRegistry.ɵfac = function DragDropRegistry_Factory(t) { return new (t || DragDropRegistry)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(DOCUMENT)); };\nDragDropRegistry.ɵprov = i0.ɵɵdefineInjectable({ factory: function DragDropRegistry_Factory() { return new DragDropRegistry(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.DOCUMENT)); }, token: DragDropRegistry, providedIn: \"root\" });\nDragDropRegistry.ctorParameters = () => [\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragDropRegistry, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Default configuration to be used when creating a `DragRef`. */\nconst DEFAULT_CONFIG = {\n dragStartThreshold: 5,\n pointerDirectionChangeThreshold: 5\n};\n/**\n * Service that allows for drag-and-drop functionality to be attached to DOM elements.\n */\nclass DragDrop {\n constructor(_document, _ngZone, _viewportRuler, _dragDropRegistry) {\n this._document = _document;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._dragDropRegistry = _dragDropRegistry;\n }\n /**\n * Turns an element into a draggable item.\n * @param element Element to which to attach the dragging functionality.\n * @param config Object used to configure the dragging behavior.\n */\n createDrag(element, config = DEFAULT_CONFIG) {\n return new DragRef(element, config, this._document, this._ngZone, this._viewportRuler, this._dragDropRegistry);\n }\n /**\n * Turns an element into a drop list.\n * @param element Element to which to attach the drop list functionality.\n */\n createDropList(element) {\n return new DropListRef(element, this._dragDropRegistry, this._document, this._ngZone, this._viewportRuler);\n }\n}\nDragDrop.ɵfac = function DragDrop_Factory(t) { return new (t || DragDrop)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(ɵngcc1.ViewportRuler), ɵngcc0.ɵɵinject(DragDropRegistry)); };\nDragDrop.ɵprov = i0.ɵɵdefineInjectable({ factory: function DragDrop_Factory() { return new DragDrop(i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i2.ViewportRuler), i0.ɵɵinject(DragDropRegistry)); }, token: DragDrop, providedIn: \"root\" });\nDragDrop.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: NgZone },\n { type: ViewportRuler },\n { type: DragDropRegistry }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragDrop, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc1.ViewportRuler }, { type: DragDropRegistry }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used for a `CdkDrag` to provide itself as a parent to the\n * drag-specific child directive (`CdkDragHandle`, `CdkDragPreview` etc.). Used primarily\n * to avoid circular imports.\n * @docs-private\n */\nconst CDK_DRAG_PARENT = new InjectionToken('CDK_DRAG_PARENT');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `CdkDropListGroup`. It serves as\n * alternative token to the actual `CdkDropListGroup` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DROP_LIST_GROUP = new InjectionToken('CdkDropListGroup');\n/**\n * Declaratively connects sibling `cdkDropList` instances together. All of the `cdkDropList`\n * elements that are placed inside a `cdkDropListGroup` will be connected to each other\n * automatically. Can be used as an alternative to the `cdkDropListConnectedTo` input\n * from `cdkDropList`.\n */\nclass CdkDropListGroup {\n constructor() {\n /** Drop lists registered inside the group. */\n this._items = new Set();\n this._disabled = false;\n }\n /** Whether starting a dragging sequence from inside this group is disabled. */\n get disabled() { return this._disabled; }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n ngOnDestroy() {\n this._items.clear();\n }\n}\nCdkDropListGroup.ɵfac = function CdkDropListGroup_Factory(t) { return new (t || CdkDropListGroup)(); };\nCdkDropListGroup.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkDropListGroup, selectors: [[\"\", \"cdkDropListGroup\", \"\"]], inputs: { disabled: [\"cdkDropListGroupDisabled\", \"disabled\"] }, exportAs: [\"cdkDropListGroup\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }])] });\nCdkDropListGroup.propDecorators = {\n disabled: [{ type: Input, args: ['cdkDropListGroupDisabled',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkDropListGroup, [{\n type: Directive,\n args: [{\n selector: '[cdkDropListGroup]',\n exportAs: 'cdkDropListGroup',\n providers: [{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }]\n }]\n }], function () { return []; }, { disabled: [{\n type: Input,\n args: ['cdkDropListGroupDisabled']\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to configure the\n * behavior of the drag&drop-related components.\n */\nconst CDK_DRAG_CONFIG = new InjectionToken('CDK_DRAG_CONFIG');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Asserts that a particular node is an element.\n * @param node Node to be checked.\n * @param name Name to attach to the error message.\n */\nfunction assertElementNode(node, name) {\n if (node.nodeType !== 1) {\n throw Error(`${name} must be attached to an element node. ` +\n `Currently attached to \"${node.nodeName}\".`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Counter used to generate unique ids for drop zones. */\nlet _uniqueIdCounter = 0;\n/**\n * Injection token that can be used to reference instances of `CdkDropList`. It serves as\n * alternative token to the actual `CdkDropList` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DROP_LIST = new InjectionToken('CdkDropList');\nconst ɵ0 = undefined;\n/** Container that wraps a set of draggable items. */\nclass CdkDropList {\n constructor(\n /** Element that the drop list is attached to. */\n element, dragDrop, _changeDetectorRef, _scrollDispatcher, _dir, _group, config) {\n this.element = element;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollDispatcher = _scrollDispatcher;\n this._dir = _dir;\n this._group = _group;\n /** Emits when the list has been destroyed. */\n this._destroyed = new Subject();\n /**\n * Other draggable containers that this container is connected to and into which the\n * container's items can be transferred. Can either be references to other drop containers,\n * or their unique IDs.\n */\n this.connectedTo = [];\n /**\n * Unique ID for the drop zone. Can be used as a reference\n * in the `connectedTo` of another `CdkDropList`.\n */\n this.id = `cdk-drop-list-${_uniqueIdCounter++}`;\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n this.enterPredicate = () => true;\n /** Functions that is used to determine whether an item can be sorted into a particular index. */\n this.sortPredicate = () => true;\n /** Emits when the user drops an item inside the container. */\n this.dropped = new EventEmitter();\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n this.entered = new EventEmitter();\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n this.exited = new EventEmitter();\n /** Emits as the user is swapping items while actively dragging. */\n this.sorted = new EventEmitter();\n /**\n * Keeps track of the items that are registered with this container. Historically we used to\n * do this with a `ContentChildren` query, however queries don't handle transplanted views very\n * well which means that we can't handle cases like dragging the headers of a `mat-table`\n * correctly. What we do instead is to have the items register themselves with the container\n * and then we sort them based on their position in the DOM.\n */\n this._unsortedItems = new Set();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertElementNode(element.nativeElement, 'cdkDropList');\n }\n this._dropListRef = dragDrop.createDropList(element);\n this._dropListRef.data = this;\n if (config) {\n this._assignDefaults(config);\n }\n this._dropListRef.enterPredicate = (drag, drop) => {\n return this.enterPredicate(drag.data, drop.data);\n };\n this._dropListRef.sortPredicate =\n (index, drag, drop) => {\n return this.sortPredicate(index, drag.data, drop.data);\n };\n this._setupInputSyncSubscription(this._dropListRef);\n this._handleEvents(this._dropListRef);\n CdkDropList._dropLists.push(this);\n if (_group) {\n _group._items.add(this);\n }\n }\n /** Whether starting a dragging sequence from this container is disabled. */\n get disabled() {\n return this._disabled || (!!this._group && this._group.disabled);\n }\n set disabled(value) {\n // Usually we sync the directive and ref state right before dragging starts, in order to have\n // a single point of failure and to avoid having to use setters for everything. `disabled` is\n // a special case, because it can prevent the `beforeStarted` event from firing, which can lock\n // the user in a disabled state, so we also need to sync it as it's being set.\n this._dropListRef.disabled = this._disabled = coerceBooleanProperty(value);\n }\n /** Registers an items with the drop list. */\n addItem(item) {\n this._unsortedItems.add(item);\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n /** Removes an item from the drop list. */\n removeItem(item) {\n this._unsortedItems.delete(item);\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n /** Gets the registered items in the list, sorted by their position in the DOM. */\n getSortedItems() {\n return Array.from(this._unsortedItems).sort((a, b) => {\n const documentPosition = a._dragRef.getVisibleElement().compareDocumentPosition(b._dragRef.getVisibleElement());\n // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // tslint:disable-next-line:no-bitwise\n return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n });\n }\n ngOnDestroy() {\n const index = CdkDropList._dropLists.indexOf(this);\n if (index > -1) {\n CdkDropList._dropLists.splice(index, 1);\n }\n if (this._group) {\n this._group._items.delete(this);\n }\n this._unsortedItems.clear();\n this._dropListRef.dispose();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */\n _setupInputSyncSubscription(ref) {\n if (this._dir) {\n this._dir.change\n .pipe(startWith(this._dir.value), takeUntil(this._destroyed))\n .subscribe(value => ref.withDirection(value));\n }\n ref.beforeStarted.subscribe(() => {\n const siblings = coerceArray(this.connectedTo).map(drop => {\n if (typeof drop === 'string') {\n const correspondingDropList = CdkDropList._dropLists.find(list => list.id === drop);\n if (!correspondingDropList && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console.warn(`CdkDropList could not find connected drop list with id \"${drop}\"`);\n }\n return correspondingDropList;\n }\n return drop;\n });\n if (this._group) {\n this._group._items.forEach(drop => {\n if (siblings.indexOf(drop) === -1) {\n siblings.push(drop);\n }\n });\n }\n // Note that we resolve the scrollable parents here so that we delay the resolution\n // as long as possible, ensuring that the element is in its final place in the DOM.\n if (!this._scrollableParentsResolved) {\n const scrollableParents = this._scrollDispatcher\n .getAncestorScrollContainers(this.element)\n .map(scrollable => scrollable.getElementRef().nativeElement);\n this._dropListRef.withScrollableParents(scrollableParents);\n // Only do this once since it involves traversing the DOM and the parents\n // shouldn't be able to change without the drop list being destroyed.\n this._scrollableParentsResolved = true;\n }\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.sortingDisabled = coerceBooleanProperty(this.sortingDisabled);\n ref.autoScrollDisabled = coerceBooleanProperty(this.autoScrollDisabled);\n ref.autoScrollStep = coerceNumberProperty(this.autoScrollStep, 2);\n ref\n .connectedTo(siblings.filter(drop => drop && drop !== this).map(list => list._dropListRef))\n .withOrientation(this.orientation);\n });\n }\n /** Handles events from the underlying DropListRef. */\n _handleEvents(ref) {\n ref.beforeStarted.subscribe(() => {\n this._syncItemsWithRef();\n this._changeDetectorRef.markForCheck();\n });\n ref.entered.subscribe(event => {\n this.entered.emit({\n container: this,\n item: event.item.data,\n currentIndex: event.currentIndex\n });\n });\n ref.exited.subscribe(event => {\n this.exited.emit({\n container: this,\n item: event.item.data\n });\n this._changeDetectorRef.markForCheck();\n });\n ref.sorted.subscribe(event => {\n this.sorted.emit({\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n container: this,\n item: event.item.data\n });\n });\n ref.dropped.subscribe(event => {\n this.dropped.emit({\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n previousContainer: event.previousContainer.data,\n container: event.container.data,\n item: event.item.data,\n isPointerOverContainer: event.isPointerOverContainer,\n distance: event.distance,\n dropPoint: event.dropPoint\n });\n // Mark for check since all of these events run outside of change\n // detection and we're not guaranteed for something else to have triggered it.\n this._changeDetectorRef.markForCheck();\n });\n }\n /** Assigns the default input values based on a provided config object. */\n _assignDefaults(config) {\n const { lockAxis, draggingDisabled, sortingDisabled, listAutoScrollDisabled, listOrientation } = config;\n this.disabled = draggingDisabled == null ? false : draggingDisabled;\n this.sortingDisabled = sortingDisabled == null ? false : sortingDisabled;\n this.autoScrollDisabled = listAutoScrollDisabled == null ? false : listAutoScrollDisabled;\n this.orientation = listOrientation || 'vertical';\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n }\n /** Syncs up the registered drag items with underlying drop list ref. */\n _syncItemsWithRef() {\n this._dropListRef.withItems(this.getSortedItems().map(item => item._dragRef));\n }\n}\nCdkDropList.ɵfac = function CdkDropList_Factory(t) { return new (t || CdkDropList)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DragDrop), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.ScrollDispatcher), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(CDK_DROP_LIST_GROUP, 12), ɵngcc0.ɵɵdirectiveInject(CDK_DRAG_CONFIG, 8)); };\nCdkDropList.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkDropList, selectors: [[\"\", \"cdkDropList\", \"\"], [\"cdk-drop-list\"]], hostAttrs: [1, \"cdk-drop-list\"], hostVars: 7, hostBindings: function CdkDropList_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"id\", ctx.id);\n ɵngcc0.ɵɵclassProp(\"cdk-drop-list-disabled\", ctx.disabled)(\"cdk-drop-list-dragging\", ctx._dropListRef.isDragging())(\"cdk-drop-list-receiving\", ctx._dropListRef.isReceiving());\n } }, inputs: { connectedTo: [\"cdkDropListConnectedTo\", \"connectedTo\"], id: \"id\", enterPredicate: [\"cdkDropListEnterPredicate\", \"enterPredicate\"], sortPredicate: [\"cdkDropListSortPredicate\", \"sortPredicate\"], disabled: [\"cdkDropListDisabled\", \"disabled\"], sortingDisabled: [\"cdkDropListSortingDisabled\", \"sortingDisabled\"], autoScrollDisabled: [\"cdkDropListAutoScrollDisabled\", \"autoScrollDisabled\"], orientation: [\"cdkDropListOrientation\", \"orientation\"], lockAxis: [\"cdkDropListLockAxis\", \"lockAxis\"], data: [\"cdkDropListData\", \"data\"], autoScrollStep: [\"cdkDropListAutoScrollStep\", \"autoScrollStep\"] }, outputs: { dropped: \"cdkDropListDropped\", entered: \"cdkDropListEntered\", exited: \"cdkDropListExited\", sorted: \"cdkDropListSorted\" }, exportAs: [\"cdkDropList\"], features: [ɵngcc0.ɵɵProvidersFeature([\n // Prevent child drop lists from picking up the same group as their parent.\n { provide: CDK_DROP_LIST_GROUP, useValue: ɵ0 },\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n ])] });\n/** Keeps track of the drop lists that are currently on the page. */\nCdkDropList._dropLists = [];\nCdkDropList.ctorParameters = () => [\n { type: ElementRef },\n { type: DragDrop },\n { type: ChangeDetectorRef },\n { type: ScrollDispatcher },\n { type: Directionality, decorators: [{ type: Optional }] },\n { type: CdkDropListGroup, decorators: [{ type: Optional }, { type: Inject, args: [CDK_DROP_LIST_GROUP,] }, { type: SkipSelf }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [CDK_DRAG_CONFIG,] }] }\n];\nCdkDropList.propDecorators = {\n connectedTo: [{ type: Input, args: ['cdkDropListConnectedTo',] }],\n data: [{ type: Input, args: ['cdkDropListData',] }],\n orientation: [{ type: Input, args: ['cdkDropListOrientation',] }],\n id: [{ type: Input }],\n lockAxis: [{ type: Input, args: ['cdkDropListLockAxis',] }],\n disabled: [{ type: Input, args: ['cdkDropListDisabled',] }],\n sortingDisabled: [{ type: Input, args: ['cdkDropListSortingDisabled',] }],\n enterPredicate: [{ type: Input, args: ['cdkDropListEnterPredicate',] }],\n sortPredicate: [{ type: Input, args: ['cdkDropListSortPredicate',] }],\n autoScrollDisabled: [{ type: Input, args: ['cdkDropListAutoScrollDisabled',] }],\n autoScrollStep: [{ type: Input, args: ['cdkDropListAutoScrollStep',] }],\n dropped: [{ type: Output, args: ['cdkDropListDropped',] }],\n entered: [{ type: Output, args: ['cdkDropListEntered',] }],\n exited: [{ type: Output, args: ['cdkDropListExited',] }],\n sorted: [{ type: Output, args: ['cdkDropListSorted',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkDropList, [{\n type: Directive,\n args: [{\n selector: '[cdkDropList], cdk-drop-list',\n exportAs: 'cdkDropList',\n providers: [\n // Prevent child drop lists from picking up the same group as their parent.\n { provide: CDK_DROP_LIST_GROUP, useValue: ɵ0 },\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n ],\n host: {\n 'class': 'cdk-drop-list',\n '[attr.id]': 'id',\n '[class.cdk-drop-list-disabled]': 'disabled',\n '[class.cdk-drop-list-dragging]': '_dropListRef.isDragging()',\n '[class.cdk-drop-list-receiving]': '_dropListRef.isReceiving()'\n }\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: DragDrop }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc1.ScrollDispatcher }, { type: ɵngcc2.Directionality, decorators: [{\n type: Optional\n }] }, { type: CdkDropListGroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DROP_LIST_GROUP]\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DRAG_CONFIG]\n }] }]; }, { connectedTo: [{\n type: Input,\n args: ['cdkDropListConnectedTo']\n }], id: [{\n type: Input\n }], enterPredicate: [{\n type: Input,\n args: ['cdkDropListEnterPredicate']\n }], sortPredicate: [{\n type: Input,\n args: ['cdkDropListSortPredicate']\n }], dropped: [{\n type: Output,\n args: ['cdkDropListDropped']\n }], entered: [{\n type: Output,\n args: ['cdkDropListEntered']\n }], exited: [{\n type: Output,\n args: ['cdkDropListExited']\n }], sorted: [{\n type: Output,\n args: ['cdkDropListSorted']\n }], disabled: [{\n type: Input,\n args: ['cdkDropListDisabled']\n }], sortingDisabled: [{\n type: Input,\n args: ['cdkDropListSortingDisabled']\n }], autoScrollDisabled: [{\n type: Input,\n args: ['cdkDropListAutoScrollDisabled']\n }], orientation: [{\n type: Input,\n args: ['cdkDropListOrientation']\n }], lockAxis: [{\n type: Input,\n args: ['cdkDropListLockAxis']\n }], data: [{\n type: Input,\n args: ['cdkDropListData']\n }], autoScrollStep: [{\n type: Input,\n args: ['cdkDropListAutoScrollStep']\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `CdkDragHandle`. It serves as\n * alternative token to the actual `CdkDragHandle` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_HANDLE = new InjectionToken('CdkDragHandle');\n/** Handle that can be used to drag a CdkDrag instance. */\nclass CdkDragHandle {\n constructor(element, parentDrag) {\n this.element = element;\n /** Emits when the state of the handle has changed. */\n this._stateChanges = new Subject();\n this._disabled = false;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertElementNode(element.nativeElement, 'cdkDragHandle');\n }\n this._parentDrag = parentDrag;\n }\n /** Whether starting to drag through this handle is disabled. */\n get disabled() { return this._disabled; }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._stateChanges.next(this);\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n}\nCdkDragHandle.ɵfac = function CdkDragHandle_Factory(t) { return new (t || CdkDragHandle)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(CDK_DRAG_PARENT, 12)); };\nCdkDragHandle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkDragHandle, selectors: [[\"\", \"cdkDragHandle\", \"\"]], hostAttrs: [1, \"cdk-drag-handle\"], inputs: { disabled: [\"cdkDragHandleDisabled\", \"disabled\"] }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }])] });\nCdkDragHandle.ctorParameters = () => [\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Inject, args: [CDK_DRAG_PARENT,] }, { type: Optional }, { type: SkipSelf }] }\n];\nCdkDragHandle.propDecorators = {\n disabled: [{ type: Input, args: ['cdkDragHandleDisabled',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkDragHandle, [{\n type: Directive,\n args: [{\n selector: '[cdkDragHandle]',\n host: {\n 'class': 'cdk-drag-handle'\n },\n providers: [{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_DRAG_PARENT]\n }, {\n type: Optional\n }, {\n type: SkipSelf\n }] }]; }, { disabled: [{\n type: Input,\n args: ['cdkDragHandleDisabled']\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `CdkDragPlaceholder`. It serves as\n * alternative token to the actual `CdkDragPlaceholder` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_PLACEHOLDER = new InjectionToken('CdkDragPlaceholder');\n/**\n * Element that will be used as a template for the placeholder of a CdkDrag when\n * it is being dragged. The placeholder is displayed in place of the element being dragged.\n */\nclass CdkDragPlaceholder {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCdkDragPlaceholder.ɵfac = function CdkDragPlaceholder_Factory(t) { return new (t || CdkDragPlaceholder)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nCdkDragPlaceholder.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkDragPlaceholder, selectors: [[\"ng-template\", \"cdkDragPlaceholder\", \"\"]], inputs: { data: \"data\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }])] });\nCdkDragPlaceholder.ctorParameters = () => [\n { type: TemplateRef }\n];\nCdkDragPlaceholder.propDecorators = {\n data: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkDragPlaceholder, [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkDragPlaceholder]',\n providers: [{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }]\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, { data: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `CdkDragPreview`. It serves as\n * alternative token to the actual `CdkDragPreview` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_PREVIEW = new InjectionToken('CdkDragPreview');\n/**\n * Element that will be used as a template for the preview\n * of a CdkDrag when it is being dragged.\n */\nclass CdkDragPreview {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._matchSize = false;\n }\n /** Whether the preview should preserve the same size as the item that is being dragged. */\n get matchSize() { return this._matchSize; }\n set matchSize(value) { this._matchSize = coerceBooleanProperty(value); }\n}\nCdkDragPreview.ɵfac = function CdkDragPreview_Factory(t) { return new (t || CdkDragPreview)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nCdkDragPreview.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkDragPreview, selectors: [[\"ng-template\", \"cdkDragPreview\", \"\"]], inputs: { matchSize: \"matchSize\", data: \"data\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }])] });\nCdkDragPreview.ctorParameters = () => [\n { type: TemplateRef }\n];\nCdkDragPreview.propDecorators = {\n data: [{ type: Input }],\n matchSize: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkDragPreview, [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkDragPreview]',\n providers: [{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }]\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, { matchSize: [{\n type: Input\n }], data: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst DRAG_HOST_CLASS = 'cdk-drag';\n/** Element that can be moved inside a CdkDropList container. */\nclass CdkDrag {\n constructor(\n /** Element that the draggable is attached to. */\n element, \n /** Droppable container that the draggable is a part of. */\n dropContainer, \n /**\n * @deprecated `_document` parameter no longer being used and will be removed.\n * @breaking-change 12.0.0\n */\n _document, _ngZone, _viewContainerRef, config, _dir, dragDrop, _changeDetectorRef, _selfHandle, _parentDrag) {\n this.element = element;\n this.dropContainer = dropContainer;\n this._ngZone = _ngZone;\n this._viewContainerRef = _viewContainerRef;\n this._dir = _dir;\n this._changeDetectorRef = _changeDetectorRef;\n this._selfHandle = _selfHandle;\n this._parentDrag = _parentDrag;\n this._destroyed = new Subject();\n /** Emits when the user starts dragging the item. */\n this.started = new EventEmitter();\n /** Emits when the user has released a drag item, before any animations have started. */\n this.released = new EventEmitter();\n /** Emits when the user stops dragging an item in the container. */\n this.ended = new EventEmitter();\n /** Emits when the user has moved the item into a new container. */\n this.entered = new EventEmitter();\n /** Emits when the user removes the item its container by dragging it into another container. */\n this.exited = new EventEmitter();\n /** Emits when the user drops the item inside a container. */\n this.dropped = new EventEmitter();\n /**\n * Emits as the user is dragging the item. Use with caution,\n * because this event will fire for every pixel that the user has dragged.\n */\n this.moved = new Observable((observer) => {\n const subscription = this._dragRef.moved.pipe(map(movedEvent => ({\n source: this,\n pointerPosition: movedEvent.pointerPosition,\n event: movedEvent.event,\n delta: movedEvent.delta,\n distance: movedEvent.distance\n }))).subscribe(observer);\n return () => {\n subscription.unsubscribe();\n };\n });\n this._dragRef = dragDrop.createDrag(element, {\n dragStartThreshold: config && config.dragStartThreshold != null ?\n config.dragStartThreshold : 5,\n pointerDirectionChangeThreshold: config && config.pointerDirectionChangeThreshold != null ?\n config.pointerDirectionChangeThreshold : 5,\n zIndex: config === null || config === void 0 ? void 0 : config.zIndex,\n });\n this._dragRef.data = this;\n // We have to keep track of the drag instances in order to be able to match an element to\n // a drag instance. We can't go through the global registry of `DragRef`, because the root\n // element could be different.\n CdkDrag._dragInstances.push(this);\n if (config) {\n this._assignDefaults(config);\n }\n // Note that usually the container is assigned when the drop list is picks up the item, but in\n // some cases (mainly transplanted views with OnPush, see #18341) we may end up in a situation\n // where there are no items on the first change detection pass, but the items get picked up as\n // soon as the user triggers another pass by dragging. This is a problem, because the item would\n // have to switch from standalone mode to drag mode in the middle of the dragging sequence which\n // is too late since the two modes save different kinds of information. We work around it by\n // assigning the drop container both from here and the list.\n if (dropContainer) {\n this._dragRef._withDropContainer(dropContainer._dropListRef);\n dropContainer.addItem(this);\n }\n this._syncInputs(this._dragRef);\n this._handleEvents(this._dragRef);\n }\n /** Whether starting to drag this element is disabled. */\n get disabled() {\n return this._disabled || (this.dropContainer && this.dropContainer.disabled);\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._dragRef.disabled = this._disabled;\n }\n /**\n * Returns the element that is being used as a placeholder\n * while the current element is being dragged.\n */\n getPlaceholderElement() {\n return this._dragRef.getPlaceholderElement();\n }\n /** Returns the root draggable element. */\n getRootElement() {\n return this._dragRef.getRootElement();\n }\n /** Resets a standalone drag item to its initial position. */\n reset() {\n this._dragRef.reset();\n }\n /**\n * Gets the pixel coordinates of the draggable outside of a drop container.\n */\n getFreeDragPosition() {\n return this._dragRef.getFreeDragPosition();\n }\n ngAfterViewInit() {\n // Normally this isn't in the zone, but it can cause major performance regressions for apps\n // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.\n this._ngZone.runOutsideAngular(() => {\n // We need to wait for the zone to stabilize, in order for the reference\n // element to be in the proper place in the DOM. This is mostly relevant\n // for draggable elements inside portals since they get stamped out in\n // their original DOM position and then they get transferred to the portal.\n this._ngZone.onStable\n .pipe(take(1), takeUntil(this._destroyed))\n .subscribe(() => {\n this._updateRootElement();\n this._setupHandlesListener();\n if (this.freeDragPosition) {\n this._dragRef.setFreeDragPosition(this.freeDragPosition);\n }\n });\n });\n }\n ngOnChanges(changes) {\n const rootSelectorChange = changes['rootElementSelector'];\n const positionChange = changes['freeDragPosition'];\n // We don't have to react to the first change since it's being\n // handled in `ngAfterViewInit` where it needs to be deferred.\n if (rootSelectorChange && !rootSelectorChange.firstChange) {\n this._updateRootElement();\n }\n // Skip the first change since it's being handled in `ngAfterViewInit`.\n if (positionChange && !positionChange.firstChange && this.freeDragPosition) {\n this._dragRef.setFreeDragPosition(this.freeDragPosition);\n }\n }\n ngOnDestroy() {\n if (this.dropContainer) {\n this.dropContainer.removeItem(this);\n }\n const index = CdkDrag._dragInstances.indexOf(this);\n if (index > -1) {\n CdkDrag._dragInstances.splice(index, 1);\n }\n // Unnecessary in most cases, but used to avoid extra change detections with `zone-paths-rxjs`.\n this._ngZone.runOutsideAngular(() => {\n this._destroyed.next();\n this._destroyed.complete();\n this._dragRef.dispose();\n });\n }\n /** Syncs the root element with the `DragRef`. */\n _updateRootElement() {\n const element = this.element.nativeElement;\n const rootElement = this.rootElementSelector ?\n getClosestMatchingAncestor(element, this.rootElementSelector) : element;\n if (rootElement && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n assertElementNode(rootElement, 'cdkDrag');\n }\n this._dragRef.withRootElement(rootElement || element);\n }\n /** Gets the boundary element, based on the `boundaryElement` value. */\n _getBoundaryElement() {\n const boundary = this.boundaryElement;\n if (!boundary) {\n return null;\n }\n if (typeof boundary === 'string') {\n return getClosestMatchingAncestor(this.element.nativeElement, boundary);\n }\n const element = coerceElement(boundary);\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n !element.contains(this.element.nativeElement)) {\n throw Error('Draggable element is not inside of the node passed into cdkDragBoundary.');\n }\n return element;\n }\n /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */\n _syncInputs(ref) {\n ref.beforeStarted.subscribe(() => {\n if (!ref.isDragging()) {\n const dir = this._dir;\n const dragStartDelay = this.dragStartDelay;\n const placeholder = this._placeholderTemplate ? {\n template: this._placeholderTemplate.templateRef,\n context: this._placeholderTemplate.data,\n viewContainer: this._viewContainerRef\n } : null;\n const preview = this._previewTemplate ? {\n template: this._previewTemplate.templateRef,\n context: this._previewTemplate.data,\n matchSize: this._previewTemplate.matchSize,\n viewContainer: this._viewContainerRef\n } : null;\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.dragStartDelay = (typeof dragStartDelay === 'object' && dragStartDelay) ?\n dragStartDelay : coerceNumberProperty(dragStartDelay);\n ref.constrainPosition = this.constrainPosition;\n ref.previewClass = this.previewClass;\n ref\n .withBoundaryElement(this._getBoundaryElement())\n .withPlaceholderTemplate(placeholder)\n .withPreviewTemplate(preview)\n .withPreviewContainer(this.previewContainer || 'global');\n if (dir) {\n ref.withDirection(dir.value);\n }\n }\n });\n // This only needs to be resolved once.\n ref.beforeStarted.pipe(take(1)).subscribe(() => {\n var _a, _b;\n // If we managed to resolve a parent through DI, use it.\n if (this._parentDrag) {\n ref.withParent(this._parentDrag._dragRef);\n return;\n }\n // Otherwise fall back to resolving the parent by looking up the DOM. This can happen if\n // the item was projected into another item by something like `ngTemplateOutlet`.\n let parent = this.element.nativeElement.parentElement;\n while (parent) {\n // `classList` needs to be null checked, because IE doesn't have it on some elements.\n if ((_a = parent.classList) === null || _a === void 0 ? void 0 : _a.contains(DRAG_HOST_CLASS)) {\n ref.withParent(((_b = CdkDrag._dragInstances.find(drag => {\n return drag.element.nativeElement === parent;\n })) === null || _b === void 0 ? void 0 : _b._dragRef) || null);\n break;\n }\n parent = parent.parentElement;\n }\n });\n }\n /** Handles the events from the underlying `DragRef`. */\n _handleEvents(ref) {\n ref.started.subscribe(() => {\n this.started.emit({ source: this });\n // Since all of these events run outside of change detection,\n // we need to ensure that everything is marked correctly.\n this._changeDetectorRef.markForCheck();\n });\n ref.released.subscribe(() => {\n this.released.emit({ source: this });\n });\n ref.ended.subscribe(event => {\n this.ended.emit({\n source: this,\n distance: event.distance,\n dropPoint: event.dropPoint\n });\n // Since all of these events run outside of change detection,\n // we need to ensure that everything is marked correctly.\n this._changeDetectorRef.markForCheck();\n });\n ref.entered.subscribe(event => {\n this.entered.emit({\n container: event.container.data,\n item: this,\n currentIndex: event.currentIndex\n });\n });\n ref.exited.subscribe(event => {\n this.exited.emit({\n container: event.container.data,\n item: this\n });\n });\n ref.dropped.subscribe(event => {\n this.dropped.emit({\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n previousContainer: event.previousContainer.data,\n container: event.container.data,\n isPointerOverContainer: event.isPointerOverContainer,\n item: this,\n distance: event.distance,\n dropPoint: event.dropPoint\n });\n });\n }\n /** Assigns the default input values based on a provided config object. */\n _assignDefaults(config) {\n const { lockAxis, dragStartDelay, constrainPosition, previewClass, boundaryElement, draggingDisabled, rootElementSelector, previewContainer } = config;\n this.disabled = draggingDisabled == null ? false : draggingDisabled;\n this.dragStartDelay = dragStartDelay || 0;\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n if (constrainPosition) {\n this.constrainPosition = constrainPosition;\n }\n if (previewClass) {\n this.previewClass = previewClass;\n }\n if (boundaryElement) {\n this.boundaryElement = boundaryElement;\n }\n if (rootElementSelector) {\n this.rootElementSelector = rootElementSelector;\n }\n if (previewContainer) {\n this.previewContainer = previewContainer;\n }\n }\n /** Sets up the listener that syncs the handles with the drag ref. */\n _setupHandlesListener() {\n // Listen for any newly-added handles.\n this._handles.changes.pipe(startWith(this._handles), \n // Sync the new handles with the DragRef.\n tap((handles) => {\n const childHandleElements = handles\n .filter(handle => handle._parentDrag === this)\n .map(handle => handle.element);\n // Usually handles are only allowed to be a descendant of the drag element, but if\n // the consumer defined a different drag root, we should allow the drag element\n // itself to be a handle too.\n if (this._selfHandle && this.rootElementSelector) {\n childHandleElements.push(this.element);\n }\n this._dragRef.withHandles(childHandleElements);\n }), \n // Listen if the state of any of the handles changes.\n switchMap((handles) => {\n return merge(...handles.map(item => {\n return item._stateChanges.pipe(startWith(item));\n }));\n }), takeUntil(this._destroyed)).subscribe(handleInstance => {\n // Enabled/disable the handle that changed in the DragRef.\n const dragRef = this._dragRef;\n const handle = handleInstance.element.nativeElement;\n handleInstance.disabled ? dragRef.disableHandle(handle) : dragRef.enableHandle(handle);\n });\n }\n}\nCdkDrag.ɵfac = function CdkDrag_Factory(t) { return new (t || CdkDrag)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(CDK_DROP_LIST, 12), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(CDK_DRAG_CONFIG, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(DragDrop), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(CDK_DRAG_HANDLE, 10), ɵngcc0.ɵɵdirectiveInject(CDK_DRAG_PARENT, 12)); };\nCdkDrag.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkDrag, selectors: [[\"\", \"cdkDrag\", \"\"]], contentQueries: function CdkDrag_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, CDK_DRAG_PREVIEW, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CDK_DRAG_PLACEHOLDER, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, CDK_DRAG_HANDLE, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._previewTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._placeholderTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._handles = _t);\n } }, hostAttrs: [1, \"cdk-drag\"], hostVars: 4, hostBindings: function CdkDrag_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"cdk-drag-disabled\", ctx.disabled)(\"cdk-drag-dragging\", ctx._dragRef.isDragging());\n } }, inputs: { disabled: [\"cdkDragDisabled\", \"disabled\"], dragStartDelay: [\"cdkDragStartDelay\", \"dragStartDelay\"], lockAxis: [\"cdkDragLockAxis\", \"lockAxis\"], constrainPosition: [\"cdkDragConstrainPosition\", \"constrainPosition\"], previewClass: [\"cdkDragPreviewClass\", \"previewClass\"], boundaryElement: [\"cdkDragBoundary\", \"boundaryElement\"], rootElementSelector: [\"cdkDragRootElement\", \"rootElementSelector\"], previewContainer: [\"cdkDragPreviewContainer\", \"previewContainer\"], data: [\"cdkDragData\", \"data\"], freeDragPosition: [\"cdkDragFreeDragPosition\", \"freeDragPosition\"] }, outputs: { started: \"cdkDragStarted\", released: \"cdkDragReleased\", ended: \"cdkDragEnded\", entered: \"cdkDragEntered\", exited: \"cdkDragExited\", dropped: \"cdkDragDropped\", moved: \"cdkDragMoved\" }, exportAs: [\"cdkDrag\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }]), ɵngcc0.ɵɵNgOnChangesFeature] });\nCdkDrag._dragInstances = [];\nCdkDrag.ctorParameters = () => [\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Inject, args: [CDK_DROP_LIST,] }, { type: Optional }, { type: SkipSelf }] },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: NgZone },\n { type: ViewContainerRef },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [CDK_DRAG_CONFIG,] }] },\n { type: Directionality, decorators: [{ type: Optional }] },\n { type: DragDrop },\n { type: ChangeDetectorRef },\n { type: CdkDragHandle, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [CDK_DRAG_HANDLE,] }] },\n { type: CdkDrag, decorators: [{ type: Optional }, { type: SkipSelf }, { type: Inject, args: [CDK_DRAG_PARENT,] }] }\n];\nCdkDrag.propDecorators = {\n _handles: [{ type: ContentChildren, args: [CDK_DRAG_HANDLE, { descendants: true },] }],\n _previewTemplate: [{ type: ContentChild, args: [CDK_DRAG_PREVIEW,] }],\n _placeholderTemplate: [{ type: ContentChild, args: [CDK_DRAG_PLACEHOLDER,] }],\n data: [{ type: Input, args: ['cdkDragData',] }],\n lockAxis: [{ type: Input, args: ['cdkDragLockAxis',] }],\n rootElementSelector: [{ type: Input, args: ['cdkDragRootElement',] }],\n boundaryElement: [{ type: Input, args: ['cdkDragBoundary',] }],\n dragStartDelay: [{ type: Input, args: ['cdkDragStartDelay',] }],\n freeDragPosition: [{ type: Input, args: ['cdkDragFreeDragPosition',] }],\n disabled: [{ type: Input, args: ['cdkDragDisabled',] }],\n constrainPosition: [{ type: Input, args: ['cdkDragConstrainPosition',] }],\n previewClass: [{ type: Input, args: ['cdkDragPreviewClass',] }],\n previewContainer: [{ type: Input, args: ['cdkDragPreviewContainer',] }],\n started: [{ type: Output, args: ['cdkDragStarted',] }],\n released: [{ type: Output, args: ['cdkDragReleased',] }],\n ended: [{ type: Output, args: ['cdkDragEnded',] }],\n entered: [{ type: Output, args: ['cdkDragEntered',] }],\n exited: [{ type: Output, args: ['cdkDragExited',] }],\n dropped: [{ type: Output, args: ['cdkDragDropped',] }],\n moved: [{ type: Output, args: ['cdkDragMoved',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkDrag, [{\n type: Directive,\n args: [{\n selector: '[cdkDrag]',\n exportAs: 'cdkDrag',\n host: {\n 'class': DRAG_HOST_CLASS,\n '[class.cdk-drag-disabled]': 'disabled',\n '[class.cdk-drag-dragging]': '_dragRef.isDragging()'\n },\n providers: [{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_DROP_LIST]\n }, {\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DRAG_CONFIG]\n }] }, { type: ɵngcc2.Directionality, decorators: [{\n type: Optional\n }] }, { type: DragDrop }, { type: ɵngcc0.ChangeDetectorRef }, { type: CdkDragHandle, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [CDK_DRAG_HANDLE]\n }] }, { type: CdkDrag, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [CDK_DRAG_PARENT]\n }] }]; }, { started: [{\n type: Output,\n args: ['cdkDragStarted']\n }], released: [{\n type: Output,\n args: ['cdkDragReleased']\n }], ended: [{\n type: Output,\n args: ['cdkDragEnded']\n }], entered: [{\n type: Output,\n args: ['cdkDragEntered']\n }], exited: [{\n type: Output,\n args: ['cdkDragExited']\n }], dropped: [{\n type: Output,\n args: ['cdkDragDropped']\n }], moved: [{\n type: Output,\n args: ['cdkDragMoved']\n }], disabled: [{\n type: Input,\n args: ['cdkDragDisabled']\n }], dragStartDelay: [{\n type: Input,\n args: ['cdkDragStartDelay']\n }], lockAxis: [{\n type: Input,\n args: ['cdkDragLockAxis']\n }], constrainPosition: [{\n type: Input,\n args: ['cdkDragConstrainPosition']\n }], previewClass: [{\n type: Input,\n args: ['cdkDragPreviewClass']\n }], boundaryElement: [{\n type: Input,\n args: ['cdkDragBoundary']\n }], rootElementSelector: [{\n type: Input,\n args: ['cdkDragRootElement']\n }], previewContainer: [{\n type: Input,\n args: ['cdkDragPreviewContainer']\n }], _handles: [{\n type: ContentChildren,\n args: [CDK_DRAG_HANDLE, { descendants: true }]\n }], _previewTemplate: [{\n type: ContentChild,\n args: [CDK_DRAG_PREVIEW]\n }], _placeholderTemplate: [{\n type: ContentChild,\n args: [CDK_DRAG_PLACEHOLDER]\n }], data: [{\n type: Input,\n args: ['cdkDragData']\n }], freeDragPosition: [{\n type: Input,\n args: ['cdkDragFreeDragPosition']\n }] }); })();\n/** Gets the closest ancestor of an element that matches a selector. */\nfunction getClosestMatchingAncestor(element, selector) {\n let currentElement = element.parentElement;\n while (currentElement) {\n // IE doesn't support `matches` so we have to fall back to `msMatchesSelector`.\n if (currentElement.matches ? currentElement.matches(selector) :\n currentElement.msMatchesSelector(selector)) {\n return currentElement;\n }\n currentElement = currentElement.parentElement;\n }\n return null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass DragDropModule {\n}\nDragDropModule.ɵfac = function DragDropModule_Factory(t) { return new (t || DragDropModule)(); };\nDragDropModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DragDropModule });\nDragDropModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n DragDrop,\n ], imports: [CdkScrollableModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragDropModule, [{\n type: NgModule,\n args: [{\n declarations: [\n CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder,\n ],\n exports: [\n CdkScrollableModule,\n CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder,\n ],\n providers: [\n DragDrop,\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DragDropModule, { declarations: function () { return [CdkDropList, CdkDropListGroup, CdkDrag, CdkDragHandle, CdkDragPreview, CdkDragPlaceholder]; }, exports: function () { return [CdkScrollableModule, CdkDropList, CdkDropListGroup, CdkDrag, CdkDragHandle, CdkDragPreview, CdkDragPlaceholder]; } }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CDK_DRAG_CONFIG, CDK_DRAG_HANDLE, CDK_DRAG_PARENT, CDK_DRAG_PLACEHOLDER, CDK_DRAG_PREVIEW, CDK_DROP_LIST, CDK_DROP_LIST_GROUP, CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDragPreview, CdkDropList, CdkDropListGroup, DragDrop, DragDropModule, DragDropRegistry, DragRef, DropListRef, copyArrayItem, moveItemInArray, transferArrayItem };\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst MAC_ENTER = 3;\nconst BACKSPACE = 8;\nconst TAB = 9;\nconst NUM_CENTER = 12;\nconst ENTER = 13;\nconst SHIFT = 16;\nconst CONTROL = 17;\nconst ALT = 18;\nconst PAUSE = 19;\nconst CAPS_LOCK = 20;\nconst ESCAPE = 27;\nconst SPACE = 32;\nconst PAGE_UP = 33;\nconst PAGE_DOWN = 34;\nconst END = 35;\nconst HOME = 36;\nconst LEFT_ARROW = 37;\nconst UP_ARROW = 38;\nconst RIGHT_ARROW = 39;\nconst DOWN_ARROW = 40;\nconst PLUS_SIGN = 43;\nconst PRINT_SCREEN = 44;\nconst INSERT = 45;\nconst DELETE = 46;\nconst ZERO = 48;\nconst ONE = 49;\nconst TWO = 50;\nconst THREE = 51;\nconst FOUR = 52;\nconst FIVE = 53;\nconst SIX = 54;\nconst SEVEN = 55;\nconst EIGHT = 56;\nconst NINE = 57;\nconst FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\nconst FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\nconst QUESTION_MARK = 63;\nconst AT_SIGN = 64;\nconst A = 65;\nconst B = 66;\nconst C = 67;\nconst D = 68;\nconst E = 69;\nconst F = 70;\nconst G = 71;\nconst H = 72;\nconst I = 73;\nconst J = 74;\nconst K = 75;\nconst L = 76;\nconst M = 77;\nconst N = 78;\nconst O = 79;\nconst P = 80;\nconst Q = 81;\nconst R = 82;\nconst S = 83;\nconst T = 84;\nconst U = 85;\nconst V = 86;\nconst W = 87;\nconst X = 88;\nconst Y = 89;\nconst Z = 90;\nconst META = 91; // WIN_KEY_LEFT\nconst MAC_WK_CMD_LEFT = 91;\nconst MAC_WK_CMD_RIGHT = 93;\nconst CONTEXT_MENU = 93;\nconst NUMPAD_ZERO = 96;\nconst NUMPAD_ONE = 97;\nconst NUMPAD_TWO = 98;\nconst NUMPAD_THREE = 99;\nconst NUMPAD_FOUR = 100;\nconst NUMPAD_FIVE = 101;\nconst NUMPAD_SIX = 102;\nconst NUMPAD_SEVEN = 103;\nconst NUMPAD_EIGHT = 104;\nconst NUMPAD_NINE = 105;\nconst NUMPAD_MULTIPLY = 106;\nconst NUMPAD_PLUS = 107;\nconst NUMPAD_MINUS = 109;\nconst NUMPAD_PERIOD = 110;\nconst NUMPAD_DIVIDE = 111;\nconst F1 = 112;\nconst F2 = 113;\nconst F3 = 114;\nconst F4 = 115;\nconst F5 = 116;\nconst F6 = 117;\nconst F7 = 118;\nconst F8 = 119;\nconst F9 = 120;\nconst F10 = 121;\nconst F11 = 122;\nconst F12 = 123;\nconst NUM_LOCK = 144;\nconst SCROLL_LOCK = 145;\nconst FIRST_MEDIA = 166;\nconst FF_MINUS = 173;\nconst MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\nconst VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\nconst VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\nconst FF_MUTE = 181;\nconst FF_VOLUME_DOWN = 182;\nconst LAST_MEDIA = 183;\nconst FF_VOLUME_UP = 183;\nconst SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\nconst EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\nconst COMMA = 188;\nconst DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\nconst PERIOD = 190;\nconst SLASH = 191;\nconst APOSTROPHE = 192;\nconst TILDE = 192;\nconst OPEN_SQUARE_BRACKET = 219;\nconst BACKSLASH = 220;\nconst CLOSE_SQUARE_BRACKET = 221;\nconst SINGLE_QUOTE = 222;\nconst MAC_META = 224;\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Checks whether a modifier key is pressed.\n * @param event Event to be checked.\n */\nfunction hasModifierKey(event, ...modifiers) {\n if (modifiers.length) {\n return modifiers.some(modifier => event[modifier]);\n }\n return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A, ALT, APOSTROPHE, AT_SIGN, B, BACKSLASH, BACKSPACE, C, CAPS_LOCK, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, D, DASH, DELETE, DOWN_ARROW, E, EIGHT, END, ENTER, EQUALS, ESCAPE, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FOUR, G, H, HOME, I, INSERT, J, K, L, LAST_MEDIA, LEFT_ARROW, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, META, MUTE, N, NINE, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PAUSE, PERIOD, PLUS_SIGN, PRINT_SCREEN, Q, QUESTION_MARK, R, RIGHT_ARROW, S, SCROLL_LOCK, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, T, TAB, THREE, TILDE, TWO, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, W, X, Y, Z, ZERO, hasModifierKey };\n\n","import * as i1 from '@angular/cdk/scrolling';\nimport { ScrollDispatcher, ViewportRuler, ScrollingModule } from '@angular/cdk/scrolling';\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/scrolling';\nimport * as ɵngcc2 from '@angular/cdk/platform';\nimport * as ɵngcc3 from '@angular/cdk/bidi';\nimport * as ɵngcc4 from '@angular/common';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport * as i1$1 from '@angular/common';\nimport { DOCUMENT, Location } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, NgZone, Inject, Optional, ElementRef, ApplicationRef, ComponentFactoryResolver, Injector, InjectionToken, Directive, EventEmitter, TemplateRef, ViewContainerRef, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i2 from '@angular/cdk/platform';\nimport { supportsScrollBehavior, _getEventTarget, Platform, _isTestEnvironment } from '@angular/cdk/platform';\nimport { Directionality, BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\nclass BlockScrollStrategy {\n constructor(_viewportRuler, document) {\n this._viewportRuler = _viewportRuler;\n this._previousHTMLStyles = { top: '', left: '' };\n this._isEnabled = false;\n this._document = document;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach() { }\n /** Blocks page-level scroll while the attached overlay is open. */\n enable() {\n if (this._canBeEnabled()) {\n const root = this._document.documentElement;\n this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n // Cache the previous inline styles in case the user had set them.\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n // Note: we're using the `html` node, instead of the `body`, because the `body` may\n // have the user agent margin, whereas the `html` is guaranteed not to have one.\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add('cdk-global-scrollblock');\n this._isEnabled = true;\n }\n }\n /** Unblocks page-level scroll while the attached overlay is open. */\n disable() {\n if (this._isEnabled) {\n const html = this._document.documentElement;\n const body = this._document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n this._isEnabled = false;\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove('cdk-global-scrollblock');\n // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n // because it can throw off feature detections in `supportsScrollBehavior` which\n // checks for `'scrollBehavior' in documentElement.style`.\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n _canBeEnabled() {\n // Since the scroll strategies can't be singletons, we have to use a global CSS class\n // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n // scrolling multiple times.\n const html = this._document.documentElement;\n if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n return false;\n }\n const body = this._document.body;\n const viewport = this._viewportRuler.getViewportSize();\n return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\nfunction getMatScrollStrategyAlreadyAttachedError() {\n return Error(`Scroll strategy has already been attached.`);\n}\n\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\nclass CloseScrollStrategy {\n constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._config = _config;\n this._scrollSubscription = null;\n /** Detaches the overlay ref and disables the scroll strategy. */\n this._detach = () => {\n this.disable();\n if (this._overlayRef.hasAttached()) {\n this._ngZone.run(() => this._overlayRef.detach());\n }\n };\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables the closing of the attached overlay on scroll. */\n enable() {\n if (this._scrollSubscription) {\n return;\n }\n const stream = this._scrollDispatcher.scrolled(0);\n if (this._config && this._config.threshold && this._config.threshold > 1) {\n this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n this._scrollSubscription = stream.subscribe(() => {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n this._detach();\n }\n else {\n this._overlayRef.updatePosition();\n }\n });\n }\n else {\n this._scrollSubscription = stream.subscribe(this._detach);\n }\n }\n /** Disables the closing the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Scroll strategy that doesn't do anything. */\nclass NoopScrollStrategy {\n /** Does nothing, as this scroll strategy is a no-op. */\n enable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n disable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n attach() { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO(jelbourn): move this to live with the rest of the scrolling code\n// TODO(jelbourn): someday replace this with IntersectionObservers\n/**\n * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n return scrollContainers.some(containerBounds => {\n const outsideAbove = element.bottom < containerBounds.top;\n const outsideBelow = element.top > containerBounds.bottom;\n const outsideLeft = element.right < containerBounds.left;\n const outsideRight = element.left > containerBounds.right;\n return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\nfunction isElementClippedByScrolling(element, scrollContainers) {\n return scrollContainers.some(scrollContainerRect => {\n const clippedAbove = element.top < scrollContainerRect.top;\n const clippedBelow = element.bottom > scrollContainerRect.bottom;\n const clippedLeft = element.left < scrollContainerRect.left;\n const clippedRight = element.right > scrollContainerRect.right;\n return clippedAbove || clippedBelow || clippedLeft || clippedRight;\n });\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Strategy that will update the element position as the user is scrolling.\n */\nclass RepositionScrollStrategy {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n this._config = _config;\n this._scrollSubscription = null;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables repositioning of the attached overlay on scroll. */\n enable() {\n if (!this._scrollSubscription) {\n const throttle = this._config ? this._config.scrollThrottle : 0;\n this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n this._overlayRef.updatePosition();\n // TODO(crisbeto): make `close` on by default once all components can handle it.\n if (this._config && this._config.autoClose) {\n const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n const { width, height } = this._viewportRuler.getViewportSize();\n // TODO(crisbeto): include all ancestor scroll containers here once\n // we have a way of exposing the trigger element to the scroll strategy.\n const parentRects = [{ width, height, bottom: height, right: width, top: 0, left: 0 }];\n if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n this.disable();\n this._ngZone.run(() => this._overlayRef.detach());\n }\n }\n });\n }\n }\n /** Disables repositioning of the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\nclass ScrollStrategyOptions {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, document) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n /** Do nothing on scroll. */\n this.noop = () => new NoopScrollStrategy();\n /**\n * Close the overlay as soon as the user scrolls.\n * @param config Configuration to be used inside the scroll strategy.\n */\n this.close = (config) => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n /** Block scrolling. */\n this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n /**\n * Update the overlay's position on scroll.\n * @param config Configuration to be used inside the scroll strategy.\n * Allows debouncing the reposition calls.\n */\n this.reposition = (config) => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n this._document = document;\n }\n}\nScrollStrategyOptions.ɵfac = function ScrollStrategyOptions_Factory(t) { return new (t || ScrollStrategyOptions)(ɵngcc0.ɵɵinject(ɵngcc1.ScrollDispatcher), ɵngcc0.ɵɵinject(ɵngcc1.ViewportRuler), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(DOCUMENT)); };\nScrollStrategyOptions.ɵprov = i0.ɵɵdefineInjectable({ factory: function ScrollStrategyOptions_Factory() { return new ScrollStrategyOptions(i0.ɵɵinject(i1.ScrollDispatcher), i0.ɵɵinject(i1.ViewportRuler), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1$1.DOCUMENT)); }, token: ScrollStrategyOptions, providedIn: \"root\" });\nScrollStrategyOptions.ctorParameters = () => [\n { type: ScrollDispatcher },\n { type: ViewportRuler },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollStrategyOptions, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc1.ScrollDispatcher }, { type: ɵngcc1.ViewportRuler }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Initial configuration used when creating an overlay. */\nclass OverlayConfig {\n constructor(config) {\n /** Strategy to be used when handling scroll events while the overlay is open. */\n this.scrollStrategy = new NoopScrollStrategy();\n /** Custom class to add to the overlay pane. */\n this.panelClass = '';\n /** Whether the overlay has a backdrop. */\n this.hasBackdrop = false;\n /** Custom class to add to the backdrop */\n this.backdropClass = 'cdk-overlay-dark-backdrop';\n /**\n * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n this.disposeOnNavigation = false;\n if (config) {\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n const configKeys = Object.keys(config);\n for (const key of configKeys) {\n if (config[key] !== undefined) {\n // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n // as \"I don't know *which* key this is, so the only valid value is the intersection\n // of all the posible values.\" In this case, that happens to be `undefined`. TypeScript\n // is not smart enough to see that the right-hand-side is actually an access of the same\n // exact type with the same exact key, meaning that the value type must be identical.\n // So we use `any` to work around this.\n this[key] = config[key];\n }\n }\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The points of the origin element and the overlay element to connect. */\nclass ConnectionPositionPair {\n constructor(origin, overlay, \n /** Offset along the X axis. */\n offsetX, \n /** Offset along the Y axis. */\n offsetY, \n /** Class(es) to be applied to the panel while this position is active. */\n panelClass) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.panelClass = panelClass;\n this.originX = origin.originX;\n this.originY = origin.originY;\n this.overlayX = overlay.overlayX;\n this.overlayY = overlay.overlayY;\n }\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n * ----------- -----------\n * | outside | | clipped |\n * | view | --------------------------\n * | | | | | |\n * ---------- | ----------- |\n * -------------------------- | |\n * | | | Scrollable |\n * | | | |\n * | | --------------------------\n * | Scrollable |\n * | |\n * --------------------------\n *\n * @docs-private\n */\nclass ScrollingVisibility {\n}\n/** The change event emitted by the strategy when a fallback position is used. */\nclass ConnectedOverlayPositionChange {\n constructor(\n /** The position used as a result of this change. */\n connectionPair, \n /** @docs-private */\n scrollableViewProperties) {\n this.connectionPair = connectionPair;\n this.scrollableViewProperties = scrollableViewProperties;\n }\n}\nConnectedOverlayPositionChange.ctorParameters = () => [\n { type: ConnectionPositionPair },\n { type: ScrollingVisibility, decorators: [{ type: Optional }] }\n];\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateVerticalPosition(property, value) {\n if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"top\", \"bottom\" or \"center\".`);\n }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateHorizontalPosition(property, value) {\n if (value !== 'start' && value !== 'end' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"start\", \"end\" or \"center\".`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass BaseOverlayDispatcher {\n constructor(document) {\n /** Currently attached overlays in the order they were attached. */\n this._attachedOverlays = [];\n this._document = document;\n }\n ngOnDestroy() {\n this.detach();\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n // Ensure that we don't get the same overlay multiple times.\n this.remove(overlayRef);\n this._attachedOverlays.push(overlayRef);\n }\n /** Remove an overlay from the list of attached overlay refs. */\n remove(overlayRef) {\n const index = this._attachedOverlays.indexOf(overlayRef);\n if (index > -1) {\n this._attachedOverlays.splice(index, 1);\n }\n // Remove the global listener once there are no more overlays.\n if (this._attachedOverlays.length === 0) {\n this.detach();\n }\n }\n}\nBaseOverlayDispatcher.ɵfac = function BaseOverlayDispatcher_Factory(t) { return new (t || BaseOverlayDispatcher)(ɵngcc0.ɵɵinject(DOCUMENT)); };\nBaseOverlayDispatcher.ɵprov = i0.ɵɵdefineInjectable({ factory: function BaseOverlayDispatcher_Factory() { return new BaseOverlayDispatcher(i0.ɵɵinject(i1$1.DOCUMENT)); }, token: BaseOverlayDispatcher, providedIn: \"root\" });\nBaseOverlayDispatcher.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BaseOverlayDispatcher, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n constructor(document) {\n super(document);\n /** Keyboard event listener that will be attached to the body. */\n this._keydownListener = (event) => {\n const overlays = this._attachedOverlays;\n for (let i = overlays.length - 1; i > -1; i--) {\n // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n // We want to target the most recent overlay, rather than trying to match where the event came\n // from, because some components might open an overlay, but keep focus on a trigger element\n // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n // because we don't want overlays that don't handle keyboard events to block the ones below\n // them that do.\n if (overlays[i]._keydownEvents.observers.length > 0) {\n overlays[i]._keydownEvents.next(event);\n break;\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Lazily start dispatcher once first overlay is added\n if (!this._isAttached) {\n this._document.body.addEventListener('keydown', this._keydownListener);\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n this._document.body.removeEventListener('keydown', this._keydownListener);\n this._isAttached = false;\n }\n }\n}\nOverlayKeyboardDispatcher.ɵfac = function OverlayKeyboardDispatcher_Factory(t) { return new (t || OverlayKeyboardDispatcher)(ɵngcc0.ɵɵinject(DOCUMENT)); };\nOverlayKeyboardDispatcher.ɵprov = i0.ɵɵdefineInjectable({ factory: function OverlayKeyboardDispatcher_Factory() { return new OverlayKeyboardDispatcher(i0.ɵɵinject(i1$1.DOCUMENT)); }, token: OverlayKeyboardDispatcher, providedIn: \"root\" });\nOverlayKeyboardDispatcher.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(OverlayKeyboardDispatcher, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n constructor(document, _platform) {\n super(document);\n this._platform = _platform;\n this._cursorStyleIsSet = false;\n /** Store pointerdown event target to track origin of click. */\n this._pointerDownListener = (event) => {\n this._pointerDownEventTarget = _getEventTarget(event);\n };\n /** Click event listener that will be attached to the body propagate phase. */\n this._clickListener = (event) => {\n const target = _getEventTarget(event);\n // In case of a click event, we want to check the origin of the click\n // (e.g. in case where a user starts a click inside the overlay and\n // releases the click outside of it).\n // This is done by using the event target of the preceding pointerdown event.\n // Every click event caused by a pointer device has a preceding pointerdown\n // event, unless the click was programmatically triggered (e.g. in a unit test).\n const origin = event.type === 'click' && this._pointerDownEventTarget\n ? this._pointerDownEventTarget : target;\n // Reset the stored pointerdown event target, to avoid having it interfere\n // in subsequent events.\n this._pointerDownEventTarget = null;\n // We copy the array because the original may be modified asynchronously if the\n // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n // the for loop.\n const overlays = this._attachedOverlays.slice();\n // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n // We want to target all overlays for which the click could be considered as outside click.\n // As soon as we reach an overlay for which the click is not outside click we break off\n // the loop.\n for (let i = overlays.length - 1; i > -1; i--) {\n const overlayRef = overlays[i];\n if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n continue;\n }\n // If it's a click inside the overlay, just break - we should do nothing\n // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n // and proceed with the next overlay\n if (overlayRef.overlayElement.contains(target) ||\n overlayRef.overlayElement.contains(origin)) {\n break;\n }\n overlayRef._outsidePointerEvents.next(event);\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Safari on iOS does not generate click events for non-interactive\n // elements. However, we want to receive a click for any element outside\n // the overlay. We can force a \"clickable\" state by setting\n // `cursor: pointer` on the document body. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n if (!this._isAttached) {\n const body = this._document.body;\n body.addEventListener('pointerdown', this._pointerDownListener, true);\n body.addEventListener('click', this._clickListener, true);\n body.addEventListener('auxclick', this._clickListener, true);\n body.addEventListener('contextmenu', this._clickListener, true);\n // click event is not fired on iOS. To make element \"clickable\" we are\n // setting the cursor to pointer\n if (this._platform.IOS && !this._cursorStyleIsSet) {\n this._cursorOriginalValue = body.style.cursor;\n body.style.cursor = 'pointer';\n this._cursorStyleIsSet = true;\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n const body = this._document.body;\n body.removeEventListener('pointerdown', this._pointerDownListener, true);\n body.removeEventListener('click', this._clickListener, true);\n body.removeEventListener('auxclick', this._clickListener, true);\n body.removeEventListener('contextmenu', this._clickListener, true);\n if (this._platform.IOS && this._cursorStyleIsSet) {\n body.style.cursor = this._cursorOriginalValue;\n this._cursorStyleIsSet = false;\n }\n this._isAttached = false;\n }\n }\n}\nOverlayOutsideClickDispatcher.ɵfac = function OverlayOutsideClickDispatcher_Factory(t) { return new (t || OverlayOutsideClickDispatcher)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ɵngcc2.Platform)); };\nOverlayOutsideClickDispatcher.ɵprov = i0.ɵɵdefineInjectable({ factory: function OverlayOutsideClickDispatcher_Factory() { return new OverlayOutsideClickDispatcher(i0.ɵɵinject(i1$1.DOCUMENT), i0.ɵɵinject(i2.Platform)); }, token: OverlayOutsideClickDispatcher, providedIn: \"root\" });\nOverlayOutsideClickDispatcher.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: Platform }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(OverlayOutsideClickDispatcher, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc2.Platform }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Container inside which all overlays will render. */\nclass OverlayContainer {\n constructor(document, _platform) {\n this._platform = _platform;\n this._document = document;\n }\n ngOnDestroy() {\n const container = this._containerElement;\n if (container && container.parentNode) {\n container.parentNode.removeChild(container);\n }\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n */\n _createContainer() {\n const containerClass = 'cdk-overlay-container';\n // TODO(crisbeto): remove the testing check once we have an overlay testing\n // module or Angular starts tearing down the testing `NgModule`. See:\n // https://github.com/angular/angular/issues/18831\n if (this._platform.isBrowser || _isTestEnvironment()) {\n const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` +\n `.${containerClass}[platform=\"test\"]`);\n // Remove any old containers from the opposite platform.\n // This can happen when transitioning from the server to the client.\n for (let i = 0; i < oppositePlatformContainers.length; i++) {\n oppositePlatformContainers[i].parentNode.removeChild(oppositePlatformContainers[i]);\n }\n }\n const container = this._document.createElement('div');\n container.classList.add(containerClass);\n // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n // To mitigate the problem we made it so that only containers from a different platform are\n // cleared, but the side-effect was that people started depending on the overly-aggressive\n // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n // module which does the cleanup, we try to detect that we're in a test environment and we\n // always clear the container. See #17006.\n // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n if (_isTestEnvironment()) {\n container.setAttribute('platform', 'test');\n }\n else if (!this._platform.isBrowser) {\n container.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n}\nOverlayContainer.ɵfac = function OverlayContainer_Factory(t) { return new (t || OverlayContainer)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ɵngcc2.Platform)); };\nOverlayContainer.ɵprov = i0.ɵɵdefineInjectable({ factory: function OverlayContainer_Factory() { return new OverlayContainer(i0.ɵɵinject(i1$1.DOCUMENT), i0.ɵɵinject(i2.Platform)); }, token: OverlayContainer, providedIn: \"root\" });\nOverlayContainer.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: Platform }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(OverlayContainer, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc2.Platform }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher) {\n this._portalOutlet = _portalOutlet;\n this._host = _host;\n this._pane = _pane;\n this._config = _config;\n this._ngZone = _ngZone;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._document = _document;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._backdropElement = null;\n this._backdropClick = new Subject();\n this._attachments = new Subject();\n this._detachments = new Subject();\n this._locationChanges = Subscription.EMPTY;\n this._backdropClickHandler = (event) => this._backdropClick.next(event);\n /** Stream of keydown events dispatched to this overlay. */\n this._keydownEvents = new Subject();\n /** Stream of mouse outside events dispatched to this overlay. */\n this._outsidePointerEvents = new Subject();\n if (_config.scrollStrategy) {\n this._scrollStrategy = _config.scrollStrategy;\n this._scrollStrategy.attach(this);\n }\n this._positionStrategy = _config.positionStrategy;\n }\n /** The overlay's HTML element */\n get overlayElement() {\n return this._pane;\n }\n /** The overlay's backdrop HTML element. */\n get backdropElement() {\n return this._backdropElement;\n }\n /**\n * Wrapper around the panel element. Can be used for advanced\n * positioning where a wrapper with specific styling is\n * required around the overlay pane.\n */\n get hostElement() {\n return this._host;\n }\n /**\n * Attaches content, given via a Portal, to the overlay.\n * If the overlay is configured to have a backdrop, it will be created.\n *\n * @param portal Portal instance to which to attach the overlay.\n * @returns The portal attachment result.\n */\n attach(portal) {\n let attachResult = this._portalOutlet.attach(portal);\n // Update the pane element with the given configuration.\n if (!this._host.parentElement && this._previousHostParent) {\n this._previousHostParent.appendChild(this._host);\n }\n if (this._positionStrategy) {\n this._positionStrategy.attach(this);\n }\n this._updateStackingOrder();\n this._updateElementSize();\n this._updateElementDirection();\n if (this._scrollStrategy) {\n this._scrollStrategy.enable();\n }\n // Update the position once the zone is stable so that the overlay will be fully rendered\n // before attempting to position it, as the position may depend on the size of the rendered\n // content.\n this._ngZone.onStable\n .pipe(take(1))\n .subscribe(() => {\n // The overlay could've been detached before the zone has stabilized.\n if (this.hasAttached()) {\n this.updatePosition();\n }\n });\n // Enable pointer events for the overlay pane element.\n this._togglePointerEvents(true);\n if (this._config.hasBackdrop) {\n this._attachBackdrop();\n }\n if (this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, true);\n }\n // Only emit the `attachments` event once all other setup is done.\n this._attachments.next();\n // Track this overlay by the keyboard dispatcher\n this._keyboardDispatcher.add(this);\n if (this._config.disposeOnNavigation) {\n this._locationChanges = this._location.subscribe(() => this.dispose());\n }\n this._outsideClickDispatcher.add(this);\n return attachResult;\n }\n /**\n * Detaches an overlay from a portal.\n * @returns The portal detachment result.\n */\n detach() {\n if (!this.hasAttached()) {\n return;\n }\n this.detachBackdrop();\n // When the overlay is detached, the pane element should disable pointer events.\n // This is necessary because otherwise the pane element will cover the page and disable\n // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n this._togglePointerEvents(false);\n if (this._positionStrategy && this._positionStrategy.detach) {\n this._positionStrategy.detach();\n }\n if (this._scrollStrategy) {\n this._scrollStrategy.disable();\n }\n const detachmentResult = this._portalOutlet.detach();\n // Only emit after everything is detached.\n this._detachments.next();\n // Remove this overlay from keyboard dispatcher tracking.\n this._keyboardDispatcher.remove(this);\n // Keeping the host element in the DOM can cause scroll jank, because it still gets\n // rendered, even though it's transparent and unclickable which is why we remove it.\n this._detachContentWhenStable();\n this._locationChanges.unsubscribe();\n this._outsideClickDispatcher.remove(this);\n return detachmentResult;\n }\n /** Cleans up the overlay from the DOM. */\n dispose() {\n const isAttached = this.hasAttached();\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._disposeScrollStrategy();\n this._disposeBackdrop(this._backdropElement);\n this._locationChanges.unsubscribe();\n this._keyboardDispatcher.remove(this);\n this._portalOutlet.dispose();\n this._attachments.complete();\n this._backdropClick.complete();\n this._keydownEvents.complete();\n this._outsidePointerEvents.complete();\n this._outsideClickDispatcher.remove(this);\n if (this._host && this._host.parentNode) {\n this._host.parentNode.removeChild(this._host);\n this._host = null;\n }\n this._previousHostParent = this._pane = null;\n if (isAttached) {\n this._detachments.next();\n }\n this._detachments.complete();\n }\n /** Whether the overlay has attached content. */\n hasAttached() {\n return this._portalOutlet.hasAttached();\n }\n /** Gets an observable that emits when the backdrop has been clicked. */\n backdropClick() {\n return this._backdropClick;\n }\n /** Gets an observable that emits when the overlay has been attached. */\n attachments() {\n return this._attachments;\n }\n /** Gets an observable that emits when the overlay has been detached. */\n detachments() {\n return this._detachments;\n }\n /** Gets an observable of keydown events targeted to this overlay. */\n keydownEvents() {\n return this._keydownEvents;\n }\n /** Gets an observable of pointer events targeted outside this overlay. */\n outsidePointerEvents() {\n return this._outsidePointerEvents;\n }\n /** Gets the current overlay configuration, which is immutable. */\n getConfig() {\n return this._config;\n }\n /** Updates the position of the overlay based on the position strategy. */\n updatePosition() {\n if (this._positionStrategy) {\n this._positionStrategy.apply();\n }\n }\n /** Switches to a new position strategy and updates the overlay position. */\n updatePositionStrategy(strategy) {\n if (strategy === this._positionStrategy) {\n return;\n }\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._positionStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n this.updatePosition();\n }\n }\n /** Update the size properties of the overlay. */\n updateSize(sizeConfig) {\n this._config = Object.assign(Object.assign({}, this._config), sizeConfig);\n this._updateElementSize();\n }\n /** Sets the LTR/RTL direction for the overlay. */\n setDirection(dir) {\n this._config = Object.assign(Object.assign({}, this._config), { direction: dir });\n this._updateElementDirection();\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, true);\n }\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, false);\n }\n }\n /**\n * Returns the layout direction of the overlay panel.\n */\n getDirection() {\n const direction = this._config.direction;\n if (!direction) {\n return 'ltr';\n }\n return typeof direction === 'string' ? direction : direction.value;\n }\n /** Switches to a new scroll strategy. */\n updateScrollStrategy(strategy) {\n if (strategy === this._scrollStrategy) {\n return;\n }\n this._disposeScrollStrategy();\n this._scrollStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n strategy.enable();\n }\n }\n /** Updates the text direction of the overlay panel. */\n _updateElementDirection() {\n this._host.setAttribute('dir', this.getDirection());\n }\n /** Updates the size of the overlay element based on the overlay config. */\n _updateElementSize() {\n if (!this._pane) {\n return;\n }\n const style = this._pane.style;\n style.width = coerceCssPixelValue(this._config.width);\n style.height = coerceCssPixelValue(this._config.height);\n style.minWidth = coerceCssPixelValue(this._config.minWidth);\n style.minHeight = coerceCssPixelValue(this._config.minHeight);\n style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n }\n /** Toggles the pointer events for the overlay pane element. */\n _togglePointerEvents(enablePointer) {\n this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n }\n /** Attaches a backdrop for this overlay. */\n _attachBackdrop() {\n const showingClass = 'cdk-overlay-backdrop-showing';\n this._backdropElement = this._document.createElement('div');\n this._backdropElement.classList.add('cdk-overlay-backdrop');\n if (this._config.backdropClass) {\n this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n }\n // Insert the backdrop before the pane in the DOM order,\n // in order to handle stacked overlays properly.\n this._host.parentElement.insertBefore(this._backdropElement, this._host);\n // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n // action desired when such a click occurs (usually closing the overlay).\n this._backdropElement.addEventListener('click', this._backdropClickHandler);\n // Add class to fade-in the backdrop after one frame.\n if (typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n if (this._backdropElement) {\n this._backdropElement.classList.add(showingClass);\n }\n });\n });\n }\n else {\n this._backdropElement.classList.add(showingClass);\n }\n }\n /**\n * Updates the stacking order of the element, moving it to the top if necessary.\n * This is required in cases where one overlay was detached, while another one,\n * that should be behind it, was destroyed. The next time both of them are opened,\n * the stacking will be wrong, because the detached element's pane will still be\n * in its original DOM position.\n */\n _updateStackingOrder() {\n if (this._host.nextSibling) {\n this._host.parentNode.appendChild(this._host);\n }\n }\n /** Detaches the backdrop (if any) associated with the overlay. */\n detachBackdrop() {\n const backdropToDetach = this._backdropElement;\n if (!backdropToDetach) {\n return;\n }\n let timeoutId;\n const finishDetach = () => {\n // It may not be attached to anything in certain cases (e.g. unit tests).\n if (backdropToDetach) {\n backdropToDetach.removeEventListener('click', this._backdropClickHandler);\n backdropToDetach.removeEventListener('transitionend', finishDetach);\n this._disposeBackdrop(backdropToDetach);\n }\n if (this._config.backdropClass) {\n this._toggleClasses(backdropToDetach, this._config.backdropClass, false);\n }\n clearTimeout(timeoutId);\n };\n backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n this._ngZone.runOutsideAngular(() => {\n backdropToDetach.addEventListener('transitionend', finishDetach);\n });\n // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n // In this case we make it unclickable and we try to remove it after a delay.\n backdropToDetach.style.pointerEvents = 'none';\n // Run this outside the Angular zone because there's nothing that Angular cares about.\n // If it were to run inside the Angular zone, every test that used Overlay would have to be\n // either async or fakeAsync.\n timeoutId = this._ngZone.runOutsideAngular(() => setTimeout(finishDetach, 500));\n }\n /** Toggles a single CSS class or an array of classes on an element. */\n _toggleClasses(element, cssClasses, isAdd) {\n const classList = element.classList;\n coerceArray(cssClasses).forEach(cssClass => {\n // We can't do a spread here, because IE doesn't support setting multiple classes.\n // Also trying to add an empty string to a DOMTokenList will throw.\n if (cssClass) {\n isAdd ? classList.add(cssClass) : classList.remove(cssClass);\n }\n });\n }\n /** Detaches the overlay content next time the zone stabilizes. */\n _detachContentWhenStable() {\n // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n // be patched to run inside the zone, which will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => {\n // We can't remove the host here immediately, because the overlay pane's content\n // might still be animating. This stream helps us avoid interrupting the animation\n // by waiting for the pane to become empty.\n const subscription = this._ngZone.onStable\n .pipe(takeUntil(merge(this._attachments, this._detachments)))\n .subscribe(() => {\n // Needs a couple of checks for the pane and host, because\n // they may have been removed by the time the zone stabilizes.\n if (!this._pane || !this._host || this._pane.children.length === 0) {\n if (this._pane && this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, false);\n }\n if (this._host && this._host.parentElement) {\n this._previousHostParent = this._host.parentElement;\n this._previousHostParent.removeChild(this._host);\n }\n subscription.unsubscribe();\n }\n });\n });\n }\n /** Disposes of a scroll strategy. */\n _disposeScrollStrategy() {\n const scrollStrategy = this._scrollStrategy;\n if (scrollStrategy) {\n scrollStrategy.disable();\n if (scrollStrategy.detach) {\n scrollStrategy.detach();\n }\n }\n }\n /** Removes a backdrop element from the DOM. */\n _disposeBackdrop(backdrop) {\n if (backdrop) {\n if (backdrop.parentNode) {\n backdrop.parentNode.removeChild(backdrop);\n }\n // It is possible that a new portal has been attached to this overlay since we started\n // removing the backdrop. If that is the case, only clear the backdrop reference if it\n // is still the same instance that we started to remove.\n if (this._backdropElement === backdrop) {\n this._backdropElement = null;\n }\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n/** Class to be added to the overlay bounding box. */\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\nclass FlexibleConnectedPositionStrategy {\n constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n this._lastBoundingBoxSize = { width: 0, height: 0 };\n /** Whether the overlay was pushed in a previous positioning. */\n this._isPushed = false;\n /** Whether the overlay can be pushed on-screen on the initial open. */\n this._canPush = true;\n /** Whether the overlay can grow via flexible width/height after the initial open. */\n this._growAfterOpen = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n this._hasFlexibleDimensions = true;\n /** Whether the overlay position is locked. */\n this._positionLocked = false;\n /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n this._viewportMargin = 0;\n /** The Scrollable containers used to check scrollable view properties on position change. */\n this._scrollables = [];\n /** Ordered list of preferred positions, from most to least desirable. */\n this._preferredPositions = [];\n /** Subject that emits whenever the position changes. */\n this._positionChanges = new Subject();\n /** Subscription to viewport size changes. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Default offset for the overlay along the x axis. */\n this._offsetX = 0;\n /** Default offset for the overlay along the y axis. */\n this._offsetY = 0;\n /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n this._appliedPanelClasses = [];\n /** Observable sequence of position changes. */\n this.positionChanges = this._positionChanges;\n this.setOrigin(connectedTo);\n }\n /** Ordered list of preferred positions, from most to least desirable. */\n get positions() {\n return this._preferredPositions;\n }\n /** Attaches this position strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && overlayRef !== this._overlayRef &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This position strategy is already attached to an overlay');\n }\n this._validatePositions();\n overlayRef.hostElement.classList.add(boundingBoxClass);\n this._overlayRef = overlayRef;\n this._boundingBox = overlayRef.hostElement;\n this._pane = overlayRef.overlayElement;\n this._isDisposed = false;\n this._isInitialRender = true;\n this._lastPosition = null;\n this._resizeSubscription.unsubscribe();\n this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n // When the window is resized, we want to trigger the next reposition as if it\n // was an initial render, in order for the strategy to pick a new optimal position,\n // otherwise position locking will cause it to stay at the old one.\n this._isInitialRender = true;\n this.apply();\n });\n }\n /**\n * Updates the position of the overlay element, using whichever preferred position relative\n * to the origin best fits on-screen.\n *\n * The selection of a position goes as follows:\n * - If any positions fit completely within the viewport as-is,\n * choose the first position that does so.\n * - If flexible dimensions are enabled and at least one satifies the given minimum width/height,\n * choose the position with the greatest available size modified by the positions' weight.\n * - If pushing is enabled, take the position that went off-screen the least and push it\n * on-screen.\n * - If none of the previous criteria were met, use the position that goes off-screen the least.\n * @docs-private\n */\n apply() {\n // We shouldn't do anything if the strategy was disposed or we're on the server.\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n // If the position has been applied already (e.g. when the overlay was opened) and the\n // consumer opted into locking in the position, re-use the old position, in order to\n // prevent the overlay from jumping around.\n if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n this.reapplyLastPosition();\n return;\n }\n this._clearPanelClasses();\n this._resetOverlayElementStyles();\n this._resetBoundingBoxStyles();\n // We need the bounding rects for the origin and the overlay to determine how to position\n // the overlay relative to the origin.\n // We use the viewport rect to determine whether a position would go off-screen.\n this._viewportRect = this._getNarrowedViewportRect();\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n const originRect = this._originRect;\n const overlayRect = this._overlayRect;\n const viewportRect = this._viewportRect;\n // Positions where the overlay will fit with flexible dimensions.\n const flexibleFits = [];\n // Fallback if none of the preferred positions fit within the viewport.\n let fallback;\n // Go through each of the preferred positions looking for a good fit.\n // If a good fit is found, it will be applied immediately.\n for (let pos of this._preferredPositions) {\n // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n let originPoint = this._getOriginPoint(originRect, pos);\n // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n // overlay in this position. We use the top-left corner for calculations and later translate\n // this into an appropriate (top, left, bottom, right) style.\n let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);\n // Calculate how well the overlay would fit into the viewport with this point.\n let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);\n // If the overlay, without any further work, fits into the viewport, use this position.\n if (overlayFit.isCompletelyWithinViewport) {\n this._isPushed = false;\n this._applyPosition(pos, originPoint);\n return;\n }\n // If the overlay has flexible dimensions, we can use this position\n // so long as there's enough space for the minimum dimensions.\n if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n // Save positions where the overlay will fit with flexible dimensions. We will use these\n // if none of the positions fit *without* flexible dimensions.\n flexibleFits.push({\n position: pos,\n origin: originPoint,\n overlayRect,\n boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos)\n });\n continue;\n }\n // If the current preferred position does not fit on the screen, remember the position\n // if it has more visible area on-screen than we've seen and move onto the next preferred\n // position.\n if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n fallback = { overlayFit, overlayPoint, originPoint, position: pos, overlayRect };\n }\n }\n // If there are any positions where the overlay would fit with flexible dimensions, choose the\n // one that has the greatest area available modified by the position's weight\n if (flexibleFits.length) {\n let bestFit = null;\n let bestScore = -1;\n for (const fit of flexibleFits) {\n const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n if (score > bestScore) {\n bestScore = score;\n bestFit = fit;\n }\n }\n this._isPushed = false;\n this._applyPosition(bestFit.position, bestFit.origin);\n return;\n }\n // When none of the preferred positions fit within the viewport, take the position\n // that went off-screen the least and attempt to push it on-screen.\n if (this._canPush) {\n // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n this._isPushed = true;\n this._applyPosition(fallback.position, fallback.originPoint);\n return;\n }\n // All options for getting the overlay within the viewport have been exhausted, so go with the\n // position that went off-screen the least.\n this._applyPosition(fallback.position, fallback.originPoint);\n }\n detach() {\n this._clearPanelClasses();\n this._lastPosition = null;\n this._previousPushAmount = null;\n this._resizeSubscription.unsubscribe();\n }\n /** Cleanup after the element gets destroyed. */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n // We can't use `_resetBoundingBoxStyles` here, because it resets\n // some properties to zero, rather than removing them.\n if (this._boundingBox) {\n extendStyles(this._boundingBox.style, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n if (this._pane) {\n this._resetOverlayElementStyles();\n }\n if (this._overlayRef) {\n this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n }\n this.detach();\n this._positionChanges.complete();\n this._overlayRef = this._boundingBox = null;\n this._isDisposed = true;\n }\n /**\n * This re-aligns the overlay element with the trigger in its last calculated position,\n * even if a position higher in the \"preferred positions\" list would now fit. This\n * allows one to re-align the panel without changing the orientation of the panel.\n */\n reapplyLastPosition() {\n if (!this._isDisposed && (!this._platform || this._platform.isBrowser)) {\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._viewportRect = this._getNarrowedViewportRect();\n const lastPosition = this._lastPosition || this._preferredPositions[0];\n const originPoint = this._getOriginPoint(this._originRect, lastPosition);\n this._applyPosition(lastPosition, originPoint);\n }\n }\n /**\n * Sets the list of Scrollable containers that host the origin element so that\n * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n * Scrollable must be an ancestor element of the strategy's origin element.\n */\n withScrollableContainers(scrollables) {\n this._scrollables = scrollables;\n return this;\n }\n /**\n * Adds new preferred positions.\n * @param positions List of positions options for this overlay.\n */\n withPositions(positions) {\n this._preferredPositions = positions;\n // If the last calculated position object isn't part of the positions anymore, clear\n // it in order to avoid it being picked up if the consumer tries to re-apply.\n if (positions.indexOf(this._lastPosition) === -1) {\n this._lastPosition = null;\n }\n this._validatePositions();\n return this;\n }\n /**\n * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n * @param margin Required margin between the overlay and the viewport edge in pixels.\n */\n withViewportMargin(margin) {\n this._viewportMargin = margin;\n return this;\n }\n /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n withFlexibleDimensions(flexibleDimensions = true) {\n this._hasFlexibleDimensions = flexibleDimensions;\n return this;\n }\n /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n withGrowAfterOpen(growAfterOpen = true) {\n this._growAfterOpen = growAfterOpen;\n return this;\n }\n /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n withPush(canPush = true) {\n this._canPush = canPush;\n return this;\n }\n /**\n * Sets whether the overlay's position should be locked in after it is positioned\n * initially. When an overlay is locked in, it won't attempt to reposition itself\n * when the position is re-applied (e.g. when the user scrolls away).\n * @param isLocked Whether the overlay should locked in.\n */\n withLockedPosition(isLocked = true) {\n this._positionLocked = isLocked;\n return this;\n }\n /**\n * Sets the origin, relative to which to position the overlay.\n * Using an element origin is useful for building components that need to be positioned\n * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n * used for cases like contextual menus which open relative to the user's pointer.\n * @param origin Reference to the new origin.\n */\n setOrigin(origin) {\n this._origin = origin;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the x-axis.\n * @param offset New offset in the X axis.\n */\n withDefaultOffsetX(offset) {\n this._offsetX = offset;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the y-axis.\n * @param offset New offset in the Y axis.\n */\n withDefaultOffsetY(offset) {\n this._offsetY = offset;\n return this;\n }\n /**\n * Configures that the position strategy should set a `transform-origin` on some elements\n * inside the overlay, depending on the current position that is being applied. This is\n * useful for the cases where the origin of an animation can change depending on the\n * alignment of the overlay.\n * @param selector CSS selector that will be used to find the target\n * elements onto which to set the transform origin.\n */\n withTransformOriginOn(selector) {\n this._transformOriginSelector = selector;\n return this;\n }\n /**\n * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n */\n _getOriginPoint(originRect, pos) {\n let x;\n if (pos.originX == 'center') {\n // Note: when centering we should always use the `left`\n // offset, otherwise the position will be wrong in RTL.\n x = originRect.left + (originRect.width / 2);\n }\n else {\n const startX = this._isRtl() ? originRect.right : originRect.left;\n const endX = this._isRtl() ? originRect.left : originRect.right;\n x = pos.originX == 'start' ? startX : endX;\n }\n let y;\n if (pos.originY == 'center') {\n y = originRect.top + (originRect.height / 2);\n }\n else {\n y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n }\n return { x, y };\n }\n /**\n * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n * origin point to which the overlay should be connected.\n */\n _getOverlayPoint(originPoint, overlayRect, pos) {\n // Calculate the (overlayStartX, overlayStartY), the start of the\n // potential overlay position relative to the origin point.\n let overlayStartX;\n if (pos.overlayX == 'center') {\n overlayStartX = -overlayRect.width / 2;\n }\n else if (pos.overlayX === 'start') {\n overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n }\n else {\n overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n }\n let overlayStartY;\n if (pos.overlayY == 'center') {\n overlayStartY = -overlayRect.height / 2;\n }\n else {\n overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n }\n // The (x, y) coordinates of the overlay.\n return {\n x: originPoint.x + overlayStartX,\n y: originPoint.y + overlayStartY,\n };\n }\n /** Gets how well an overlay at the given point will fit within the viewport. */\n _getOverlayFit(point, rawOverlayRect, viewport, position) {\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n let { x, y } = point;\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n // Account for the offsets since they could push the overlay out of the viewport.\n if (offsetX) {\n x += offsetX;\n }\n if (offsetY) {\n y += offsetY;\n }\n // How much the overlay would overflow at this position, on each side.\n let leftOverflow = 0 - x;\n let rightOverflow = (x + overlay.width) - viewport.width;\n let topOverflow = 0 - y;\n let bottomOverflow = (y + overlay.height) - viewport.height;\n // Visible parts of the element on each axis.\n let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n let visibleArea = visibleWidth * visibleHeight;\n return {\n visibleArea,\n isCompletelyWithinViewport: (overlay.width * overlay.height) === visibleArea,\n fitsInViewportVertically: visibleHeight === overlay.height,\n fitsInViewportHorizontally: visibleWidth == overlay.width,\n };\n }\n /**\n * Whether the overlay can fit within the viewport when it may resize either its width or height.\n * @param fit How well the overlay fits in the viewport at some position.\n * @param point The (x, y) coordinates of the overlat at some position.\n * @param viewport The geometry of the viewport.\n */\n _canFitWithFlexibleDimensions(fit, point, viewport) {\n if (this._hasFlexibleDimensions) {\n const availableHeight = viewport.bottom - point.y;\n const availableWidth = viewport.right - point.x;\n const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n const verticalFit = fit.fitsInViewportVertically ||\n (minHeight != null && minHeight <= availableHeight);\n const horizontalFit = fit.fitsInViewportHorizontally ||\n (minWidth != null && minWidth <= availableWidth);\n return verticalFit && horizontalFit;\n }\n return false;\n }\n /**\n * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n * the viewport, the top-left corner will be pushed on-screen (with overflow occuring on the\n * right and bottom).\n *\n * @param start Starting point from which the overlay is pushed.\n * @param overlay Dimensions of the overlay.\n * @param scrollPosition Current viewport scroll position.\n * @returns The point at which to position the overlay after pushing. This is effectively a new\n * originPoint.\n */\n _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n // If the position is locked and we've pushed the overlay already, reuse the previous push\n // amount, rather than pushing it again. If we were to continue pushing, the element would\n // remain in the viewport, which goes against the expectations when position locking is enabled.\n if (this._previousPushAmount && this._positionLocked) {\n return {\n x: start.x + this._previousPushAmount.x,\n y: start.y + this._previousPushAmount.y\n };\n }\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n const viewport = this._viewportRect;\n // Determine how much the overlay goes outside the viewport on each\n // side, which we'll use to decide which direction to push it.\n const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);\n // Amount by which to push the overlay in each axis such that it remains on-screen.\n let pushX = 0;\n let pushY = 0;\n // If the overlay fits completely within the bounds of the viewport, push it from whichever\n // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n // viewport and allow for the trailing end of the overlay to go out of bounds.\n if (overlay.width <= viewport.width) {\n pushX = overflowLeft || -overflowRight;\n }\n else {\n pushX = start.x < this._viewportMargin ? (viewport.left - scrollPosition.left) - start.x : 0;\n }\n if (overlay.height <= viewport.height) {\n pushY = overflowTop || -overflowBottom;\n }\n else {\n pushY = start.y < this._viewportMargin ? (viewport.top - scrollPosition.top) - start.y : 0;\n }\n this._previousPushAmount = { x: pushX, y: pushY };\n return {\n x: start.x + pushX,\n y: start.y + pushY,\n };\n }\n /**\n * Applies a computed position to the overlay and emits a position change.\n * @param position The position preference\n * @param originPoint The point on the origin element where the overlay is connected.\n */\n _applyPosition(position, originPoint) {\n this._setTransformOrigin(position);\n this._setOverlayElementStyles(originPoint, position);\n this._setBoundingBoxStyles(originPoint, position);\n if (position.panelClass) {\n this._addPanelClasses(position.panelClass);\n }\n // Save the last connected position in case the position needs to be re-calculated.\n this._lastPosition = position;\n // Notify that the position has been changed along with its change properties.\n // We only emit if we've got any subscriptions, because the scroll visibility\n // calculcations can be somewhat expensive.\n if (this._positionChanges.observers.length) {\n const scrollableViewProperties = this._getScrollVisibility();\n const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);\n this._positionChanges.next(changeEvent);\n }\n this._isInitialRender = false;\n }\n /** Sets the transform origin based on the configured selector and the passed-in position. */\n _setTransformOrigin(position) {\n if (!this._transformOriginSelector) {\n return;\n }\n const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n let xOrigin;\n let yOrigin = position.overlayY;\n if (position.overlayX === 'center') {\n xOrigin = 'center';\n }\n else if (this._isRtl()) {\n xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n }\n else {\n xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n }\n for (let i = 0; i < elements.length; i++) {\n elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n }\n }\n /**\n * Gets the position and size of the overlay's sizing container.\n *\n * This method does no measuring and applies no styles so that we can cheaply compute the\n * bounds for all positions and choose the best fit based on these results.\n */\n _calculateBoundingBoxRect(origin, position) {\n const viewport = this._viewportRect;\n const isRtl = this._isRtl();\n let height, top, bottom;\n if (position.overlayY === 'top') {\n // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n top = origin.y;\n height = viewport.height - top + this._viewportMargin;\n }\n else if (position.overlayY === 'bottom') {\n // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n // the viewport margin back in, because the viewport rect is narrowed down to remove the\n // margin, whereas the `origin` position is calculated based on its `ClientRect`.\n bottom = viewport.height - origin.y + this._viewportMargin * 2;\n height = viewport.height - bottom + this._viewportMargin;\n }\n else {\n // If neither top nor bottom, it means that the overlay is vertically centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n // `origin.y - viewport.top`.\n const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n const previousHeight = this._lastBoundingBoxSize.height;\n height = smallestDistanceToViewportEdge * 2;\n top = origin.y - smallestDistanceToViewportEdge;\n if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n top = origin.y - (previousHeight / 2);\n }\n }\n // The overlay is opening 'right-ward' (the content flows to the right).\n const isBoundedByRightViewportEdge = (position.overlayX === 'start' && !isRtl) ||\n (position.overlayX === 'end' && isRtl);\n // The overlay is opening 'left-ward' (the content flows to the left).\n const isBoundedByLeftViewportEdge = (position.overlayX === 'end' && !isRtl) ||\n (position.overlayX === 'start' && isRtl);\n let width, left, right;\n if (isBoundedByLeftViewportEdge) {\n right = viewport.width - origin.x + this._viewportMargin;\n width = origin.x - this._viewportMargin;\n }\n else if (isBoundedByRightViewportEdge) {\n left = origin.x;\n width = viewport.right - origin.x;\n }\n else {\n // If neither start nor end, it means that the overlay is horizontally centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.right - origin.x` and\n // `origin.x - viewport.left`.\n const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n const previousWidth = this._lastBoundingBoxSize.width;\n width = smallestDistanceToViewportEdge * 2;\n left = origin.x - smallestDistanceToViewportEdge;\n if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n left = origin.x - (previousWidth / 2);\n }\n }\n return { top: top, left: left, bottom: bottom, right: right, width, height };\n }\n /**\n * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n * origin's connection point and stetches to the bounds of the viewport.\n *\n * @param origin The point on the origin element where the overlay is connected.\n * @param position The position preference\n */\n _setBoundingBoxStyles(origin, position) {\n const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);\n // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n // when applying a new size.\n if (!this._isInitialRender && !this._growAfterOpen) {\n boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n }\n const styles = {};\n if (this._hasExactPosition()) {\n styles.top = styles.left = '0';\n styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n styles.width = styles.height = '100%';\n }\n else {\n const maxHeight = this._overlayRef.getConfig().maxHeight;\n const maxWidth = this._overlayRef.getConfig().maxWidth;\n styles.height = coerceCssPixelValue(boundingBoxRect.height);\n styles.top = coerceCssPixelValue(boundingBoxRect.top);\n styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n styles.width = coerceCssPixelValue(boundingBoxRect.width);\n styles.left = coerceCssPixelValue(boundingBoxRect.left);\n styles.right = coerceCssPixelValue(boundingBoxRect.right);\n // Push the pane content towards the proper direction.\n if (position.overlayX === 'center') {\n styles.alignItems = 'center';\n }\n else {\n styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n }\n if (position.overlayY === 'center') {\n styles.justifyContent = 'center';\n }\n else {\n styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n }\n if (maxHeight) {\n styles.maxHeight = coerceCssPixelValue(maxHeight);\n }\n if (maxWidth) {\n styles.maxWidth = coerceCssPixelValue(maxWidth);\n }\n }\n this._lastBoundingBoxSize = boundingBoxRect;\n extendStyles(this._boundingBox.style, styles);\n }\n /** Resets the styles for the bounding box so that a new positioning can be computed. */\n _resetBoundingBoxStyles() {\n extendStyles(this._boundingBox.style, {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n _resetOverlayElementStyles() {\n extendStyles(this._pane.style, {\n top: '',\n left: '',\n bottom: '',\n right: '',\n position: '',\n transform: '',\n });\n }\n /** Sets positioning styles to the overlay element. */\n _setOverlayElementStyles(originPoint, position) {\n const styles = {};\n const hasExactPosition = this._hasExactPosition();\n const hasFlexibleDimensions = this._hasFlexibleDimensions;\n const config = this._overlayRef.getConfig();\n if (hasExactPosition) {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n }\n else {\n styles.position = 'static';\n }\n // Use a transform to apply the offsets. We do this because the `center` positions rely on\n // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n // off the position. We also can't use margins, because they won't have an effect in some\n // cases where the element doesn't have anything to \"push off of\". Finally, this works\n // better both with flexible and non-flexible positioning.\n let transformString = '';\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n if (offsetX) {\n transformString += `translateX(${offsetX}px) `;\n }\n if (offsetY) {\n transformString += `translateY(${offsetY}px)`;\n }\n styles.transform = transformString.trim();\n // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n // Note that this doesn't apply when we have an exact position, in which case we do want to\n // apply them because they'll be cleared from the bounding box.\n if (config.maxHeight) {\n if (hasExactPosition) {\n styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n }\n else if (hasFlexibleDimensions) {\n styles.maxHeight = '';\n }\n }\n if (config.maxWidth) {\n if (hasExactPosition) {\n styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n }\n else if (hasFlexibleDimensions) {\n styles.maxWidth = '';\n }\n }\n extendStyles(this._pane.style, styles);\n }\n /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayY(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the\n // preferred position has changed since the last `apply`.\n let styles = { top: '', bottom: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n let virtualKeyboardOffset = this._overlayContainer.getContainerElement().getBoundingClientRect().top;\n // Normally this would be zero, however when the overlay is attached to an input (e.g. in an\n // autocomplete), mobile browsers will shift everything in order to put the input in the middle\n // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n // otherwise our positioning will be thrown off.\n overlayPoint.y -= virtualKeyboardOffset;\n // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n // above or below the origin and the direction in which the element will expand.\n if (position.overlayY === 'bottom') {\n // When using `bottom`, we adjust the y position such that it is the distance\n // from the bottom of the viewport rather than the top.\n const documentHeight = this._document.documentElement.clientHeight;\n styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n }\n else {\n styles.top = coerceCssPixelValue(overlayPoint.y);\n }\n return styles;\n }\n /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayX(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the preferred position has\n // changed since the last `apply`.\n let styles = { left: '', right: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n // or \"after\" the origin, which determines the direction in which the element will expand.\n // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n // page is in RTL or LTR.\n let horizontalStyleProperty;\n if (this._isRtl()) {\n horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n }\n else {\n horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n }\n // When we're setting `right`, we adjust the x position such that it is the distance\n // from the right edge of the viewport rather than the left edge.\n if (horizontalStyleProperty === 'right') {\n const documentWidth = this._document.documentElement.clientWidth;\n styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n }\n else {\n styles.left = coerceCssPixelValue(overlayPoint.x);\n }\n return styles;\n }\n /**\n * Gets the view properties of the trigger and overlay, including whether they are clipped\n * or completely outside the view of any of the strategy's scrollables.\n */\n _getScrollVisibility() {\n // Note: needs fresh rects since the position could've changed.\n const originBounds = this._getOriginRect();\n const overlayBounds = this._pane.getBoundingClientRect();\n // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n // every time, we should be able to use the scrollTop of the containers if the size of those\n // containers hasn't changed.\n const scrollContainerBounds = this._scrollables.map(scrollable => {\n return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n });\n return {\n isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds),\n };\n }\n /** Subtracts the amount that an element is overflowing on an axis from its length. */\n _subtractOverflows(length, ...overflows) {\n return overflows.reduce((currentValue, currentOverflow) => {\n return currentValue - Math.max(currentOverflow, 0);\n }, length);\n }\n /** Narrows the given viewport rect by the current _viewportMargin. */\n _getNarrowedViewportRect() {\n // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n // and `innerHeight` that do. This is necessary, because the overlay container uses\n // 100% `width` and `height` which don't include the scrollbar either.\n const width = this._document.documentElement.clientWidth;\n const height = this._document.documentElement.clientHeight;\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n return {\n top: scrollPosition.top + this._viewportMargin,\n left: scrollPosition.left + this._viewportMargin,\n right: scrollPosition.left + width - this._viewportMargin,\n bottom: scrollPosition.top + height - this._viewportMargin,\n width: width - (2 * this._viewportMargin),\n height: height - (2 * this._viewportMargin),\n };\n }\n /** Whether the we're dealing with an RTL context */\n _isRtl() {\n return this._overlayRef.getDirection() === 'rtl';\n }\n /** Determines whether the overlay uses exact or flexible positioning. */\n _hasExactPosition() {\n return !this._hasFlexibleDimensions || this._isPushed;\n }\n /** Retrieves the offset of a position along the x or y axis. */\n _getOffset(position, axis) {\n if (axis === 'x') {\n // We don't do something like `position['offset' + axis]` in\n // order to avoid breking minifiers that rename properties.\n return position.offsetX == null ? this._offsetX : position.offsetX;\n }\n return position.offsetY == null ? this._offsetY : position.offsetY;\n }\n /** Validates that the current position match the expected values. */\n _validatePositions() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._preferredPositions.length) {\n throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n }\n // TODO(crisbeto): remove these once Angular's template type\n // checking is advanced enough to catch these cases.\n this._preferredPositions.forEach(pair => {\n validateHorizontalPosition('originX', pair.originX);\n validateVerticalPosition('originY', pair.originY);\n validateHorizontalPosition('overlayX', pair.overlayX);\n validateVerticalPosition('overlayY', pair.overlayY);\n });\n }\n }\n /** Adds a single CSS class or an array of classes on the overlay panel. */\n _addPanelClasses(cssClasses) {\n if (this._pane) {\n coerceArray(cssClasses).forEach(cssClass => {\n if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n this._appliedPanelClasses.push(cssClass);\n this._pane.classList.add(cssClass);\n }\n });\n }\n }\n /** Clears the classes that the position strategy has applied from the overlay panel. */\n _clearPanelClasses() {\n if (this._pane) {\n this._appliedPanelClasses.forEach(cssClass => {\n this._pane.classList.remove(cssClass);\n });\n this._appliedPanelClasses = [];\n }\n }\n /** Returns the ClientRect of the current origin. */\n _getOriginRect() {\n const origin = this._origin;\n if (origin instanceof ElementRef) {\n return origin.nativeElement.getBoundingClientRect();\n }\n // Check for Element so SVG elements are also supported.\n if (origin instanceof Element) {\n return origin.getBoundingClientRect();\n }\n const width = origin.width || 0;\n const height = origin.height || 0;\n // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n return {\n top: origin.y,\n bottom: origin.y + height,\n left: origin.x,\n right: origin.x + width,\n height,\n width\n };\n }\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\nfunction extendStyles(destination, source) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\nfunction getPixelValue(input) {\n if (typeof input !== 'number' && input != null) {\n const [value, units] = input.split(cssUnitPattern);\n return (!units || units === 'px') ? parseFloat(value) : null;\n }\n return input || null;\n}\n/**\n * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\nfunction getRoundedBoundingClientRect(clientRect) {\n return {\n top: Math.floor(clientRect.top),\n right: Math.floor(clientRect.right),\n bottom: Math.floor(clientRect.bottom),\n left: Math.floor(clientRect.left),\n width: Math.floor(clientRect.width),\n height: Math.floor(clientRect.height)\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative to some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n * @deprecated Use `FlexibleConnectedPositionStrategy` instead.\n * @breaking-change 8.0.0\n */\nclass ConnectedPositionStrategy {\n constructor(originPos, overlayPos, connectedTo, viewportRuler, document, platform, overlayContainer) {\n /** Ordered list of preferred positions, from most to least desirable. */\n this._preferredPositions = [];\n // Since the `ConnectedPositionStrategy` is deprecated and we don't want to maintain\n // the extra logic, we create an instance of the positioning strategy that has some\n // defaults that make it behave as the old position strategy and to which we'll\n // proxy all of the API calls.\n this._positionStrategy = new FlexibleConnectedPositionStrategy(connectedTo, viewportRuler, document, platform, overlayContainer)\n .withFlexibleDimensions(false)\n .withPush(false)\n .withViewportMargin(0);\n this.withFallbackPosition(originPos, overlayPos);\n this.onPositionChange = this._positionStrategy.positionChanges;\n }\n /** Ordered list of preferred positions, from most to least desirable. */\n get positions() {\n return this._preferredPositions;\n }\n /** Attach this position strategy to an overlay. */\n attach(overlayRef) {\n this._overlayRef = overlayRef;\n this._positionStrategy.attach(overlayRef);\n if (this._direction) {\n overlayRef.setDirection(this._direction);\n this._direction = null;\n }\n }\n /** Disposes all resources used by the position strategy. */\n dispose() {\n this._positionStrategy.dispose();\n }\n /** @docs-private */\n detach() {\n this._positionStrategy.detach();\n }\n /**\n * Updates the position of the overlay element, using whichever preferred position relative\n * to the origin fits on-screen.\n * @docs-private\n */\n apply() {\n this._positionStrategy.apply();\n }\n /**\n * Re-positions the overlay element with the trigger in its last calculated position,\n * even if a position higher in the \"preferred positions\" list would now fit. This\n * allows one to re-align the panel without changing the orientation of the panel.\n */\n recalculateLastPosition() {\n this._positionStrategy.reapplyLastPosition();\n }\n /**\n * Sets the list of Scrollable containers that host the origin element so that\n * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n * Scrollable must be an ancestor element of the strategy's origin element.\n */\n withScrollableContainers(scrollables) {\n this._positionStrategy.withScrollableContainers(scrollables);\n }\n /**\n * Adds a new preferred fallback position.\n * @param originPos\n * @param overlayPos\n */\n withFallbackPosition(originPos, overlayPos, offsetX, offsetY) {\n const position = new ConnectionPositionPair(originPos, overlayPos, offsetX, offsetY);\n this._preferredPositions.push(position);\n this._positionStrategy.withPositions(this._preferredPositions);\n return this;\n }\n /**\n * Sets the layout direction so the overlay's position can be adjusted to match.\n * @param dir New layout direction.\n */\n withDirection(dir) {\n // Since the direction might be declared before the strategy is attached,\n // we save the value in a temporary property and we'll transfer it to the\n // overlay ref on attachment.\n if (this._overlayRef) {\n this._overlayRef.setDirection(dir);\n }\n else {\n this._direction = dir;\n }\n return this;\n }\n /**\n * Sets an offset for the overlay's connection point on the x-axis\n * @param offset New offset in the X axis.\n */\n withOffsetX(offset) {\n this._positionStrategy.withDefaultOffsetX(offset);\n return this;\n }\n /**\n * Sets an offset for the overlay's connection point on the y-axis\n * @param offset New offset in the Y axis.\n */\n withOffsetY(offset) {\n this._positionStrategy.withDefaultOffsetY(offset);\n return this;\n }\n /**\n * Sets whether the overlay's position should be locked in after it is positioned\n * initially. When an overlay is locked in, it won't attempt to reposition itself\n * when the position is re-applied (e.g. when the user scrolls away).\n * @param isLocked Whether the overlay should locked in.\n */\n withLockedPosition(isLocked) {\n this._positionStrategy.withLockedPosition(isLocked);\n return this;\n }\n /**\n * Overwrites the current set of positions with an array of new ones.\n * @param positions Position pairs to be set on the strategy.\n */\n withPositions(positions) {\n this._preferredPositions = positions.slice();\n this._positionStrategy.withPositions(this._preferredPositions);\n return this;\n }\n /**\n * Sets the origin element, relative to which to position the overlay.\n * @param origin Reference to the new origin element.\n */\n setOrigin(origin) {\n this._positionStrategy.setOrigin(origin);\n return this;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Class to be added to the overlay pane wrapper. */\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\nclass GlobalPositionStrategy {\n constructor() {\n this._cssPosition = 'static';\n this._topOffset = '';\n this._bottomOffset = '';\n this._leftOffset = '';\n this._rightOffset = '';\n this._alignItems = '';\n this._justifyContent = '';\n this._width = '';\n this._height = '';\n }\n attach(overlayRef) {\n const config = overlayRef.getConfig();\n this._overlayRef = overlayRef;\n if (this._width && !config.width) {\n overlayRef.updateSize({ width: this._width });\n }\n if (this._height && !config.height) {\n overlayRef.updateSize({ height: this._height });\n }\n overlayRef.hostElement.classList.add(wrapperClass);\n this._isDisposed = false;\n }\n /**\n * Sets the top position of the overlay. Clears any previously set vertical position.\n * @param value New top offset.\n */\n top(value = '') {\n this._bottomOffset = '';\n this._topOffset = value;\n this._alignItems = 'flex-start';\n return this;\n }\n /**\n * Sets the left position of the overlay. Clears any previously set horizontal position.\n * @param value New left offset.\n */\n left(value = '') {\n this._rightOffset = '';\n this._leftOffset = value;\n this._justifyContent = 'flex-start';\n return this;\n }\n /**\n * Sets the bottom position of the overlay. Clears any previously set vertical position.\n * @param value New bottom offset.\n */\n bottom(value = '') {\n this._topOffset = '';\n this._bottomOffset = value;\n this._alignItems = 'flex-end';\n return this;\n }\n /**\n * Sets the right position of the overlay. Clears any previously set horizontal position.\n * @param value New right offset.\n */\n right(value = '') {\n this._leftOffset = '';\n this._rightOffset = value;\n this._justifyContent = 'flex-end';\n return this;\n }\n /**\n * Sets the overlay width and clears any previously set width.\n * @param value New width for the overlay\n * @deprecated Pass the `width` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n width(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ width: value });\n }\n else {\n this._width = value;\n }\n return this;\n }\n /**\n * Sets the overlay height and clears any previously set height.\n * @param value New height for the overlay\n * @deprecated Pass the `height` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n height(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ height: value });\n }\n else {\n this._height = value;\n }\n return this;\n }\n /**\n * Centers the overlay horizontally with an optional offset.\n * Clears any previously set horizontal position.\n *\n * @param offset Overlay offset from the horizontal center.\n */\n centerHorizontally(offset = '') {\n this.left(offset);\n this._justifyContent = 'center';\n return this;\n }\n /**\n * Centers the overlay vertically with an optional offset.\n * Clears any previously set vertical position.\n *\n * @param offset Overlay offset from the vertical center.\n */\n centerVertically(offset = '') {\n this.top(offset);\n this._alignItems = 'center';\n return this;\n }\n /**\n * Apply the position to the element.\n * @docs-private\n */\n apply() {\n // Since the overlay ref applies the strategy asynchronously, it could\n // have been disposed before it ends up being applied. If that is the\n // case, we shouldn't do anything.\n if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parentStyles = this._overlayRef.hostElement.style;\n const config = this._overlayRef.getConfig();\n const { width, height, maxWidth, maxHeight } = config;\n const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') &&\n (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n const shouldBeFlushVertically = (height === '100%' || height === '100vh') &&\n (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n styles.position = this._cssPosition;\n styles.marginLeft = shouldBeFlushHorizontally ? '0' : this._leftOffset;\n styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n styles.marginBottom = this._bottomOffset;\n styles.marginRight = this._rightOffset;\n if (shouldBeFlushHorizontally) {\n parentStyles.justifyContent = 'flex-start';\n }\n else if (this._justifyContent === 'center') {\n parentStyles.justifyContent = 'center';\n }\n else if (this._overlayRef.getConfig().direction === 'rtl') {\n // In RTL the browser will invert `flex-start` and `flex-end` automatically, but we\n // don't want that because our positioning is explicitly `left` and `right`, hence\n // why we do another inversion to ensure that the overlay stays in the same position.\n // TODO: reconsider this if we add `start` and `end` methods.\n if (this._justifyContent === 'flex-start') {\n parentStyles.justifyContent = 'flex-end';\n }\n else if (this._justifyContent === 'flex-end') {\n parentStyles.justifyContent = 'flex-start';\n }\n }\n else {\n parentStyles.justifyContent = this._justifyContent;\n }\n parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n }\n /**\n * Cleans up the DOM changes from the position strategy.\n * @docs-private\n */\n dispose() {\n if (this._isDisposed || !this._overlayRef) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parent = this._overlayRef.hostElement;\n const parentStyles = parent.style;\n parent.classList.remove(wrapperClass);\n parentStyles.justifyContent = parentStyles.alignItems = styles.marginTop =\n styles.marginBottom = styles.marginLeft = styles.marginRight = styles.position = '';\n this._overlayRef = null;\n this._isDisposed = true;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Builder for overlay position strategy. */\nclass OverlayPositionBuilder {\n constructor(_viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n }\n /**\n * Creates a global position strategy.\n */\n global() {\n return new GlobalPositionStrategy();\n }\n /**\n * Creates a relative position strategy.\n * @param elementRef\n * @param originPos\n * @param overlayPos\n * @deprecated Use `flexibleConnectedTo` instead.\n * @breaking-change 8.0.0\n */\n connectedTo(elementRef, originPos, overlayPos) {\n return new ConnectedPositionStrategy(originPos, overlayPos, elementRef, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n }\n /**\n * Creates a flexible position strategy.\n * @param origin Origin relative to which to position the overlay.\n */\n flexibleConnectedTo(origin) {\n return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n }\n}\nOverlayPositionBuilder.ɵfac = function OverlayPositionBuilder_Factory(t) { return new (t || OverlayPositionBuilder)(ɵngcc0.ɵɵinject(ɵngcc1.ViewportRuler), ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ɵngcc2.Platform), ɵngcc0.ɵɵinject(OverlayContainer)); };\nOverlayPositionBuilder.ɵprov = i0.ɵɵdefineInjectable({ factory: function OverlayPositionBuilder_Factory() { return new OverlayPositionBuilder(i0.ɵɵinject(i1.ViewportRuler), i0.ɵɵinject(i1$1.DOCUMENT), i0.ɵɵinject(i2.Platform), i0.ɵɵinject(OverlayContainer)); }, token: OverlayPositionBuilder, providedIn: \"root\" });\nOverlayPositionBuilder.ctorParameters = () => [\n { type: ViewportRuler },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: Platform },\n { type: OverlayContainer }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(OverlayPositionBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc1.ViewportRuler }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc2.Platform }, { type: OverlayContainer }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Next overlay unique ID. */\nlet nextUniqueId = 0;\n// Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver\n// which needs to be different depending on where OverlayModule is imported.\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n constructor(\n /** Scrolling strategies that can be used when creating an overlay. */\n scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _keyboardDispatcher, _injector, _ngZone, _document, _directionality, _location, _outsideClickDispatcher) {\n this.scrollStrategies = scrollStrategies;\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._positionBuilder = _positionBuilder;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._injector = _injector;\n this._ngZone = _ngZone;\n this._document = _document;\n this._directionality = _directionality;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n }\n /**\n * Creates an overlay.\n * @param config Configuration applied to the overlay.\n * @returns Reference to the created overlay.\n */\n create(config) {\n const host = this._createHostElement();\n const pane = this._createPaneElement(host);\n const portalOutlet = this._createPortalOutlet(pane);\n const overlayConfig = new OverlayConfig(config);\n overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher);\n }\n /**\n * Gets a position builder that can be used, via fluent API,\n * to construct and configure a position strategy.\n * @returns An overlay position builder.\n */\n position() {\n return this._positionBuilder;\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(host) {\n const pane = this._document.createElement('div');\n pane.id = `cdk-overlay-${nextUniqueId++}`;\n pane.classList.add('cdk-overlay-pane');\n host.appendChild(pane);\n return pane;\n }\n /**\n * Creates the host element that wraps around an overlay\n * and can be used for advanced positioning.\n * @returns Newly-create host element.\n */\n _createHostElement() {\n const host = this._document.createElement('div');\n this._overlayContainer.getContainerElement().appendChild(host);\n return host;\n }\n /**\n * Create a DomPortalOutlet into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal outlet.\n * @returns A portal outlet for the given DOM element.\n */\n _createPortalOutlet(pane) {\n // We have to resolve the ApplicationRef later in order to allow people\n // to use overlay-based providers during app initialization.\n if (!this._appRef) {\n this._appRef = this._injector.get(ApplicationRef);\n }\n return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector, this._document);\n }\n}\nOverlay.ɵfac = function Overlay_Factory(t) { return new (t || Overlay)(ɵngcc0.ɵɵinject(ScrollStrategyOptions), ɵngcc0.ɵɵinject(OverlayContainer), ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(OverlayPositionBuilder), ɵngcc0.ɵɵinject(OverlayKeyboardDispatcher), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ɵngcc3.Directionality), ɵngcc0.ɵɵinject(ɵngcc4.Location), ɵngcc0.ɵɵinject(OverlayOutsideClickDispatcher)); };\nOverlay.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: Overlay, factory: Overlay.ɵfac });\nOverlay.ctorParameters = () => [\n { type: ScrollStrategyOptions },\n { type: OverlayContainer },\n { type: ComponentFactoryResolver },\n { type: OverlayPositionBuilder },\n { type: OverlayKeyboardDispatcher },\n { type: Injector },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: Directionality },\n { type: Location },\n { type: OverlayOutsideClickDispatcher }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Overlay, [{\n type: Injectable\n }], function () { return [{ type: ScrollStrategyOptions }, { type: OverlayContainer }, { type: ɵngcc0.ComponentFactoryResolver }, { type: OverlayPositionBuilder }, { type: OverlayKeyboardDispatcher }, { type: ɵngcc0.Injector }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc3.Directionality }, { type: ɵngcc4.Location }, { type: OverlayOutsideClickDispatcher }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\nconst defaultPositionList = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }\n];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy');\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\nclass CdkOverlayOrigin {\n constructor(\n /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n}\nCdkOverlayOrigin.ɵfac = function CdkOverlayOrigin_Factory(t) { return new (t || CdkOverlayOrigin)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nCdkOverlayOrigin.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkOverlayOrigin, selectors: [[\"\", \"cdk-overlay-origin\", \"\"], [\"\", \"overlay-origin\", \"\"], [\"\", \"cdkOverlayOrigin\", \"\"]], exportAs: [\"cdkOverlayOrigin\"] });\nCdkOverlayOrigin.ctorParameters = () => [\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkOverlayOrigin, [{\n type: Directive,\n args: [{\n selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n exportAs: 'cdkOverlayOrigin'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, null); })();\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\nclass CdkConnectedOverlay {\n // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n constructor(_overlay, templateRef, viewContainerRef, scrollStrategyFactory, _dir) {\n this._overlay = _overlay;\n this._dir = _dir;\n this._hasBackdrop = false;\n this._lockPosition = false;\n this._growAfterOpen = false;\n this._flexibleDimensions = false;\n this._push = false;\n this._backdropSubscription = Subscription.EMPTY;\n this._attachSubscription = Subscription.EMPTY;\n this._detachSubscription = Subscription.EMPTY;\n this._positionSubscription = Subscription.EMPTY;\n /** Margin between the overlay and the viewport edges. */\n this.viewportMargin = 0;\n /** Whether the overlay is open. */\n this.open = false;\n /** Whether the overlay can be closed by user interaction. */\n this.disableClose = false;\n /** Event emitted when the backdrop is clicked. */\n this.backdropClick = new EventEmitter();\n /** Event emitted when the position has changed. */\n this.positionChange = new EventEmitter();\n /** Event emitted when the overlay has been attached. */\n this.attach = new EventEmitter();\n /** Event emitted when the overlay has been detached. */\n this.detach = new EventEmitter();\n /** Emits when there are keyboard events that are targeted at the overlay. */\n this.overlayKeydown = new EventEmitter();\n /** Emits when there are mouse outside click events that are targeted at the overlay. */\n this.overlayOutsideClick = new EventEmitter();\n this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n this._scrollStrategyFactory = scrollStrategyFactory;\n this.scrollStrategy = this._scrollStrategyFactory();\n }\n /** The offset in pixels for the overlay connection point on the x-axis */\n get offsetX() { return this._offsetX; }\n set offsetX(offsetX) {\n this._offsetX = offsetX;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** The offset in pixels for the overlay connection point on the y-axis */\n get offsetY() { return this._offsetY; }\n set offsetY(offsetY) {\n this._offsetY = offsetY;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** Whether or not the overlay should attach a backdrop. */\n get hasBackdrop() { return this._hasBackdrop; }\n set hasBackdrop(value) { this._hasBackdrop = coerceBooleanProperty(value); }\n /** Whether or not the overlay should be locked when scrolling. */\n get lockPosition() { return this._lockPosition; }\n set lockPosition(value) { this._lockPosition = coerceBooleanProperty(value); }\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n get flexibleDimensions() { return this._flexibleDimensions; }\n set flexibleDimensions(value) {\n this._flexibleDimensions = coerceBooleanProperty(value);\n }\n /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n get growAfterOpen() { return this._growAfterOpen; }\n set growAfterOpen(value) { this._growAfterOpen = coerceBooleanProperty(value); }\n /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n get push() { return this._push; }\n set push(value) { this._push = coerceBooleanProperty(value); }\n /** The associated overlay reference. */\n get overlayRef() {\n return this._overlayRef;\n }\n /** The element's layout direction. */\n get dir() {\n return this._dir ? this._dir.value : 'ltr';\n }\n ngOnDestroy() {\n this._attachSubscription.unsubscribe();\n this._detachSubscription.unsubscribe();\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n }\n ngOnChanges(changes) {\n if (this._position) {\n this._updatePositionStrategy(this._position);\n this._overlayRef.updateSize({\n width: this.width,\n minWidth: this.minWidth,\n height: this.height,\n minHeight: this.minHeight,\n });\n if (changes['origin'] && this.open) {\n this._position.apply();\n }\n }\n if (changes['open']) {\n this.open ? this._attachOverlay() : this._detachOverlay();\n }\n }\n /** Creates an overlay */\n _createOverlay() {\n if (!this.positions || !this.positions.length) {\n this.positions = defaultPositionList;\n }\n const overlayRef = this._overlayRef = this._overlay.create(this._buildConfig());\n this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n overlayRef.keydownEvents().subscribe((event) => {\n this.overlayKeydown.next(event);\n if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n event.preventDefault();\n this._detachOverlay();\n }\n });\n this._overlayRef.outsidePointerEvents().subscribe((event) => {\n this.overlayOutsideClick.next(event);\n });\n }\n /** Builds the overlay config based on the directive's inputs */\n _buildConfig() {\n const positionStrategy = this._position =\n this.positionStrategy || this._createPositionStrategy();\n const overlayConfig = new OverlayConfig({\n direction: this._dir,\n positionStrategy,\n scrollStrategy: this.scrollStrategy,\n hasBackdrop: this.hasBackdrop\n });\n if (this.width || this.width === 0) {\n overlayConfig.width = this.width;\n }\n if (this.height || this.height === 0) {\n overlayConfig.height = this.height;\n }\n if (this.minWidth || this.minWidth === 0) {\n overlayConfig.minWidth = this.minWidth;\n }\n if (this.minHeight || this.minHeight === 0) {\n overlayConfig.minHeight = this.minHeight;\n }\n if (this.backdropClass) {\n overlayConfig.backdropClass = this.backdropClass;\n }\n if (this.panelClass) {\n overlayConfig.panelClass = this.panelClass;\n }\n return overlayConfig;\n }\n /** Updates the state of a position strategy, based on the values of the directive inputs. */\n _updatePositionStrategy(positionStrategy) {\n const positions = this.positions.map(currentPosition => ({\n originX: currentPosition.originX,\n originY: currentPosition.originY,\n overlayX: currentPosition.overlayX,\n overlayY: currentPosition.overlayY,\n offsetX: currentPosition.offsetX || this.offsetX,\n offsetY: currentPosition.offsetY || this.offsetY,\n panelClass: currentPosition.panelClass || undefined,\n }));\n return positionStrategy\n .setOrigin(this.origin.elementRef)\n .withPositions(positions)\n .withFlexibleDimensions(this.flexibleDimensions)\n .withPush(this.push)\n .withGrowAfterOpen(this.growAfterOpen)\n .withViewportMargin(this.viewportMargin)\n .withLockedPosition(this.lockPosition)\n .withTransformOriginOn(this.transformOriginSelector);\n }\n /** Returns the position strategy of the overlay to be set on the overlay config */\n _createPositionStrategy() {\n const strategy = this._overlay.position().flexibleConnectedTo(this.origin.elementRef);\n this._updatePositionStrategy(strategy);\n return strategy;\n }\n /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n _attachOverlay() {\n if (!this._overlayRef) {\n this._createOverlay();\n }\n else {\n // Update the overlay size, in case the directive's inputs have changed\n this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n }\n if (!this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._templatePortal);\n }\n if (this.hasBackdrop) {\n this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n this.backdropClick.emit(event);\n });\n }\n else {\n this._backdropSubscription.unsubscribe();\n }\n this._positionSubscription.unsubscribe();\n // Only subscribe to `positionChanges` if requested, because putting\n // together all the information for it can be expensive.\n if (this.positionChange.observers.length > 0) {\n this._positionSubscription = this._position.positionChanges\n .pipe(takeWhile(() => this.positionChange.observers.length > 0))\n .subscribe(position => {\n this.positionChange.emit(position);\n if (this.positionChange.observers.length === 0) {\n this._positionSubscription.unsubscribe();\n }\n });\n }\n }\n /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n _detachOverlay() {\n if (this._overlayRef) {\n this._overlayRef.detach();\n }\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n }\n}\nCdkConnectedOverlay.ɵfac = function CdkConnectedOverlay_Factory(t) { return new (t || CdkConnectedOverlay)(ɵngcc0.ɵɵdirectiveInject(Overlay), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.Directionality, 8)); };\nCdkConnectedOverlay.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkConnectedOverlay, selectors: [[\"\", \"cdk-connected-overlay\", \"\"], [\"\", \"connected-overlay\", \"\"], [\"\", \"cdkConnectedOverlay\", \"\"]], inputs: { viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"], open: [\"cdkConnectedOverlayOpen\", \"open\"], disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"], scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"], offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"], offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"], hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\"], lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\"], flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\"], growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\"], push: [\"cdkConnectedOverlayPush\", \"push\"], positions: [\"cdkConnectedOverlayPositions\", \"positions\"], origin: [\"cdkConnectedOverlayOrigin\", \"origin\"], positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"], width: [\"cdkConnectedOverlayWidth\", \"width\"], height: [\"cdkConnectedOverlayHeight\", \"height\"], minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"], minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"], backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"], panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"], transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"] }, outputs: { backdropClick: \"backdropClick\", positionChange: \"positionChange\", attach: \"attach\", detach: \"detach\", overlayKeydown: \"overlayKeydown\", overlayOutsideClick: \"overlayOutsideClick\" }, exportAs: [\"cdkConnectedOverlay\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nCdkConnectedOverlay.ctorParameters = () => [\n { type: Overlay },\n { type: TemplateRef },\n { type: ViewContainerRef },\n { type: undefined, decorators: [{ type: Inject, args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,] }] },\n { type: Directionality, decorators: [{ type: Optional }] }\n];\nCdkConnectedOverlay.propDecorators = {\n origin: [{ type: Input, args: ['cdkConnectedOverlayOrigin',] }],\n positions: [{ type: Input, args: ['cdkConnectedOverlayPositions',] }],\n positionStrategy: [{ type: Input, args: ['cdkConnectedOverlayPositionStrategy',] }],\n offsetX: [{ type: Input, args: ['cdkConnectedOverlayOffsetX',] }],\n offsetY: [{ type: Input, args: ['cdkConnectedOverlayOffsetY',] }],\n width: [{ type: Input, args: ['cdkConnectedOverlayWidth',] }],\n height: [{ type: Input, args: ['cdkConnectedOverlayHeight',] }],\n minWidth: [{ type: Input, args: ['cdkConnectedOverlayMinWidth',] }],\n minHeight: [{ type: Input, args: ['cdkConnectedOverlayMinHeight',] }],\n backdropClass: [{ type: Input, args: ['cdkConnectedOverlayBackdropClass',] }],\n panelClass: [{ type: Input, args: ['cdkConnectedOverlayPanelClass',] }],\n viewportMargin: [{ type: Input, args: ['cdkConnectedOverlayViewportMargin',] }],\n scrollStrategy: [{ type: Input, args: ['cdkConnectedOverlayScrollStrategy',] }],\n open: [{ type: Input, args: ['cdkConnectedOverlayOpen',] }],\n disableClose: [{ type: Input, args: ['cdkConnectedOverlayDisableClose',] }],\n transformOriginSelector: [{ type: Input, args: ['cdkConnectedOverlayTransformOriginOn',] }],\n hasBackdrop: [{ type: Input, args: ['cdkConnectedOverlayHasBackdrop',] }],\n lockPosition: [{ type: Input, args: ['cdkConnectedOverlayLockPosition',] }],\n flexibleDimensions: [{ type: Input, args: ['cdkConnectedOverlayFlexibleDimensions',] }],\n growAfterOpen: [{ type: Input, args: ['cdkConnectedOverlayGrowAfterOpen',] }],\n push: [{ type: Input, args: ['cdkConnectedOverlayPush',] }],\n backdropClick: [{ type: Output }],\n positionChange: [{ type: Output }],\n attach: [{ type: Output }],\n detach: [{ type: Output }],\n overlayKeydown: [{ type: Output }],\n overlayOutsideClick: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkConnectedOverlay, [{\n type: Directive,\n args: [{\n selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n exportAs: 'cdkConnectedOverlay'\n }]\n }], function () { return [{ type: Overlay }, { type: ɵngcc0.TemplateRef }, { type: ɵngcc0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY]\n }] }, { type: ɵngcc3.Directionality, decorators: [{\n type: Optional\n }] }]; }, { viewportMargin: [{\n type: Input,\n args: ['cdkConnectedOverlayViewportMargin']\n }], open: [{\n type: Input,\n args: ['cdkConnectedOverlayOpen']\n }], disableClose: [{\n type: Input,\n args: ['cdkConnectedOverlayDisableClose']\n }], backdropClick: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], attach: [{\n type: Output\n }], detach: [{\n type: Output\n }], overlayKeydown: [{\n type: Output\n }], overlayOutsideClick: [{\n type: Output\n }], scrollStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayScrollStrategy']\n }], offsetX: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetX']\n }], offsetY: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetY']\n }], hasBackdrop: [{\n type: Input,\n args: ['cdkConnectedOverlayHasBackdrop']\n }], lockPosition: [{\n type: Input,\n args: ['cdkConnectedOverlayLockPosition']\n }], flexibleDimensions: [{\n type: Input,\n args: ['cdkConnectedOverlayFlexibleDimensions']\n }], growAfterOpen: [{\n type: Input,\n args: ['cdkConnectedOverlayGrowAfterOpen']\n }], push: [{\n type: Input,\n args: ['cdkConnectedOverlayPush']\n }], positions: [{\n type: Input,\n args: ['cdkConnectedOverlayPositions']\n }], origin: [{\n type: Input,\n args: ['cdkConnectedOverlayOrigin']\n }], positionStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayPositionStrategy']\n }], width: [{\n type: Input,\n args: ['cdkConnectedOverlayWidth']\n }], height: [{\n type: Input,\n args: ['cdkConnectedOverlayHeight']\n }], minWidth: [{\n type: Input,\n args: ['cdkConnectedOverlayMinWidth']\n }], minHeight: [{\n type: Input,\n args: ['cdkConnectedOverlayMinHeight']\n }], backdropClass: [{\n type: Input,\n args: ['cdkConnectedOverlayBackdropClass']\n }], panelClass: [{\n type: Input,\n args: ['cdkConnectedOverlayPanelClass']\n }], transformOriginSelector: [{\n type: Input,\n args: ['cdkConnectedOverlayTransformOriginOn']\n }] }); })();\n/** @docs-private */\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass OverlayModule {\n}\nOverlayModule.ɵfac = function OverlayModule_Factory(t) { return new (t || OverlayModule)(); };\nOverlayModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: OverlayModule });\nOverlayModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n Overlay,\n CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER,\n ], imports: [[BidiModule, PortalModule, ScrollingModule], ScrollingModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(OverlayModule, [{\n type: NgModule,\n args: [{\n imports: [BidiModule, PortalModule, ScrollingModule],\n exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n declarations: [CdkConnectedOverlay, CdkOverlayOrigin],\n providers: [\n Overlay,\n CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER,\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(OverlayModule, { declarations: function () { return [CdkConnectedOverlay, CdkOverlayOrigin]; }, imports: function () { return [BidiModule, PortalModule, ScrollingModule]; }, exports: function () { return [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule]; } }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\nclass FullscreenOverlayContainer extends OverlayContainer {\n constructor(_document, platform) {\n super(_document, platform);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this._fullScreenEventName && this._fullScreenListener) {\n this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n }\n }\n _createContainer() {\n super._createContainer();\n this._adjustParentForFullscreenChange();\n this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n }\n _adjustParentForFullscreenChange() {\n if (!this._containerElement) {\n return;\n }\n const fullscreenElement = this.getFullscreenElement();\n const parent = fullscreenElement || this._document.body;\n parent.appendChild(this._containerElement);\n }\n _addFullscreenChangeListener(fn) {\n const eventName = this._getEventName();\n if (eventName) {\n if (this._fullScreenListener) {\n this._document.removeEventListener(eventName, this._fullScreenListener);\n }\n this._document.addEventListener(eventName, fn);\n this._fullScreenListener = fn;\n }\n }\n _getEventName() {\n if (!this._fullScreenEventName) {\n const _document = this._document;\n if (_document.fullscreenEnabled) {\n this._fullScreenEventName = 'fullscreenchange';\n }\n else if (_document.webkitFullscreenEnabled) {\n this._fullScreenEventName = 'webkitfullscreenchange';\n }\n else if (_document.mozFullScreenEnabled) {\n this._fullScreenEventName = 'mozfullscreenchange';\n }\n else if (_document.msFullscreenEnabled) {\n this._fullScreenEventName = 'MSFullscreenChange';\n }\n }\n return this._fullScreenEventName;\n }\n /**\n * When the page is put into fullscreen mode, a specific element is specified.\n * Only that element and its children are visible when in fullscreen mode.\n */\n getFullscreenElement() {\n const _document = this._document;\n return _document.fullscreenElement ||\n _document.webkitFullscreenElement ||\n _document.mozFullScreenElement ||\n _document.msFullscreenElement ||\n null;\n }\n}\nFullscreenOverlayContainer.ɵfac = function FullscreenOverlayContainer_Factory(t) { return new (t || FullscreenOverlayContainer)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ɵngcc2.Platform)); };\nFullscreenOverlayContainer.ɵprov = i0.ɵɵdefineInjectable({ factory: function FullscreenOverlayContainer_Factory() { return new FullscreenOverlayContainer(i0.ɵɵinject(i1$1.DOCUMENT), i0.ɵɵinject(i2.Platform)); }, token: FullscreenOverlayContainer, providedIn: \"root\" });\nFullscreenOverlayContainer.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: Platform }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FullscreenOverlayContainer, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc2.Platform }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectedPositionStrategy, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY as ɵangular_material_src_cdk_overlay_overlay_a, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY as ɵangular_material_src_cdk_overlay_overlay_b, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER as ɵangular_material_src_cdk_overlay_overlay_c, BaseOverlayDispatcher as ɵangular_material_src_cdk_overlay_overlay_d };\n\n","import * as i0 from '@angular/core';\nimport { Injectable, Inject, PLATFORM_ID, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nimport * as ɵngcc0 from '@angular/core';\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = (typeof Intl !== 'undefined' && Intl.v8BreakIterator);\n}\ncatch (_a) {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n constructor(_platformId) {\n this._platformId = _platformId;\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n this.isBrowser = this._platformId ?\n isPlatformBrowser(this._platformId) : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n this.BLINK = this.isBrowser && (!!(window.chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT);\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n this.WEBKIT = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n}\nPlatform.ɵfac = function Platform_Factory(t) { return new (t || Platform)(ɵngcc0.ɵɵinject(PLATFORM_ID)); };\nPlatform.ɵprov = i0.ɵɵdefineInjectable({ factory: function Platform_Factory() { return new Platform(i0.ɵɵinject(i0.PLATFORM_ID)); }, token: Platform, providedIn: \"root\" });\nPlatform.ctorParameters = () => [\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Platform, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass PlatformModule {\n}\nPlatformModule.ɵfac = function PlatformModule_Factory(t) { return new (t || PlatformModule)(); };\nPlatformModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: PlatformModule });\nPlatformModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PlatformModule, [{\n type: NgModule,\n args: [{}]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n return supportedInputTypes;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: () => supportsPassiveEvents = true\n }));\n }\n finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement.style) {\n scrollBehaviorSupported = true;\n }\n else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction = Element.prototype.scrollTo;\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n }\n else {\n scrollBehaviorSupported = false;\n }\n }\n }\n return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return 0 /* NORMAL */;\n }\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n rtlScrollAxisType = 0 /* NORMAL */;\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? 1 /* NEGATED */ : 2 /* INVERTED */;\n }\n scrollContainer.parentNode.removeChild(scrollContainer);\n }\n return rtlScrollAxisType;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n }\n return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n let activeElement = typeof document !== 'undefined' && document ?\n document.activeElement : null;\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement;\n if (newActiveElement === activeElement) {\n break;\n }\n else {\n activeElement = newActiveElement;\n }\n }\n return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return (event.composedPath ? event.composedPath()[0] : event.target);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n (typeof __karma__ !== 'undefined' && !!__karma__) ||\n // @ts-ignore\n (typeof jasmine !== 'undefined' && !!jasmine) ||\n // @ts-ignore\n (typeof jest !== 'undefined' && !!jest) ||\n // @ts-ignore\n (typeof Mocha !== 'undefined' && !!Mocha));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n\n","import { ElementRef, Directive, TemplateRef, ViewContainerRef, EventEmitter, ComponentFactoryResolver, Inject, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nimport * as ɵngcc0 from '@angular/core';\nfunction throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nfunction throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nfunction throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nfunction throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nfunction throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nfunction throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nclass Portal {\n /** Attach this portal to a host. */\n attach(host) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (host == null) {\n throwNullPortalOutletError();\n }\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n }\n this._attachedHost = host;\n return host.attach(this);\n }\n /** Detach this portal from its host */\n detach() {\n let host = this._attachedHost;\n if (host != null) {\n this._attachedHost = null;\n host.detach();\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwNoPortalAttachedError();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal extends Portal {\n constructor(component, viewContainerRef, injector, componentFactoryResolver) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n }\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nclass TemplatePortal extends Portal {\n constructor(template, viewContainerRef, context) {\n super();\n this.templateRef = template;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n }\n get origin() {\n return this.templateRef.elementRef;\n }\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host, context = this.context) {\n this.context = context;\n return super.attach(host);\n }\n detach() {\n this.context = undefined;\n return super.detach();\n }\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\nclass DomPortal extends Portal {\n constructor(element) {\n super();\n this.element = element instanceof ElementRef ? element.nativeElement : element;\n }\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nclass BasePortalOutlet {\n constructor() {\n /** Whether this host has already been permanently disposed. */\n this._isDisposed = false;\n // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n this.attachDomPortal = null;\n }\n /** Whether this host has an attached portal. */\n hasAttached() {\n return !!this._attachedPortal;\n }\n /** Attaches a portal. */\n attach(portal) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!portal) {\n throwNullPortalError();\n }\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n }\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n }\n else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n }\n else if (this.attachDomPortal && portal instanceof DomPortal) {\n this._attachedPortal = portal;\n return this.attachDomPortal(portal);\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwUnknownPortalTypeError();\n }\n }\n /** Detaches a previously attached portal. */\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n this._invokeDisposeFn();\n }\n /** Permanently dispose of this portal host. */\n dispose() {\n if (this.hasAttached()) {\n this.detach();\n }\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n /** @docs-private */\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass BasePortalHost extends BasePortalOutlet {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nclass DomPortalOutlet extends BasePortalOutlet {\n constructor(\n /** Element into which the content is projected. */\n outletElement, _componentFactoryResolver, _appRef, _defaultInjector, \n /**\n * @deprecated `_document` Parameter to be made required.\n * @breaking-change 10.0.0\n */\n _document) {\n super();\n this.outletElement = outletElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._defaultInjector = _defaultInjector;\n /**\n * Attaches a DOM portal by transferring its content into the outlet.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 10.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n element.parentNode.insertBefore(anchorNode, element);\n this.outletElement.appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n // We can't use `replaceWith` here because IE doesn't support it.\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector);\n this.setDisposeFn(() => componentRef.destroy());\n }\n else {\n componentRef = componentFactory.create(portal.injector || this._defaultInjector);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n this._attachedPortal = portal;\n return componentRef;\n }\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context);\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n // Note that we want to detect changes after the nodes have been moved so that\n // any directives inside the portal that are looking at the DOM inside a lifecycle\n // hook won't be invoked too early.\n viewRef.detectChanges();\n this.setDisposeFn((() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n }));\n this._attachedPortal = portal;\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n /**\n * Clears out a portal from the DOM.\n */\n dispose() {\n super.dispose();\n if (this.outletElement.parentNode != null) {\n this.outletElement.parentNode.removeChild(this.outletElement);\n }\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass DomPortalHost extends DomPortalOutlet {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\nclass CdkPortal extends TemplatePortal {\n constructor(templateRef, viewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\nCdkPortal.ɵfac = function CdkPortal_Factory(t) { return new (t || CdkPortal)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef)); };\nCdkPortal.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkPortal, selectors: [[\"\", \"cdkPortal\", \"\"]], exportAs: [\"cdkPortal\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nCdkPortal.ctorParameters = () => [\n { type: TemplateRef },\n { type: ViewContainerRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkPortal, [{\n type: Directive,\n args: [{\n selector: '[cdkPortal]',\n exportAs: 'cdkPortal'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }, { type: ɵngcc0.ViewContainerRef }]; }, null); })();\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\nclass TemplatePortalDirective extends CdkPortal {\n}\nTemplatePortalDirective.ɵfac = /*@__PURE__*/ function () { let ɵTemplatePortalDirective_BaseFactory; return function TemplatePortalDirective_Factory(t) { return (ɵTemplatePortalDirective_BaseFactory || (ɵTemplatePortalDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TemplatePortalDirective)))(t || TemplatePortalDirective); }; }();\nTemplatePortalDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TemplatePortalDirective, selectors: [[\"\", \"cdk-portal\", \"\"], [\"\", \"portal\", \"\"]], exportAs: [\"cdkPortal\"], features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: CdkPortal,\n useExisting: TemplatePortalDirective\n }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TemplatePortalDirective, [{\n type: Directive,\n args: [{\n selector: '[cdk-portal], [portal]',\n exportAs: 'cdkPortal',\n providers: [{\n provide: CdkPortal,\n useExisting: TemplatePortalDirective\n }]\n }]\n }], null, null); })();\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * ``\n */\nclass CdkPortalOutlet extends BasePortalOutlet {\n constructor(_componentFactoryResolver, _viewContainerRef, \n /**\n * @deprecated `_document` parameter to be made required.\n * @breaking-change 9.0.0\n */\n _document) {\n super();\n this._componentFactoryResolver = _componentFactoryResolver;\n this._viewContainerRef = _viewContainerRef;\n /** Whether the portal component is initialized. */\n this._isInitialized = false;\n /** Emits when a portal is attached to the outlet. */\n this.attached = new EventEmitter();\n /**\n * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 9.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n portal.setAttachedHost(this);\n element.parentNode.insertBefore(anchorNode, element);\n this._getRootNode().appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /** Portal associated with the Portal outlet. */\n get portal() {\n return this._attachedPortal;\n }\n set portal(portal) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `
`\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n if (this.hasAttached()) {\n super.detach();\n }\n if (portal) {\n super.attach(portal);\n }\n this._attachedPortal = portal;\n }\n /** Component or view reference that is attached to the portal. */\n get attachedRef() {\n return this._attachedRef;\n }\n ngOnInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n super.dispose();\n this._attachedPortal = null;\n this._attachedRef = null;\n }\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n portal.setAttachedHost(this);\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ?\n portal.viewContainerRef :\n this._viewContainerRef;\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector);\n // If we're using a view container that's different from the injected one (e.g. when the portal\n // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n // inside of the alternate view container.\n if (viewContainerRef !== this._viewContainerRef) {\n this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n }\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n return ref;\n }\n /**\n * Attach the given TemplatePortal to this PortalHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n super.setDisposeFn(() => this._viewContainerRef.clear());\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n return viewRef;\n }\n /** Gets the root node of the portal outlet. */\n _getRootNode() {\n const nativeElement = this._viewContainerRef.element.nativeElement;\n // The directive could be set on a template which will result in a comment\n // node being the root. Use the comment's parent node if that is the case.\n return (nativeElement.nodeType === nativeElement.ELEMENT_NODE ?\n nativeElement : nativeElement.parentNode);\n }\n}\nCdkPortalOutlet.ɵfac = function CdkPortalOutlet_Factory(t) { return new (t || CdkPortalOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nCdkPortalOutlet.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkPortalOutlet, selectors: [[\"\", \"cdkPortalOutlet\", \"\"]], inputs: { portal: [\"cdkPortalOutlet\", \"portal\"] }, outputs: { attached: \"attached\" }, exportAs: [\"cdkPortalOutlet\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nCdkPortalOutlet.ctorParameters = () => [\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nCdkPortalOutlet.propDecorators = {\n attached: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkPortalOutlet, [{\n type: Directive,\n args: [{\n selector: '[cdkPortalOutlet]',\n exportAs: 'cdkPortalOutlet',\n inputs: ['portal: cdkPortalOutlet']\n }]\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { attached: [{\n type: Output\n }] }); })();\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass PortalHostDirective extends CdkPortalOutlet {\n}\nPortalHostDirective.ɵfac = /*@__PURE__*/ function () { let ɵPortalHostDirective_BaseFactory; return function PortalHostDirective_Factory(t) { return (ɵPortalHostDirective_BaseFactory || (ɵPortalHostDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(PortalHostDirective)))(t || PortalHostDirective); }; }();\nPortalHostDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PortalHostDirective, selectors: [[\"\", \"cdkPortalHost\", \"\"], [\"\", \"portalHost\", \"\"]], inputs: { portal: [\"cdkPortalHost\", \"portal\"] }, exportAs: [\"cdkPortalHost\"], features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective\n }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PortalHostDirective, [{\n type: Directive,\n args: [{\n selector: '[cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalHost',\n inputs: ['portal: cdkPortalHost'],\n providers: [{\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective\n }]\n }]\n }], null, null); })();\nclass PortalModule {\n}\nPortalModule.ɵfac = function PortalModule_Factory(t) { return new (t || PortalModule)(); };\nPortalModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: PortalModule });\nPortalModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PortalModule, [{\n type: NgModule,\n args: [{\n exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PortalModule, { declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\nclass PortalInjector {\n constructor(_parentInjector, _customTokens) {\n this._parentInjector = _parentInjector;\n this._customTokens = _customTokens;\n }\n get(token, notFoundValue) {\n const value = this._customTokens.get(token);\n if (typeof value !== 'undefined') {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };\n\n","import { coerceNumberProperty, coerceElement, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, forwardRef, Input, Injectable, NgZone, Optional, Inject, ElementRef, Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, Output, ViewChild, ViewContainerRef, TemplateRef, IterableDiffers, SkipSelf, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\nimport { Platform, getRtlScrollAxisType, supportsScrollBehavior, PlatformModule } from '@angular/cdk/platform';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport { Directionality, BidiModule } from '@angular/cdk/bidi';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the virtual scrolling strategy. */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/platform';\nimport * as ɵngcc2 from '@angular/cdk/bidi';\nimport * as ɵngcc3 from '@angular/cdk/collections';\n\nconst _c0 = [\"contentWrapper\"];\nconst _c1 = [\"*\"];\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Virtual scrolling strategy for lists with items of known fixed size. */\nclass FixedSizeVirtualScrollStrategy {\n /**\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n constructor(itemSize, minBufferPx, maxBufferPx) {\n this._scrolledIndexChange = new Subject();\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n /** The attached viewport. */\n this._viewport = null;\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport) {\n this._viewport = viewport;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._scrolledIndexChange.complete();\n this._viewport = null;\n }\n /**\n * Update the item size and buffer size.\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n }\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() { }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() { }\n /**\n * Scroll to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling.\n */\n scrollToIndex(index, behavior) {\n if (this._viewport) {\n this._viewport.scrollToOffset(index * this._itemSize, behavior);\n }\n }\n /** Update the viewport's total content size. */\n _updateTotalContentSize() {\n if (!this._viewport) {\n return;\n }\n this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n }\n /** Update the viewport's rendered range. */\n _updateRenderedRange() {\n if (!this._viewport) {\n return;\n }\n const renderedRange = this._viewport.getRenderedRange();\n const newRange = { start: renderedRange.start, end: renderedRange.end };\n const viewportSize = this._viewport.getViewportSize();\n const dataLength = this._viewport.getDataLength();\n let scrollOffset = this._viewport.measureScrollOffset();\n // Prevent NaN as result when dividing by zero.\n let firstVisibleIndex = (this._itemSize > 0) ? scrollOffset / this._itemSize : 0;\n // If user scrolls to the bottom of the list and data changes to a smaller list\n if (newRange.end > dataLength) {\n // We have to recalculate the first visible index based on new data length and viewport size.\n const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n // If first visible index changed we must update scroll offset to handle start/end buffers\n // Current range must also be adjusted to cover the new position (bottom of new list).\n if (firstVisibleIndex != newVisibleIndex) {\n firstVisibleIndex = newVisibleIndex;\n scrollOffset = newVisibleIndex * this._itemSize;\n newRange.start = Math.floor(firstVisibleIndex);\n }\n newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n }\n const startBuffer = scrollOffset - newRange.start * this._itemSize;\n if (startBuffer < this._minBufferPx && newRange.start != 0) {\n const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n newRange.start = Math.max(0, newRange.start - expandStart);\n newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n }\n else {\n const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n if (expandEnd > 0) {\n newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n }\n }\n }\n this._viewport.setRenderedRange(newRange);\n this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n }\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n * `FixedSizeVirtualScrollStrategy` from.\n */\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\nclass CdkFixedSizeVirtualScroll {\n constructor() {\n this._itemSize = 20;\n this._minBufferPx = 100;\n this._maxBufferPx = 200;\n /** The scroll strategy used by this directive. */\n this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n /** The size of the items in the list (in pixels). */\n get itemSize() { return this._itemSize; }\n set itemSize(value) { this._itemSize = coerceNumberProperty(value); }\n /**\n * The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n */\n get minBufferPx() { return this._minBufferPx; }\n set minBufferPx(value) { this._minBufferPx = coerceNumberProperty(value); }\n /**\n * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n */\n get maxBufferPx() { return this._maxBufferPx; }\n set maxBufferPx(value) { this._maxBufferPx = coerceNumberProperty(value); }\n ngOnChanges() {\n this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n}\nCdkFixedSizeVirtualScroll.ɵfac = function CdkFixedSizeVirtualScroll_Factory(t) { return new (t || CdkFixedSizeVirtualScroll)(); };\nCdkFixedSizeVirtualScroll.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkFixedSizeVirtualScroll, selectors: [[\"cdk-virtual-scroll-viewport\", \"itemSize\", \"\"]], inputs: { itemSize: \"itemSize\", minBufferPx: \"minBufferPx\", maxBufferPx: \"maxBufferPx\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)]\n }]), ɵngcc0.ɵɵNgOnChangesFeature] });\nCdkFixedSizeVirtualScroll.propDecorators = {\n itemSize: [{ type: Input }],\n minBufferPx: [{ type: Input }],\n maxBufferPx: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkFixedSizeVirtualScroll, [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[itemSize]',\n providers: [{\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)]\n }]\n }]\n }], function () { return []; }, { itemSize: [{\n type: Input\n }], minBufferPx: [{\n type: Input\n }], maxBufferPx: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Time in ms to throttle the scrolling events by default. */\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nclass ScrollDispatcher {\n constructor(_ngZone, _platform, document) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n this._scrolled = new Subject();\n /** Keeps track of the global `scroll` and `resize` subscriptions. */\n this._globalSubscription = null;\n /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n this._scrolledCount = 0;\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\n this.scrollContainers = new Map();\n this._document = document;\n }\n /**\n * Registers a scrollable instance with the service and listens for its scrolled events. When the\n * scrollable is scrolled, the service emits the event to its scrolled observable.\n * @param scrollable Scrollable instance to be registered.\n */\n register(scrollable) {\n if (!this.scrollContainers.has(scrollable)) {\n this.scrollContainers.set(scrollable, scrollable.elementScrolled()\n .subscribe(() => this._scrolled.next(scrollable)));\n }\n }\n /**\n * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.\n * @param scrollable Scrollable instance to be deregistered.\n */\n deregister(scrollable) {\n const scrollableReference = this.scrollContainers.get(scrollable);\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollContainers.delete(scrollable);\n }\n }\n /**\n * Returns an observable that emits an event whenever any of the registered Scrollable\n * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n * to override the default \"throttle\" time.\n *\n * **Note:** in order to avoid hitting change detection for every scroll event,\n * all of the events emitted from this stream will be run outside the Angular zone.\n * If you need to update any data bindings as a result of a scroll event, you have\n * to run the callback using `NgZone.run`.\n */\n scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n if (!this._platform.isBrowser) {\n return of();\n }\n return new Observable((observer) => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n const subscription = auditTimeInMs > 0 ?\n this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer) :\n this._scrolled.subscribe(observer);\n this._scrolledCount++;\n return () => {\n subscription.unsubscribe();\n this._scrolledCount--;\n if (!this._scrolledCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n ngOnDestroy() {\n this._removeGlobalListener();\n this.scrollContainers.forEach((_, container) => this.deregister(container));\n this._scrolled.complete();\n }\n /**\n * Returns an observable that emits whenever any of the\n * scrollable ancestors of an element are scrolled.\n * @param elementOrElementRef Element whose ancestors to listen for.\n * @param auditTimeInMs Time to throttle the scroll events.\n */\n ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n return this.scrolled(auditTimeInMs).pipe(filter(target => {\n return !target || ancestors.indexOf(target) > -1;\n }));\n }\n /** Returns all registered Scrollables that contain the provided element. */\n getAncestorScrollContainers(elementOrElementRef) {\n const scrollingContainers = [];\n this.scrollContainers.forEach((_subscription, scrollable) => {\n if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n return scrollingContainers;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Returns true if the element is contained within the provided Scrollable. */\n _scrollableContainsElement(scrollable, elementOrElementRef) {\n let element = coerceElement(elementOrElementRef);\n let scrollableElement = scrollable.getElementRef().nativeElement;\n // Traverse through the element parents until we reach null, checking if any of the elements\n // are the scrollable's element.\n do {\n if (element == scrollableElement) {\n return true;\n }\n } while (element = element.parentElement);\n return false;\n }\n /** Sets up the global scroll listeners. */\n _addGlobalListener() {\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n });\n }\n /** Cleans up the global scroll listener. */\n _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n }\n}\nScrollDispatcher.ɵfac = function ScrollDispatcher_Factory(t) { return new (t || ScrollDispatcher)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(ɵngcc1.Platform), ɵngcc0.ɵɵinject(DOCUMENT, 8)); };\nScrollDispatcher.ɵprov = i0.ɵɵdefineInjectable({ factory: function ScrollDispatcher_Factory() { return new ScrollDispatcher(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i2.DOCUMENT, 8)); }, token: ScrollDispatcher, providedIn: \"root\" });\nScrollDispatcher.ctorParameters = () => [\n { type: NgZone },\n { type: Platform },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollDispatcher, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nclass CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n this.elementRef = elementRef;\n this.scrollDispatcher = scrollDispatcher;\n this.ngZone = ngZone;\n this.dir = dir;\n this._destroyed = new Subject();\n this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll').pipe(takeUntil(this._destroyed))\n .subscribe(observer)));\n }\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Returns observable that emits when a scroll event is fired on the host element. */\n elementScrolled() {\n return this._elementScrolled;\n }\n /** Gets the ElementRef for the viewport. */\n getElementRef() {\n return this.elementRef;\n }\n /**\n * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param options specified the offsets to scroll to.\n */\n scrollTo(options) {\n const el = this.elementRef.nativeElement;\n const isRtl = this.dir && this.dir.value == 'rtl';\n // Rewrite start & end offsets as right or left offsets.\n if (options.left == null) {\n options.left = isRtl ? options.end : options.start;\n }\n if (options.right == null) {\n options.right = isRtl ? options.start : options.end;\n }\n // Rewrite the bottom offset as a top offset.\n if (options.bottom != null) {\n options.top =\n el.scrollHeight - el.clientHeight - options.bottom;\n }\n // Rewrite the right offset as a left offset.\n if (isRtl && getRtlScrollAxisType() != 0 /* NORMAL */) {\n if (options.left != null) {\n options.right =\n el.scrollWidth - el.clientWidth - options.left;\n }\n if (getRtlScrollAxisType() == 2 /* INVERTED */) {\n options.left = options.right;\n }\n else if (getRtlScrollAxisType() == 1 /* NEGATED */) {\n options.left = options.right ? -options.right : options.right;\n }\n }\n else {\n if (options.right != null) {\n options.left =\n el.scrollWidth - el.clientWidth - options.right;\n }\n }\n this._applyScrollToOptions(options);\n }\n _applyScrollToOptions(options) {\n const el = this.elementRef.nativeElement;\n if (supportsScrollBehavior()) {\n el.scrollTo(options);\n }\n else {\n if (options.top != null) {\n el.scrollTop = options.top;\n }\n if (options.left != null) {\n el.scrollLeft = options.left;\n }\n }\n }\n /**\n * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param from The edge to measure from.\n */\n measureScrollOffset(from) {\n const LEFT = 'left';\n const RIGHT = 'right';\n const el = this.elementRef.nativeElement;\n if (from == 'top') {\n return el.scrollTop;\n }\n if (from == 'bottom') {\n return el.scrollHeight - el.clientHeight - el.scrollTop;\n }\n // Rewrite start & end as left or right offsets.\n const isRtl = this.dir && this.dir.value == 'rtl';\n if (from == 'start') {\n from = isRtl ? RIGHT : LEFT;\n }\n else if (from == 'end') {\n from = isRtl ? LEFT : RIGHT;\n }\n if (isRtl && getRtlScrollAxisType() == 2 /* INVERTED */) {\n // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n else {\n return el.scrollLeft;\n }\n }\n else if (isRtl && getRtlScrollAxisType() == 1 /* NEGATED */) {\n // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft + el.scrollWidth - el.clientWidth;\n }\n else {\n return -el.scrollLeft;\n }\n }\n else {\n // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n // (scrollWidth - clientWidth) when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft;\n }\n else {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n }\n }\n}\nCdkScrollable.ɵfac = function CdkScrollable_Factory(t) { return new (t || CdkScrollable)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ScrollDispatcher), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8)); };\nCdkScrollable.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkScrollable, selectors: [[\"\", \"cdk-scrollable\", \"\"], [\"\", \"cdkScrollable\", \"\"]] });\nCdkScrollable.ctorParameters = () => [\n { type: ElementRef },\n { type: ScrollDispatcher },\n { type: NgZone },\n { type: Directionality, decorators: [{ type: Optional }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkScrollable, [{\n type: Directive,\n args: [{\n selector: '[cdk-scrollable], [cdkScrollable]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ScrollDispatcher }, { type: ɵngcc0.NgZone }, { type: ɵngcc2.Directionality, decorators: [{\n type: Optional\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Time in ms to throttle the resize events by default. */\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\nclass ViewportRuler {\n constructor(_platform, ngZone, document) {\n this._platform = _platform;\n /** Stream of viewport change events. */\n this._change = new Subject();\n /** Event listener that will be used to handle the viewport change events. */\n this._changeListener = (event) => {\n this._change.next(event);\n };\n this._document = document;\n ngZone.runOutsideAngular(() => {\n if (_platform.isBrowser) {\n const window = this._getWindow();\n // Note that bind the events ourselves, rather than going through something like RxJS's\n // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n window.addEventListener('resize', this._changeListener);\n window.addEventListener('orientationchange', this._changeListener);\n }\n // Clear the cached position so that the viewport is re-measured next time it is required.\n // We don't need to keep track of the subscription, because it is completed on destroy.\n this.change().subscribe(() => this._viewportSize = null);\n });\n }\n ngOnDestroy() {\n if (this._platform.isBrowser) {\n const window = this._getWindow();\n window.removeEventListener('resize', this._changeListener);\n window.removeEventListener('orientationchange', this._changeListener);\n }\n this._change.complete();\n }\n /** Returns the viewport's width and height. */\n getViewportSize() {\n if (!this._viewportSize) {\n this._updateViewportSize();\n }\n const output = { width: this._viewportSize.width, height: this._viewportSize.height };\n // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n if (!this._platform.isBrowser) {\n this._viewportSize = null;\n }\n return output;\n }\n /** Gets a ClientRect for the viewport's bounds. */\n getViewportRect() {\n // Use the document element's bounding rect rather than the window scroll properties\n // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n // can disagree when the page is pinch-zoomed (on devices that support touch).\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n // We use the documentElement instead of the body because, by default (without a css reset)\n // browsers typically give the document body an 8px margin, which is not included in\n // getBoundingClientRect().\n const scrollPosition = this.getViewportScrollPosition();\n const { width, height } = this.getViewportSize();\n return {\n top: scrollPosition.top,\n left: scrollPosition.left,\n bottom: scrollPosition.top + height,\n right: scrollPosition.left + width,\n height,\n width,\n };\n }\n /** Gets the (top, left) scroll position of the viewport. */\n getViewportScrollPosition() {\n // While we can get a reference to the fake document\n // during SSR, it doesn't have getBoundingClientRect.\n if (!this._platform.isBrowser) {\n return { top: 0, left: 0 };\n }\n // The top-left-corner of the viewport is determined by the scroll position of the document\n // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n // `document.documentElement` works consistently, where the `top` and `left` values will\n // equal negative the scroll position.\n const document = this._document;\n const window = this._getWindow();\n const documentElement = document.documentElement;\n const documentRect = documentElement.getBoundingClientRect();\n const top = -documentRect.top || document.body.scrollTop || window.scrollY ||\n documentElement.scrollTop || 0;\n const left = -documentRect.left || document.body.scrollLeft || window.scrollX ||\n documentElement.scrollLeft || 0;\n return { top, left };\n }\n /**\n * Returns a stream that emits whenever the size of the viewport changes.\n * This stream emits outside of the Angular zone.\n * @param throttleTime Time in milliseconds to throttle the stream.\n */\n change(throttleTime = DEFAULT_RESIZE_TIME) {\n return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Updates the cached viewport size. */\n _updateViewportSize() {\n const window = this._getWindow();\n this._viewportSize = this._platform.isBrowser ?\n { width: window.innerWidth, height: window.innerHeight } :\n { width: 0, height: 0 };\n }\n}\nViewportRuler.ɵfac = function ViewportRuler_Factory(t) { return new (t || ViewportRuler)(ɵngcc0.ɵɵinject(ɵngcc1.Platform), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(DOCUMENT, 8)); };\nViewportRuler.ɵprov = i0.ɵɵdefineInjectable({ factory: function ViewportRuler_Factory() { return new ViewportRuler(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i2.DOCUMENT, 8)); }, token: ViewportRuler, providedIn: \"root\" });\nViewportRuler.ctorParameters = () => [\n { type: Platform },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ViewportRuler, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc1.Platform }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1, r2) {\n return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\nclass CdkVirtualScrollViewport extends CdkScrollable {\n constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollStrategy = _scrollStrategy;\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\n this._detachedSubject = new Subject();\n /** Emits when the rendered range changes. */\n this._renderedRangeSubject = new Subject();\n this._orientation = 'vertical';\n this._appendOnly = false;\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\n // performance.\n /** Emits when the index of the first element visible in the viewport changes. */\n this.scrolledIndexChange = new Observable((observer) => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n /** A stream that emits whenever the rendered range changes. */\n this.renderedRangeStream = this._renderedRangeSubject;\n /**\n * The total size of all content (in pixels), including content that is not currently rendered.\n */\n this._totalContentSize = 0;\n /** A string representing the `style.width` property value to be used for the spacer element. */\n this._totalContentWidth = '';\n /** A string representing the `style.height` property value to be used for the spacer element. */\n this._totalContentHeight = '';\n /** The currently rendered range of indices. */\n this._renderedRange = { start: 0, end: 0 };\n /** The length of the data bound to this viewport (in number of items). */\n this._dataLength = 0;\n /** The size of the viewport (in pixels). */\n this._viewportSize = 0;\n /** The last rendered content offset that was set. */\n this._renderedContentOffset = 0;\n /**\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\n * be rewritten as an offset to the start of the content).\n */\n this._renderedContentOffsetNeedsRewrite = false;\n /** Whether there is a pending change detection cycle. */\n this._isChangeDetectionPending = false;\n /** A list of functions to run after the next change detection cycle. */\n this._runAfterChangeDetection = [];\n /** Subscription to changes in the viewport size. */\n this._viewportChanges = Subscription.EMPTY;\n if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n }\n this._viewportChanges = viewportRuler.change().subscribe(() => {\n this.checkViewportSize();\n });\n }\n /** The direction the viewport scrolls. */\n get orientation() {\n return this._orientation;\n }\n set orientation(orientation) {\n if (this._orientation !== orientation) {\n this._orientation = orientation;\n this._calculateSpacerSize();\n }\n }\n /**\n * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n * will be removed.\n */\n get appendOnly() {\n return this._appendOnly;\n }\n set appendOnly(value) {\n this._appendOnly = coerceBooleanProperty(value);\n }\n ngOnInit() {\n super.ngOnInit();\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\n // zone to avoid causing more change detection cycles. We handle the change detection loop\n // ourselves instead.\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._measureViewportSize();\n this._scrollStrategy.attach(this);\n this.elementScrolled()\n .pipe(\n // Start off with a fake scroll event so we properly detect our initial position.\n startWith(null), \n // Collect multiple events into one until the next animation frame. This way if\n // there are multiple scroll events in the same frame we only need to recheck\n // our layout once.\n auditTime(0, SCROLL_SCHEDULER))\n .subscribe(() => this._scrollStrategy.onContentScrolled());\n this._markChangeDetectionNeeded();\n }));\n }\n ngOnDestroy() {\n this.detach();\n this._scrollStrategy.detach();\n // Complete all subjects\n this._renderedRangeSubject.complete();\n this._detachedSubject.complete();\n this._viewportChanges.unsubscribe();\n super.ngOnDestroy();\n }\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n attach(forOf) {\n if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkVirtualScrollViewport is already attached.');\n }\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n // change detection loop ourselves.\n this.ngZone.runOutsideAngular(() => {\n this._forOf = forOf;\n this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n const newLength = data.length;\n if (newLength !== this._dataLength) {\n this._dataLength = newLength;\n this._scrollStrategy.onDataLengthChanged();\n }\n this._doChangeDetection();\n });\n });\n }\n /** Detaches the current `CdkVirtualForOf`. */\n detach() {\n this._forOf = null;\n this._detachedSubject.next();\n }\n /** Gets the length of the data bound to this viewport (in number of items). */\n getDataLength() {\n return this._dataLength;\n }\n /** Gets the size of the viewport (in pixels). */\n getViewportSize() {\n return this._viewportSize;\n }\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n // setting it to something else, but its error prone and should probably be split into\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n /** Get the current rendered range of items. */\n getRenderedRange() {\n return this._renderedRange;\n }\n /**\n * Sets the total size of all content (in pixels), including content that is not currently\n * rendered.\n */\n setTotalContentSize(size) {\n if (this._totalContentSize !== size) {\n this._totalContentSize = size;\n this._calculateSpacerSize();\n this._markChangeDetectionNeeded();\n }\n }\n /** Sets the currently rendered range of indices. */\n setRenderedRange(range) {\n if (!rangesEqual(this._renderedRange, range)) {\n if (this.appendOnly) {\n range = { start: 0, end: Math.max(this._renderedRange.end, range.end) };\n }\n this._renderedRangeSubject.next(this._renderedRange = range);\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n }\n }\n /**\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n */\n getOffsetToRenderedContentStart() {\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n }\n /**\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\n * (in pixels).\n */\n setRenderedContentOffset(offset, to = 'to-start') {\n // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n // in the negative direction.\n const isRtl = this.dir && this.dir.value == 'rtl';\n const isHorizontal = this.orientation == 'horizontal';\n const axis = isHorizontal ? 'X' : 'Y';\n const axisDirection = isHorizontal && isRtl ? -1 : 1;\n let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n this._renderedContentOffset = offset;\n if (to === 'to-end') {\n transform += ` translate${axis}(-100%)`;\n // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n // expand upward).\n this._renderedContentOffsetNeedsRewrite = true;\n }\n if (this._renderedContentTransform != transform) {\n // We know this value is safe because we parse `offset` with `Number()` before passing it\n // into the string.\n this._renderedContentTransform = transform;\n this._markChangeDetectionNeeded(() => {\n if (this._renderedContentOffsetNeedsRewrite) {\n this._renderedContentOffset -= this.measureRenderedContentSize();\n this._renderedContentOffsetNeedsRewrite = false;\n this.setRenderedContentOffset(this._renderedContentOffset);\n }\n else {\n this._scrollStrategy.onRenderedOffsetChanged();\n }\n });\n }\n }\n /**\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n * @param offset The offset to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToOffset(offset, behavior = 'auto') {\n const options = { behavior };\n if (this.orientation === 'horizontal') {\n options.start = offset;\n }\n else {\n options.top = offset;\n }\n this.scrollTo(options);\n }\n /**\n * Scrolls to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToIndex(index, behavior = 'auto') {\n this._scrollStrategy.scrollToIndex(index, behavior);\n }\n /**\n * Gets the current scroll offset from the start of the viewport (in pixels).\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n * in horizontal mode.\n */\n measureScrollOffset(from) {\n return from ?\n super.measureScrollOffset(from) :\n super.measureScrollOffset(this.orientation === 'horizontal' ? 'start' : 'top');\n }\n /** Measure the combined size of all of the rendered items. */\n measureRenderedContentSize() {\n const contentEl = this._contentWrapper.nativeElement;\n return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n }\n /**\n * Measure the total combined size of the given range. Throws if the range includes items that are\n * not rendered.\n */\n measureRangeSize(range) {\n if (!this._forOf) {\n return 0;\n }\n return this._forOf.measureRangeSize(range, this.orientation);\n }\n /** Update the viewport dimensions and re-render. */\n checkViewportSize() {\n // TODO: Cleanup later when add logic for handling content resize\n this._measureViewportSize();\n this._scrollStrategy.onDataLengthChanged();\n }\n /** Measure the viewport size. */\n _measureViewportSize() {\n const viewportEl = this.elementRef.nativeElement;\n this._viewportSize = this.orientation === 'horizontal' ?\n viewportEl.clientWidth : viewportEl.clientHeight;\n }\n /** Queue up change detection to run. */\n _markChangeDetectionNeeded(runAfter) {\n if (runAfter) {\n this._runAfterChangeDetection.push(runAfter);\n }\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\n if (!this._isChangeDetectionPending) {\n this._isChangeDetectionPending = true;\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._doChangeDetection();\n }));\n }\n }\n /** Run change detection. */\n _doChangeDetection() {\n this._isChangeDetectionPending = false;\n // Apply the content transform. The transform can't be set via an Angular binding because\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n // the `Number` function first to coerce it to a numeric value.\n this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\n // instead does not properly check the projected content.\n this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n const runAfterChangeDetection = this._runAfterChangeDetection;\n this._runAfterChangeDetection = [];\n for (const fn of runAfterChangeDetection) {\n fn();\n }\n }\n /** Calculates the `style.width` and `style.height` for the spacer element. */\n _calculateSpacerSize() {\n this._totalContentHeight =\n this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n this._totalContentWidth =\n this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n }\n}\nCdkVirtualScrollViewport.ɵfac = function CdkVirtualScrollViewport_Factory(t) { return new (t || CdkVirtualScrollViewport)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(VIRTUAL_SCROLL_STRATEGY, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(ScrollDispatcher), ɵngcc0.ɵɵdirectiveInject(ViewportRuler)); };\nCdkVirtualScrollViewport.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CdkVirtualScrollViewport, selectors: [[\"cdk-virtual-scroll-viewport\"]], viewQuery: function CdkVirtualScrollViewport_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._contentWrapper = _t.first);\n } }, hostAttrs: [1, \"cdk-virtual-scroll-viewport\"], hostVars: 4, hostBindings: function CdkVirtualScrollViewport_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"cdk-virtual-scroll-orientation-horizontal\", ctx.orientation === \"horizontal\")(\"cdk-virtual-scroll-orientation-vertical\", ctx.orientation !== \"horizontal\");\n } }, inputs: { orientation: \"orientation\", appendOnly: \"appendOnly\" }, outputs: { scrolledIndexChange: \"scrolledIndexChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: CdkScrollable,\n useExisting: CdkVirtualScrollViewport\n }]), ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1, decls: 4, vars: 4, consts: [[1, \"cdk-virtual-scroll-content-wrapper\"], [\"contentWrapper\", \"\"], [1, \"cdk-virtual-scroll-spacer\"]], template: function CdkVirtualScrollViewport_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"div\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx._totalContentWidth)(\"height\", ctx._totalContentHeight);\n } }, styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"], encapsulation: 2, changeDetection: 0 });\nCdkVirtualScrollViewport.ctorParameters = () => [\n { type: ElementRef },\n { type: ChangeDetectorRef },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [VIRTUAL_SCROLL_STRATEGY,] }] },\n { type: Directionality, decorators: [{ type: Optional }] },\n { type: ScrollDispatcher },\n { type: ViewportRuler }\n];\nCdkVirtualScrollViewport.propDecorators = {\n orientation: [{ type: Input }],\n appendOnly: [{ type: Input }],\n scrolledIndexChange: [{ type: Output }],\n _contentWrapper: [{ type: ViewChild, args: ['contentWrapper', { static: true },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkVirtualScrollViewport, [{\n type: Component,\n args: [{\n selector: 'cdk-virtual-scroll-viewport',\n template: \"\\n
\\n \\n
\\n\\n
\\n\",\n host: {\n 'class': 'cdk-virtual-scroll-viewport',\n '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: CdkScrollable,\n useExisting: CdkVirtualScrollViewport\n }],\n styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLL_STRATEGY]\n }] }, { type: ɵngcc2.Directionality, decorators: [{\n type: Optional\n }] }, { type: ScrollDispatcher }, { type: ViewportRuler }]; }, { scrolledIndexChange: [{\n type: Output\n }], orientation: [{\n type: Input\n }], appendOnly: [{\n type: Input\n }], _contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', { static: true }]\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation, direction, node) {\n const el = node;\n if (!el.getBoundingClientRect) {\n return 0;\n }\n const rect = el.getBoundingClientRect();\n if (orientation === 'horizontal') {\n return direction === 'start' ? rect.left : rect.right;\n }\n return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\nclass CdkVirtualForOf {\n constructor(\n /** The view container to add items to. */\n _viewContainerRef, \n /** The template to use when stamping out new items. */\n _template, \n /** The set of available differs. */\n _differs, \n /** The strategy used to render items in the virtual scroll viewport. */\n _viewRepeater, \n /** The virtual scrolling viewport that these items are being rendered in. */\n _viewport, ngZone) {\n this._viewContainerRef = _viewContainerRef;\n this._template = _template;\n this._differs = _differs;\n this._viewRepeater = _viewRepeater;\n this._viewport = _viewport;\n /** Emits when the rendered view of the data changes. */\n this.viewChange = new Subject();\n /** Subject that emits when a new DataSource instance is given. */\n this._dataSourceChanges = new Subject();\n /** Emits whenever the data in the current DataSource changes. */\n this.dataStream = this._dataSourceChanges\n .pipe(\n // Start off with null `DataSource`.\n startWith(null), \n // Bundle up the previous and current data sources so we can work with both.\n pairwise(), \n // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n // new one, passing back a stream of data changes which we run through `switchMap` to give\n // us a data stream that emits the latest data from whatever the current `DataSource` is.\n switchMap(([prev, cur]) => this._changeDataSource(prev, cur)), \n // Replay the last emitted data when someone subscribes.\n shareReplay(1));\n /** The differ used to calculate changes to the data. */\n this._differ = null;\n /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n this._needsUpdate = false;\n this._destroyed = new Subject();\n this.dataStream.subscribe(data => {\n this._data = data;\n this._onRenderedDataChange();\n });\n this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n this._renderedRange = range;\n ngZone.run(() => this.viewChange.next(this._renderedRange));\n this._onRenderedDataChange();\n });\n this._viewport.attach(this);\n }\n /** The DataSource to display. */\n get cdkVirtualForOf() {\n return this._cdkVirtualForOf;\n }\n set cdkVirtualForOf(value) {\n this._cdkVirtualForOf = value;\n if (isDataSource(value)) {\n this._dataSourceChanges.next(value);\n }\n else {\n // If value is an an NgIterable, convert it to an array.\n this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n }\n }\n /**\n * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n * the item and produces a value to be used as the item's identity when tracking changes.\n */\n get cdkVirtualForTrackBy() {\n return this._cdkVirtualForTrackBy;\n }\n set cdkVirtualForTrackBy(fn) {\n this._needsUpdate = true;\n this._cdkVirtualForTrackBy = fn ?\n (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item) :\n undefined;\n }\n /** The template used to stamp out new elements. */\n set cdkVirtualForTemplate(value) {\n if (value) {\n this._needsUpdate = true;\n this._template = value;\n }\n }\n /**\n * The size of the cache used to store templates that are not being used for re-use later.\n * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n */\n get cdkVirtualForTemplateCacheSize() {\n return this._viewRepeater.viewCacheSize;\n }\n set cdkVirtualForTemplateCacheSize(size) {\n this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n }\n /**\n * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n * in the specified range. Throws an error if the range includes items that are not currently\n * rendered.\n */\n measureRangeSize(range, orientation) {\n if (range.start >= range.end) {\n return 0;\n }\n if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Error: attempted to measure an item that isn't rendered.`);\n }\n // The index into the list of rendered views for the first item in the range.\n const renderedStartIndex = range.start - this._renderedRange.start;\n // The length of the range we're measuring.\n const rangeLen = range.end - range.start;\n // Loop over all the views, find the first and land node and compute the size by subtracting\n // the top of the first node from the bottom of the last one.\n let firstNode;\n let lastNode;\n // Find the first node by starting from the beginning and going forwards.\n for (let i = 0; i < rangeLen; i++) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n firstNode = lastNode = view.rootNodes[0];\n break;\n }\n }\n // Find the last node by starting from the end and going backwards.\n for (let i = rangeLen - 1; i > -1; i--) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n lastNode = view.rootNodes[view.rootNodes.length - 1];\n break;\n }\n }\n return firstNode && lastNode ?\n getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode) : 0;\n }\n ngDoCheck() {\n if (this._differ && this._needsUpdate) {\n // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n // changing (need to do this diff).\n const changes = this._differ.diff(this._renderedItems);\n if (!changes) {\n this._updateContext();\n }\n else {\n this._applyChanges(changes);\n }\n this._needsUpdate = false;\n }\n }\n ngOnDestroy() {\n this._viewport.detach();\n this._dataSourceChanges.next(undefined);\n this._dataSourceChanges.complete();\n this.viewChange.complete();\n this._destroyed.next();\n this._destroyed.complete();\n this._viewRepeater.detach();\n }\n /** React to scroll state changes in the viewport. */\n _onRenderedDataChange() {\n if (!this._renderedRange) {\n return;\n }\n this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n if (!this._differ) {\n // Use a wrapper function for the `trackBy` so any new values are\n // picked up automatically without having to recreate the differ.\n this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n });\n }\n this._needsUpdate = true;\n }\n /** Swap out one `DataSource` for another. */\n _changeDataSource(oldDs, newDs) {\n if (oldDs) {\n oldDs.disconnect(this);\n }\n this._needsUpdate = true;\n return newDs ? newDs.connect(this) : of();\n }\n /** Update the `CdkVirtualForOfContext` for all views. */\n _updateContext() {\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n view.detectChanges();\n }\n }\n /** Apply changes to the DOM. */\n _applyChanges(changes) {\n this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), (record) => record.item);\n // Update $implicit for any items that had an identity change.\n changes.forEachIdentityChange((record) => {\n const view = this._viewContainerRef.get(record.currentIndex);\n view.context.$implicit = record.item;\n });\n // Update the context variables on all items.\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n }\n }\n /** Update the computed properties on the `CdkVirtualForOfContext`. */\n _updateComputedContextProperties(context) {\n context.first = context.index === 0;\n context.last = context.index === context.count - 1;\n context.even = context.index % 2 === 0;\n context.odd = !context.even;\n }\n _getEmbeddedViewArgs(record, index) {\n // Note that it's important that we insert the item directly at the proper index,\n // rather than inserting it and the moving it in place, because if there's a directive\n // on the same node that injects the `ViewContainerRef`, Angular will insert another\n // comment node which can throw off the move when it's being repeated for all items.\n return {\n templateRef: this._template,\n context: {\n $implicit: record.item,\n // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n cdkVirtualForOf: this._cdkVirtualForOf,\n index: -1,\n count: -1,\n first: false,\n last: false,\n odd: false,\n even: false\n },\n index,\n };\n }\n}\nCdkVirtualForOf.ɵfac = function CdkVirtualForOf_Factory(t) { return new (t || CdkVirtualForOf)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers), ɵngcc0.ɵɵdirectiveInject(_VIEW_REPEATER_STRATEGY), ɵngcc0.ɵɵdirectiveInject(CdkVirtualScrollViewport, 4), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nCdkVirtualForOf.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CdkVirtualForOf, selectors: [[\"\", \"cdkVirtualFor\", \"\", \"cdkVirtualForOf\", \"\"]], inputs: { cdkVirtualForOf: \"cdkVirtualForOf\", cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\", cdkVirtualForTemplate: \"cdkVirtualForTemplate\", cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy },\n ])] });\nCdkVirtualForOf.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef },\n { type: IterableDiffers },\n { type: _RecycleViewRepeaterStrategy, decorators: [{ type: Inject, args: [_VIEW_REPEATER_STRATEGY,] }] },\n { type: CdkVirtualScrollViewport, decorators: [{ type: SkipSelf }] },\n { type: NgZone }\n];\nCdkVirtualForOf.propDecorators = {\n cdkVirtualForOf: [{ type: Input }],\n cdkVirtualForTrackBy: [{ type: Input }],\n cdkVirtualForTemplate: [{ type: Input }],\n cdkVirtualForTemplateCacheSize: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkVirtualForOf, [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualFor][cdkVirtualForOf]',\n providers: [\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy },\n ]\n }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.TemplateRef }, { type: ɵngcc0.IterableDiffers }, { type: ɵngcc3._RecycleViewRepeaterStrategy, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: CdkVirtualScrollViewport, decorators: [{\n type: SkipSelf\n }] }, { type: ɵngcc0.NgZone }]; }, { cdkVirtualForOf: [{\n type: Input\n }], cdkVirtualForTrackBy: [{\n type: Input\n }], cdkVirtualForTemplate: [{\n type: Input\n }], cdkVirtualForTemplateCacheSize: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkScrollableModule {\n}\nCdkScrollableModule.ɵfac = function CdkScrollableModule_Factory(t) { return new (t || CdkScrollableModule)(); };\nCdkScrollableModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CdkScrollableModule });\nCdkScrollableModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CdkScrollableModule, [{\n type: NgModule,\n args: [{\n exports: [CdkScrollable],\n declarations: [CdkScrollable]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CdkScrollableModule, { declarations: [CdkScrollable], exports: [CdkScrollable] }); })();\n/**\n * @docs-primary-export\n */\nclass ScrollingModule {\n}\nScrollingModule.ɵfac = function ScrollingModule_Factory(t) { return new (t || ScrollingModule)(); };\nScrollingModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ScrollingModule });\nScrollingModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n BidiModule,\n PlatformModule,\n CdkScrollableModule\n ], BidiModule, CdkScrollableModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollingModule, [{\n type: NgModule,\n args: [{\n imports: [\n BidiModule,\n PlatformModule,\n CdkScrollableModule\n ],\n exports: [\n BidiModule,\n CdkScrollableModule,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n ],\n declarations: [\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ScrollingModule, { declarations: function () { return [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport]; }, imports: function () { return [BidiModule,\n PlatformModule, CdkScrollableModule]; }, exports: function () { return [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport]; } }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };\n\n","import { ElementRef } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction coerceNumberProperty(value, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n/**\n * Whether the provided value is considered a number.\n * @docs-private\n */\nfunction _isNumberValue(value) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value)) && !isNaN(Number(value));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction coerceArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return typeof value === 'string' ? value : `${value}px`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Coerces an ElementRef or an Element into an element.\n * Useful for APIs that can accept either a ref or the native element itself.\n */\nfunction coerceElement(elementOrRef) {\n return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Coerces a value to an array of trimmed non-empty strings.\n * Any input that is not an array, `null` or `undefined` will be turned into a string\n * via `toString()` and subsequently split with the given separator.\n * `null` and `undefined` will result in an empty array.\n * This results in the following outcomes:\n * - `null` -> `[]`\n * - `[null]` -> `[\"null\"]`\n * - `[\"a\", \"b \", \" \"]` -> `[\"a\", \"b\"]`\n * - `[1, [2, 3]]` -> `[\"1\", \"2,3\"]`\n * - `[{ a: 0 }]` -> `[\"[object Object]\"]`\n * - `{ a: 0 }` -> `[\"[object\", \"Object]\"]`\n *\n * Useful for defining CSS classes or table columns.\n * @param value the value to coerce into an array of strings\n * @param separator split-separator if value isn't an array\n */\nfunction coerceStringArray(value, separator = /\\s+/) {\n const result = [];\n if (value != null) {\n const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);\n for (const sourceValue of sourceValues) {\n const trimmedString = `${sourceValue}`.trim();\n if (trimmedString) {\n result.push(trimmedString);\n }\n }\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport { _isNumberValue, coerceArray, coerceBooleanProperty, coerceCssPixelValue, coerceElement, coerceNumberProperty, coerceStringArray };\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { APP_BOOTSTRAP_LISTENER, PLATFORM_ID, NgModule, Injectable, InjectionToken, Inject, inject, NgZone, ɵɵdefineInjectable, ɵɵinject } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { Subject, BehaviorSubject, Observable, merge, asapScheduler, of, fromEvent } from 'rxjs';\nimport { filter, debounceTime, map, switchMap, takeUntil, take, tap } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/browser-provider.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Find all of the server-generated stylings, if any, and remove them\n * This will be in the form of inline classes and the style block in the\n * head of the DOM\n * @param {?} _document\n * @param {?} platformId\n * @return {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nfunction removeStyles(_document, platformId) {\n return (/**\n * @return {?}\n */\n () => {\n if (isPlatformBrowser(platformId)) {\n /** @type {?} */\n const elements = Array.from(_document.querySelectorAll(`[class*=${CLASS_NAME}]`));\n // RegExp constructor should only be used if passing a variable to the constructor.\n // When using static regular expression it is more performant to use reg exp literal.\n // This is also needed to provide Safari 9 compatibility, please see\n // https://stackoverflow.com/questions/37919802 for more discussion.\n /** @type {?} */\n const classRegex = /\\bflex-layout-.+?\\b/g;\n elements.forEach((/**\n * @param {?} el\n * @return {?}\n */\n el => {\n el.classList.contains(`${CLASS_NAME}ssr`) && el.parentNode ?\n el.parentNode.removeChild(el) : el.className.replace(classRegex, '');\n }));\n }\n });\n}\n/**\n * Provider to remove SSR styles on the browser\n * @type {?}\n */\nconst BROWSER_PROVIDER = {\n provide: (/** @type {?} */ (APP_BOOTSTRAP_LISTENER)),\n useFactory: removeStyles,\n deps: [DOCUMENT, PLATFORM_ID],\n multi: true\n};\n/** @type {?} */\nconst CLASS_NAME = 'flex-layout-';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * *****************************************************************\n * Define module for common Angular Layout utilities\n * *****************************************************************\n */\nclass CoreModule {\n}\nCoreModule.ɵfac = function CoreModule_Factory(t) { return new (t || CoreModule)(); };\nCoreModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CoreModule });\nCoreModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [BROWSER_PROVIDER] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CoreModule, [{\n type: NgModule,\n args: [{\n providers: [BROWSER_PROVIDER]\n }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/media-change.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Class instances emitted [to observers] for each mql notification\n */\nclass MediaChange {\n /**\n * @param {?=} matches whether the mediaQuery is currently activated\n * @param {?=} mediaQuery e.g. (min-width: 600px) and (max-width: 959px)\n * @param {?=} mqAlias e.g. gt-sm, md, gt-lg\n * @param {?=} suffix e.g. GtSM, Md, GtLg\n * @param {?=} priority the priority of activation for the given breakpoint\n */\n constructor(matches = false, mediaQuery = 'all', mqAlias = '', suffix = '', priority = 0) {\n this.matches = matches;\n this.mediaQuery = mediaQuery;\n this.mqAlias = mqAlias;\n this.suffix = suffix;\n this.priority = priority;\n this.property = '';\n }\n /**\n * Create an exact copy of the MediaChange\n * @return {?}\n */\n clone() {\n return new MediaChange(this.matches, this.mediaQuery, this.mqAlias, this.suffix);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/stylesheet-map/stylesheet-map.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Utility to emulate a CSS stylesheet\n *\n * This utility class stores all of the styles for a given HTML element\n * as a readonly `stylesheet` map.\n */\nclass StylesheetMap {\n constructor() {\n this.stylesheet = new Map();\n }\n /**\n * Add an individual style to an HTML element\n * @param {?} element\n * @param {?} style\n * @param {?} value\n * @return {?}\n */\n addStyleToElement(element, style, value) {\n /** @type {?} */\n const stylesheet = this.stylesheet.get(element);\n if (stylesheet) {\n stylesheet.set(style, value);\n }\n else {\n this.stylesheet.set(element, new Map([[style, value]]));\n }\n }\n /**\n * Clear the virtual stylesheet\n * @return {?}\n */\n clearStyles() {\n this.stylesheet.clear();\n }\n /**\n * Retrieve a given style for an HTML element\n * @param {?} el\n * @param {?} styleName\n * @return {?}\n */\n getStyleForElement(el, styleName) {\n /** @type {?} */\n const styles = this.stylesheet.get(el);\n /** @type {?} */\n let value = '';\n if (styles) {\n /** @type {?} */\n const style = styles.get(styleName);\n if (typeof style === 'number' || typeof style === 'string') {\n value = style + '';\n }\n }\n return value;\n }\n}\nStylesheetMap.ɵfac = function StylesheetMap_Factory(t) { return new (t || StylesheetMap)(); };\n/** @nocollapse */ StylesheetMap.ɵprov = ɵɵdefineInjectable({ factory: function StylesheetMap_Factory() { return new StylesheetMap(); }, token: StylesheetMap, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StylesheetMap, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/stylesheet-map/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/tokens/library-config.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DEFAULT_CONFIG = {\n addFlexToParent: true,\n addOrientationBps: false,\n disableDefaultBps: false,\n disableVendorPrefixes: false,\n serverLoaded: false,\n useColumnBasisZero: true,\n printWithBreakpoints: [],\n mediaTriggerAutoRestore: true,\n ssrObserveBreakpoints: [],\n};\n/** @type {?} */\nconst LAYOUT_CONFIG = new InjectionToken('Flex Layout token, config options for the library', {\n providedIn: 'root',\n factory: (/**\n * @return {?}\n */\n () => DEFAULT_CONFIG)\n});\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/tokens/server-token.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Token that is provided to tell whether the FlexLayoutServerModule\n * has been included in the bundle\n *\n * NOTE: This can be manually provided to disable styles when using SSR\n * @type {?}\n */\nconst SERVER_TOKEN = new InjectionToken('FlexLayoutServerLoaded', {\n providedIn: 'root',\n factory: (/**\n * @return {?}\n */\n () => false)\n});\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/tokens/breakpoint-token.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst BREAKPOINT = new InjectionToken('Flex Layout token, collect all breakpoints into one provider', {\n providedIn: 'root',\n factory: (/**\n * @return {?}\n */\n () => null)\n});\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/tokens/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/add-alias.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * For the specified MediaChange, make sure it contains the breakpoint alias\n * and suffix (if available).\n * @param {?} dest\n * @param {?} source\n * @return {?}\n */\nfunction mergeAlias(dest, source) {\n dest = dest ? dest.clone() : new MediaChange();\n if (source) {\n dest.mqAlias = source.alias;\n dest.mediaQuery = source.mediaQuery;\n dest.suffix = (/** @type {?} */ (source.suffix));\n dest.priority = (/** @type {?} */ (source.priority));\n }\n return dest;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: utils/layout-validator.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n * @type {?}\n */\nconst INLINE = 'inline';\n/** @type {?} */\nconst LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse'];\n/**\n * Validate the direction|'direction wrap' value and then update the host's inline flexbox styles\n * @param {?} value\n * @return {?}\n */\nfunction buildLayoutCSS(value) {\n let [direction, wrap, isInline] = validateValue(value);\n return buildCSS(direction, wrap, isInline);\n}\n/**\n * Validate the value to be one of the acceptable value options\n * Use default fallback of 'row'\n * @param {?} value\n * @return {?}\n */\nfunction validateValue(value) {\n value = value ? value.toLowerCase() : '';\n let [direction, wrap, inline] = value.split(' ');\n // First value must be the `flex-direction`\n if (!LAYOUT_VALUES.find((/**\n * @param {?} x\n * @return {?}\n */\n x => x === direction))) {\n direction = LAYOUT_VALUES[0];\n }\n if (wrap === INLINE) {\n wrap = (inline !== INLINE) ? inline : '';\n inline = INLINE;\n }\n return [direction, validateWrapValue(wrap), !!inline];\n}\n/**\n * Convert layout-wrap='' to expected flex-wrap style\n * @param {?} value\n * @return {?}\n */\nfunction validateWrapValue(value) {\n if (!!value) {\n switch (value.toLowerCase()) {\n case 'reverse':\n case 'wrap-reverse':\n case 'reverse-wrap':\n value = 'wrap-reverse';\n break;\n case 'no':\n case 'none':\n case 'nowrap':\n value = 'nowrap';\n break;\n // All other values fallback to 'wrap'\n default:\n value = 'wrap';\n break;\n }\n }\n return value;\n}\n/**\n * Build the CSS that should be assigned to the element instance\n * BUG:\n * 1) min-height on a column flex container won’t apply to its flex item children in IE 10-11.\n * Use height instead if possible; height : vh;\n *\n * This way any padding or border specified on the child elements are\n * laid out and drawn inside that element's specified width and height.\n * @param {?} direction\n * @param {?=} wrap\n * @param {?=} inline\n * @return {?}\n */\nfunction buildCSS(direction, wrap = null, inline = false) {\n return {\n 'display': inline ? 'inline-flex' : 'flex',\n 'box-sizing': 'border-box',\n 'flex-direction': direction,\n 'flex-wrap': !!wrap ? wrap : null\n };\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/base/base2.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nclass BaseDirective2 {\n /**\n * @protected\n * @param {?} elementRef\n * @param {?} styleBuilder\n * @param {?} styler\n * @param {?} marshal\n */\n constructor(elementRef, styleBuilder, styler, marshal) {\n this.elementRef = elementRef;\n this.styleBuilder = styleBuilder;\n this.styler = styler;\n this.marshal = marshal;\n this.DIRECTIVE_KEY = '';\n this.inputs = [];\n /**\n * The most recently used styles for the builder\n */\n this.mru = {};\n this.destroySubject = new Subject();\n /**\n * Cache map for style computation\n */\n this.styleCache = new Map();\n }\n /**\n * Access to host element's parent DOM node\n * @protected\n * @return {?}\n */\n get parentElement() {\n return this.elementRef.nativeElement.parentElement;\n }\n /**\n * Access to the HTMLElement for the directive\n * @protected\n * @return {?}\n */\n get nativeElement() {\n return this.elementRef.nativeElement;\n }\n /**\n * Access to the activated value for the directive\n * @return {?}\n */\n get activatedValue() {\n return this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set activatedValue(value) {\n this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, value, this.marshal.activatedAlias);\n }\n /**\n * For \\@Input changes\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n Object.keys(changes).forEach((/**\n * @param {?} key\n * @return {?}\n */\n key => {\n if (this.inputs.indexOf(key) !== -1) {\n /** @type {?} */\n const bp = key.split('.').slice(1).join('.');\n /** @type {?} */\n const val = changes[key].currentValue;\n this.setValue(val, bp);\n }\n }));\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.destroySubject.next();\n this.destroySubject.complete();\n this.marshal.releaseElement(this.nativeElement);\n }\n /**\n * Register with central marshaller service\n * @protected\n * @param {?=} extraTriggers\n * @return {?}\n */\n init(extraTriggers = []) {\n this.marshal.init(this.elementRef.nativeElement, this.DIRECTIVE_KEY, this.updateWithValue.bind(this), this.clearStyles.bind(this), extraTriggers);\n }\n /**\n * Add styles to the element using predefined style builder\n * @protected\n * @param {?} input\n * @param {?=} parent\n * @return {?}\n */\n addStyles(input, parent) {\n /** @type {?} */\n const builder = this.styleBuilder;\n /** @type {?} */\n const useCache = builder.shouldCache;\n /** @type {?} */\n let genStyles = this.styleCache.get(input);\n if (!genStyles || !useCache) {\n genStyles = builder.buildStyles(input, parent);\n if (useCache) {\n this.styleCache.set(input, genStyles);\n }\n }\n this.mru = Object.assign({}, genStyles);\n this.applyStyleToElement(genStyles);\n builder.sideEffect(input, genStyles, parent);\n }\n /**\n * Remove generated styles from an element using predefined style builder\n * @protected\n * @return {?}\n */\n clearStyles() {\n Object.keys(this.mru).forEach((/**\n * @param {?} k\n * @return {?}\n */\n k => {\n this.mru[k] = '';\n }));\n this.applyStyleToElement(this.mru);\n this.mru = {};\n }\n /**\n * Force trigger style updates on DOM element\n * @protected\n * @return {?}\n */\n triggerUpdate() {\n this.marshal.triggerUpdate(this.nativeElement, this.DIRECTIVE_KEY);\n }\n /**\n * Determine the DOM element's Flexbox flow (flex-direction).\n *\n * Check inline style first then check computed (stylesheet) style.\n * And optionally add the flow value to element's inline style.\n * @protected\n * @param {?} target\n * @param {?=} addIfMissing\n * @return {?}\n */\n getFlexFlowDirection(target, addIfMissing = false) {\n if (target) {\n const [value, hasInlineValue] = this.styler.getFlowDirection(target);\n if (!hasInlineValue && addIfMissing) {\n /** @type {?} */\n const style = buildLayoutCSS(value);\n /** @type {?} */\n const elements = [target];\n this.styler.applyStyleToElements(style, elements);\n }\n return value.trim();\n }\n return 'row';\n }\n /**\n * @protected\n * @param {?} target\n * @return {?}\n */\n hasWrap(target) {\n return this.styler.hasWrap(target);\n }\n /**\n * Applies styles given via string pair or object map to the directive element\n * @protected\n * @param {?} style\n * @param {?=} value\n * @param {?=} element\n * @return {?}\n */\n applyStyleToElement(style, value, element = this.nativeElement) {\n this.styler.applyStyleToElement(element, style, value);\n }\n /**\n * @protected\n * @param {?} val\n * @param {?} bp\n * @return {?}\n */\n setValue(val, bp) {\n this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, val, bp);\n }\n /**\n * @protected\n * @param {?} input\n * @return {?}\n */\n updateWithValue(input) {\n if (this.currentValue !== input) {\n this.addStyles(input);\n this.currentValue = input;\n }\n }\n}\nBaseDirective2.ɵfac = function BaseDirective2_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nBaseDirective2.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BaseDirective2, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/base/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/breakpoints/data/break-points.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * NOTE: Smaller ranges have HIGHER priority since the match is more specific\n * @type {?}\n */\nconst DEFAULT_BREAKPOINTS = [\n {\n alias: 'xs',\n mediaQuery: 'screen and (min-width: 0px) and (max-width: 599.98px)',\n priority: 1000,\n },\n {\n alias: 'sm',\n mediaQuery: 'screen and (min-width: 600px) and (max-width: 959.98px)',\n priority: 900,\n },\n {\n alias: 'md',\n mediaQuery: 'screen and (min-width: 960px) and (max-width: 1279.98px)',\n priority: 800,\n },\n {\n alias: 'lg',\n mediaQuery: 'screen and (min-width: 1280px) and (max-width: 1919.98px)',\n priority: 700,\n },\n {\n alias: 'xl',\n mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.98px)',\n priority: 600,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 599.98px)',\n priority: 950,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 959.98px)',\n priority: 850,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 1279.98px)',\n priority: 750,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n priority: 650,\n mediaQuery: 'screen and (max-width: 1919.98px)',\n },\n {\n alias: 'gt-xs',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 600px)',\n priority: -950,\n },\n {\n alias: 'gt-sm',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 960px)',\n priority: -850,\n }, {\n alias: 'gt-md',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 1280px)',\n priority: -750,\n },\n {\n alias: 'gt-lg',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 1920px)',\n priority: -650,\n }\n];\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/breakpoints/data/orientation-break-points.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/* tslint:disable */\n/** @type {?} */\nconst HANDSET_PORTRAIT = '(orientation: portrait) and (max-width: 599.98px)';\n/** @type {?} */\nconst HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959.98px)';\n/** @type {?} */\nconst TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839.98px)';\n/** @type {?} */\nconst TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279.98px)';\n/** @type {?} */\nconst WEB_PORTRAIT = '(orientation: portrait) and (min-width: 840px)';\n/** @type {?} */\nconst WEB_LANDSCAPE = '(orientation: landscape) and (min-width: 1280px)';\n/** @type {?} */\nconst ScreenTypes = {\n 'HANDSET': `${HANDSET_PORTRAIT}, ${HANDSET_LANDSCAPE}`,\n 'TABLET': `${TABLET_PORTRAIT} , ${TABLET_LANDSCAPE}`,\n 'WEB': `${WEB_PORTRAIT}, ${WEB_LANDSCAPE} `,\n 'HANDSET_PORTRAIT': `${HANDSET_PORTRAIT}`,\n 'TABLET_PORTRAIT': `${TABLET_PORTRAIT} `,\n 'WEB_PORTRAIT': `${WEB_PORTRAIT}`,\n 'HANDSET_LANDSCAPE': `${HANDSET_LANDSCAPE}`,\n 'TABLET_LANDSCAPE': `${TABLET_LANDSCAPE}`,\n 'WEB_LANDSCAPE': `${WEB_LANDSCAPE}`\n};\n/**\n * Extended Breakpoints for handset/tablets with landscape or portrait orientations\n * @type {?}\n */\nconst ORIENTATION_BREAKPOINTS = [\n { 'alias': 'handset', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET },\n { 'alias': 'handset.landscape', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET_LANDSCAPE },\n { 'alias': 'handset.portrait', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET_PORTRAIT },\n { 'alias': 'tablet', priority: 2100, 'mediaQuery': ScreenTypes.TABLET },\n { 'alias': 'tablet.landscape', priority: 2100, 'mediaQuery': ScreenTypes.TABLET_LANDSCAPE },\n { 'alias': 'tablet.portrait', priority: 2100, 'mediaQuery': ScreenTypes.TABLET_PORTRAIT },\n { 'alias': 'web', priority: 2200, 'mediaQuery': ScreenTypes.WEB, overlapping: true },\n { 'alias': 'web.landscape', priority: 2200, 'mediaQuery': ScreenTypes.WEB_LANDSCAPE, overlapping: true },\n { 'alias': 'web.portrait', priority: 2200, 'mediaQuery': ScreenTypes.WEB_PORTRAIT, overlapping: true }\n];\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/breakpoints/break-point.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: utils/object-extend.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\n * similar to Object.assign.\n *\n * @param {?} dest The object which will have properties copied to it.\n * @param {...?} sources The source objects from which properties will be copied.\n * @return {?}\n */\nfunction extendObject(dest, ...sources) {\n if (dest == null) {\n throw TypeError('Cannot convert undefined or null to object');\n }\n for (let source of sources) {\n if (source != null) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n dest[key] = source[key];\n }\n }\n }\n }\n return dest;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/breakpoints/breakpoint-tools.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst ALIAS_DELIMITERS = /(\\.|-|_)/g;\n/**\n * @param {?} part\n * @return {?}\n */\nfunction firstUpperCase(part) {\n /** @type {?} */\n let first = part.length > 0 ? part.charAt(0) : '';\n /** @type {?} */\n let remainder = (part.length > 1) ? part.slice(1) : '';\n return first.toUpperCase() + remainder;\n}\n/**\n * Converts snake-case to SnakeCase.\n * @param {?} name Text to UpperCamelCase\n * @return {?}\n */\nfunction camelCase(name) {\n return name\n .replace(ALIAS_DELIMITERS, '|')\n .split('|')\n .map(firstUpperCase)\n .join('');\n}\n/**\n * For each breakpoint, ensure that a Suffix is defined;\n * fallback to UpperCamelCase the unique Alias value\n * @param {?} list\n * @return {?}\n */\nfunction validateSuffixes(list) {\n list.forEach((/**\n * @param {?} bp\n * @return {?}\n */\n (bp) => {\n if (!bp.suffix) {\n bp.suffix = camelCase(bp.alias); // create Suffix value based on alias\n bp.overlapping = !!bp.overlapping; // ensure default value\n }\n }));\n return list;\n}\n/**\n * Merge a custom breakpoint list with the default list based on unique alias values\n * - Items are added if the alias is not in the default list\n * - Items are merged with the custom override if the alias exists in the default list\n * @param {?} defaults\n * @param {?=} custom\n * @return {?}\n */\nfunction mergeByAlias(defaults, custom = []) {\n /** @type {?} */\n const dict = {};\n defaults.forEach((/**\n * @param {?} bp\n * @return {?}\n */\n bp => {\n dict[bp.alias] = bp;\n }));\n // Merge custom breakpoints\n custom.forEach((/**\n * @param {?} bp\n * @return {?}\n */\n (bp) => {\n if (dict[bp.alias]) {\n extendObject(dict[bp.alias], bp);\n }\n else {\n dict[bp.alias] = bp;\n }\n }));\n return validateSuffixes(Object.keys(dict).map((/**\n * @param {?} k\n * @return {?}\n */\n k => dict[k])));\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/breakpoints/break-points-token.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Injection token unique to the flex-layout library.\n * Use this token when build a custom provider (see below).\n * @type {?}\n */\nconst BREAKPOINTS = new InjectionToken('Token (@angular/flex-layout) Breakpoints', {\n providedIn: 'root',\n factory: (/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const breakpoints = inject(BREAKPOINT);\n /** @type {?} */\n const layoutConfig = inject(LAYOUT_CONFIG);\n /** @type {?} */\n const bpFlattenArray = [].concat.apply([], (breakpoints || [])\n .map((/**\n * @param {?} v\n * @return {?}\n */\n (v) => Array.isArray(v) ? v : [v])));\n /** @type {?} */\n const builtIns = (layoutConfig.disableDefaultBps ? [] : DEFAULT_BREAKPOINTS)\n .concat(layoutConfig.addOrientationBps ? ORIENTATION_BREAKPOINTS : []);\n return mergeByAlias(builtIns, bpFlattenArray);\n })\n});\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/utils/sort.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * HOF to sort the breakpoints by descending priority\n * @template T\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction sortDescendingPriority(a, b) {\n /** @type {?} */\n const priorityA = a ? a.priority || 0 : 0;\n /** @type {?} */\n const priorityB = b ? b.priority || 0 : 0;\n return priorityB - priorityA;\n}\n/**\n * HOF to sort the breakpoints by ascending priority\n * @template T\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction sortAscendingPriority(a, b) {\n /** @type {?} */\n const pA = a.priority || 0;\n /** @type {?} */\n const pB = b.priority || 0;\n return pA - pB;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/breakpoints/break-point-registry.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Registry of 1..n MediaQuery breakpoint ranges\n * This is published as a provider and may be overridden from custom, application-specific ranges\n *\n */\nclass BreakPointRegistry {\n /**\n * @param {?} list\n */\n constructor(list) {\n /**\n * Memoized BreakPoint Lookups\n */\n this.findByMap = new Map();\n this.items = [...list].sort(sortAscendingPriority);\n }\n /**\n * Search breakpoints by alias (e.g. gt-xs)\n * @param {?} alias\n * @return {?}\n */\n findByAlias(alias) {\n return !alias ? null : this.findWithPredicate(alias, (/**\n * @param {?} bp\n * @return {?}\n */\n (bp) => bp.alias == alias));\n }\n /**\n * @param {?} query\n * @return {?}\n */\n findByQuery(query) {\n return this.findWithPredicate(query, (/**\n * @param {?} bp\n * @return {?}\n */\n (bp) => bp.mediaQuery == query));\n }\n /**\n * Get all the breakpoints whose ranges could overlapping `normal` ranges;\n * e.g. gt-sm overlaps md, lg, and xl\n * @return {?}\n */\n get overlappings() {\n return this.items.filter((/**\n * @param {?} it\n * @return {?}\n */\n it => it.overlapping == true));\n }\n /**\n * Get list of all registered (non-empty) breakpoint aliases\n * @return {?}\n */\n get aliases() {\n return this.items.map((/**\n * @param {?} it\n * @return {?}\n */\n it => it.alias));\n }\n /**\n * Aliases are mapped to properties using suffixes\n * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm'\n * for property layoutGtSM.\n * @return {?}\n */\n get suffixes() {\n return this.items.map((/**\n * @param {?} it\n * @return {?}\n */\n it => !!it.suffix ? it.suffix : ''));\n }\n /**\n * Memoized lookup using custom predicate function\n * @private\n * @param {?} key\n * @param {?} searchFn\n * @return {?}\n */\n findWithPredicate(key, searchFn) {\n /** @type {?} */\n let response = this.findByMap.get(key);\n if (!response) {\n response = this.items.find(searchFn) || null;\n this.findByMap.set(key, response);\n }\n return response || null;\n }\n}\nBreakPointRegistry.ɵfac = function BreakPointRegistry_Factory(t) { return new (t || BreakPointRegistry)(ɵngcc0.ɵɵinject(BREAKPOINTS)); };\n/** @nocollapse */ BreakPointRegistry.ɵprov = ɵɵdefineInjectable({ factory: function BreakPointRegistry_Factory() { return new BreakPointRegistry(ɵɵinject(BREAKPOINTS)); }, token: BreakPointRegistry, providedIn: \"root\" });\n/** @nocollapse */\nBreakPointRegistry.ctorParameters = () => [\n { type: Array, decorators: [{ type: Inject, args: [BREAKPOINTS,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BreakPointRegistry, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: Array, decorators: [{\n type: Inject,\n args: [BREAKPOINTS]\n }] }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/breakpoints/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/match-media/match-media.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * MediaMonitor configures listeners to mediaQuery changes and publishes an Observable facade to\n * convert mediaQuery change callbacks to subscriber notifications. These notifications will be\n * performed within the ng Zone to trigger change detections and component updates.\n *\n * NOTE: both mediaQuery activations and de-activations are announced in notifications\n */\nclass MatchMedia {\n /**\n * @param {?} _zone\n * @param {?} _platformId\n * @param {?} _document\n */\n constructor(_zone, _platformId, _document) {\n this._zone = _zone;\n this._platformId = _platformId;\n this._document = _document;\n /**\n * Initialize source with 'all' so all non-responsive APIs trigger style updates\n */\n this.source = new BehaviorSubject(new MediaChange(true));\n this.registry = new Map();\n this.pendingRemoveListenerFns = [];\n this._observable$ = this.source.asObservable();\n }\n /**\n * Publish list of all current activations\n * @return {?}\n */\n get activations() {\n /** @type {?} */\n const results = [];\n this.registry.forEach((/**\n * @param {?} mql\n * @param {?} key\n * @return {?}\n */\n (mql, key) => {\n if (mql.matches) {\n results.push(key);\n }\n }));\n return results;\n }\n /**\n * For the specified mediaQuery?\n * @param {?} mediaQuery\n * @return {?}\n */\n isActive(mediaQuery) {\n /** @type {?} */\n const mql = this.registry.get(mediaQuery);\n return !!mql ? mql.matches : this.registerQuery(mediaQuery).some((/**\n * @param {?} m\n * @return {?}\n */\n m => m.matches));\n }\n /**\n * External observers can watch for all (or a specific) mql changes.\n * Typically used by the MediaQueryAdaptor; optionally available to components\n * who wish to use the MediaMonitor as mediaMonitor$ observable service.\n *\n * Use deferred registration process to register breakpoints only on subscription\n * This logic also enforces logic to register all mediaQueries BEFORE notify\n * subscribers of notifications.\n * @param {?=} mqList\n * @param {?=} filterOthers\n * @return {?}\n */\n observe(mqList, filterOthers = false) {\n if (mqList && mqList.length) {\n /** @type {?} */\n const matchMedia$ = this._observable$.pipe(filter((/**\n * @param {?} change\n * @return {?}\n */\n (change) => !filterOthers ? true : (mqList.indexOf(change.mediaQuery) > -1))));\n /** @type {?} */\n const registration$ = new Observable((/**\n * @param {?} observer\n * @return {?}\n */\n (observer) => {\n // tslint:disable-line:max-line-length\n /** @type {?} */\n const matches = this.registerQuery(mqList);\n if (matches.length) {\n /** @type {?} */\n const lastChange = (/** @type {?} */ (matches.pop()));\n matches.forEach((/**\n * @param {?} e\n * @return {?}\n */\n (e) => {\n observer.next(e);\n }));\n this.source.next(lastChange); // last match is cached\n }\n observer.complete();\n }));\n return merge(registration$, matchMedia$);\n }\n return this._observable$;\n }\n /**\n * Based on the BreakPointRegistry provider, register internal listeners for each unique\n * mediaQuery. Each listener emits specific MediaChange data to observers\n * @param {?} mediaQuery\n * @return {?}\n */\n registerQuery(mediaQuery) {\n /** @type {?} */\n const list = Array.isArray(mediaQuery) ? mediaQuery : [mediaQuery];\n /** @type {?} */\n const matches = [];\n buildQueryCss(list, this._document);\n list.forEach((/**\n * @param {?} query\n * @return {?}\n */\n (query) => {\n /** @type {?} */\n const onMQLEvent = (/**\n * @param {?} e\n * @return {?}\n */\n (e) => {\n this._zone.run((/**\n * @return {?}\n */\n () => this.source.next(new MediaChange(e.matches, query))));\n });\n /** @type {?} */\n let mql = this.registry.get(query);\n if (!mql) {\n mql = this.buildMQL(query);\n mql.addListener(onMQLEvent);\n this.pendingRemoveListenerFns.push((/**\n * @return {?}\n */\n () => (/** @type {?} */ (mql)).removeListener(onMQLEvent)));\n this.registry.set(query, mql);\n }\n if (mql.matches) {\n matches.push(new MediaChange(true, query));\n }\n }));\n return matches;\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n /** @type {?} */\n let fn;\n while (fn = this.pendingRemoveListenerFns.pop()) {\n fn();\n }\n }\n /**\n * Call window.matchMedia() to build a MediaQueryList; which\n * supports 0..n listeners for activation/deactivation\n * @protected\n * @param {?} query\n * @return {?}\n */\n buildMQL(query) {\n return constructMql(query, isPlatformBrowser(this._platformId));\n }\n}\nMatchMedia.ɵfac = function MatchMedia_Factory(t) { return new (t || MatchMedia)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(PLATFORM_ID), ɵngcc0.ɵɵinject(DOCUMENT)); };\n/** @nocollapse */ MatchMedia.ɵprov = ɵɵdefineInjectable({ factory: function MatchMedia_Factory() { return new MatchMedia(ɵɵinject(NgZone), ɵɵinject(PLATFORM_ID), ɵɵinject(DOCUMENT)); }, token: MatchMedia, providedIn: \"root\" });\n/** @nocollapse */\nMatchMedia.ctorParameters = () => [\n { type: NgZone },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatchMedia, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n/**\n * Private global registry for all dynamically-created, injected style tags\n * @see prepare(query)\n * @type {?}\n */\nconst ALL_STYLES = {};\n/**\n * For Webkit engines that only trigger the MediaQueryList Listener\n * when there is at least one CSS selector for the respective media query.\n *\n * @param {?} mediaQueries\n * @param {?} _document\n * @return {?}\n */\nfunction buildQueryCss(mediaQueries, _document) {\n /** @type {?} */\n const list = mediaQueries.filter((/**\n * @param {?} it\n * @return {?}\n */\n it => !ALL_STYLES[it]));\n if (list.length > 0) {\n /** @type {?} */\n const query = list.join(', ');\n try {\n /** @type {?} */\n const styleEl = _document.createElement('style');\n styleEl.setAttribute('type', 'text/css');\n if (!((/** @type {?} */ (styleEl))).styleSheet) {\n /** @type {?} */\n const cssText = `\n/*\n @angular/flex-layout - workaround for possible browser quirk with mediaQuery listeners\n see http://bit.ly/2sd4HMP\n*/\n@media ${query} {.fx-query-test{ }}\n`;\n styleEl.appendChild(_document.createTextNode(cssText));\n }\n (/** @type {?} */ (_document.head)).appendChild(styleEl);\n // Store in private global registry\n list.forEach((/**\n * @param {?} mq\n * @return {?}\n */\n mq => ALL_STYLES[mq] = styleEl));\n }\n catch (e) {\n console.error(e);\n }\n }\n}\n/**\n * @param {?} query\n * @param {?} isBrowser\n * @return {?}\n */\nfunction constructMql(query, isBrowser) {\n /** @type {?} */\n const canListen = isBrowser && !!((/** @type {?} */ (window))).matchMedia('all').addListener;\n return canListen ? ((/** @type {?} */ (window))).matchMedia(query) : (/** @type {?} */ ({\n matches: query === 'all' || query === '',\n media: query,\n addListener: (/**\n * @return {?}\n */\n () => {\n }),\n removeListener: (/**\n * @return {?}\n */\n () => {\n }),\n onchange: null,\n /**\n * @return {?}\n */\n addEventListener() {\n },\n /**\n * @return {?}\n */\n removeEventListener() {\n },\n /**\n * @return {?}\n */\n dispatchEvent() {\n return false;\n }\n }));\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/match-media/mock/mock-match-media.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * MockMatchMedia mocks calls to the Window API matchMedia with a build of a simulated\n * MockMediaQueryListener. Methods are available to simulate an activation of a mediaQuery\n * range and to clearAll mediaQuery listeners.\n */\nclass MockMatchMedia extends MatchMedia {\n // Allow fallback to overlapping mediaQueries\n /**\n * @param {?} _zone\n * @param {?} _platformId\n * @param {?} _document\n * @param {?} _breakpoints\n */\n constructor(_zone, _platformId, _document, _breakpoints) {\n super(_zone, _platformId, _document);\n this._breakpoints = _breakpoints;\n this.autoRegisterQueries = true; // Used for testing BreakPoint registrations\n // Used for testing BreakPoint registrations\n this.useOverlaps = false; // Allow fallback to overlapping mediaQueries\n }\n /**\n * Easy method to clear all listeners for all mediaQueries\n * @return {?}\n */\n clearAll() {\n this.registry.forEach((/**\n * @param {?} mql\n * @return {?}\n */\n (mql) => {\n ((/** @type {?} */ (mql))).destroy();\n }));\n this.registry.clear();\n this.useOverlaps = false;\n }\n /**\n * Feature to support manual, simulated activation of a mediaQuery.\n * @param {?} mediaQuery\n * @param {?=} useOverlaps\n * @return {?}\n */\n activate(mediaQuery, useOverlaps = false) {\n useOverlaps = useOverlaps || this.useOverlaps;\n mediaQuery = this._validateQuery(mediaQuery);\n if (useOverlaps || !this.isActive(mediaQuery)) {\n this._deactivateAll();\n this._registerMediaQuery(mediaQuery);\n this._activateWithOverlaps(mediaQuery, useOverlaps);\n }\n return this.hasActivated;\n }\n /**\n * Converts an optional mediaQuery alias to a specific, valid mediaQuery\n * @param {?} queryOrAlias\n * @return {?}\n */\n _validateQuery(queryOrAlias) {\n /** @type {?} */\n const bp = this._breakpoints.findByAlias(queryOrAlias);\n return (bp && bp.mediaQuery) || queryOrAlias;\n }\n /**\n * Manually onMediaChange any overlapping mediaQueries to simulate\n * similar functionality in the window.matchMedia()\n * @private\n * @param {?} mediaQuery\n * @param {?} useOverlaps\n * @return {?}\n */\n _activateWithOverlaps(mediaQuery, useOverlaps) {\n if (useOverlaps) {\n /** @type {?} */\n const bp = this._breakpoints.findByQuery(mediaQuery);\n /** @type {?} */\n const alias = bp ? bp.alias : 'unknown';\n // Simulate activation of overlapping lt- ranges\n switch (alias) {\n case 'lg':\n this._activateByAlias(['lt-xl']);\n break;\n case 'md':\n this._activateByAlias(['lt-xl', 'lt-lg']);\n break;\n case 'sm':\n this._activateByAlias(['lt-xl', 'lt-lg', 'lt-md']);\n break;\n case 'xs':\n this._activateByAlias(['lt-xl', 'lt-lg', 'lt-md', 'lt-sm']);\n break;\n }\n // Simulate activation of overlapping gt- mediaQuery ranges\n switch (alias) {\n case 'xl':\n this._activateByAlias(['gt-lg', 'gt-md', 'gt-sm', 'gt-xs']);\n break;\n case 'lg':\n this._activateByAlias(['gt-md', 'gt-sm', 'gt-xs']);\n break;\n case 'md':\n this._activateByAlias(['gt-sm', 'gt-xs']);\n break;\n case 'sm':\n this._activateByAlias(['gt-xs']);\n break;\n }\n }\n // Activate last since the responsiveActivation is watching *this* mediaQuery\n return this._activateByQuery(mediaQuery);\n }\n /**\n *\n * @private\n * @param {?} aliases\n * @return {?}\n */\n _activateByAlias(aliases) {\n /** @type {?} */\n const activate = (/**\n * @param {?} alias\n * @return {?}\n */\n (alias) => {\n /** @type {?} */\n const bp = this._breakpoints.findByAlias(alias);\n this._activateByQuery(bp ? bp.mediaQuery : alias);\n });\n aliases.forEach(activate);\n }\n /**\n *\n * @private\n * @param {?} mediaQuery\n * @return {?}\n */\n _activateByQuery(mediaQuery) {\n if (!this.registry.has(mediaQuery) && this.autoRegisterQueries) {\n this._registerMediaQuery(mediaQuery);\n }\n /** @type {?} */\n const mql = (/** @type {?} */ (this.registry.get(mediaQuery)));\n if (mql && !this.isActive(mediaQuery)) {\n this.registry.set(mediaQuery, mql.activate());\n }\n return this.hasActivated;\n }\n /**\n * Deactivate all current MQLs and reset the buffer\n * @private\n * @template THIS\n * @this {THIS}\n * @return {THIS}\n */\n _deactivateAll() {\n (/** @type {?} */ (this)).registry.forEach((/**\n * @param {?} it\n * @return {?}\n */\n (it) => {\n ((/** @type {?} */ (it))).deactivate();\n }));\n return (/** @type {?} */ (this));\n }\n /**\n * Insure the mediaQuery is registered with MatchMedia\n * @private\n * @param {?} mediaQuery\n * @return {?}\n */\n _registerMediaQuery(mediaQuery) {\n if (!this.registry.has(mediaQuery) && this.autoRegisterQueries) {\n this.registerQuery(mediaQuery);\n }\n }\n /**\n * Call window.matchMedia() to build a MediaQueryList; which\n * supports 0..n listeners for activation/deactivation\n * @protected\n * @param {?} query\n * @return {?}\n */\n buildMQL(query) {\n return new MockMediaQueryList(query);\n }\n /**\n * @protected\n * @return {?}\n */\n get hasActivated() {\n return this.activations.length > 0;\n }\n}\nMockMatchMedia.ɵfac = function MockMatchMedia_Factory(t) { return new (t || MockMatchMedia)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(PLATFORM_ID), ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(BreakPointRegistry)); };\nMockMatchMedia.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MockMatchMedia, factory: MockMatchMedia.ɵfac });\n/** @nocollapse */\nMockMatchMedia.ctorParameters = () => [\n { type: NgZone },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: BreakPointRegistry }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MockMatchMedia, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: BreakPointRegistry }]; }, null); })();\n/**\n * Special internal class to simulate a MediaQueryList and\n * - supports manual activation to simulate mediaQuery matching\n * - manages listeners\n */\nclass MockMediaQueryList {\n /**\n * @param {?} _mediaQuery\n */\n constructor(_mediaQuery) {\n this._mediaQuery = _mediaQuery;\n this._isActive = false;\n this._listeners = [];\n this.onchange = null;\n }\n /**\n * @return {?}\n */\n get matches() {\n return this._isActive;\n }\n /**\n * @return {?}\n */\n get media() {\n return this._mediaQuery;\n }\n /**\n * Destroy the current list by deactivating the\n * listeners and clearing the internal list\n * @return {?}\n */\n destroy() {\n this.deactivate();\n this._listeners = [];\n }\n /**\n * Notify all listeners that 'matches === TRUE'\n * @return {?}\n */\n activate() {\n if (!this._isActive) {\n this._isActive = true;\n this._listeners.forEach((/**\n * @param {?} callback\n * @return {?}\n */\n (callback) => {\n /** @type {?} */\n const cb = (/** @type {?} */ (callback));\n cb.call(this, (/** @type {?} */ ({ matches: this.matches, media: this.media })));\n }));\n }\n return this;\n }\n /**\n * Notify all listeners that 'matches === false'\n * @return {?}\n */\n deactivate() {\n if (this._isActive) {\n this._isActive = false;\n this._listeners.forEach((/**\n * @param {?} callback\n * @return {?}\n */\n (callback) => {\n /** @type {?} */\n const cb = (/** @type {?} */ (callback));\n cb.call(this, (/** @type {?} */ ({ matches: this.matches, media: this.media })));\n }));\n }\n return this;\n }\n /**\n * Add a listener to our internal list to activate later\n * @param {?} listener\n * @return {?}\n */\n addListener(listener) {\n if (this._listeners.indexOf(listener) === -1) {\n this._listeners.push(listener);\n }\n if (this._isActive) {\n /** @type {?} */\n const cb = (/** @type {?} */ (listener));\n cb.call(this, (/** @type {?} */ ({ matches: this.matches, media: this.media })));\n }\n }\n /**\n * Don't need to remove listeners in the testing environment\n * @param {?} _\n * @return {?}\n */\n removeListener(_) {\n }\n /**\n * @param {?} _\n * @param {?} __\n * @param {?=} ___\n * @return {?}\n */\n addEventListener(_, __, ___) {\n }\n /**\n * @param {?} _\n * @param {?} __\n * @param {?=} ___\n * @return {?}\n */\n removeEventListener(_, __, ___) {\n }\n /**\n * @param {?} _\n * @return {?}\n */\n dispatchEvent(_) {\n return false;\n }\n}\n/**\n * Pre-configured provider for MockMatchMedia\n * @type {?}\n */\nconst MockMatchMediaProvider = {\n // tslint:disable-line:variable-name\n provide: MatchMedia,\n useClass: MockMatchMedia\n};\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/match-media/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/media-marshaller/print-hook.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst PRINT = 'print';\n/** @type {?} */\nconst BREAKPOINT_PRINT = {\n alias: PRINT,\n mediaQuery: PRINT,\n priority: 1000\n};\n/**\n * PrintHook - Use to intercept print MediaQuery activations and force\n * layouts to render with the specified print alias/breakpoint\n *\n * Used in MediaMarshaller and MediaObserver\n */\nclass PrintHook {\n /**\n * @param {?} breakpoints\n * @param {?} layoutConfig\n * @param {?} _document\n */\n constructor(breakpoints, layoutConfig, _document) {\n this.breakpoints = breakpoints;\n this.layoutConfig = layoutConfig;\n this._document = _document;\n // registeredBeforeAfterPrintHooks tracks if we registered the `beforeprint`\n // and `afterprint` event listeners.\n this.registeredBeforeAfterPrintHooks = false;\n // isPrintingBeforeAfterEvent is used to track if we are printing from within\n // a `beforeprint` event handler. This prevents the typicall `stopPrinting`\n // form `interceptEvents` so that printing is not stopped while the dialog\n // is still open. This is an extension of the `isPrinting` property on\n // browsers which support `beforeprint` and `afterprint` events.\n this.isPrintingBeforeAfterEvent = false;\n this.beforePrintEventListeners = [];\n this.afterPrintEventListeners = [];\n /**\n * Is this service currently in Print-mode ?\n */\n this.isPrinting = false;\n this.queue = new PrintQueue();\n this.deactivations = [];\n }\n /**\n * Add 'print' mediaQuery: to listen for matchMedia activations\n * @param {?} queries\n * @return {?}\n */\n withPrintQuery(queries) {\n return [...queries, PRINT];\n }\n /**\n * Is the MediaChange event for any 'print' \\@media\n * @param {?} e\n * @return {?}\n */\n isPrintEvent(e) {\n return e.mediaQuery.startsWith(PRINT);\n }\n /**\n * What is the desired mqAlias to use while printing?\n * @return {?}\n */\n get printAlias() {\n return this.layoutConfig.printWithBreakpoints || [];\n }\n /**\n * Lookup breakpoints associated with print aliases.\n * @return {?}\n */\n get printBreakPoints() {\n return (/** @type {?} */ (this.printAlias\n .map((/**\n * @param {?} alias\n * @return {?}\n */\n alias => this.breakpoints.findByAlias(alias)))\n .filter((/**\n * @param {?} bp\n * @return {?}\n */\n bp => bp !== null))));\n }\n /**\n * Lookup breakpoint associated with mediaQuery\n * @param {?} __0\n * @return {?}\n */\n getEventBreakpoints({ mediaQuery }) {\n /** @type {?} */\n const bp = this.breakpoints.findByQuery(mediaQuery);\n /** @type {?} */\n const list = bp ? [...this.printBreakPoints, bp] : this.printBreakPoints;\n return list.sort(sortDescendingPriority);\n }\n /**\n * Update event with printAlias mediaQuery information\n * @param {?} event\n * @return {?}\n */\n updateEvent(event) {\n /** @type {?} */\n let bp = this.breakpoints.findByQuery(event.mediaQuery);\n if (this.isPrintEvent(event)) {\n // Reset from 'print' to first (highest priority) print breakpoint\n bp = this.getEventBreakpoints(event)[0];\n event.mediaQuery = bp ? bp.mediaQuery : '';\n }\n return mergeAlias(event, bp);\n }\n // registerBeforeAfterPrintHooks registers a `beforeprint` event hook so we can\n // trigger print styles synchronously and apply proper layout styles.\n // It is a noop if the hooks have already been registered or if the document's\n // `defaultView` is not available.\n /**\n * @private\n * @param {?} target\n * @return {?}\n */\n registerBeforeAfterPrintHooks(target) {\n // `defaultView` may be null when rendering on the server or in other contexts.\n if (!this._document.defaultView || this.registeredBeforeAfterPrintHooks) {\n return;\n }\n this.registeredBeforeAfterPrintHooks = true;\n /** @type {?} */\n const beforePrintListener = (/**\n * @return {?}\n */\n () => {\n // If we aren't already printing, start printing and update the styles as\n // if there was a regular print `MediaChange`(from matchMedia).\n if (!this.isPrinting) {\n this.isPrintingBeforeAfterEvent = true;\n this.startPrinting(target, this.getEventBreakpoints(new MediaChange(true, PRINT)));\n target.updateStyles();\n }\n });\n /** @type {?} */\n const afterPrintListener = (/**\n * @return {?}\n */\n () => {\n // If we aren't already printing, start printing and update the styles as\n // if there was a regular print `MediaChange`(from matchMedia).\n this.isPrintingBeforeAfterEvent = false;\n if (this.isPrinting) {\n this.stopPrinting(target);\n target.updateStyles();\n }\n });\n // Could we have teardown logic to remove if there are no print listeners being used?\n this._document.defaultView.addEventListener('beforeprint', beforePrintListener);\n this._document.defaultView.addEventListener('afterprint', afterPrintListener);\n this.beforePrintEventListeners.push(beforePrintListener);\n this.afterPrintEventListeners.push(afterPrintListener);\n }\n /**\n * Prepare RxJS filter operator with partial application\n * @param {?} target\n * @return {?} pipeable filter predicate\n */\n interceptEvents(target) {\n this.registerBeforeAfterPrintHooks(target);\n return (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n if (this.isPrintEvent(event)) {\n if (event.matches && !this.isPrinting) {\n this.startPrinting(target, this.getEventBreakpoints(event));\n target.updateStyles();\n }\n else if (!event.matches && this.isPrinting && !this.isPrintingBeforeAfterEvent) {\n this.stopPrinting(target);\n target.updateStyles();\n }\n }\n else {\n this.collectActivations(event);\n }\n });\n }\n /**\n * Stop mediaChange event propagation in event streams\n * @return {?}\n */\n blockPropagation() {\n return (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n return !(this.isPrinting || this.isPrintEvent(event));\n });\n }\n /**\n * Save current activateBreakpoints (for later restore)\n * and substitute only the printAlias breakpoint\n * @protected\n * @param {?} target\n * @param {?} bpList\n * @return {?}\n */\n startPrinting(target, bpList) {\n this.isPrinting = true;\n target.activatedBreakpoints = this.queue.addPrintBreakpoints(bpList);\n }\n /**\n * For any print de-activations, reset the entire print queue\n * @protected\n * @param {?} target\n * @return {?}\n */\n stopPrinting(target) {\n target.activatedBreakpoints = this.deactivations;\n this.deactivations = [];\n this.queue.clear();\n this.isPrinting = false;\n }\n /**\n * To restore pre-Print Activations, we must capture the proper\n * list of breakpoint activations BEFORE print starts. OnBeforePrint()\n * is supported; so 'print' mediaQuery activations are used as a fallback\n * in browsers without `beforeprint` support.\n *\n * > But activated breakpoints are deactivated BEFORE 'print' activation.\n *\n * Let's capture all de-activations using the following logic:\n *\n * When not printing:\n * - clear cache when activating non-print breakpoint\n * - update cache (and sort) when deactivating\n *\n * When printing:\n * - sort and save when starting print\n * - restore as activatedTargets and clear when stop printing\n * @param {?} event\n * @return {?}\n */\n collectActivations(event) {\n if (!this.isPrinting || this.isPrintingBeforeAfterEvent) {\n if (!event.matches) {\n /** @type {?} */\n const bp = this.breakpoints.findByQuery(event.mediaQuery);\n if (bp) { // Deactivating a breakpoint\n this.deactivations.push(bp);\n this.deactivations.sort(sortDescendingPriority);\n }\n }\n else if (!this.isPrintingBeforeAfterEvent) {\n // Only clear deactivations if we aren't printing from a `beforeprint` event.\n // Otherwise this will clear before `stopPrinting()` is called to restore\n // the pre-Print Activations.\n this.deactivations = [];\n }\n }\n }\n /**\n * Teardown logic for the service.\n * @return {?}\n */\n ngOnDestroy() {\n if (this._document.defaultView) {\n this.beforePrintEventListeners.forEach((/**\n * @param {?} l\n * @return {?}\n */\n l => this._document.defaultView.removeEventListener('beforeprint', l)));\n this.afterPrintEventListeners.forEach((/**\n * @param {?} l\n * @return {?}\n */\n l => this._document.defaultView.removeEventListener('afterprint', l)));\n }\n }\n}\nPrintHook.ɵfac = function PrintHook_Factory(t) { return new (t || PrintHook)(ɵngcc0.ɵɵinject(BreakPointRegistry), ɵngcc0.ɵɵinject(LAYOUT_CONFIG), ɵngcc0.ɵɵinject(DOCUMENT)); };\n/** @nocollapse */ PrintHook.ɵprov = ɵɵdefineInjectable({ factory: function PrintHook_Factory() { return new PrintHook(ɵɵinject(BreakPointRegistry), ɵɵinject(LAYOUT_CONFIG), ɵɵinject(DOCUMENT)); }, token: PrintHook, providedIn: \"root\" });\n/** @nocollapse */\nPrintHook.ctorParameters = () => [\n { type: BreakPointRegistry },\n { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PrintHook, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: BreakPointRegistry }, { type: undefined, decorators: [{\n type: Inject,\n args: [LAYOUT_CONFIG]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n// ************************************************************************\n// Internal Utility class 'PrintQueue'\n// ************************************************************************\n/**\n * Utility class to manage print breakpoints + activatedBreakpoints\n * with correct sorting WHILE printing\n */\nclass PrintQueue {\n constructor() {\n /**\n * Sorted queue with prioritized print breakpoints\n */\n this.printBreakpoints = [];\n }\n /**\n * @param {?} bpList\n * @return {?}\n */\n addPrintBreakpoints(bpList) {\n bpList.push(BREAKPOINT_PRINT);\n bpList.sort(sortDescendingPriority);\n bpList.forEach((/**\n * @param {?} bp\n * @return {?}\n */\n bp => this.addBreakpoint(bp)));\n return this.printBreakpoints;\n }\n /**\n * Add Print breakpoint to queue\n * @param {?} bp\n * @return {?}\n */\n addBreakpoint(bp) {\n if (!!bp) {\n /** @type {?} */\n const bpInList = this.printBreakpoints.find((/**\n * @param {?} it\n * @return {?}\n */\n it => it.mediaQuery === bp.mediaQuery));\n if (bpInList === undefined) {\n // If this is a `printAlias` breakpoint, then append. If a true 'print' breakpoint,\n // register as highest priority in the queue\n this.printBreakpoints = isPrintBreakPoint(bp) ? [bp, ...this.printBreakpoints]\n : [...this.printBreakpoints, bp];\n }\n }\n }\n /**\n * Restore original activated breakpoints and clear internal caches\n * @return {?}\n */\n clear() {\n this.printBreakpoints = [];\n }\n}\n// ************************************************************************\n// Internal Utility methods\n// ************************************************************************\n/**\n * Only support intercept queueing if the Breakpoint is a print \\@media query\n * @param {?} bp\n * @return {?}\n */\nfunction isPrintBreakPoint(bp) {\n return bp ? bp.mediaQuery.startsWith(PRINT) : false;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/utils/array.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * Wraps the provided value in an array, unless the provided value is an array.\n * @template T\n * @param {?} value\n * @return {?}\n */\nfunction coerceArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/media-observer/media-observer.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * MediaObserver enables applications to listen for 1..n mediaQuery activations and to determine\n * if a mediaQuery is currently activated.\n *\n * Since a breakpoint change will first deactivate 1...n mediaQueries and then possibly activate\n * 1..n mediaQueries, the MediaObserver will debounce notifications and report ALL *activations*\n * in 1 event notification. The reported activations will be sorted in descending priority order.\n *\n * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange\n * notification. For custom mediaQuery notifications, alias information will not be injected and\n * those fields will be ''.\n *\n * Note: Developers should note that only mediaChange activations (not de-activations)\n * are announced by the MediaObserver.\n *\n * \\@usage\n *\n * // RxJS\n * import { filter } from 'rxjs/operators';\n * import { MediaObserver } from '\\@angular/flex-layout';\n *\n * \\@Component({ ... })\n * export class AppComponent {\n * status: string = '';\n *\n * constructor(mediaObserver: MediaObserver) {\n * const media$ = mediaObserver.asObservable().pipe(\n * filter((changes: MediaChange[]) => true) // silly noop filter\n * );\n *\n * media$.subscribe((changes: MediaChange[]) => {\n * let status = '';\n * changes.forEach( change => {\n * status += `'${change.mqAlias}' = (${change.mediaQuery})
` ;\n * });\n * this.status = status;\n * });\n *\n * }\n * }\n */\nclass MediaObserver {\n /**\n * @param {?} breakpoints\n * @param {?} matchMedia\n * @param {?} hook\n */\n constructor(breakpoints, matchMedia, hook) {\n this.breakpoints = breakpoints;\n this.matchMedia = matchMedia;\n this.hook = hook;\n /**\n * Filter MediaChange notifications for overlapping breakpoints\n */\n this.filterOverlaps = false;\n this.destroyed$ = new Subject();\n this._media$ = this.watchActivations();\n this.media$ = this._media$.pipe(filter((/**\n * @param {?} changes\n * @return {?}\n */\n (changes) => changes.length > 0)), map((/**\n * @param {?} changes\n * @return {?}\n */\n (changes) => changes[0])));\n }\n /**\n * Completes the active subject, signalling to all complete for all\n * MediaObserver subscribers\n * @return {?}\n */\n ngOnDestroy() {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n // ************************************************\n // Public Methods\n // ************************************************\n /**\n * Observe changes to current activation 'list'\n * @return {?}\n */\n asObservable() {\n return this._media$;\n }\n /**\n * Allow programmatic query to determine if one or more media query/alias match\n * the current viewport size.\n * @param {?} value One or more media queries (or aliases) to check.\n * @return {?} Whether any of the media queries match.\n */\n isActive(value) {\n /** @type {?} */\n const aliases = splitQueries(coerceArray(value));\n return aliases.some((/**\n * @param {?} alias\n * @return {?}\n */\n alias => {\n /** @type {?} */\n const query = toMediaQuery(alias, this.breakpoints);\n return query !== null && this.matchMedia.isActive(query);\n }));\n }\n // ************************************************\n // Internal Methods\n // ************************************************\n /**\n * Register all the mediaQueries registered in the BreakPointRegistry\n * This is needed so subscribers can be auto-notified of all standard, registered\n * mediaQuery activations\n * @private\n * @return {?}\n */\n watchActivations() {\n /** @type {?} */\n const queries = this.breakpoints.items.map((/**\n * @param {?} bp\n * @return {?}\n */\n bp => bp.mediaQuery));\n return this.buildObservable(queries);\n }\n /**\n * Only pass/announce activations (not de-activations)\n *\n * Since multiple-mediaQueries can be activation in a cycle,\n * gather all current activations into a single list of changes to observers\n *\n * Inject associated (if any) alias information into the MediaChange event\n * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only\n * - Exclude print activations that do not have an associated mediaQuery\n *\n * NOTE: the raw MediaChange events [from MatchMedia] do not\n * contain important alias information; as such this info\n * must be injected into the MediaChange\n * @private\n * @param {?} mqList\n * @return {?}\n */\n buildObservable(mqList) {\n /** @type {?} */\n const hasChanges = (/**\n * @param {?} changes\n * @return {?}\n */\n (changes) => {\n /** @type {?} */\n const isValidQuery = (/**\n * @param {?} change\n * @return {?}\n */\n (change) => (change.mediaQuery.length > 0));\n return (changes.filter(isValidQuery).length > 0);\n });\n /** @type {?} */\n const excludeOverlaps = (/**\n * @param {?} changes\n * @return {?}\n */\n (changes) => {\n return !this.filterOverlaps ? changes : changes.filter((/**\n * @param {?} change\n * @return {?}\n */\n change => {\n /** @type {?} */\n const bp = this.breakpoints.findByQuery(change.mediaQuery);\n return !bp ? true : !bp.overlapping;\n }));\n });\n /**\n */\n return this.matchMedia\n .observe(this.hook.withPrintQuery(mqList))\n .pipe(filter((/**\n * @param {?} change\n * @return {?}\n */\n (change) => change.matches)), debounceTime(0, asapScheduler), switchMap((/**\n * @param {?} _\n * @return {?}\n */\n _ => of(this.findAllActivations()))), map(excludeOverlaps), filter(hasChanges), takeUntil(this.destroyed$));\n }\n /**\n * Find all current activations and prepare single list of activations\n * sorted by descending priority.\n * @private\n * @return {?}\n */\n findAllActivations() {\n /** @type {?} */\n const mergeMQAlias = (/**\n * @param {?} change\n * @return {?}\n */\n (change) => {\n /** @type {?} */\n let bp = this.breakpoints.findByQuery(change.mediaQuery);\n return mergeAlias(change, bp);\n });\n /** @type {?} */\n const replaceWithPrintAlias = (/**\n * @param {?} change\n * @return {?}\n */\n (change) => {\n return this.hook.isPrintEvent(change) ? this.hook.updateEvent(change) : change;\n });\n return this.matchMedia\n .activations\n .map((/**\n * @param {?} query\n * @return {?}\n */\n query => new MediaChange(true, query)))\n .map(replaceWithPrintAlias)\n .map(mergeMQAlias)\n .sort(sortDescendingPriority);\n }\n}\nMediaObserver.ɵfac = function MediaObserver_Factory(t) { return new (t || MediaObserver)(ɵngcc0.ɵɵinject(BreakPointRegistry), ɵngcc0.ɵɵinject(MatchMedia), ɵngcc0.ɵɵinject(PrintHook)); };\n/** @nocollapse */ MediaObserver.ɵprov = ɵɵdefineInjectable({ factory: function MediaObserver_Factory() { return new MediaObserver(ɵɵinject(BreakPointRegistry), ɵɵinject(MatchMedia), ɵɵinject(PrintHook)); }, token: MediaObserver, providedIn: \"root\" });\n/** @nocollapse */\nMediaObserver.ctorParameters = () => [\n { type: BreakPointRegistry },\n { type: MatchMedia },\n { type: PrintHook }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MediaObserver, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: BreakPointRegistry }, { type: MatchMedia }, { type: PrintHook }]; }, null); })();\n/**\n * Find associated breakpoint (if any)\n * @param {?} query\n * @param {?} locator\n * @return {?}\n */\nfunction toMediaQuery(query, locator) {\n /** @type {?} */\n const bp = locator.findByAlias(query) || locator.findByQuery(query);\n return bp ? bp.mediaQuery : null;\n}\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n * @param {?} queries\n * @return {?}\n */\nfunction splitQueries(queries) {\n return queries.map((/**\n * @param {?} query\n * @return {?}\n */\n (query) => query.split(',')))\n .reduce((/**\n * @param {?} a1\n * @param {?} a2\n * @return {?}\n */\n (a1, a2) => a1.concat(a2)))\n .map((/**\n * @param {?} query\n * @return {?}\n */\n query => query.trim()));\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/media-observer/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/media-trigger/media-trigger.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Class\n */\nclass MediaTrigger {\n /**\n * @param {?} breakpoints\n * @param {?} matchMedia\n * @param {?} layoutConfig\n * @param {?} _platformId\n * @param {?} _document\n */\n constructor(breakpoints, matchMedia, layoutConfig, _platformId, _document) {\n this.breakpoints = breakpoints;\n this.matchMedia = matchMedia;\n this.layoutConfig = layoutConfig;\n this._platformId = _platformId;\n this._document = _document;\n this.hasCachedRegistryMatches = false;\n this.originalActivations = [];\n this.originalRegistry = new Map();\n }\n /**\n * Manually activate range of breakpoints\n * @param {?} list array of mediaQuery or alias strings\n * @return {?}\n */\n activate(list) {\n list = list.map((/**\n * @param {?} it\n * @return {?}\n */\n it => it.trim())); // trim queries\n this.saveActivations();\n this.deactivateAll();\n this.setActivations(list);\n this.prepareAutoRestore();\n }\n /**\n * Restore original, 'real' breakpoints and emit events\n * to trigger stream notification\n * @return {?}\n */\n restore() {\n if (this.hasCachedRegistryMatches) {\n /** @type {?} */\n const extractQuery = (/**\n * @param {?} change\n * @return {?}\n */\n (change) => change.mediaQuery);\n /** @type {?} */\n const list = this.originalActivations.map(extractQuery);\n try {\n this.deactivateAll();\n this.restoreRegistryMatches();\n this.setActivations(list);\n }\n finally {\n this.originalActivations = [];\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n }\n }\n // ************************************************\n // Internal Methods\n // ************************************************\n /**\n * Whenever window resizes, immediately auto-restore original\n * activations (if we are simulating activations)\n * @private\n * @return {?}\n */\n prepareAutoRestore() {\n /** @type {?} */\n const isBrowser = isPlatformBrowser(this._platformId) && this._document;\n /** @type {?} */\n const enableAutoRestore = isBrowser && this.layoutConfig.mediaTriggerAutoRestore;\n if (enableAutoRestore) {\n /** @type {?} */\n const resize$ = fromEvent(window, 'resize').pipe(take(1));\n this.resizeSubscription = resize$.subscribe(this.restore.bind(this));\n }\n }\n /**\n * Notify all matchMedia subscribers of de-activations\n *\n * Note: we must force 'matches' updates for\n * future matchMedia::activation lookups\n * @private\n * @return {?}\n */\n deactivateAll() {\n /** @type {?} */\n const list = this.currentActivations;\n this.forceRegistryMatches(list, false);\n this.simulateMediaChanges(list, false);\n }\n /**\n * Cache current activations as sorted, prioritized list of MediaChanges\n * @private\n * @return {?}\n */\n saveActivations() {\n if (!this.hasCachedRegistryMatches) {\n /** @type {?} */\n const toMediaChange = (/**\n * @param {?} query\n * @return {?}\n */\n (query) => new MediaChange(true, query));\n /** @type {?} */\n const mergeMQAlias = (/**\n * @param {?} change\n * @return {?}\n */\n (change) => {\n /** @type {?} */\n const bp = this.breakpoints.findByQuery(change.mediaQuery);\n return mergeAlias(change, bp);\n });\n this.originalActivations = this.currentActivations\n .map(toMediaChange)\n .map(mergeMQAlias)\n .sort(sortDescendingPriority);\n this.cacheRegistryMatches();\n }\n }\n /**\n * Force set manual activations for specified mediaQuery list\n * @private\n * @param {?} list\n * @return {?}\n */\n setActivations(list) {\n if (!!this.originalRegistry) {\n this.forceRegistryMatches(list, true);\n }\n this.simulateMediaChanges(list);\n }\n /**\n * For specified mediaQuery list manually simulate activations or deactivations\n * @private\n * @param {?} queries\n * @param {?=} matches\n * @return {?}\n */\n simulateMediaChanges(queries, matches = true) {\n /** @type {?} */\n const toMediaQuery = (/**\n * @param {?} query\n * @return {?}\n */\n (query) => {\n /** @type {?} */\n const locator = this.breakpoints;\n /** @type {?} */\n const bp = locator.findByAlias(query) || locator.findByQuery(query);\n return bp ? bp.mediaQuery : query;\n });\n /** @type {?} */\n const emitChangeEvent = (/**\n * @param {?} query\n * @return {?}\n */\n (query) => this.emitChangeEvent(matches, query));\n queries.map(toMediaQuery).forEach(emitChangeEvent);\n }\n /**\n * Replace current registry with simulated registry...\n * Note: this is required since MediaQueryList::matches is 'readOnly'\n * @private\n * @param {?} queries\n * @param {?} matches\n * @return {?}\n */\n forceRegistryMatches(queries, matches) {\n /** @type {?} */\n const registry = new Map();\n queries.forEach((/**\n * @param {?} query\n * @return {?}\n */\n query => {\n registry.set(query, (/** @type {?} */ ({ matches })));\n }));\n this.matchMedia.registry = registry;\n }\n /**\n * Save current MatchMedia::registry items.\n * @private\n * @return {?}\n */\n cacheRegistryMatches() {\n /** @type {?} */\n const target = this.originalRegistry;\n target.clear();\n this.matchMedia.registry.forEach((/**\n * @param {?} value\n * @param {?} key\n * @return {?}\n */\n (value, key) => {\n target.set(key, value);\n }));\n this.hasCachedRegistryMatches = true;\n }\n /**\n * Restore original, 'true' registry\n * @private\n * @return {?}\n */\n restoreRegistryMatches() {\n /** @type {?} */\n const target = this.matchMedia.registry;\n target.clear();\n this.originalRegistry.forEach((/**\n * @param {?} value\n * @param {?} key\n * @return {?}\n */\n (value, key) => {\n target.set(key, value);\n }));\n this.originalRegistry.clear();\n this.hasCachedRegistryMatches = false;\n }\n /**\n * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver\n * @private\n * @param {?} matches\n * @param {?} query\n * @return {?}\n */\n emitChangeEvent(matches, query) {\n this.matchMedia.source.next(new MediaChange(matches, query));\n }\n /**\n * @private\n * @return {?}\n */\n get currentActivations() {\n return this.matchMedia.activations;\n }\n}\nMediaTrigger.ɵfac = function MediaTrigger_Factory(t) { return new (t || MediaTrigger)(ɵngcc0.ɵɵinject(BreakPointRegistry), ɵngcc0.ɵɵinject(MatchMedia), ɵngcc0.ɵɵinject(LAYOUT_CONFIG), ɵngcc0.ɵɵinject(PLATFORM_ID), ɵngcc0.ɵɵinject(DOCUMENT)); };\n/** @nocollapse */ MediaTrigger.ɵprov = ɵɵdefineInjectable({ factory: function MediaTrigger_Factory() { return new MediaTrigger(ɵɵinject(BreakPointRegistry), ɵɵinject(MatchMedia), ɵɵinject(LAYOUT_CONFIG), ɵɵinject(PLATFORM_ID), ɵɵinject(DOCUMENT)); }, token: MediaTrigger, providedIn: \"root\" });\n/** @nocollapse */\nMediaTrigger.ctorParameters = () => [\n { type: BreakPointRegistry },\n { type: MatchMedia },\n { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MediaTrigger, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: BreakPointRegistry }, { type: MatchMedia }, { type: undefined, decorators: [{\n type: Inject,\n args: [LAYOUT_CONFIG]\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/media-trigger/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/utils/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: utils/auto-prefixer.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * Applies CSS prefixes to appropriate style keys.\n *\n * Note: `-ms-`, `-moz` and `-webkit-box` are no longer supported. e.g.\n * {\n * display: -webkit-flex; NEW - Safari 6.1+. iOS 7.1+, BB10\n * display: flex; NEW, Spec - Firefox, Chrome, Opera\n * // display: -webkit-box; OLD - iOS 6-, Safari 3.1-6, BB7\n * // display: -ms-flexbox; TWEENER - IE 10\n * // display: -moz-flexbox; OLD - Firefox\n * }\n * @param {?} target\n * @return {?}\n */\nfunction applyCssPrefixes(target) {\n for (let key in target) {\n /** @type {?} */\n let value = target[key] || '';\n switch (key) {\n case 'display':\n if (value === 'flex') {\n target['display'] = [\n '-webkit-flex',\n 'flex'\n ];\n }\n else if (value === 'inline-flex') {\n target['display'] = [\n '-webkit-inline-flex',\n 'inline-flex'\n ];\n }\n else {\n target['display'] = value;\n }\n break;\n case 'align-items':\n case 'align-self':\n case 'align-content':\n case 'flex':\n case 'flex-basis':\n case 'flex-flow':\n case 'flex-grow':\n case 'flex-shrink':\n case 'flex-wrap':\n case 'justify-content':\n target['-webkit-' + key] = value;\n break;\n case 'flex-direction':\n value = value || 'row';\n target['-webkit-flex-direction'] = value;\n target['flex-direction'] = value;\n break;\n case 'order':\n target['order'] = target['-webkit-' + key] = isNaN(+value) ? '0' : value;\n break;\n }\n }\n return target;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/style-utils/style-utils.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass StyleUtils {\n /**\n * @param {?} _serverStylesheet\n * @param {?} _serverModuleLoaded\n * @param {?} _platformId\n * @param {?} layoutConfig\n */\n constructor(_serverStylesheet, _serverModuleLoaded, _platformId, layoutConfig) {\n this._serverStylesheet = _serverStylesheet;\n this._serverModuleLoaded = _serverModuleLoaded;\n this._platformId = _platformId;\n this.layoutConfig = layoutConfig;\n }\n /**\n * Applies styles given via string pair or object map to the directive element\n * @param {?} element\n * @param {?} style\n * @param {?=} value\n * @return {?}\n */\n applyStyleToElement(element, style, value = null) {\n /** @type {?} */\n let styles = {};\n if (typeof style === 'string') {\n styles[style] = value;\n style = styles;\n }\n styles = this.layoutConfig.disableVendorPrefixes ? style : applyCssPrefixes(style);\n this._applyMultiValueStyleToElement(styles, element);\n }\n /**\n * Applies styles given via string pair or object map to the directive's element\n * @param {?} style\n * @param {?=} elements\n * @return {?}\n */\n applyStyleToElements(style, elements = []) {\n /** @type {?} */\n const styles = this.layoutConfig.disableVendorPrefixes ? style : applyCssPrefixes(style);\n elements.forEach((/**\n * @param {?} el\n * @return {?}\n */\n el => {\n this._applyMultiValueStyleToElement(styles, el);\n }));\n }\n /**\n * Determine the DOM element's Flexbox flow (flex-direction)\n *\n * Check inline style first then check computed (stylesheet) style\n * @param {?} target\n * @return {?}\n */\n getFlowDirection(target) {\n /** @type {?} */\n const query = 'flex-direction';\n /** @type {?} */\n let value = this.lookupStyle(target, query);\n /** @type {?} */\n const hasInlineValue = this.lookupInlineStyle(target, query) ||\n (isPlatformServer(this._platformId) && this._serverModuleLoaded) ? value : '';\n return [value || 'row', hasInlineValue];\n }\n /**\n * @param {?} target\n * @return {?}\n */\n hasWrap(target) {\n /** @type {?} */\n const query = 'flex-wrap';\n return this.lookupStyle(target, query) === 'wrap';\n }\n /**\n * Find the DOM element's raw attribute value (if any)\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n lookupAttributeValue(element, attribute) {\n return element.getAttribute(attribute) || '';\n }\n /**\n * Find the DOM element's inline style value (if any)\n * @param {?} element\n * @param {?} styleName\n * @return {?}\n */\n lookupInlineStyle(element, styleName) {\n return isPlatformBrowser(this._platformId) ?\n element.style.getPropertyValue(styleName) : this._getServerStyle(element, styleName);\n }\n /**\n * Determine the inline or inherited CSS style\n * NOTE: platform-server has no implementation for getComputedStyle\n * @param {?} element\n * @param {?} styleName\n * @param {?=} inlineOnly\n * @return {?}\n */\n lookupStyle(element, styleName, inlineOnly = false) {\n /** @type {?} */\n let value = '';\n if (element) {\n /** @type {?} */\n let immediateValue = value = this.lookupInlineStyle(element, styleName);\n if (!immediateValue) {\n if (isPlatformBrowser(this._platformId)) {\n if (!inlineOnly) {\n value = getComputedStyle(element).getPropertyValue(styleName);\n }\n }\n else {\n if (this._serverModuleLoaded) {\n value = this._serverStylesheet.getStyleForElement(element, styleName);\n }\n }\n }\n }\n // Note: 'inline' is the default of all elements, unless UA stylesheet overrides;\n // in which case getComputedStyle() should determine a valid value.\n return value ? value.trim() : '';\n }\n /**\n * Applies the styles to the element. The styles object map may contain an array of values\n * Each value will be added as element style\n * Keys are sorted to add prefixed styles (like -webkit-x) first, before the standard ones\n * @private\n * @param {?} styles\n * @param {?} element\n * @return {?}\n */\n _applyMultiValueStyleToElement(styles, element) {\n Object.keys(styles).sort().forEach((/**\n * @param {?} key\n * @return {?}\n */\n key => {\n /** @type {?} */\n const el = styles[key];\n /** @type {?} */\n const values = Array.isArray(el) ? el : [el];\n values.sort();\n for (let value of values) {\n value = value ? value + '' : '';\n if (isPlatformBrowser(this._platformId) || !this._serverModuleLoaded) {\n isPlatformBrowser(this._platformId) ?\n element.style.setProperty(key, value) : this._setServerStyle(element, key, value);\n }\n else {\n this._serverStylesheet.addStyleToElement(element, key, value);\n }\n }\n }));\n }\n /**\n * @private\n * @param {?} element\n * @param {?} styleName\n * @param {?=} styleValue\n * @return {?}\n */\n _setServerStyle(element, styleName, styleValue) {\n styleName = styleName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n /** @type {?} */\n const styleMap = this._readStyleAttribute(element);\n styleMap[styleName] = styleValue || '';\n this._writeStyleAttribute(element, styleMap);\n }\n /**\n * @private\n * @param {?} element\n * @param {?} styleName\n * @return {?}\n */\n _getServerStyle(element, styleName) {\n /** @type {?} */\n const styleMap = this._readStyleAttribute(element);\n return styleMap[styleName] || '';\n }\n /**\n * @private\n * @param {?} element\n * @return {?}\n */\n _readStyleAttribute(element) {\n /** @type {?} */\n const styleMap = {};\n /** @type {?} */\n const styleAttribute = element.getAttribute('style');\n if (styleAttribute) {\n /** @type {?} */\n const styleList = styleAttribute.split(/;+/g);\n for (let i = 0; i < styleList.length; i++) {\n /** @type {?} */\n const style = styleList[i].trim();\n if (style.length > 0) {\n /** @type {?} */\n const colonIndex = style.indexOf(':');\n if (colonIndex === -1) {\n throw new Error(`Invalid CSS style: ${style}`);\n }\n /** @type {?} */\n const name = style.substr(0, colonIndex).trim();\n styleMap[name] = style.substr(colonIndex + 1).trim();\n }\n }\n }\n return styleMap;\n }\n /**\n * @private\n * @param {?} element\n * @param {?} styleMap\n * @return {?}\n */\n _writeStyleAttribute(element, styleMap) {\n /** @type {?} */\n let styleAttrValue = '';\n for (const key in styleMap) {\n /** @type {?} */\n const newValue = styleMap[key];\n if (newValue) {\n styleAttrValue += key + ':' + styleMap[key] + ';';\n }\n }\n element.setAttribute('style', styleAttrValue);\n }\n}\nStyleUtils.ɵfac = function StyleUtils_Factory(t) { return new (t || StyleUtils)(ɵngcc0.ɵɵinject(StylesheetMap), ɵngcc0.ɵɵinject(SERVER_TOKEN), ɵngcc0.ɵɵinject(PLATFORM_ID), ɵngcc0.ɵɵinject(LAYOUT_CONFIG)); };\n/** @nocollapse */ StyleUtils.ɵprov = ɵɵdefineInjectable({ factory: function StyleUtils_Factory() { return new StyleUtils(ɵɵinject(StylesheetMap), ɵɵinject(SERVER_TOKEN), ɵɵinject(PLATFORM_ID), ɵɵinject(LAYOUT_CONFIG)); }, token: StyleUtils, providedIn: \"root\" });\n/** @nocollapse */\nStyleUtils.ctorParameters = () => [\n { type: StylesheetMap },\n { type: Boolean, decorators: [{ type: Inject, args: [SERVER_TOKEN,] }] },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StyleUtils, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: StylesheetMap }, { type: Boolean, decorators: [{\n type: Inject,\n args: [SERVER_TOKEN]\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [LAYOUT_CONFIG]\n }] }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/style-builder/style-builder.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A class that encapsulates CSS style generation for common directives\n * @abstract\n */\nclass StyleBuilder {\n constructor() {\n /**\n * Whether to cache the generated output styles\n */\n this.shouldCache = true;\n }\n /**\n * Run a side effect computation given the input string and the computed styles\n * from the build task and the host configuration object\n * NOTE: This should be a no-op unless an algorithm is provided in a subclass\n * @param {?} _input\n * @param {?} _styles\n * @param {?=} _parent\n * @return {?}\n */\n sideEffect(_input, _styles, _parent) {\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/basis-validator/basis-validator.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * The flex API permits 3 or 1 parts of the value:\n * - `flex-grow flex-shrink flex-basis`, or\n * - `flex-basis`\n * @param {?} basis\n * @param {?=} grow\n * @param {?=} shrink\n * @return {?}\n */\nfunction validateBasis(basis, grow = '1', shrink = '1') {\n /** @type {?} */\n let parts = [grow, shrink, basis];\n /** @type {?} */\n let j = basis.indexOf('calc');\n if (j > 0) {\n parts[2] = _validateCalcValue(basis.substring(j).trim());\n /** @type {?} */\n let matches = basis.substr(0, j).trim().split(' ');\n if (matches.length == 2) {\n parts[0] = matches[0];\n parts[1] = matches[1];\n }\n }\n else if (j == 0) {\n parts[2] = _validateCalcValue(basis.trim());\n }\n else {\n /** @type {?} */\n let matches = basis.split(' ');\n parts = (matches.length === 3) ? matches : [\n grow, shrink, basis\n ];\n }\n return parts;\n}\n/**\n * Calc expressions require whitespace before & after any expression operators\n * This is a simple, crude whitespace padding solution.\n * - '3 3 calc(15em + 20px)'\n * - calc(100% / 7 * 2)\n * - 'calc(15em + 20px)'\n * - 'calc(15em+20px)'\n * - '37px'\n * = '43%'\n * @param {?} calc\n * @return {?}\n */\nfunction _validateCalcValue(calc) {\n return calc.replace(/[\\s]/g, '').replace(/[\\/\\*\\+\\-]/g, ' $& ');\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/media-marshaller/media-marshaller.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * MediaMarshaller - register responsive values from directives and\n * trigger them based on media query events\n */\nclass MediaMarshaller {\n /**\n * @param {?} matchMedia\n * @param {?} breakpoints\n * @param {?} hook\n */\n constructor(matchMedia, breakpoints, hook) {\n this.matchMedia = matchMedia;\n this.breakpoints = breakpoints;\n this.hook = hook;\n this.activatedBreakpoints = [];\n this.elementMap = new Map();\n this.elementKeyMap = new WeakMap();\n this.watcherMap = new WeakMap(); // special triggers to update elements\n // special triggers to update elements\n this.updateMap = new WeakMap(); // callback functions to update styles\n // callback functions to update styles\n this.clearMap = new WeakMap(); // callback functions to clear styles\n // callback functions to clear styles\n this.subject = new Subject();\n this.observeActivations();\n }\n /**\n * @return {?}\n */\n get activatedAlias() {\n return this.activatedBreakpoints[0] ? this.activatedBreakpoints[0].alias : '';\n }\n /**\n * Update styles on breakpoint activates or deactivates\n * @param {?} mc\n * @return {?}\n */\n onMediaChange(mc) {\n /** @type {?} */\n const bp = this.findByQuery(mc.mediaQuery);\n if (bp) {\n mc = mergeAlias(mc, bp);\n if (mc.matches && this.activatedBreakpoints.indexOf(bp) === -1) {\n this.activatedBreakpoints.push(bp);\n this.activatedBreakpoints.sort(sortDescendingPriority);\n this.updateStyles();\n }\n else if (!mc.matches && this.activatedBreakpoints.indexOf(bp) !== -1) {\n // Remove the breakpoint when it's deactivated\n this.activatedBreakpoints.splice(this.activatedBreakpoints.indexOf(bp), 1);\n this.activatedBreakpoints.sort(sortDescendingPriority);\n this.updateStyles();\n }\n }\n }\n /**\n * initialize the marshaller with necessary elements for delegation on an element\n * @param {?} element\n * @param {?} key\n * @param {?=} updateFn optional callback so that custom bp directives don't have to re-provide this\n * @param {?=} clearFn optional callback so that custom bp directives don't have to re-provide this\n * @param {?=} extraTriggers other triggers to force style updates (e.g. layout, directionality, etc)\n * @return {?}\n */\n init(element, key, updateFn, clearFn, extraTriggers = []) {\n initBuilderMap(this.updateMap, element, key, updateFn);\n initBuilderMap(this.clearMap, element, key, clearFn);\n this.buildElementKeyMap(element, key);\n this.watchExtraTriggers(element, key, extraTriggers);\n }\n /**\n * get the value for an element and key and optionally a given breakpoint\n * @param {?} element\n * @param {?} key\n * @param {?=} bp\n * @return {?}\n */\n getValue(element, key, bp) {\n /** @type {?} */\n const bpMap = this.elementMap.get(element);\n if (bpMap) {\n /** @type {?} */\n const values = bp !== undefined ? bpMap.get(bp) : this.getActivatedValues(bpMap, key);\n if (values) {\n return values.get(key);\n }\n }\n return undefined;\n }\n /**\n * whether the element has values for a given key\n * @param {?} element\n * @param {?} key\n * @return {?}\n */\n hasValue(element, key) {\n /** @type {?} */\n const bpMap = this.elementMap.get(element);\n if (bpMap) {\n /** @type {?} */\n const values = this.getActivatedValues(bpMap, key);\n if (values) {\n return values.get(key) !== undefined || false;\n }\n }\n return false;\n }\n /**\n * Set the value for an input on a directive\n * @param {?} element the element in question\n * @param {?} key the type of the directive (e.g. flex, layout-gap, etc)\n * @param {?} val the value for the breakpoint\n * @param {?} bp the breakpoint suffix (empty string = default)\n * @return {?}\n */\n setValue(element, key, val, bp) {\n /** @type {?} */\n let bpMap = this.elementMap.get(element);\n if (!bpMap) {\n bpMap = new Map().set(bp, new Map().set(key, val));\n this.elementMap.set(element, bpMap);\n }\n else {\n /** @type {?} */\n const values = (bpMap.get(bp) || new Map()).set(key, val);\n bpMap.set(bp, values);\n this.elementMap.set(element, bpMap);\n }\n /** @type {?} */\n const value = this.getValue(element, key);\n if (value !== undefined) {\n this.updateElement(element, key, value);\n }\n }\n /**\n * Track element value changes for a specific key\n * @param {?} element\n * @param {?} key\n * @return {?}\n */\n trackValue(element, key) {\n return this.subject\n .asObservable()\n .pipe(filter((/**\n * @param {?} v\n * @return {?}\n */\n v => v.element === element && v.key === key)));\n }\n /**\n * update all styles for all elements on the current breakpoint\n * @return {?}\n */\n updateStyles() {\n this.elementMap.forEach((/**\n * @param {?} bpMap\n * @param {?} el\n * @return {?}\n */\n (bpMap, el) => {\n /** @type {?} */\n const keyMap = new Set((/** @type {?} */ (this.elementKeyMap.get(el))));\n /** @type {?} */\n let valueMap = this.getActivatedValues(bpMap);\n if (valueMap) {\n valueMap.forEach((/**\n * @param {?} v\n * @param {?} k\n * @return {?}\n */\n (v, k) => {\n this.updateElement(el, k, v);\n keyMap.delete(k);\n }));\n }\n keyMap.forEach((/**\n * @param {?} k\n * @return {?}\n */\n k => {\n valueMap = this.getActivatedValues(bpMap, k);\n if (valueMap) {\n /** @type {?} */\n const value = valueMap.get(k);\n this.updateElement(el, k, value);\n }\n else {\n this.clearElement(el, k);\n }\n }));\n }));\n }\n /**\n * clear the styles for a given element\n * @param {?} element\n * @param {?} key\n * @return {?}\n */\n clearElement(element, key) {\n /** @type {?} */\n const builders = this.clearMap.get(element);\n if (builders) {\n /** @type {?} */\n const clearFn = (/** @type {?} */ (builders.get(key)));\n if (!!clearFn) {\n clearFn();\n this.subject.next({ element, key, value: '' });\n }\n }\n }\n /**\n * update a given element with the activated values for a given key\n * @param {?} element\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\n updateElement(element, key, value) {\n /** @type {?} */\n const builders = this.updateMap.get(element);\n if (builders) {\n /** @type {?} */\n const updateFn = (/** @type {?} */ (builders.get(key)));\n if (!!updateFn) {\n updateFn(value);\n this.subject.next({ element, key, value });\n }\n }\n }\n /**\n * release all references to a given element\n * @param {?} element\n * @return {?}\n */\n releaseElement(element) {\n /** @type {?} */\n const watcherMap = this.watcherMap.get(element);\n if (watcherMap) {\n watcherMap.forEach((/**\n * @param {?} s\n * @return {?}\n */\n s => s.unsubscribe()));\n this.watcherMap.delete(element);\n }\n /** @type {?} */\n const elementMap = this.elementMap.get(element);\n if (elementMap) {\n elementMap.forEach((/**\n * @param {?} _\n * @param {?} s\n * @return {?}\n */\n (_, s) => elementMap.delete(s)));\n this.elementMap.delete(element);\n }\n }\n /**\n * trigger an update for a given element and key (e.g. layout)\n * @param {?} element\n * @param {?=} key\n * @return {?}\n */\n triggerUpdate(element, key) {\n /** @type {?} */\n const bpMap = this.elementMap.get(element);\n if (bpMap) {\n /** @type {?} */\n const valueMap = this.getActivatedValues(bpMap, key);\n if (valueMap) {\n if (key) {\n this.updateElement(element, key, valueMap.get(key));\n }\n else {\n valueMap.forEach((/**\n * @param {?} v\n * @param {?} k\n * @return {?}\n */\n (v, k) => this.updateElement(element, k, v)));\n }\n }\n }\n }\n /**\n * Cross-reference for HTMLElement with directive key\n * @private\n * @param {?} element\n * @param {?} key\n * @return {?}\n */\n buildElementKeyMap(element, key) {\n /** @type {?} */\n let keyMap = this.elementKeyMap.get(element);\n if (!keyMap) {\n keyMap = new Set();\n this.elementKeyMap.set(element, keyMap);\n }\n keyMap.add(key);\n }\n /**\n * Other triggers that should force style updates:\n * - directionality\n * - layout changes\n * - mutationobserver updates\n * @private\n * @param {?} element\n * @param {?} key\n * @param {?} triggers\n * @return {?}\n */\n watchExtraTriggers(element, key, triggers) {\n if (triggers && triggers.length) {\n /** @type {?} */\n let watchers = this.watcherMap.get(element);\n if (!watchers) {\n watchers = new Map();\n this.watcherMap.set(element, watchers);\n }\n /** @type {?} */\n const subscription = watchers.get(key);\n if (!subscription) {\n /** @type {?} */\n const newSubscription = merge(...triggers).subscribe((/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const currentValue = this.getValue(element, key);\n this.updateElement(element, key, currentValue);\n }));\n watchers.set(key, newSubscription);\n }\n }\n }\n /**\n * Breakpoint locator by mediaQuery\n * @private\n * @param {?} query\n * @return {?}\n */\n findByQuery(query) {\n return this.breakpoints.findByQuery(query);\n }\n /**\n * get the fallback breakpoint for a given element, starting with the current breakpoint\n * @private\n * @param {?} bpMap\n * @param {?=} key\n * @return {?}\n */\n getActivatedValues(bpMap, key) {\n for (let i = 0; i < this.activatedBreakpoints.length; i++) {\n /** @type {?} */\n const activatedBp = this.activatedBreakpoints[i];\n /** @type {?} */\n const valueMap = bpMap.get(activatedBp.alias);\n if (valueMap) {\n if (key === undefined || (valueMap.has(key) && valueMap.get(key) != null)) {\n return valueMap;\n }\n }\n }\n /** @type {?} */\n const lastHope = bpMap.get('');\n return (key === undefined || lastHope && lastHope.has(key)) ? lastHope : undefined;\n }\n /**\n * Watch for mediaQuery breakpoint activations\n * @private\n * @return {?}\n */\n observeActivations() {\n /** @type {?} */\n const target = (/** @type {?} */ ((/** @type {?} */ (this))));\n /** @type {?} */\n const queries = this.breakpoints.items.map((/**\n * @param {?} bp\n * @return {?}\n */\n bp => bp.mediaQuery));\n this.matchMedia\n .observe(this.hook.withPrintQuery(queries))\n .pipe(tap(this.hook.interceptEvents(target)), filter(this.hook.blockPropagation()))\n .subscribe(this.onMediaChange.bind(this));\n }\n}\nMediaMarshaller.ɵfac = function MediaMarshaller_Factory(t) { return new (t || MediaMarshaller)(ɵngcc0.ɵɵinject(MatchMedia), ɵngcc0.ɵɵinject(BreakPointRegistry), ɵngcc0.ɵɵinject(PrintHook)); };\n/** @nocollapse */ MediaMarshaller.ɵprov = ɵɵdefineInjectable({ factory: function MediaMarshaller_Factory() { return new MediaMarshaller(ɵɵinject(MatchMedia), ɵɵinject(BreakPointRegistry), ɵɵinject(PrintHook)); }, token: MediaMarshaller, providedIn: \"root\" });\n/** @nocollapse */\nMediaMarshaller.ctorParameters = () => [\n { type: MatchMedia },\n { type: BreakPointRegistry },\n { type: PrintHook }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MediaMarshaller, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: MatchMedia }, { type: BreakPointRegistry }, { type: PrintHook }]; }, null); })();\n/**\n * @param {?} map\n * @param {?} element\n * @param {?} key\n * @param {?=} input\n * @return {?}\n */\nfunction initBuilderMap(map$$1, element, key, input) {\n if (input !== undefined) {\n /** @type {?} */\n let oldMap = map$$1.get(element);\n if (!oldMap) {\n oldMap = new Map();\n map$$1.set(element, oldMap);\n }\n oldMap.set(key, input);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/public-api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: core/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { MatchMedia as ɵMatchMedia, MockMatchMedia as ɵMockMatchMedia, MockMatchMediaProvider as ɵMockMatchMediaProvider, CoreModule, removeStyles, BROWSER_PROVIDER, CLASS_NAME, MediaChange, StylesheetMap, DEFAULT_CONFIG, LAYOUT_CONFIG, SERVER_TOKEN, BREAKPOINT, mergeAlias, BaseDirective2, DEFAULT_BREAKPOINTS, ScreenTypes, ORIENTATION_BREAKPOINTS, BreakPointRegistry, BREAKPOINTS, MediaObserver, MediaTrigger, sortDescendingPriority, sortAscendingPriority, coerceArray, StyleUtils, StyleBuilder, validateBasis, MediaMarshaller, BREAKPOINT_PRINT, PrintHook };\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input, NgModule, IterableDiffers, KeyValueDiffers, Optional, Renderer2, Self, SecurityContext, ɵɵdefineInjectable } from '@angular/core';\nimport { isPlatformServer, NgClass, NgStyle } from '@angular/common';\nimport { MediaMarshaller, BaseDirective2, SERVER_TOKEN, StyleBuilder, StyleUtils, LAYOUT_CONFIG, CoreModule } from '@angular/flex-layout/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { takeUntil } from 'rxjs/operators';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: extended/img-src/img-src.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/flex-layout/core';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@angular/platform-browser';\nclass ImgSrcStyleBuilder extends StyleBuilder {\n /**\n * @param {?} url\n * @return {?}\n */\n buildStyles(url) {\n return { 'content': url ? `url(${url})` : '' };\n }\n}\nImgSrcStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵImgSrcStyleBuilder_BaseFactory; return function ImgSrcStyleBuilder_Factory(t) { return (ɵImgSrcStyleBuilder_BaseFactory || (ɵImgSrcStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(ImgSrcStyleBuilder)))(t || ImgSrcStyleBuilder); }; }();\n/** @nocollapse */ ImgSrcStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function ImgSrcStyleBuilder_Factory() { return new ImgSrcStyleBuilder(); }, token: ImgSrcStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ImgSrcStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nclass ImgSrcDirective extends BaseDirective2 {\n /**\n * @param {?} elementRef\n * @param {?} styleBuilder\n * @param {?} styler\n * @param {?} marshal\n * @param {?} platformId\n * @param {?} serverModuleLoaded\n */\n constructor(elementRef, styleBuilder, styler, marshal, platformId, serverModuleLoaded) {\n super(elementRef, styleBuilder, styler, marshal);\n this.platformId = platformId;\n this.serverModuleLoaded = serverModuleLoaded;\n this.DIRECTIVE_KEY = 'img-src';\n this.defaultSrc = '';\n this.styleCache = imgSrcCache;\n this.init();\n this.setValue(this.nativeElement.getAttribute('src') || '', '');\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.setAttribute('src', '');\n }\n }\n /**\n * @param {?} val\n * @return {?}\n */\n set src(val) {\n this.defaultSrc = val;\n this.setValue(this.defaultSrc, '');\n }\n /**\n * Use the [responsively] activated input value to update\n * the host img src attribute or assign a default `img.src=''`\n * if the src has not been defined.\n *\n * Do nothing to standard `` usages, only when responsive\n * keys are present do we actually call `setAttribute()`\n * @protected\n * @param {?=} value\n * @return {?}\n */\n updateWithValue(value) {\n /** @type {?} */\n const url = value || this.defaultSrc;\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.addStyles(url);\n }\n else {\n this.nativeElement.setAttribute('src', url);\n }\n }\n}\nImgSrcDirective.ɵfac = function ImgSrcDirective_Factory(t) { return new (t || ImgSrcDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ImgSrcStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(SERVER_TOKEN)); };\nImgSrcDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ImgSrcDirective, inputs: { src: \"src\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nImgSrcDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: ImgSrcStyleBuilder },\n { type: StyleUtils },\n { type: MediaMarshaller },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: Boolean, decorators: [{ type: Inject, args: [SERVER_TOKEN,] }] }\n];\nImgSrcDirective.propDecorators = {\n src: [{ type: Input, args: ['src',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ImgSrcDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ImgSrcStyleBuilder }, { type: ɵngcc1.StyleUtils }, { type: ɵngcc1.MediaMarshaller }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: Boolean, decorators: [{\n type: Inject,\n args: [SERVER_TOKEN]\n }] }]; }, { src: [{\n type: Input,\n args: ['src']\n }] }); })();\n/** @type {?} */\nconst imgSrcCache = new Map();\n/** @type {?} */\nconst inputs = [\n 'src.xs', 'src.sm', 'src.md', 'src.lg', 'src.xl',\n 'src.lt-sm', 'src.lt-md', 'src.lt-lg', 'src.lt-xl',\n 'src.gt-xs', 'src.gt-sm', 'src.gt-md', 'src.gt-lg'\n];\n/** @type {?} */\nconst selector = `\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n`;\n/**\n * This directive provides a responsive API for the HTML 'src' attribute\n * and will update the img.src property upon each responsive activation.\n *\n * e.g.\n * \n *\n * @see https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-src/\n */\nclass DefaultImgSrcDirective extends ImgSrcDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs;\n }\n}\nDefaultImgSrcDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultImgSrcDirective_BaseFactory; return function DefaultImgSrcDirective_Factory(t) { return (ɵDefaultImgSrcDirective_BaseFactory || (ɵDefaultImgSrcDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultImgSrcDirective)))(t || DefaultImgSrcDirective); }; }();\nDefaultImgSrcDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultImgSrcDirective, selectors: [[\"img\", \"src.xs\", \"\"], [\"img\", \"src.sm\", \"\"], [\"img\", \"src.md\", \"\"], [\"img\", \"src.lg\", \"\"], [\"img\", \"src.xl\", \"\"], [\"img\", \"src.lt-sm\", \"\"], [\"img\", \"src.lt-md\", \"\"], [\"img\", \"src.lt-lg\", \"\"], [\"img\", \"src.lt-xl\", \"\"], [\"img\", \"src.gt-xs\", \"\"], [\"img\", \"src.gt-sm\", \"\"], [\"img\", \"src.gt-md\", \"\"], [\"img\", \"src.gt-lg\", \"\"]], inputs: { \"src.xs\": \"src.xs\", \"src.sm\": \"src.sm\", \"src.md\": \"src.md\", \"src.lg\": \"src.lg\", \"src.xl\": \"src.xl\", \"src.lt-sm\": \"src.lt-sm\", \"src.lt-md\": \"src.lt-md\", \"src.lt-lg\": \"src.lt-lg\", \"src.lt-xl\": \"src.lt-xl\", \"src.gt-xs\": \"src.gt-xs\", \"src.gt-sm\": \"src.gt-sm\", \"src.gt-md\": \"src.gt-md\", \"src.gt-lg\": \"src.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultImgSrcDirective, [{\n type: Directive,\n args: [{ selector, inputs }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: extended/class/class.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ClassDirective extends BaseDirective2 {\n /**\n * @param {?} elementRef\n * @param {?} styler\n * @param {?} marshal\n * @param {?} iterableDiffers\n * @param {?} keyValueDiffers\n * @param {?} renderer2\n * @param {?} ngClassInstance\n */\n constructor(elementRef, styler, marshal, iterableDiffers, keyValueDiffers, renderer2, ngClassInstance) {\n super(elementRef, (/** @type {?} */ (null)), styler, marshal);\n this.ngClassInstance = ngClassInstance;\n this.DIRECTIVE_KEY = 'ngClass';\n if (!this.ngClassInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been defined on\n // the same host element; since the responsive variations may be defined...\n this.ngClassInstance = new NgClass(iterableDiffers, keyValueDiffers, elementRef, renderer2);\n }\n this.init();\n this.setValue('', '');\n }\n /**\n * Capture class assignments so we cache the default classes\n * which are merged with activated styles and used as fallbacks.\n * @param {?} val\n * @return {?}\n */\n set klass(val) {\n this.ngClassInstance.klass = val;\n this.setValue(val, '');\n }\n /**\n * @protected\n * @param {?} value\n * @return {?}\n */\n updateWithValue(value) {\n this.ngClassInstance.ngClass = value;\n this.ngClassInstance.ngDoCheck();\n }\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n /**\n * For ChangeDetectionStrategy.onPush and ngOnChanges() updates\n * @return {?}\n */\n ngDoCheck() {\n this.ngClassInstance.ngDoCheck();\n }\n}\nClassDirective.ɵfac = function ClassDirective_Factory(t) { return new (t || ClassDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.NgClass, 10)); };\nClassDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ClassDirective, inputs: { klass: [\"class\", \"klass\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nClassDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: StyleUtils },\n { type: MediaMarshaller },\n { type: IterableDiffers },\n { type: KeyValueDiffers },\n { type: Renderer2 },\n { type: NgClass, decorators: [{ type: Optional }, { type: Self }] }\n];\nClassDirective.propDecorators = {\n klass: [{ type: Input, args: ['class',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ClassDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.StyleUtils }, { type: ɵngcc1.MediaMarshaller }, { type: ɵngcc0.IterableDiffers }, { type: ɵngcc0.KeyValueDiffers }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc2.NgClass, decorators: [{\n type: Optional\n }, {\n type: Self\n }] }]; }, { klass: [{\n type: Input,\n args: ['class']\n }] }); })();\n/** @type {?} */\nconst inputs$1 = [\n 'ngClass', 'ngClass.xs', 'ngClass.sm', 'ngClass.md', 'ngClass.lg', 'ngClass.xl',\n 'ngClass.lt-sm', 'ngClass.lt-md', 'ngClass.lt-lg', 'ngClass.lt-xl',\n 'ngClass.gt-xs', 'ngClass.gt-sm', 'ngClass.gt-md', 'ngClass.gt-lg'\n];\n/** @type {?} */\nconst selector$1 = `\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n`;\n/**\n * Directive to add responsive support for ngClass.\n * This maintains the core functionality of 'ngClass' and adds responsive API\n * Note: this class is a no-op when rendered on the server\n */\nclass DefaultClassDirective extends ClassDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$1;\n }\n}\nDefaultClassDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultClassDirective_BaseFactory; return function DefaultClassDirective_Factory(t) { return (ɵDefaultClassDirective_BaseFactory || (ɵDefaultClassDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultClassDirective)))(t || DefaultClassDirective); }; }();\nDefaultClassDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultClassDirective, selectors: [[\"\", \"ngClass\", \"\"], [\"\", \"ngClass.xs\", \"\"], [\"\", \"ngClass.sm\", \"\"], [\"\", \"ngClass.md\", \"\"], [\"\", \"ngClass.lg\", \"\"], [\"\", \"ngClass.xl\", \"\"], [\"\", \"ngClass.lt-sm\", \"\"], [\"\", \"ngClass.lt-md\", \"\"], [\"\", \"ngClass.lt-lg\", \"\"], [\"\", \"ngClass.lt-xl\", \"\"], [\"\", \"ngClass.gt-xs\", \"\"], [\"\", \"ngClass.gt-sm\", \"\"], [\"\", \"ngClass.gt-md\", \"\"], [\"\", \"ngClass.gt-lg\", \"\"]], inputs: { ngClass: \"ngClass\", \"ngClass.xs\": \"ngClass.xs\", \"ngClass.sm\": \"ngClass.sm\", \"ngClass.md\": \"ngClass.md\", \"ngClass.lg\": \"ngClass.lg\", \"ngClass.xl\": \"ngClass.xl\", \"ngClass.lt-sm\": \"ngClass.lt-sm\", \"ngClass.lt-md\": \"ngClass.lt-md\", \"ngClass.lt-lg\": \"ngClass.lt-lg\", \"ngClass.lt-xl\": \"ngClass.lt-xl\", \"ngClass.gt-xs\": \"ngClass.gt-xs\", \"ngClass.gt-sm\": \"ngClass.gt-sm\", \"ngClass.gt-md\": \"ngClass.gt-md\", \"ngClass.gt-lg\": \"ngClass.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultClassDirective, [{\n type: Directive,\n args: [{ selector: selector$1, inputs: inputs$1 }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: extended/show-hide/show-hide.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ShowHideStyleBuilder extends StyleBuilder {\n /**\n * @param {?} show\n * @param {?} parent\n * @return {?}\n */\n buildStyles(show, parent) {\n /** @type {?} */\n const shouldShow = show === 'true';\n return { 'display': shouldShow ? parent.display || (parent.isServer ? 'initial' : '') : 'none' };\n }\n}\nShowHideStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵShowHideStyleBuilder_BaseFactory; return function ShowHideStyleBuilder_Factory(t) { return (ɵShowHideStyleBuilder_BaseFactory || (ɵShowHideStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(ShowHideStyleBuilder)))(t || ShowHideStyleBuilder); }; }();\n/** @nocollapse */ ShowHideStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function ShowHideStyleBuilder_Factory() { return new ShowHideStyleBuilder(); }, token: ShowHideStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ShowHideStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nclass ShowHideDirective extends BaseDirective2 {\n /**\n * @param {?} elementRef\n * @param {?} styleBuilder\n * @param {?} styler\n * @param {?} marshal\n * @param {?} layoutConfig\n * @param {?} platformId\n * @param {?} serverModuleLoaded\n */\n constructor(elementRef, styleBuilder, styler, marshal, layoutConfig, platformId, serverModuleLoaded) {\n super(elementRef, styleBuilder, styler, marshal);\n this.layoutConfig = layoutConfig;\n this.platformId = platformId;\n this.serverModuleLoaded = serverModuleLoaded;\n this.DIRECTIVE_KEY = 'show-hide';\n /**\n * Original DOM Element CSS display style\n */\n this.display = '';\n this.hasLayout = false;\n this.hasFlexChild = false;\n }\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n this.trackExtraTriggers();\n /** @type {?} */\n const children = Array.from(this.nativeElement.children);\n for (let i = 0; i < children.length; i++) {\n if (this.marshal.hasValue((/** @type {?} */ (children[i])), 'flex')) {\n this.hasFlexChild = true;\n break;\n }\n }\n if (DISPLAY_MAP.has(this.nativeElement)) {\n this.display = (/** @type {?} */ (DISPLAY_MAP.get(this.nativeElement)));\n }\n else {\n this.display = this.getDisplayStyle();\n DISPLAY_MAP.set(this.nativeElement, this.display);\n }\n this.init();\n // set the default to show unless explicitly overridden\n /** @type {?} */\n const defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, '');\n if (defaultValue === undefined || defaultValue === '') {\n this.setValue(true, '');\n }\n else {\n this.triggerUpdate();\n }\n }\n /**\n * On changes to any \\@Input properties...\n * Default to use the non-responsive Input value ('fxShow')\n * Then conditionally override with the mq-activated Input's current value\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n Object.keys(changes).forEach((/**\n * @param {?} key\n * @return {?}\n */\n key => {\n if (this.inputs.indexOf(key) !== -1) {\n /** @type {?} */\n const inputKey = key.split('.');\n /** @type {?} */\n const bp = inputKey.slice(1).join('.');\n /** @type {?} */\n const inputValue = changes[key].currentValue;\n /** @type {?} */\n let shouldShow = inputValue !== '' ?\n inputValue !== 0 ? coerceBooleanProperty(inputValue) : false\n : true;\n if (inputKey[0] === 'fxHide') {\n shouldShow = !shouldShow;\n }\n this.setValue(shouldShow, bp);\n }\n }));\n }\n // *********************************************\n // Protected methods\n // *********************************************\n /**\n * Watch for these extra triggers to update fxShow, fxHide stylings\n * @protected\n * @return {?}\n */\n trackExtraTriggers() {\n this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout');\n ['layout', 'layout-align'].forEach((/**\n * @param {?} key\n * @return {?}\n */\n key => {\n this.marshal\n .trackValue(this.nativeElement, key)\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n }));\n }\n /**\n * Override accessor to the current HTMLElement's `display` style\n * Note: Show/Hide will not change the display to 'flex' but will set it to 'block'\n * unless it was already explicitly specified inline or in a CSS stylesheet.\n * @protected\n * @return {?}\n */\n getDisplayStyle() {\n return (this.hasLayout || (this.hasFlexChild && this.layoutConfig.addFlexToParent)) ?\n 'flex' : this.styler.lookupStyle(this.nativeElement, 'display', true);\n }\n /**\n * Validate the visibility value and then update the host's inline display style\n * @protected\n * @param {?=} value\n * @return {?}\n */\n updateWithValue(value = true) {\n if (value === '') {\n return;\n }\n /** @type {?} */\n const isServer = isPlatformServer(this.platformId);\n this.addStyles(value ? 'true' : 'false', { display: this.display, isServer });\n if (isServer && this.serverModuleLoaded) {\n this.nativeElement.style.setProperty('display', '');\n }\n this.marshal.triggerUpdate((/** @type {?} */ (this.parentElement)), 'layout-gap');\n }\n}\nShowHideDirective.ɵfac = function ShowHideDirective_Factory(t) { return new (t || ShowHideDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ShowHideStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller), ɵngcc0.ɵɵdirectiveInject(LAYOUT_CONFIG), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(SERVER_TOKEN)); };\nShowHideDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ShowHideDirective, features: [ɵngcc0.ɵɵInheritDefinitionFeature, ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nShowHideDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: ShowHideStyleBuilder },\n { type: StyleUtils },\n { type: MediaMarshaller },\n { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: Boolean, decorators: [{ type: Inject, args: [SERVER_TOKEN,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ShowHideDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ShowHideStyleBuilder }, { type: ɵngcc1.StyleUtils }, { type: ɵngcc1.MediaMarshaller }, { type: undefined, decorators: [{\n type: Inject,\n args: [LAYOUT_CONFIG]\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: Boolean, decorators: [{\n type: Inject,\n args: [SERVER_TOKEN]\n }] }]; }, null); })();\n/** @type {?} */\nconst DISPLAY_MAP = new WeakMap();\n/** @type {?} */\nconst inputs$2 = [\n 'fxShow', 'fxShow.print',\n 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl',\n 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl',\n 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg',\n 'fxHide', 'fxHide.print',\n 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl',\n 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl',\n 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg'\n];\n/** @type {?} */\nconst selector$2 = `\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n`;\n/**\n * 'show' Layout API directive\n */\nclass DefaultShowHideDirective extends ShowHideDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$2;\n }\n}\nDefaultShowHideDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultShowHideDirective_BaseFactory; return function DefaultShowHideDirective_Factory(t) { return (ɵDefaultShowHideDirective_BaseFactory || (ɵDefaultShowHideDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultShowHideDirective)))(t || DefaultShowHideDirective); }; }();\nDefaultShowHideDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultShowHideDirective, selectors: [[\"\", \"fxShow\", \"\"], [\"\", \"fxShow.print\", \"\"], [\"\", \"fxShow.xs\", \"\"], [\"\", \"fxShow.sm\", \"\"], [\"\", \"fxShow.md\", \"\"], [\"\", \"fxShow.lg\", \"\"], [\"\", \"fxShow.xl\", \"\"], [\"\", \"fxShow.lt-sm\", \"\"], [\"\", \"fxShow.lt-md\", \"\"], [\"\", \"fxShow.lt-lg\", \"\"], [\"\", \"fxShow.lt-xl\", \"\"], [\"\", \"fxShow.gt-xs\", \"\"], [\"\", \"fxShow.gt-sm\", \"\"], [\"\", \"fxShow.gt-md\", \"\"], [\"\", \"fxShow.gt-lg\", \"\"], [\"\", \"fxHide\", \"\"], [\"\", \"fxHide.print\", \"\"], [\"\", \"fxHide.xs\", \"\"], [\"\", \"fxHide.sm\", \"\"], [\"\", \"fxHide.md\", \"\"], [\"\", \"fxHide.lg\", \"\"], [\"\", \"fxHide.xl\", \"\"], [\"\", \"fxHide.lt-sm\", \"\"], [\"\", \"fxHide.lt-md\", \"\"], [\"\", \"fxHide.lt-lg\", \"\"], [\"\", \"fxHide.lt-xl\", \"\"], [\"\", \"fxHide.gt-xs\", \"\"], [\"\", \"fxHide.gt-sm\", \"\"], [\"\", \"fxHide.gt-md\", \"\"], [\"\", \"fxHide.gt-lg\", \"\"]], inputs: { fxShow: \"fxShow\", \"fxShow.print\": \"fxShow.print\", \"fxShow.xs\": \"fxShow.xs\", \"fxShow.sm\": \"fxShow.sm\", \"fxShow.md\": \"fxShow.md\", \"fxShow.lg\": \"fxShow.lg\", \"fxShow.xl\": \"fxShow.xl\", \"fxShow.lt-sm\": \"fxShow.lt-sm\", \"fxShow.lt-md\": \"fxShow.lt-md\", \"fxShow.lt-lg\": \"fxShow.lt-lg\", \"fxShow.lt-xl\": \"fxShow.lt-xl\", \"fxShow.gt-xs\": \"fxShow.gt-xs\", \"fxShow.gt-sm\": \"fxShow.gt-sm\", \"fxShow.gt-md\": \"fxShow.gt-md\", \"fxShow.gt-lg\": \"fxShow.gt-lg\", fxHide: \"fxHide\", \"fxHide.print\": \"fxHide.print\", \"fxHide.xs\": \"fxHide.xs\", \"fxHide.sm\": \"fxHide.sm\", \"fxHide.md\": \"fxHide.md\", \"fxHide.lg\": \"fxHide.lg\", \"fxHide.xl\": \"fxHide.xl\", \"fxHide.lt-sm\": \"fxHide.lt-sm\", \"fxHide.lt-md\": \"fxHide.lt-md\", \"fxHide.lt-lg\": \"fxHide.lt-lg\", \"fxHide.lt-xl\": \"fxHide.lt-xl\", \"fxHide.gt-xs\": \"fxHide.gt-xs\", \"fxHide.gt-sm\": \"fxHide.gt-sm\", \"fxHide.gt-md\": \"fxHide.gt-md\", \"fxHide.gt-lg\": \"fxHide.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultShowHideDirective, [{\n type: Directive,\n args: [{ selector: selector$2, inputs: inputs$2 }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: extended/style/style-transforms.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * NgStyle allowed inputs\n */\nclass NgStyleKeyValue {\n /**\n * @param {?} key\n * @param {?} value\n * @param {?=} noQuotes\n */\n constructor(key, value, noQuotes = true) {\n this.key = key;\n this.value = value;\n this.key = noQuotes ? key.replace(/['\"]/g, '').trim() : key.trim();\n this.value = noQuotes ? value.replace(/['\"]/g, '').trim() : value.trim();\n this.value = this.value.replace(/;/, '');\n }\n}\n/**\n * @param {?} target\n * @return {?}\n */\nfunction getType(target) {\n /** @type {?} */\n let what = typeof target;\n if (what === 'object') {\n return (target.constructor === Array) ? 'array' :\n (target.constructor === Set) ? 'set' : 'object';\n }\n return what;\n}\n/**\n * Split string of key:value pairs into Array of k-v pairs\n * e.g. 'key:value; key:value; key:value;' -> ['key:value',...]\n * @param {?} source\n * @param {?=} delimiter\n * @return {?}\n */\nfunction buildRawList(source, delimiter = ';') {\n return String(source)\n .trim()\n .split(delimiter)\n .map((/**\n * @param {?} val\n * @return {?}\n */\n (val) => val.trim()))\n .filter((/**\n * @param {?} val\n * @return {?}\n */\n val => val !== ''));\n}\n/**\n * Convert array of key:value strings to a iterable map object\n * @param {?} styles\n * @param {?=} sanitize\n * @return {?}\n */\nfunction buildMapFromList(styles, sanitize) {\n /** @type {?} */\n const sanitizeValue = (/**\n * @param {?} it\n * @return {?}\n */\n (it) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n });\n return styles\n .map(stringToKeyValue)\n .filter((/**\n * @param {?} entry\n * @return {?}\n */\n entry => !!entry))\n .map(sanitizeValue)\n .reduce(keyValuesToMap, (/** @type {?} */ ({})));\n}\n/**\n * Convert Set or raw Object to an iterable NgStyleMap\n * @param {?} source\n * @param {?=} sanitize\n * @return {?}\n */\nfunction buildMapFromSet(source, sanitize) {\n /** @type {?} */\n let list = [];\n if (getType(source) === 'set') {\n ((/** @type {?} */ (source))).forEach((/**\n * @param {?} entry\n * @return {?}\n */\n entry => list.push(entry)));\n }\n else {\n Object.keys(source).forEach((/**\n * @param {?} key\n * @return {?}\n */\n (key) => {\n list.push(`${key}:${((/** @type {?} */ (source)))[key]}`);\n }));\n }\n return buildMapFromList(list, sanitize);\n}\n/**\n * Convert 'key:value' -> [key, value]\n * @param {?} it\n * @return {?}\n */\nfunction stringToKeyValue(it) {\n const [key, ...vals] = it.split(':');\n return new NgStyleKeyValue(key, vals.join(':'));\n}\n/**\n * Convert [ [key,value] ] -> { key : value }\n * @param {?} map\n * @param {?} entry\n * @return {?}\n */\nfunction keyValuesToMap(map, entry) {\n if (!!entry.key) {\n map[entry.key] = entry.value;\n }\n return map;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: extended/style/style.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass StyleDirective extends BaseDirective2 {\n /**\n * @param {?} elementRef\n * @param {?} styler\n * @param {?} marshal\n * @param {?} sanitizer\n * @param {?} differs\n * @param {?} renderer2\n * @param {?} ngStyleInstance\n * @param {?} serverLoaded\n * @param {?} platformId\n */\n constructor(elementRef, styler, marshal, sanitizer, differs, renderer2, ngStyleInstance, serverLoaded, platformId) {\n super(elementRef, (/** @type {?} */ (null)), styler, marshal);\n this.sanitizer = sanitizer;\n this.ngStyleInstance = ngStyleInstance;\n this.DIRECTIVE_KEY = 'ngStyle';\n if (!this.ngStyleInstance) {\n // Create an instance NgStyle Directive instance only if `ngStyle=\"\"` has NOT been\n // defined on the same host element; since the responsive variations may be defined...\n this.ngStyleInstance = new NgStyle(elementRef, differs, renderer2);\n }\n this.init();\n /** @type {?} */\n const styles = this.nativeElement.getAttribute('style') || '';\n this.fallbackStyles = this.buildStyleMap(styles);\n this.isServer = serverLoaded && isPlatformServer(platformId);\n }\n /**\n * Add generated styles\n * @protected\n * @param {?} value\n * @return {?}\n */\n updateWithValue(value) {\n /** @type {?} */\n const styles = this.buildStyleMap(value);\n this.ngStyleInstance.ngStyle = Object.assign(Object.assign({}, this.fallbackStyles), styles);\n if (this.isServer) {\n this.applyStyleToElement(styles);\n }\n this.ngStyleInstance.ngDoCheck();\n }\n /**\n * Remove generated styles\n * @protected\n * @return {?}\n */\n clearStyles() {\n this.ngStyleInstance.ngStyle = this.fallbackStyles;\n this.ngStyleInstance.ngDoCheck();\n }\n /**\n * Convert raw strings to ngStyleMap; which is required by ngStyle\n * NOTE: Raw string key-value pairs MUST be delimited by `;`\n * Comma-delimiters are not supported due to complexities of\n * possible style values such as `rgba(x,x,x,x)` and others\n * @protected\n * @param {?} styles\n * @return {?}\n */\n buildStyleMap(styles) {\n // Always safe-guard (aka sanitize) style property values\n /** @type {?} */\n const sanitizer = (/**\n * @param {?} val\n * @return {?}\n */\n (val) => this.sanitizer.sanitize(SecurityContext.STYLE, val) || '');\n if (styles) {\n switch (getType(styles)) {\n case 'string': return buildMapFromList$1(buildRawList(styles), sanitizer);\n case 'array': return buildMapFromList$1((/** @type {?} */ (styles)), sanitizer);\n case 'set': return buildMapFromSet(styles, sanitizer);\n default: return buildMapFromSet(styles, sanitizer);\n }\n }\n return {};\n }\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n /**\n * For ChangeDetectionStrategy.onPush and ngOnChanges() updates\n * @return {?}\n */\n ngDoCheck() {\n this.ngStyleInstance.ngDoCheck();\n }\n}\nStyleDirective.ɵfac = function StyleDirective_Factory(t) { return new (t || StyleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.DomSanitizer), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.NgStyle, 10), ɵngcc0.ɵɵdirectiveInject(SERVER_TOKEN), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nStyleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: StyleDirective, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nStyleDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: StyleUtils },\n { type: MediaMarshaller },\n { type: DomSanitizer },\n { type: KeyValueDiffers },\n { type: Renderer2 },\n { type: NgStyle, decorators: [{ type: Optional }, { type: Self }] },\n { type: Boolean, decorators: [{ type: Inject, args: [SERVER_TOKEN,] }] },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StyleDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.StyleUtils }, { type: ɵngcc1.MediaMarshaller }, { type: ɵngcc3.DomSanitizer }, { type: ɵngcc0.KeyValueDiffers }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc2.NgStyle, decorators: [{\n type: Optional\n }, {\n type: Self\n }] }, { type: Boolean, decorators: [{\n type: Inject,\n args: [SERVER_TOKEN]\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, null); })();\n/** @type {?} */\nconst inputs$3 = [\n 'ngStyle',\n 'ngStyle.xs', 'ngStyle.sm', 'ngStyle.md', 'ngStyle.lg', 'ngStyle.xl',\n 'ngStyle.lt-sm', 'ngStyle.lt-md', 'ngStyle.lt-lg', 'ngStyle.lt-xl',\n 'ngStyle.gt-xs', 'ngStyle.gt-sm', 'ngStyle.gt-md', 'ngStyle.gt-lg'\n];\n/** @type {?} */\nconst selector$3 = `\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n`;\n/**\n * Directive to add responsive support for ngStyle.\n *\n */\nclass DefaultStyleDirective extends StyleDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$3;\n }\n}\nDefaultStyleDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultStyleDirective_BaseFactory; return function DefaultStyleDirective_Factory(t) { return (ɵDefaultStyleDirective_BaseFactory || (ɵDefaultStyleDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultStyleDirective)))(t || DefaultStyleDirective); }; }();\nDefaultStyleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultStyleDirective, selectors: [[\"\", \"ngStyle\", \"\"], [\"\", \"ngStyle.xs\", \"\"], [\"\", \"ngStyle.sm\", \"\"], [\"\", \"ngStyle.md\", \"\"], [\"\", \"ngStyle.lg\", \"\"], [\"\", \"ngStyle.xl\", \"\"], [\"\", \"ngStyle.lt-sm\", \"\"], [\"\", \"ngStyle.lt-md\", \"\"], [\"\", \"ngStyle.lt-lg\", \"\"], [\"\", \"ngStyle.lt-xl\", \"\"], [\"\", \"ngStyle.gt-xs\", \"\"], [\"\", \"ngStyle.gt-sm\", \"\"], [\"\", \"ngStyle.gt-md\", \"\"], [\"\", \"ngStyle.gt-lg\", \"\"]], inputs: { ngStyle: \"ngStyle\", \"ngStyle.xs\": \"ngStyle.xs\", \"ngStyle.sm\": \"ngStyle.sm\", \"ngStyle.md\": \"ngStyle.md\", \"ngStyle.lg\": \"ngStyle.lg\", \"ngStyle.xl\": \"ngStyle.xl\", \"ngStyle.lt-sm\": \"ngStyle.lt-sm\", \"ngStyle.lt-md\": \"ngStyle.lt-md\", \"ngStyle.lt-lg\": \"ngStyle.lt-lg\", \"ngStyle.lt-xl\": \"ngStyle.lt-xl\", \"ngStyle.gt-xs\": \"ngStyle.gt-xs\", \"ngStyle.gt-sm\": \"ngStyle.gt-sm\", \"ngStyle.gt-md\": \"ngStyle.gt-md\", \"ngStyle.gt-lg\": \"ngStyle.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultStyleDirective, [{\n type: Directive,\n args: [{ selector: selector$3, inputs: inputs$3 }]\n }], null, null); })();\n/**\n * Build a styles map from a list of styles, while sanitizing bad values first\n * @param {?} styles\n * @param {?=} sanitize\n * @return {?}\n */\nfunction buildMapFromList$1(styles, sanitize) {\n /** @type {?} */\n const sanitizeValue = (/**\n * @param {?} it\n * @return {?}\n */\n (it) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n });\n return styles\n .map(stringToKeyValue)\n .filter((/**\n * @param {?} entry\n * @return {?}\n */\n entry => !!entry))\n .map(sanitizeValue)\n .reduce(keyValuesToMap, (/** @type {?} */ ({})));\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: extended/module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst ALL_DIRECTIVES = [\n DefaultShowHideDirective,\n DefaultClassDirective,\n DefaultStyleDirective,\n DefaultImgSrcDirective,\n];\n/**\n * *****************************************************************\n * Define module for the Extended API\n * *****************************************************************\n */\nclass ExtendedModule {\n}\nExtendedModule.ɵfac = function ExtendedModule_Factory(t) { return new (t || ExtendedModule)(); };\nExtendedModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ExtendedModule });\nExtendedModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CoreModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExtendedModule, [{\n type: NgModule,\n args: [{\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ExtendedModule, { declarations: function () { return [DefaultShowHideDirective, DefaultClassDirective, DefaultStyleDirective, DefaultImgSrcDirective]; }, imports: function () { return [CoreModule]; }, exports: function () { return [DefaultShowHideDirective, DefaultClassDirective, DefaultStyleDirective, DefaultImgSrcDirective]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: extended/public-api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: extended/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { ExtendedModule, ClassDirective, DefaultClassDirective, ImgSrcStyleBuilder, ImgSrcDirective, DefaultImgSrcDirective, ShowHideStyleBuilder, ShowHideDirective, DefaultShowHideDirective, StyleDirective, DefaultStyleDirective };\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Directive, ElementRef, Injectable, NgModule, NgZone, Inject, Input, ɵɵdefineInjectable, ɵɵinject } from '@angular/core';\nimport { BaseDirective2, StyleBuilder, StyleUtils, MediaMarshaller, CoreModule, LAYOUT_CONFIG, validateBasis } from '@angular/flex-layout/core';\nimport { Directionality, BidiModule } from '@angular/cdk/bidi';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: utils/layout-validator.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n * @type {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/flex-layout/core';\nimport * as ɵngcc2 from '@angular/cdk/bidi';\nconst INLINE = 'inline';\n/** @type {?} */\nconst LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse'];\n/**\n * Validate the direction|'direction wrap' value and then update the host's inline flexbox styles\n * @param {?} value\n * @return {?}\n */\nfunction buildLayoutCSS(value) {\n let [direction, wrap, isInline] = validateValue(value);\n return buildCSS(direction, wrap, isInline);\n}\n/**\n * Validate the value to be one of the acceptable value options\n * Use default fallback of 'row'\n * @param {?} value\n * @return {?}\n */\nfunction validateValue(value) {\n value = value ? value.toLowerCase() : '';\n let [direction, wrap, inline] = value.split(' ');\n // First value must be the `flex-direction`\n if (!LAYOUT_VALUES.find((/**\n * @param {?} x\n * @return {?}\n */\n x => x === direction))) {\n direction = LAYOUT_VALUES[0];\n }\n if (wrap === INLINE) {\n wrap = (inline !== INLINE) ? inline : '';\n inline = INLINE;\n }\n return [direction, validateWrapValue(wrap), !!inline];\n}\n/**\n * Determine if the validated, flex-direction value specifies\n * a horizontal/row flow.\n * @param {?} value\n * @return {?}\n */\nfunction isFlowHorizontal(value) {\n let [flow,] = validateValue(value);\n return flow.indexOf('row') > -1;\n}\n/**\n * Convert layout-wrap='' to expected flex-wrap style\n * @param {?} value\n * @return {?}\n */\nfunction validateWrapValue(value) {\n if (!!value) {\n switch (value.toLowerCase()) {\n case 'reverse':\n case 'wrap-reverse':\n case 'reverse-wrap':\n value = 'wrap-reverse';\n break;\n case 'no':\n case 'none':\n case 'nowrap':\n value = 'nowrap';\n break;\n // All other values fallback to 'wrap'\n default:\n value = 'wrap';\n break;\n }\n }\n return value;\n}\n/**\n * Build the CSS that should be assigned to the element instance\n * BUG:\n * 1) min-height on a column flex container won’t apply to its flex item children in IE 10-11.\n * Use height instead if possible; height : vh;\n *\n * This way any padding or border specified on the child elements are\n * laid out and drawn inside that element's specified width and height.\n * @param {?} direction\n * @param {?=} wrap\n * @param {?=} inline\n * @return {?}\n */\nfunction buildCSS(direction, wrap = null, inline = false) {\n return {\n 'display': inline ? 'inline-flex' : 'flex',\n 'box-sizing': 'border-box',\n 'flex-direction': direction,\n 'flex-wrap': !!wrap ? wrap : null\n };\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: flex/layout/layout.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass LayoutStyleBuilder extends StyleBuilder {\n /**\n * @param {?} input\n * @return {?}\n */\n buildStyles(input) {\n return buildLayoutCSS(input);\n }\n}\nLayoutStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵLayoutStyleBuilder_BaseFactory; return function LayoutStyleBuilder_Factory(t) { return (ɵLayoutStyleBuilder_BaseFactory || (ɵLayoutStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(LayoutStyleBuilder)))(t || LayoutStyleBuilder); }; }();\n/** @nocollapse */ LayoutStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function LayoutStyleBuilder_Factory() { return new LayoutStyleBuilder(); }, token: LayoutStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LayoutStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n/** @type {?} */\nconst inputs = [\n 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md',\n 'fxLayout.lg', 'fxLayout.xl', 'fxLayout.lt-sm', 'fxLayout.lt-md',\n 'fxLayout.lt-lg', 'fxLayout.lt-xl', 'fxLayout.gt-xs', 'fxLayout.gt-sm',\n 'fxLayout.gt-md', 'fxLayout.gt-lg'\n];\n/** @type {?} */\nconst selector = `\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n`;\n/**\n * 'layout' flexbox styling directive\n * Defines the positioning flow direction for the child elements: row or column\n * Optional values: column or row (default)\n * @see https://css-tricks.com/almanac/properties/f/flex-direction/\n *\n */\nclass LayoutDirective extends BaseDirective2 {\n /**\n * @param {?} elRef\n * @param {?} styleUtils\n * @param {?} styleBuilder\n * @param {?} marshal\n */\n constructor(elRef, styleUtils, styleBuilder, marshal) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.DIRECTIVE_KEY = 'layout';\n this.styleCache = layoutCache;\n this.init();\n }\n}\nLayoutDirective.ɵfac = function LayoutDirective_Factory(t) { return new (t || LayoutDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(LayoutStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nLayoutDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LayoutDirective, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nLayoutDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: StyleUtils },\n { type: LayoutStyleBuilder },\n { type: MediaMarshaller }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LayoutDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.StyleUtils }, { type: LayoutStyleBuilder }, { type: ɵngcc1.MediaMarshaller }]; }, null); })();\nclass DefaultLayoutDirective extends LayoutDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs;\n }\n}\nDefaultLayoutDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultLayoutDirective_BaseFactory; return function DefaultLayoutDirective_Factory(t) { return (ɵDefaultLayoutDirective_BaseFactory || (ɵDefaultLayoutDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultLayoutDirective)))(t || DefaultLayoutDirective); }; }();\nDefaultLayoutDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultLayoutDirective, selectors: [[\"\", \"fxLayout\", \"\"], [\"\", \"fxLayout.xs\", \"\"], [\"\", \"fxLayout.sm\", \"\"], [\"\", \"fxLayout.md\", \"\"], [\"\", \"fxLayout.lg\", \"\"], [\"\", \"fxLayout.xl\", \"\"], [\"\", \"fxLayout.lt-sm\", \"\"], [\"\", \"fxLayout.lt-md\", \"\"], [\"\", \"fxLayout.lt-lg\", \"\"], [\"\", \"fxLayout.lt-xl\", \"\"], [\"\", \"fxLayout.gt-xs\", \"\"], [\"\", \"fxLayout.gt-sm\", \"\"], [\"\", \"fxLayout.gt-md\", \"\"], [\"\", \"fxLayout.gt-lg\", \"\"]], inputs: { fxLayout: \"fxLayout\", \"fxLayout.xs\": \"fxLayout.xs\", \"fxLayout.sm\": \"fxLayout.sm\", \"fxLayout.md\": \"fxLayout.md\", \"fxLayout.lg\": \"fxLayout.lg\", \"fxLayout.xl\": \"fxLayout.xl\", \"fxLayout.lt-sm\": \"fxLayout.lt-sm\", \"fxLayout.lt-md\": \"fxLayout.lt-md\", \"fxLayout.lt-lg\": \"fxLayout.lt-lg\", \"fxLayout.lt-xl\": \"fxLayout.lt-xl\", \"fxLayout.gt-xs\": \"fxLayout.gt-xs\", \"fxLayout.gt-sm\": \"fxLayout.gt-sm\", \"fxLayout.gt-md\": \"fxLayout.gt-md\", \"fxLayout.gt-lg\": \"fxLayout.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultLayoutDirective, [{\n type: Directive,\n args: [{ selector, inputs }]\n }], null, null); })();\n/** @type {?} */\nconst layoutCache = new Map();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: flex/layout-gap/layout-gap.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst CLEAR_MARGIN_CSS = {\n 'margin-left': null,\n 'margin-right': null,\n 'margin-top': null,\n 'margin-bottom': null\n};\nclass LayoutGapStyleBuilder extends StyleBuilder {\n /**\n * @param {?} _styler\n */\n constructor(_styler) {\n super();\n this._styler = _styler;\n }\n /**\n * @param {?} gapValue\n * @param {?} parent\n * @return {?}\n */\n buildStyles(gapValue, parent) {\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n // Add the margin to the host element\n return buildGridMargin(gapValue, parent.directionality);\n }\n else {\n return {};\n }\n }\n /**\n * @param {?} gapValue\n * @param {?} _styles\n * @param {?} parent\n * @return {?}\n */\n sideEffect(gapValue, _styles, parent) {\n /** @type {?} */\n const items = parent.items;\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n // For each `element` children, set the padding\n /** @type {?} */\n const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n this._styler.applyStyleToElements(paddingStyles, parent.items);\n }\n else {\n /** @type {?} */\n const lastItem = (/** @type {?} */ (items.pop()));\n // For each `element` children EXCEPT the last,\n // set the margin right/bottom styles...\n /** @type {?} */\n const gapCss = buildGapCSS(gapValue, parent);\n this._styler.applyStyleToElements(gapCss, items);\n // Clear all gaps for all visible elements\n this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]);\n }\n }\n}\nLayoutGapStyleBuilder.ɵfac = function LayoutGapStyleBuilder_Factory(t) { return new (t || LayoutGapStyleBuilder)(ɵngcc0.ɵɵinject(ɵngcc1.StyleUtils)); };\n/** @nocollapse */ LayoutGapStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function LayoutGapStyleBuilder_Factory() { return new LayoutGapStyleBuilder(ɵɵinject(StyleUtils)); }, token: LayoutGapStyleBuilder, providedIn: \"root\" });\n/** @nocollapse */\nLayoutGapStyleBuilder.ctorParameters = () => [\n { type: StyleUtils }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LayoutGapStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc1.StyleUtils }]; }, null); })();\n/** @type {?} */\nconst inputs$1 = [\n 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md',\n 'fxLayoutGap.lg', 'fxLayoutGap.xl', 'fxLayoutGap.lt-sm', 'fxLayoutGap.lt-md',\n 'fxLayoutGap.lt-lg', 'fxLayoutGap.lt-xl', 'fxLayoutGap.gt-xs', 'fxLayoutGap.gt-sm',\n 'fxLayoutGap.gt-md', 'fxLayoutGap.gt-lg'\n];\n/** @type {?} */\nconst selector$1 = `\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n`;\n/**\n * 'layout-padding' styling directive\n * Defines padding of child elements in a layout container\n */\nclass LayoutGapDirective extends BaseDirective2 {\n /**\n * @param {?} elRef\n * @param {?} zone\n * @param {?} directionality\n * @param {?} styleUtils\n * @param {?} styleBuilder\n * @param {?} marshal\n */\n constructor(elRef, zone, directionality, styleUtils, styleBuilder, marshal) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.zone = zone;\n this.directionality = directionality;\n this.styleUtils = styleUtils;\n this.layout = 'row'; // default flex-direction\n // default flex-direction\n this.DIRECTIVE_KEY = 'layout-gap';\n this.observerSubject = new Subject();\n /** @type {?} */\n const extraTriggers = [this.directionality.change, this.observerSubject.asObservable()];\n this.init(extraTriggers);\n this.marshal\n .trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n /**\n * Special accessor to query for all child 'element' nodes regardless of type, class, etc\n * @protected\n * @return {?}\n */\n get childrenNodes() {\n /** @type {?} */\n const obj = this.nativeElement.children;\n /** @type {?} */\n const buffer = [];\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--;) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n this.buildChildObservable();\n this.triggerUpdate();\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n // *********************************************\n // Protected methods\n // *********************************************\n /**\n * Cache the parent container 'flex-direction' and update the 'margin' styles\n * @protected\n * @param {?} matcher\n * @return {?}\n */\n onLayoutChange(matcher) {\n /** @type {?} */\n const layout = matcher.value;\n // Make sure to filter out 'wrap' option\n /** @type {?} */\n const direction = layout.split(' ');\n this.layout = direction[0];\n if (!LAYOUT_VALUES.find((/**\n * @param {?} x\n * @return {?}\n */\n x => x === this.layout))) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n /**\n *\n * @protected\n * @param {?} value\n * @return {?}\n */\n updateWithValue(value) {\n // Gather all non-hidden Element nodes\n /** @type {?} */\n const items = this.childrenNodes\n .filter((/**\n * @param {?} el\n * @return {?}\n */\n el => el.nodeType === 1 && this.willDisplay(el)))\n .sort((/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\n (a, b) => {\n /** @type {?} */\n const orderA = +this.styler.lookupStyle(a, 'order');\n /** @type {?} */\n const orderB = +this.styler.lookupStyle(b, 'order');\n if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) {\n return 0;\n }\n else {\n return orderA > orderB ? 1 : -1;\n }\n }));\n if (items.length > 0) {\n /** @type {?} */\n const directionality = this.directionality.value;\n /** @type {?} */\n const layout = this.layout;\n if (layout === 'row' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheRowRtl;\n }\n else if (layout === 'row' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheRowLtr;\n }\n else if (layout === 'column' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheColumnRtl;\n }\n else if (layout === 'column' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheColumnLtr;\n }\n this.addStyles(value, { directionality, items, layout });\n }\n }\n /**\n * We need to override clearStyles because in most cases mru isn't populated\n * @protected\n * @return {?}\n */\n clearStyles() {\n /** @type {?} */\n const gridMode = Object.keys(this.mru).length > 0;\n /** @type {?} */\n const childrenStyle = gridMode ? 'padding' :\n getMarginType(this.directionality.value, this.layout);\n // If there are styles on the parent remove them\n if (gridMode) {\n super.clearStyles();\n }\n // Then remove the children styles too\n this.styleUtils.applyStyleToElements({ [childrenStyle]: '' }, this.childrenNodes);\n }\n /**\n * Determine if an element will show or hide based on current activation\n * @protected\n * @param {?} source\n * @return {?}\n */\n willDisplay(source) {\n /** @type {?} */\n const value = this.marshal.getValue(source, 'show-hide');\n return value === true ||\n (value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none');\n }\n /**\n * @protected\n * @return {?}\n */\n buildChildObservable() {\n this.zone.runOutsideAngular((/**\n * @return {?}\n */\n () => {\n if (typeof MutationObserver !== 'undefined') {\n this.observer = new MutationObserver((/**\n * @param {?} mutations\n * @return {?}\n */\n (mutations) => {\n /** @type {?} */\n const validatedChanges = (/**\n * @param {?} it\n * @return {?}\n */\n (it) => {\n return (it.addedNodes && it.addedNodes.length > 0) ||\n (it.removedNodes && it.removedNodes.length > 0);\n });\n // update gap styles only for child 'added' or 'removed' events\n if (mutations.some(validatedChanges)) {\n this.observerSubject.next();\n }\n }));\n this.observer.observe(this.nativeElement, { childList: true });\n }\n }));\n }\n}\nLayoutGapDirective.ɵfac = function LayoutGapDirective_Factory(t) { return new (t || LayoutGapDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(LayoutGapStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nLayoutGapDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LayoutGapDirective, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nLayoutGapDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone },\n { type: Directionality },\n { type: StyleUtils },\n { type: LayoutGapStyleBuilder },\n { type: MediaMarshaller }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LayoutGapDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc2.Directionality }, { type: ɵngcc1.StyleUtils }, { type: LayoutGapStyleBuilder }, { type: ɵngcc1.MediaMarshaller }]; }, null); })();\nclass DefaultLayoutGapDirective extends LayoutGapDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$1;\n }\n}\nDefaultLayoutGapDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultLayoutGapDirective_BaseFactory; return function DefaultLayoutGapDirective_Factory(t) { return (ɵDefaultLayoutGapDirective_BaseFactory || (ɵDefaultLayoutGapDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultLayoutGapDirective)))(t || DefaultLayoutGapDirective); }; }();\nDefaultLayoutGapDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultLayoutGapDirective, selectors: [[\"\", \"fxLayoutGap\", \"\"], [\"\", \"fxLayoutGap.xs\", \"\"], [\"\", \"fxLayoutGap.sm\", \"\"], [\"\", \"fxLayoutGap.md\", \"\"], [\"\", \"fxLayoutGap.lg\", \"\"], [\"\", \"fxLayoutGap.xl\", \"\"], [\"\", \"fxLayoutGap.lt-sm\", \"\"], [\"\", \"fxLayoutGap.lt-md\", \"\"], [\"\", \"fxLayoutGap.lt-lg\", \"\"], [\"\", \"fxLayoutGap.lt-xl\", \"\"], [\"\", \"fxLayoutGap.gt-xs\", \"\"], [\"\", \"fxLayoutGap.gt-sm\", \"\"], [\"\", \"fxLayoutGap.gt-md\", \"\"], [\"\", \"fxLayoutGap.gt-lg\", \"\"]], inputs: { fxLayoutGap: \"fxLayoutGap\", \"fxLayoutGap.xs\": \"fxLayoutGap.xs\", \"fxLayoutGap.sm\": \"fxLayoutGap.sm\", \"fxLayoutGap.md\": \"fxLayoutGap.md\", \"fxLayoutGap.lg\": \"fxLayoutGap.lg\", \"fxLayoutGap.xl\": \"fxLayoutGap.xl\", \"fxLayoutGap.lt-sm\": \"fxLayoutGap.lt-sm\", \"fxLayoutGap.lt-md\": \"fxLayoutGap.lt-md\", \"fxLayoutGap.lt-lg\": \"fxLayoutGap.lt-lg\", \"fxLayoutGap.lt-xl\": \"fxLayoutGap.lt-xl\", \"fxLayoutGap.gt-xs\": \"fxLayoutGap.gt-xs\", \"fxLayoutGap.gt-sm\": \"fxLayoutGap.gt-sm\", \"fxLayoutGap.gt-md\": \"fxLayoutGap.gt-md\", \"fxLayoutGap.gt-lg\": \"fxLayoutGap.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultLayoutGapDirective, [{\n type: Directive,\n args: [{ selector: selector$1, inputs: inputs$1 }]\n }], null, null); })();\n/** @type {?} */\nconst layoutGapCacheRowRtl = new Map();\n/** @type {?} */\nconst layoutGapCacheColumnRtl = new Map();\n/** @type {?} */\nconst layoutGapCacheRowLtr = new Map();\n/** @type {?} */\nconst layoutGapCacheColumnLtr = new Map();\n/** @type {?} */\nconst GRID_SPECIFIER = ' grid';\n/**\n * @param {?} value\n * @param {?} directionality\n * @return {?}\n */\nfunction buildGridPadding(value, directionality) {\n const [between, below] = value.split(' ');\n /** @type {?} */\n const bottom = below || between;\n /** @type {?} */\n let paddingRight = '0px';\n /** @type {?} */\n let paddingBottom = bottom;\n /** @type {?} */\n let paddingLeft = '0px';\n if (directionality === 'rtl') {\n paddingLeft = between;\n }\n else {\n paddingRight = between;\n }\n return { 'padding': `0px ${paddingRight} ${paddingBottom} ${paddingLeft}` };\n}\n/**\n * @param {?} value\n * @param {?} directionality\n * @return {?}\n */\nfunction buildGridMargin(value, directionality) {\n const [between, below] = value.split(' ');\n /** @type {?} */\n const bottom = below || between;\n /** @type {?} */\n const minus = (/**\n * @param {?} str\n * @return {?}\n */\n (str) => `-${str}`);\n /** @type {?} */\n let marginRight = '0px';\n /** @type {?} */\n let marginBottom = minus(bottom);\n /** @type {?} */\n let marginLeft = '0px';\n if (directionality === 'rtl') {\n marginLeft = minus(between);\n }\n else {\n marginRight = minus(between);\n }\n return { 'margin': `0px ${marginRight} ${marginBottom} ${marginLeft}` };\n}\n/**\n * @param {?} directionality\n * @param {?} layout\n * @return {?}\n */\nfunction getMarginType(directionality, layout) {\n switch (layout) {\n case 'column':\n return 'margin-bottom';\n case 'column-reverse':\n return 'margin-top';\n case 'row':\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n case 'row-reverse':\n return directionality === 'rtl' ? 'margin-right' : 'margin-left';\n default:\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n }\n}\n/**\n * @param {?} gapValue\n * @param {?} parent\n * @return {?}\n */\nfunction buildGapCSS(gapValue, parent) {\n /** @type {?} */\n const key = getMarginType(parent.directionality, parent.layout);\n /** @type {?} */\n const margins = Object.assign({}, CLEAR_MARGIN_CSS);\n margins[key] = gapValue;\n return margins;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: utils/object-extend.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\n * similar to Object.assign.\n *\n * @param {?} dest The object which will have properties copied to it.\n * @param {...?} sources The source objects from which properties will be copied.\n * @return {?}\n */\nfunction extendObject(dest, ...sources) {\n if (dest == null) {\n throw TypeError('Cannot convert undefined or null to object');\n }\n for (let source of sources) {\n if (source != null) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n dest[key] = source[key];\n }\n }\n }\n }\n return dest;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: flex/flex/flex.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FlexStyleBuilder extends StyleBuilder {\n /**\n * @param {?} layoutConfig\n */\n constructor(layoutConfig) {\n super();\n this.layoutConfig = layoutConfig;\n }\n /**\n * @param {?} input\n * @param {?} parent\n * @return {?}\n */\n buildStyles(input, parent) {\n let [grow, shrink, ...basisParts] = input.split(' ');\n /** @type {?} */\n let basis = basisParts.join(' ');\n // The flex-direction of this element's flex container. Defaults to 'row'.\n /** @type {?} */\n const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row';\n /** @type {?} */\n const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n /** @type {?} */\n const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\n /** @type {?} */\n const hasCalc = String(basis).indexOf('calc') > -1;\n /** @type {?} */\n const usingCalc = hasCalc || (basis === 'auto');\n /** @type {?} */\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n /** @type {?} */\n const hasUnits = String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n /** @type {?} */\n let isValue = (hasCalc || hasUnits);\n grow = (grow == '0') ? 0 : grow;\n shrink = (shrink == '0') ? 0 : shrink;\n // make box inflexible when shrink and grow are both zero\n // should not set a min when the grow is zero\n // should not set a max when the shrink is zero\n /** @type {?} */\n const isFixed = !grow && !shrink;\n /** @type {?} */\n let css = {};\n // flex-basis allows you to specify the initial/starting main-axis size of the element,\n // before anything else is computed. It can either be a percentage or an absolute value.\n // It is, however, not the breaking point for flex-grow/shrink properties\n //\n // flex-grow can be seen as this:\n // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'.\n // 1: (Default value). Stretch; will be the same size to all other flex items on\n // the same row since they have a default value of 1.\n // ≥2 (integer n): Stretch. Will be n times the size of other elements\n // with 'flex-grow: 1' on the same row.\n // Use `null` to clear existing styles.\n /** @type {?} */\n const clearStyles = {\n 'max-width': null,\n 'max-height': null,\n 'min-width': null,\n 'min-height': null\n };\n switch (basis || '') {\n case '':\n /** @type {?} */\n const useColumnBasisZero = this.layoutConfig.useColumnBasisZero !== false;\n basis = direction === 'row' ? '0%' : (useColumnBasisZero ? '0.000000001px' : 'auto');\n break;\n case 'initial': // default\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n // Defaults to percentage sizing unless `px` is explicitly set\n if (!isValue && !isPercent && !isNaN((/** @type {?} */ (basis)))) {\n basis = basis + '%';\n }\n // Fix for issue 280\n if (basis === '0%') {\n isValue = true;\n }\n if (basis === '0px') {\n basis = '0%';\n }\n // fix issue #5345\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%'\n });\n }\n else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${isValue ? basis : '100%'}`\n });\n }\n break;\n }\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n }\n else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n }\n // Fix for issues 277, 534, and 728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n // Fix for issue 528\n if (!css[min] && !css[max]) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n }\n else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n }\n else {\n // Fix for issue 660\n if (parent.hasWrap) {\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max] ?\n (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`) :\n (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n }\n return (/** @type {?} */ (extendObject(css, { 'box-sizing': 'border-box' })));\n }\n}\nFlexStyleBuilder.ɵfac = function FlexStyleBuilder_Factory(t) { return new (t || FlexStyleBuilder)(ɵngcc0.ɵɵinject(LAYOUT_CONFIG)); };\n/** @nocollapse */ FlexStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function FlexStyleBuilder_Factory() { return new FlexStyleBuilder(ɵɵinject(LAYOUT_CONFIG)); }, token: FlexStyleBuilder, providedIn: \"root\" });\n/** @nocollapse */\nFlexStyleBuilder.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlexStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LAYOUT_CONFIG]\n }] }]; }, null); })();\n/** @type {?} */\nconst inputs$2 = [\n 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md',\n 'fxFlex.lg', 'fxFlex.xl', 'fxFlex.lt-sm', 'fxFlex.lt-md',\n 'fxFlex.lt-lg', 'fxFlex.lt-xl', 'fxFlex.gt-xs', 'fxFlex.gt-sm',\n 'fxFlex.gt-md', 'fxFlex.gt-lg'\n];\n/** @type {?} */\nconst selector$2 = `\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n`;\n/**\n * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink.\n * Corresponds to the css `flex` shorthand property.\n *\n * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n */\nclass FlexDirective extends BaseDirective2 {\n /**\n * @param {?} elRef\n * @param {?} styleUtils\n * @param {?} layoutConfig\n * @param {?} styleBuilder\n * @param {?} marshal\n */\n constructor(elRef, styleUtils, layoutConfig, styleBuilder, marshal) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.layoutConfig = layoutConfig;\n this.marshal = marshal;\n this.DIRECTIVE_KEY = 'flex';\n this.direction = undefined;\n this.wrap = undefined;\n this.flexGrow = '1';\n this.flexShrink = '1';\n this.init();\n }\n /**\n * @return {?}\n */\n get shrink() { return this.flexShrink; }\n /**\n * @param {?} value\n * @return {?}\n */\n set shrink(value) {\n this.flexShrink = value || '1';\n this.triggerReflow();\n }\n /**\n * @return {?}\n */\n get grow() { return this.flexGrow; }\n /**\n * @param {?} value\n * @return {?}\n */\n set grow(value) {\n this.flexGrow = value || '1';\n this.triggerReflow();\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n if (this.parentElement) {\n this.marshal.trackValue(this.parentElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n this.marshal.trackValue(this.nativeElement, 'layout-align')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerReflow.bind(this));\n }\n }\n /**\n * Caches the parent container's 'flex-direction' and updates the element's style.\n * Used as a handler for layout change events from the parent flex container.\n * @protected\n * @param {?} matcher\n * @return {?}\n */\n onLayoutChange(matcher) {\n /** @type {?} */\n const layout = matcher.value;\n /** @type {?} */\n const layoutParts = layout.split(' ');\n this.direction = layoutParts[0];\n this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap';\n this.triggerUpdate();\n }\n /**\n * Input to this is exclusively the basis input value\n * @protected\n * @param {?} value\n * @return {?}\n */\n updateWithValue(value) {\n /** @type {?} */\n const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n if (this.direction === undefined) {\n this.direction = this.getFlexFlowDirection((/** @type {?} */ (this.parentElement)), addFlexToParent);\n }\n if (this.wrap === undefined) {\n this.wrap = this.hasWrap((/** @type {?} */ (this.parentElement)));\n }\n /** @type {?} */\n const direction = this.direction;\n /** @type {?} */\n const isHorizontal = direction.startsWith('row');\n /** @type {?} */\n const hasWrap = this.wrap;\n if (isHorizontal && hasWrap) {\n this.styleCache = flexRowWrapCache;\n }\n else if (isHorizontal && !hasWrap) {\n this.styleCache = flexRowCache;\n }\n else if (!isHorizontal && hasWrap) {\n this.styleCache = flexColumnWrapCache;\n }\n else if (!isHorizontal && !hasWrap) {\n this.styleCache = flexColumnCache;\n }\n /** @type {?} */\n const basis = String(value).replace(';', '');\n /** @type {?} */\n const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n this.addStyles(parts.join(' '), { direction, hasWrap });\n }\n /**\n * Trigger a style reflow, usually based on a shrink/grow input event\n * @protected\n * @return {?}\n */\n triggerReflow() {\n /** @type {?} */\n const activatedValue = this.activatedValue;\n if (activatedValue !== undefined) {\n /** @type {?} */\n const parts = validateBasis(activatedValue + '', this.flexGrow, this.flexShrink);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' '));\n }\n }\n}\nFlexDirective.ɵfac = function FlexDirective_Factory(t) { return new (t || FlexDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(LAYOUT_CONFIG), ɵngcc0.ɵɵdirectiveInject(FlexStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nFlexDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FlexDirective, inputs: { shrink: [\"fxShrink\", \"shrink\"], grow: [\"fxGrow\", \"grow\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nFlexDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: StyleUtils },\n { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] },\n { type: FlexStyleBuilder },\n { type: MediaMarshaller }\n];\nFlexDirective.propDecorators = {\n shrink: [{ type: Input, args: ['fxShrink',] }],\n grow: [{ type: Input, args: ['fxGrow',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlexDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.StyleUtils }, { type: undefined, decorators: [{\n type: Inject,\n args: [LAYOUT_CONFIG]\n }] }, { type: FlexStyleBuilder }, { type: ɵngcc1.MediaMarshaller }]; }, { shrink: [{\n type: Input,\n args: ['fxShrink']\n }], grow: [{\n type: Input,\n args: ['fxGrow']\n }] }); })();\nclass DefaultFlexDirective extends FlexDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$2;\n }\n}\nDefaultFlexDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultFlexDirective_BaseFactory; return function DefaultFlexDirective_Factory(t) { return (ɵDefaultFlexDirective_BaseFactory || (ɵDefaultFlexDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultFlexDirective)))(t || DefaultFlexDirective); }; }();\nDefaultFlexDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultFlexDirective, selectors: [[\"\", \"fxFlex\", \"\"], [\"\", \"fxFlex.xs\", \"\"], [\"\", \"fxFlex.sm\", \"\"], [\"\", \"fxFlex.md\", \"\"], [\"\", \"fxFlex.lg\", \"\"], [\"\", \"fxFlex.xl\", \"\"], [\"\", \"fxFlex.lt-sm\", \"\"], [\"\", \"fxFlex.lt-md\", \"\"], [\"\", \"fxFlex.lt-lg\", \"\"], [\"\", \"fxFlex.lt-xl\", \"\"], [\"\", \"fxFlex.gt-xs\", \"\"], [\"\", \"fxFlex.gt-sm\", \"\"], [\"\", \"fxFlex.gt-md\", \"\"], [\"\", \"fxFlex.gt-lg\", \"\"]], inputs: { fxFlex: \"fxFlex\", \"fxFlex.xs\": \"fxFlex.xs\", \"fxFlex.sm\": \"fxFlex.sm\", \"fxFlex.md\": \"fxFlex.md\", \"fxFlex.lg\": \"fxFlex.lg\", \"fxFlex.xl\": \"fxFlex.xl\", \"fxFlex.lt-sm\": \"fxFlex.lt-sm\", \"fxFlex.lt-md\": \"fxFlex.lt-md\", \"fxFlex.lt-lg\": \"fxFlex.lt-lg\", \"fxFlex.lt-xl\": \"fxFlex.lt-xl\", \"fxFlex.gt-xs\": \"fxFlex.gt-xs\", \"fxFlex.gt-sm\": \"fxFlex.gt-sm\", \"fxFlex.gt-md\": \"fxFlex.gt-md\", \"fxFlex.gt-lg\": \"fxFlex.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultFlexDirective, [{\n type: Directive,\n args: [{ inputs: inputs$2, selector: selector$2 }]\n }], null, null); })();\n/** @type {?} */\nconst flexRowCache = new Map();\n/** @type {?} */\nconst flexColumnCache = new Map();\n/** @type {?} */\nconst flexRowWrapCache = new Map();\n/** @type {?} */\nconst flexColumnWrapCache = new Map();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: flex/flex-order/flex-order.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FlexOrderStyleBuilder extends StyleBuilder {\n /**\n * @param {?} value\n * @return {?}\n */\n buildStyles(value) {\n return { order: (value && parseInt(value, 10)) || '' };\n }\n}\nFlexOrderStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵFlexOrderStyleBuilder_BaseFactory; return function FlexOrderStyleBuilder_Factory(t) { return (ɵFlexOrderStyleBuilder_BaseFactory || (ɵFlexOrderStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(FlexOrderStyleBuilder)))(t || FlexOrderStyleBuilder); }; }();\n/** @nocollapse */ FlexOrderStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function FlexOrderStyleBuilder_Factory() { return new FlexOrderStyleBuilder(); }, token: FlexOrderStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlexOrderStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n/** @type {?} */\nconst inputs$3 = [\n 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md',\n 'fxFlexOrder.lg', 'fxFlexOrder.xl', 'fxFlexOrder.lt-sm', 'fxFlexOrder.lt-md',\n 'fxFlexOrder.lt-lg', 'fxFlexOrder.lt-xl', 'fxFlexOrder.gt-xs', 'fxFlexOrder.gt-sm',\n 'fxFlexOrder.gt-md', 'fxFlexOrder.gt-lg'\n];\n/** @type {?} */\nconst selector$3 = `\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n`;\n/**\n * 'flex-order' flexbox styling directive\n * Configures the positional ordering of the element in a sorted layout container\n * @see https://css-tricks.com/almanac/properties/o/order/\n */\nclass FlexOrderDirective extends BaseDirective2 {\n /**\n * @param {?} elRef\n * @param {?} styleUtils\n * @param {?} styleBuilder\n * @param {?} marshal\n */\n constructor(elRef, styleUtils, styleBuilder, marshal) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.DIRECTIVE_KEY = 'flex-order';\n this.styleCache = flexOrderCache;\n this.init();\n }\n}\nFlexOrderDirective.ɵfac = function FlexOrderDirective_Factory(t) { return new (t || FlexOrderDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(FlexOrderStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nFlexOrderDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FlexOrderDirective, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nFlexOrderDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: StyleUtils },\n { type: FlexOrderStyleBuilder },\n { type: MediaMarshaller }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlexOrderDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.StyleUtils }, { type: FlexOrderStyleBuilder }, { type: ɵngcc1.MediaMarshaller }]; }, null); })();\n/** @type {?} */\nconst flexOrderCache = new Map();\nclass DefaultFlexOrderDirective extends FlexOrderDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$3;\n }\n}\nDefaultFlexOrderDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultFlexOrderDirective_BaseFactory; return function DefaultFlexOrderDirective_Factory(t) { return (ɵDefaultFlexOrderDirective_BaseFactory || (ɵDefaultFlexOrderDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultFlexOrderDirective)))(t || DefaultFlexOrderDirective); }; }();\nDefaultFlexOrderDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultFlexOrderDirective, selectors: [[\"\", \"fxFlexOrder\", \"\"], [\"\", \"fxFlexOrder.xs\", \"\"], [\"\", \"fxFlexOrder.sm\", \"\"], [\"\", \"fxFlexOrder.md\", \"\"], [\"\", \"fxFlexOrder.lg\", \"\"], [\"\", \"fxFlexOrder.xl\", \"\"], [\"\", \"fxFlexOrder.lt-sm\", \"\"], [\"\", \"fxFlexOrder.lt-md\", \"\"], [\"\", \"fxFlexOrder.lt-lg\", \"\"], [\"\", \"fxFlexOrder.lt-xl\", \"\"], [\"\", \"fxFlexOrder.gt-xs\", \"\"], [\"\", \"fxFlexOrder.gt-sm\", \"\"], [\"\", \"fxFlexOrder.gt-md\", \"\"], [\"\", \"fxFlexOrder.gt-lg\", \"\"]], inputs: { fxFlexOrder: \"fxFlexOrder\", \"fxFlexOrder.xs\": \"fxFlexOrder.xs\", \"fxFlexOrder.sm\": \"fxFlexOrder.sm\", \"fxFlexOrder.md\": \"fxFlexOrder.md\", \"fxFlexOrder.lg\": \"fxFlexOrder.lg\", \"fxFlexOrder.xl\": \"fxFlexOrder.xl\", \"fxFlexOrder.lt-sm\": \"fxFlexOrder.lt-sm\", \"fxFlexOrder.lt-md\": \"fxFlexOrder.lt-md\", \"fxFlexOrder.lt-lg\": \"fxFlexOrder.lt-lg\", \"fxFlexOrder.lt-xl\": \"fxFlexOrder.lt-xl\", \"fxFlexOrder.gt-xs\": \"fxFlexOrder.gt-xs\", \"fxFlexOrder.gt-sm\": \"fxFlexOrder.gt-sm\", \"fxFlexOrder.gt-md\": \"fxFlexOrder.gt-md\", \"fxFlexOrder.gt-lg\": \"fxFlexOrder.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultFlexOrderDirective, [{\n type: Directive,\n args: [{ selector: selector$3, inputs: inputs$3 }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: flex/flex-offset/flex-offset.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FlexOffsetStyleBuilder extends StyleBuilder {\n /**\n * @param {?} offset\n * @param {?} parent\n * @return {?}\n */\n buildStyles(offset, parent) {\n if (offset === '') {\n offset = '0';\n }\n /** @type {?} */\n const isPercent = String(offset).indexOf('%') > -1;\n /** @type {?} */\n const isPx = String(offset).indexOf('px') > -1;\n if (!isPx && !isPercent && !isNaN(+offset)) {\n offset = offset + '%';\n }\n /** @type {?} */\n const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n /** @type {?} */\n const styles = isFlowHorizontal(parent.layout) ?\n { [horizontalLayoutKey]: `${offset}` } : { 'margin-top': `${offset}` };\n return styles;\n }\n}\nFlexOffsetStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵFlexOffsetStyleBuilder_BaseFactory; return function FlexOffsetStyleBuilder_Factory(t) { return (ɵFlexOffsetStyleBuilder_BaseFactory || (ɵFlexOffsetStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(FlexOffsetStyleBuilder)))(t || FlexOffsetStyleBuilder); }; }();\n/** @nocollapse */ FlexOffsetStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function FlexOffsetStyleBuilder_Factory() { return new FlexOffsetStyleBuilder(); }, token: FlexOffsetStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlexOffsetStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n/** @type {?} */\nconst inputs$4 = [\n 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md',\n 'fxFlexOffset.lg', 'fxFlexOffset.xl', 'fxFlexOffset.lt-sm', 'fxFlexOffset.lt-md',\n 'fxFlexOffset.lt-lg', 'fxFlexOffset.lt-xl', 'fxFlexOffset.gt-xs', 'fxFlexOffset.gt-sm',\n 'fxFlexOffset.gt-md', 'fxFlexOffset.gt-lg'\n];\n/** @type {?} */\nconst selector$4 = `\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n`;\n/**\n * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\nclass FlexOffsetDirective extends BaseDirective2 {\n /**\n * @param {?} elRef\n * @param {?} directionality\n * @param {?} styleBuilder\n * @param {?} marshal\n * @param {?} styler\n */\n constructor(elRef, directionality, styleBuilder, marshal, styler) {\n super(elRef, styleBuilder, styler, marshal);\n this.directionality = directionality;\n this.DIRECTIVE_KEY = 'flex-offset';\n this.init([this.directionality.change]);\n // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n if (this.parentElement) {\n this.marshal\n .trackValue(this.parentElement, 'layout-gap')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n }\n }\n // *********************************************\n // Protected methods\n // *********************************************\n /**\n * Using the current fxFlexOffset value, update the inline CSS\n * NOTE: this will assign `margin-left` if the parent flex-direction == 'row',\n * otherwise `margin-top` is used for the offset.\n * @protected\n * @param {?=} value\n * @return {?}\n */\n updateWithValue(value = '') {\n // The flex-direction of this element's flex container. Defaults to 'row'.\n /** @type {?} */\n const layout = this.getFlexFlowDirection((/** @type {?} */ (this.parentElement)), true);\n /** @type {?} */\n const isRtl = this.directionality.value === 'rtl';\n if (layout === 'row' && isRtl) {\n this.styleCache = flexOffsetCacheRowRtl;\n }\n else if (layout === 'row' && !isRtl) {\n this.styleCache = flexOffsetCacheRowLtr;\n }\n else if (layout === 'column' && isRtl) {\n this.styleCache = flexOffsetCacheColumnRtl;\n }\n else if (layout === 'column' && !isRtl) {\n this.styleCache = flexOffsetCacheColumnLtr;\n }\n this.addStyles(value + '', { layout, isRtl });\n }\n}\nFlexOffsetDirective.ɵfac = function FlexOffsetDirective_Factory(t) { return new (t || FlexOffsetDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality), ɵngcc0.ɵɵdirectiveInject(FlexOffsetStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils)); };\nFlexOffsetDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FlexOffsetDirective, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nFlexOffsetDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Directionality },\n { type: FlexOffsetStyleBuilder },\n { type: MediaMarshaller },\n { type: StyleUtils }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlexOffsetDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc2.Directionality }, { type: FlexOffsetStyleBuilder }, { type: ɵngcc1.MediaMarshaller }, { type: ɵngcc1.StyleUtils }]; }, null); })();\nclass DefaultFlexOffsetDirective extends FlexOffsetDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$4;\n }\n}\nDefaultFlexOffsetDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultFlexOffsetDirective_BaseFactory; return function DefaultFlexOffsetDirective_Factory(t) { return (ɵDefaultFlexOffsetDirective_BaseFactory || (ɵDefaultFlexOffsetDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultFlexOffsetDirective)))(t || DefaultFlexOffsetDirective); }; }();\nDefaultFlexOffsetDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultFlexOffsetDirective, selectors: [[\"\", \"fxFlexOffset\", \"\"], [\"\", \"fxFlexOffset.xs\", \"\"], [\"\", \"fxFlexOffset.sm\", \"\"], [\"\", \"fxFlexOffset.md\", \"\"], [\"\", \"fxFlexOffset.lg\", \"\"], [\"\", \"fxFlexOffset.xl\", \"\"], [\"\", \"fxFlexOffset.lt-sm\", \"\"], [\"\", \"fxFlexOffset.lt-md\", \"\"], [\"\", \"fxFlexOffset.lt-lg\", \"\"], [\"\", \"fxFlexOffset.lt-xl\", \"\"], [\"\", \"fxFlexOffset.gt-xs\", \"\"], [\"\", \"fxFlexOffset.gt-sm\", \"\"], [\"\", \"fxFlexOffset.gt-md\", \"\"], [\"\", \"fxFlexOffset.gt-lg\", \"\"]], inputs: { fxFlexOffset: \"fxFlexOffset\", \"fxFlexOffset.xs\": \"fxFlexOffset.xs\", \"fxFlexOffset.sm\": \"fxFlexOffset.sm\", \"fxFlexOffset.md\": \"fxFlexOffset.md\", \"fxFlexOffset.lg\": \"fxFlexOffset.lg\", \"fxFlexOffset.xl\": \"fxFlexOffset.xl\", \"fxFlexOffset.lt-sm\": \"fxFlexOffset.lt-sm\", \"fxFlexOffset.lt-md\": \"fxFlexOffset.lt-md\", \"fxFlexOffset.lt-lg\": \"fxFlexOffset.lt-lg\", \"fxFlexOffset.lt-xl\": \"fxFlexOffset.lt-xl\", \"fxFlexOffset.gt-xs\": \"fxFlexOffset.gt-xs\", \"fxFlexOffset.gt-sm\": \"fxFlexOffset.gt-sm\", \"fxFlexOffset.gt-md\": \"fxFlexOffset.gt-md\", \"fxFlexOffset.gt-lg\": \"fxFlexOffset.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultFlexOffsetDirective, [{\n type: Directive,\n args: [{ selector: selector$4, inputs: inputs$4 }]\n }], null, null); })();\n/** @type {?} */\nconst flexOffsetCacheRowRtl = new Map();\n/** @type {?} */\nconst flexOffsetCacheColumnRtl = new Map();\n/** @type {?} */\nconst flexOffsetCacheRowLtr = new Map();\n/** @type {?} */\nconst flexOffsetCacheColumnLtr = new Map();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: flex/flex-align/flex-align.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FlexAlignStyleBuilder extends StyleBuilder {\n /**\n * @param {?} input\n * @return {?}\n */\n buildStyles(input) {\n input = input || 'stretch';\n /** @type {?} */\n const styles = {};\n // Cross-axis\n switch (input) {\n case 'start':\n styles['align-self'] = 'flex-start';\n break;\n case 'end':\n styles['align-self'] = 'flex-end';\n break;\n default:\n styles['align-self'] = input;\n break;\n }\n return styles;\n }\n}\nFlexAlignStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵFlexAlignStyleBuilder_BaseFactory; return function FlexAlignStyleBuilder_Factory(t) { return (ɵFlexAlignStyleBuilder_BaseFactory || (ɵFlexAlignStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(FlexAlignStyleBuilder)))(t || FlexAlignStyleBuilder); }; }();\n/** @nocollapse */ FlexAlignStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function FlexAlignStyleBuilder_Factory() { return new FlexAlignStyleBuilder(); }, token: FlexAlignStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlexAlignStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n/** @type {?} */\nconst inputs$5 = [\n 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md',\n 'fxFlexAlign.lg', 'fxFlexAlign.xl', 'fxFlexAlign.lt-sm', 'fxFlexAlign.lt-md',\n 'fxFlexAlign.lt-lg', 'fxFlexAlign.lt-xl', 'fxFlexAlign.gt-xs', 'fxFlexAlign.gt-sm',\n 'fxFlexAlign.gt-md', 'fxFlexAlign.gt-lg'\n];\n/** @type {?} */\nconst selector$5 = `\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n`;\n/**\n * 'flex-align' flexbox styling directive\n * Allows element-specific overrides for cross-axis alignments in a layout container\n * @see https://css-tricks.com/almanac/properties/a/align-self/\n */\nclass FlexAlignDirective extends BaseDirective2 {\n /**\n * @param {?} elRef\n * @param {?} styleUtils\n * @param {?} styleBuilder\n * @param {?} marshal\n */\n constructor(elRef, styleUtils, styleBuilder, marshal) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.DIRECTIVE_KEY = 'flex-align';\n this.styleCache = flexAlignCache;\n this.init();\n }\n}\nFlexAlignDirective.ɵfac = function FlexAlignDirective_Factory(t) { return new (t || FlexAlignDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(FlexAlignStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nFlexAlignDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FlexAlignDirective, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nFlexAlignDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: StyleUtils },\n { type: FlexAlignStyleBuilder },\n { type: MediaMarshaller }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlexAlignDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.StyleUtils }, { type: FlexAlignStyleBuilder }, { type: ɵngcc1.MediaMarshaller }]; }, null); })();\n/** @type {?} */\nconst flexAlignCache = new Map();\nclass DefaultFlexAlignDirective extends FlexAlignDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$5;\n }\n}\nDefaultFlexAlignDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultFlexAlignDirective_BaseFactory; return function DefaultFlexAlignDirective_Factory(t) { return (ɵDefaultFlexAlignDirective_BaseFactory || (ɵDefaultFlexAlignDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultFlexAlignDirective)))(t || DefaultFlexAlignDirective); }; }();\nDefaultFlexAlignDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultFlexAlignDirective, selectors: [[\"\", \"fxFlexAlign\", \"\"], [\"\", \"fxFlexAlign.xs\", \"\"], [\"\", \"fxFlexAlign.sm\", \"\"], [\"\", \"fxFlexAlign.md\", \"\"], [\"\", \"fxFlexAlign.lg\", \"\"], [\"\", \"fxFlexAlign.xl\", \"\"], [\"\", \"fxFlexAlign.lt-sm\", \"\"], [\"\", \"fxFlexAlign.lt-md\", \"\"], [\"\", \"fxFlexAlign.lt-lg\", \"\"], [\"\", \"fxFlexAlign.lt-xl\", \"\"], [\"\", \"fxFlexAlign.gt-xs\", \"\"], [\"\", \"fxFlexAlign.gt-sm\", \"\"], [\"\", \"fxFlexAlign.gt-md\", \"\"], [\"\", \"fxFlexAlign.gt-lg\", \"\"]], inputs: { fxFlexAlign: \"fxFlexAlign\", \"fxFlexAlign.xs\": \"fxFlexAlign.xs\", \"fxFlexAlign.sm\": \"fxFlexAlign.sm\", \"fxFlexAlign.md\": \"fxFlexAlign.md\", \"fxFlexAlign.lg\": \"fxFlexAlign.lg\", \"fxFlexAlign.xl\": \"fxFlexAlign.xl\", \"fxFlexAlign.lt-sm\": \"fxFlexAlign.lt-sm\", \"fxFlexAlign.lt-md\": \"fxFlexAlign.lt-md\", \"fxFlexAlign.lt-lg\": \"fxFlexAlign.lt-lg\", \"fxFlexAlign.lt-xl\": \"fxFlexAlign.lt-xl\", \"fxFlexAlign.gt-xs\": \"fxFlexAlign.gt-xs\", \"fxFlexAlign.gt-sm\": \"fxFlexAlign.gt-sm\", \"fxFlexAlign.gt-md\": \"fxFlexAlign.gt-md\", \"fxFlexAlign.gt-lg\": \"fxFlexAlign.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultFlexAlignDirective, [{\n type: Directive,\n args: [{ selector: selector$5, inputs: inputs$5 }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: flex/flex-fill/flex-fill.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst FLEX_FILL_CSS = {\n 'margin': 0,\n 'width': '100%',\n 'height': '100%',\n 'min-width': '100%',\n 'min-height': '100%'\n};\nclass FlexFillStyleBuilder extends StyleBuilder {\n /**\n * @param {?} _input\n * @return {?}\n */\n buildStyles(_input) {\n return FLEX_FILL_CSS;\n }\n}\nFlexFillStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵFlexFillStyleBuilder_BaseFactory; return function FlexFillStyleBuilder_Factory(t) { return (ɵFlexFillStyleBuilder_BaseFactory || (ɵFlexFillStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(FlexFillStyleBuilder)))(t || FlexFillStyleBuilder); }; }();\n/** @nocollapse */ FlexFillStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function FlexFillStyleBuilder_Factory() { return new FlexFillStyleBuilder(); }, token: FlexFillStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlexFillStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n/**\n * 'fxFill' flexbox styling directive\n * Maximizes width and height of element in a layout container\n *\n * NOTE: fxFill is NOT responsive API!!\n */\nclass FlexFillDirective extends BaseDirective2 {\n /**\n * @param {?} elRef\n * @param {?} styleUtils\n * @param {?} styleBuilder\n * @param {?} marshal\n */\n constructor(elRef, styleUtils, styleBuilder, marshal) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.styleCache = flexFillCache;\n this.addStyles('');\n }\n}\nFlexFillDirective.ɵfac = function FlexFillDirective_Factory(t) { return new (t || FlexFillDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(FlexFillStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nFlexFillDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FlexFillDirective, selectors: [[\"\", \"fxFill\", \"\"], [\"\", \"fxFlexFill\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nFlexFillDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: StyleUtils },\n { type: FlexFillStyleBuilder },\n { type: MediaMarshaller }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlexFillDirective, [{\n type: Directive,\n args: [{ selector: `[fxFill], [fxFlexFill]` }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.StyleUtils }, { type: FlexFillStyleBuilder }, { type: ɵngcc1.MediaMarshaller }]; }, null); })();\n/** @type {?} */\nconst flexFillCache = new Map();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: flex/layout-align/layout-align.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass LayoutAlignStyleBuilder extends StyleBuilder {\n /**\n * @param {?} align\n * @param {?} parent\n * @return {?}\n */\n buildStyles(align, parent) {\n /** @type {?} */\n const css = {};\n const [mainAxis, crossAxis] = align.split(' ');\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['justify-content'] = 'center';\n break;\n case 'space-around':\n css['justify-content'] = 'space-around';\n break;\n case 'space-between':\n css['justify-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['justify-content'] = 'space-evenly';\n break;\n case 'end':\n case 'flex-end':\n css['justify-content'] = 'flex-end';\n break;\n case 'start':\n case 'flex-start':\n default:\n css['justify-content'] = 'flex-start'; // default main axis\n break;\n }\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start';\n break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center';\n break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch';\n break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline';\n break;\n case 'stretch':\n default: // 'stretch'\n css['align-items'] = css['align-content'] = 'stretch'; // default cross axis\n break;\n }\n return (/** @type {?} */ (extendObject(css, {\n 'display': parent.inline ? 'inline-flex' : 'flex',\n 'flex-direction': parent.layout,\n 'box-sizing': 'border-box',\n 'max-width': crossAxis === 'stretch' ?\n !isFlowHorizontal(parent.layout) ? '100%' : null : null,\n 'max-height': crossAxis === 'stretch' ?\n isFlowHorizontal(parent.layout) ? '100%' : null : null,\n })));\n }\n}\nLayoutAlignStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵLayoutAlignStyleBuilder_BaseFactory; return function LayoutAlignStyleBuilder_Factory(t) { return (ɵLayoutAlignStyleBuilder_BaseFactory || (ɵLayoutAlignStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(LayoutAlignStyleBuilder)))(t || LayoutAlignStyleBuilder); }; }();\n/** @nocollapse */ LayoutAlignStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function LayoutAlignStyleBuilder_Factory() { return new LayoutAlignStyleBuilder(); }, token: LayoutAlignStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LayoutAlignStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n/** @type {?} */\nconst inputs$6 = [\n 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md',\n 'fxLayoutAlign.lg', 'fxLayoutAlign.xl', 'fxLayoutAlign.lt-sm', 'fxLayoutAlign.lt-md',\n 'fxLayoutAlign.lt-lg', 'fxLayoutAlign.lt-xl', 'fxLayoutAlign.gt-xs', 'fxLayoutAlign.gt-sm',\n 'fxLayoutAlign.gt-md', 'fxLayoutAlign.gt-lg'\n];\n/** @type {?} */\nconst selector$6 = `\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n`;\n/**\n * 'layout-align' flexbox styling directive\n * Defines positioning of child elements along main and cross axis in a layout container\n * Optional values: {main-axis} values or {main-axis cross-axis} value pairs\n *\n * @see https://css-tricks.com/almanac/properties/j/justify-content/\n * @see https://css-tricks.com/almanac/properties/a/align-items/\n * @see https://css-tricks.com/almanac/properties/a/align-content/\n */\nclass LayoutAlignDirective extends BaseDirective2 {\n // default inline value\n /**\n * @param {?} elRef\n * @param {?} styleUtils\n * @param {?} styleBuilder\n * @param {?} marshal\n */\n constructor(elRef, styleUtils, styleBuilder, marshal) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.DIRECTIVE_KEY = 'layout-align';\n this.layout = 'row'; // default flex-direction\n // default flex-direction\n this.inline = false; // default inline value\n this.init();\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n // *********************************************\n // Protected methods\n // *********************************************\n /**\n *\n * @protected\n * @param {?} value\n * @return {?}\n */\n updateWithValue(value) {\n /** @type {?} */\n const layout = this.layout || 'row';\n /** @type {?} */\n const inline = this.inline;\n if (layout === 'row' && inline) {\n this.styleCache = layoutAlignHorizontalInlineCache;\n }\n else if (layout === 'row' && !inline) {\n this.styleCache = layoutAlignHorizontalCache;\n }\n else if (layout === 'row-reverse' && inline) {\n this.styleCache = layoutAlignHorizontalRevInlineCache;\n }\n else if (layout === 'row-reverse' && !inline) {\n this.styleCache = layoutAlignHorizontalRevCache;\n }\n else if (layout === 'column' && inline) {\n this.styleCache = layoutAlignVerticalInlineCache;\n }\n else if (layout === 'column' && !inline) {\n this.styleCache = layoutAlignVerticalCache;\n }\n else if (layout === 'column-reverse' && inline) {\n this.styleCache = layoutAlignVerticalRevInlineCache;\n }\n else if (layout === 'column-reverse' && !inline) {\n this.styleCache = layoutAlignVerticalRevCache;\n }\n this.addStyles(value, { layout, inline });\n }\n /**\n * Cache the parent container 'flex-direction' and update the 'flex' styles\n * @protected\n * @param {?} matcher\n * @return {?}\n */\n onLayoutChange(matcher) {\n /** @type {?} */\n const layoutKeys = matcher.value.split(' ');\n this.layout = layoutKeys[0];\n this.inline = matcher.value.includes('inline');\n if (!LAYOUT_VALUES.find((/**\n * @param {?} x\n * @return {?}\n */\n x => x === this.layout))) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n}\nLayoutAlignDirective.ɵfac = function LayoutAlignDirective_Factory(t) { return new (t || LayoutAlignDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(LayoutAlignStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nLayoutAlignDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: LayoutAlignDirective, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nLayoutAlignDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: StyleUtils },\n { type: LayoutAlignStyleBuilder },\n { type: MediaMarshaller }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LayoutAlignDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.StyleUtils }, { type: LayoutAlignStyleBuilder }, { type: ɵngcc1.MediaMarshaller }]; }, null); })();\nclass DefaultLayoutAlignDirective extends LayoutAlignDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$6;\n }\n}\nDefaultLayoutAlignDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultLayoutAlignDirective_BaseFactory; return function DefaultLayoutAlignDirective_Factory(t) { return (ɵDefaultLayoutAlignDirective_BaseFactory || (ɵDefaultLayoutAlignDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultLayoutAlignDirective)))(t || DefaultLayoutAlignDirective); }; }();\nDefaultLayoutAlignDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultLayoutAlignDirective, selectors: [[\"\", \"fxLayoutAlign\", \"\"], [\"\", \"fxLayoutAlign.xs\", \"\"], [\"\", \"fxLayoutAlign.sm\", \"\"], [\"\", \"fxLayoutAlign.md\", \"\"], [\"\", \"fxLayoutAlign.lg\", \"\"], [\"\", \"fxLayoutAlign.xl\", \"\"], [\"\", \"fxLayoutAlign.lt-sm\", \"\"], [\"\", \"fxLayoutAlign.lt-md\", \"\"], [\"\", \"fxLayoutAlign.lt-lg\", \"\"], [\"\", \"fxLayoutAlign.lt-xl\", \"\"], [\"\", \"fxLayoutAlign.gt-xs\", \"\"], [\"\", \"fxLayoutAlign.gt-sm\", \"\"], [\"\", \"fxLayoutAlign.gt-md\", \"\"], [\"\", \"fxLayoutAlign.gt-lg\", \"\"]], inputs: { fxLayoutAlign: \"fxLayoutAlign\", \"fxLayoutAlign.xs\": \"fxLayoutAlign.xs\", \"fxLayoutAlign.sm\": \"fxLayoutAlign.sm\", \"fxLayoutAlign.md\": \"fxLayoutAlign.md\", \"fxLayoutAlign.lg\": \"fxLayoutAlign.lg\", \"fxLayoutAlign.xl\": \"fxLayoutAlign.xl\", \"fxLayoutAlign.lt-sm\": \"fxLayoutAlign.lt-sm\", \"fxLayoutAlign.lt-md\": \"fxLayoutAlign.lt-md\", \"fxLayoutAlign.lt-lg\": \"fxLayoutAlign.lt-lg\", \"fxLayoutAlign.lt-xl\": \"fxLayoutAlign.lt-xl\", \"fxLayoutAlign.gt-xs\": \"fxLayoutAlign.gt-xs\", \"fxLayoutAlign.gt-sm\": \"fxLayoutAlign.gt-sm\", \"fxLayoutAlign.gt-md\": \"fxLayoutAlign.gt-md\", \"fxLayoutAlign.gt-lg\": \"fxLayoutAlign.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultLayoutAlignDirective, [{\n type: Directive,\n args: [{ selector: selector$6, inputs: inputs$6 }]\n }], null, null); })();\n/** @type {?} */\nconst layoutAlignHorizontalCache = new Map();\n/** @type {?} */\nconst layoutAlignVerticalCache = new Map();\n/** @type {?} */\nconst layoutAlignHorizontalRevCache = new Map();\n/** @type {?} */\nconst layoutAlignVerticalRevCache = new Map();\n/** @type {?} */\nconst layoutAlignHorizontalInlineCache = new Map();\n/** @type {?} */\nconst layoutAlignVerticalInlineCache = new Map();\n/** @type {?} */\nconst layoutAlignHorizontalRevInlineCache = new Map();\n/** @type {?} */\nconst layoutAlignVerticalRevInlineCache = new Map();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: flex/module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst ALL_DIRECTIVES = [\n DefaultLayoutDirective,\n DefaultLayoutGapDirective,\n DefaultLayoutAlignDirective,\n DefaultFlexOrderDirective,\n DefaultFlexOffsetDirective,\n FlexFillDirective,\n DefaultFlexAlignDirective,\n DefaultFlexDirective,\n];\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\nclass FlexModule {\n}\nFlexModule.ɵfac = function FlexModule_Factory(t) { return new (t || FlexModule)(); };\nFlexModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: FlexModule });\nFlexModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CoreModule, BidiModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlexModule, [{\n type: NgModule,\n args: [{\n imports: [CoreModule, BidiModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FlexModule, { declarations: function () { return [DefaultLayoutDirective, DefaultLayoutGapDirective, DefaultLayoutAlignDirective, DefaultFlexOrderDirective, DefaultFlexOffsetDirective, FlexFillDirective, DefaultFlexAlignDirective, DefaultFlexDirective]; }, imports: function () { return [CoreModule, BidiModule]; }, exports: function () { return [DefaultLayoutDirective, DefaultLayoutGapDirective, DefaultLayoutAlignDirective, DefaultFlexOrderDirective, DefaultFlexOffsetDirective, FlexFillDirective, DefaultFlexAlignDirective, DefaultFlexDirective]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: flex/public-api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: flex/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { FlexModule, FlexStyleBuilder, FlexDirective, DefaultFlexDirective, FlexAlignStyleBuilder, FlexAlignDirective, DefaultFlexAlignDirective, FlexFillStyleBuilder, FlexFillDirective, FlexOffsetStyleBuilder, FlexOffsetDirective, DefaultFlexOffsetDirective, FlexOrderStyleBuilder, FlexOrderDirective, DefaultFlexOrderDirective, LayoutStyleBuilder, LayoutDirective, DefaultLayoutDirective, LayoutAlignStyleBuilder, LayoutAlignDirective, DefaultLayoutAlignDirective, LayoutGapStyleBuilder, LayoutGapDirective, DefaultLayoutGapDirective };\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Directive, ElementRef, Injectable, NgModule, Input, ɵɵdefineInjectable } from '@angular/core';\nimport { MediaMarshaller, BaseDirective2, StyleBuilder, StyleUtils, CoreModule } from '@angular/flex-layout/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/grid-align/grid-align.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/flex-layout/core';\nconst ROW_DEFAULT = 'stretch';\n/** @type {?} */\nconst COL_DEFAULT = 'stretch';\nclass GridAlignStyleBuilder extends StyleBuilder {\n /**\n * @param {?} input\n * @return {?}\n */\n buildStyles(input) {\n return buildCss(input || ROW_DEFAULT);\n }\n}\nGridAlignStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵGridAlignStyleBuilder_BaseFactory; return function GridAlignStyleBuilder_Factory(t) { return (ɵGridAlignStyleBuilder_BaseFactory || (ɵGridAlignStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GridAlignStyleBuilder)))(t || GridAlignStyleBuilder); }; }();\n/** @nocollapse */ GridAlignStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function GridAlignStyleBuilder_Factory() { return new GridAlignStyleBuilder(); }, token: GridAlignStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridAlignStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nclass GridAlignDirective extends BaseDirective2 {\n /**\n * @param {?} elementRef\n * @param {?} styleBuilder\n * @param {?} styler\n * @param {?} marshal\n */\n constructor(elementRef, styleBuilder, styler, marshal) {\n super(elementRef, styleBuilder, styler, marshal);\n this.DIRECTIVE_KEY = 'grid-align';\n this.styleCache = alignCache;\n this.init();\n }\n}\nGridAlignDirective.ɵfac = function GridAlignDirective_Factory(t) { return new (t || GridAlignDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(GridAlignStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nGridAlignDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GridAlignDirective, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nGridAlignDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: GridAlignStyleBuilder },\n { type: StyleUtils },\n { type: MediaMarshaller }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridAlignDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: GridAlignStyleBuilder }, { type: ɵngcc1.StyleUtils }, { type: ɵngcc1.MediaMarshaller }]; }, null); })();\n/** @type {?} */\nconst alignCache = new Map();\n/** @type {?} */\nconst inputs = [\n 'gdGridAlign',\n 'gdGridAlign.xs', 'gdGridAlign.sm', 'gdGridAlign.md', 'gdGridAlign.lg', 'gdGridAlign.xl',\n 'gdGridAlign.lt-sm', 'gdGridAlign.lt-md', 'gdGridAlign.lt-lg', 'gdGridAlign.lt-xl',\n 'gdGridAlign.gt-xs', 'gdGridAlign.gt-sm', 'gdGridAlign.gt-md', 'gdGridAlign.gt-lg'\n];\n/** @type {?} */\nconst selector = `\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n`;\n/**\n * 'align' CSS Grid styling directive for grid children\n * Defines positioning of child elements along row and column axis in a grid container\n * Optional values: {row-axis} values or {row-axis column-axis} value pairs\n *\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-justify-self\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-align-self\n */\nclass DefaultGridAlignDirective extends GridAlignDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs;\n }\n}\nDefaultGridAlignDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultGridAlignDirective_BaseFactory; return function DefaultGridAlignDirective_Factory(t) { return (ɵDefaultGridAlignDirective_BaseFactory || (ɵDefaultGridAlignDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultGridAlignDirective)))(t || DefaultGridAlignDirective); }; }();\nDefaultGridAlignDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultGridAlignDirective, selectors: [[\"\", \"gdGridAlign\", \"\"], [\"\", \"gdGridAlign.xs\", \"\"], [\"\", \"gdGridAlign.sm\", \"\"], [\"\", \"gdGridAlign.md\", \"\"], [\"\", \"gdGridAlign.lg\", \"\"], [\"\", \"gdGridAlign.xl\", \"\"], [\"\", \"gdGridAlign.lt-sm\", \"\"], [\"\", \"gdGridAlign.lt-md\", \"\"], [\"\", \"gdGridAlign.lt-lg\", \"\"], [\"\", \"gdGridAlign.lt-xl\", \"\"], [\"\", \"gdGridAlign.gt-xs\", \"\"], [\"\", \"gdGridAlign.gt-sm\", \"\"], [\"\", \"gdGridAlign.gt-md\", \"\"], [\"\", \"gdGridAlign.gt-lg\", \"\"]], inputs: { gdGridAlign: \"gdGridAlign\", \"gdGridAlign.xs\": \"gdGridAlign.xs\", \"gdGridAlign.sm\": \"gdGridAlign.sm\", \"gdGridAlign.md\": \"gdGridAlign.md\", \"gdGridAlign.lg\": \"gdGridAlign.lg\", \"gdGridAlign.xl\": \"gdGridAlign.xl\", \"gdGridAlign.lt-sm\": \"gdGridAlign.lt-sm\", \"gdGridAlign.lt-md\": \"gdGridAlign.lt-md\", \"gdGridAlign.lt-lg\": \"gdGridAlign.lt-lg\", \"gdGridAlign.lt-xl\": \"gdGridAlign.lt-xl\", \"gdGridAlign.gt-xs\": \"gdGridAlign.gt-xs\", \"gdGridAlign.gt-sm\": \"gdGridAlign.gt-sm\", \"gdGridAlign.gt-md\": \"gdGridAlign.gt-md\", \"gdGridAlign.gt-lg\": \"gdGridAlign.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultGridAlignDirective, [{\n type: Directive,\n args: [{ selector, inputs }]\n }], null, null); })();\n/**\n * @param {?=} align\n * @return {?}\n */\nfunction buildCss(align = '') {\n /** @type {?} */\n const css = {};\n const [rowAxis, columnAxis] = align.split(' ');\n // Row axis\n switch (rowAxis) {\n case 'end':\n css['justify-self'] = 'end';\n break;\n case 'center':\n css['justify-self'] = 'center';\n break;\n case 'stretch':\n css['justify-self'] = 'stretch';\n break;\n case 'start':\n css['justify-self'] = 'start';\n break;\n default:\n css['justify-self'] = ROW_DEFAULT; // default row axis\n break;\n }\n // Column axis\n switch (columnAxis) {\n case 'end':\n css['align-self'] = 'end';\n break;\n case 'center':\n css['align-self'] = 'center';\n break;\n case 'stretch':\n css['align-self'] = 'stretch';\n break;\n case 'start':\n css['align-self'] = 'start';\n break;\n default:\n css['align-self'] = COL_DEFAULT; // default column axis\n break;\n }\n return css;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/align-columns/align-columns.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DEFAULT_MAIN = 'start';\n/** @type {?} */\nconst DEFAULT_CROSS = 'stretch';\nclass GridAlignColumnsStyleBuilder extends StyleBuilder {\n /**\n * @param {?} input\n * @param {?} parent\n * @return {?}\n */\n buildStyles(input, parent) {\n return buildCss$1(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\nGridAlignColumnsStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵGridAlignColumnsStyleBuilder_BaseFactory; return function GridAlignColumnsStyleBuilder_Factory(t) { return (ɵGridAlignColumnsStyleBuilder_BaseFactory || (ɵGridAlignColumnsStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GridAlignColumnsStyleBuilder)))(t || GridAlignColumnsStyleBuilder); }; }();\n/** @nocollapse */ GridAlignColumnsStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function GridAlignColumnsStyleBuilder_Factory() { return new GridAlignColumnsStyleBuilder(); }, token: GridAlignColumnsStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridAlignColumnsStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nclass GridAlignColumnsDirective extends BaseDirective2 {\n /**\n * @param {?} elementRef\n * @param {?} styleBuilder\n * @param {?} styler\n * @param {?} marshal\n */\n constructor(elementRef, styleBuilder, styler, marshal) {\n super(elementRef, styleBuilder, styler, marshal);\n this.DIRECTIVE_KEY = 'grid-align-columns';\n this._inline = false;\n this.init();\n }\n /**\n * @return {?}\n */\n get inline() { return this._inline; }\n /**\n * @param {?} val\n * @return {?}\n */\n set inline(val) { this._inline = coerceBooleanProperty(val); }\n // *********************************************\n // Protected methods\n // *********************************************\n /**\n * @protected\n * @param {?} value\n * @return {?}\n */\n updateWithValue(value) {\n this.styleCache = this.inline ? alignColumnsInlineCache : alignColumnsCache;\n this.addStyles(value, { inline: this.inline });\n }\n}\nGridAlignColumnsDirective.ɵfac = function GridAlignColumnsDirective_Factory(t) { return new (t || GridAlignColumnsDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(GridAlignColumnsStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nGridAlignColumnsDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GridAlignColumnsDirective, inputs: { inline: [\"gdInline\", \"inline\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nGridAlignColumnsDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: GridAlignColumnsStyleBuilder },\n { type: StyleUtils },\n { type: MediaMarshaller }\n];\nGridAlignColumnsDirective.propDecorators = {\n inline: [{ type: Input, args: ['gdInline',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridAlignColumnsDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: GridAlignColumnsStyleBuilder }, { type: ɵngcc1.StyleUtils }, { type: ɵngcc1.MediaMarshaller }]; }, { inline: [{\n type: Input,\n args: ['gdInline']\n }] }); })();\n/** @type {?} */\nconst alignColumnsCache = new Map();\n/** @type {?} */\nconst alignColumnsInlineCache = new Map();\n/** @type {?} */\nconst inputs$1 = [\n 'gdAlignColumns',\n 'gdAlignColumns.xs', 'gdAlignColumns.sm', 'gdAlignColumns.md',\n 'gdAlignColumns.lg', 'gdAlignColumns.xl', 'gdAlignColumns.lt-sm',\n 'gdAlignColumns.lt-md', 'gdAlignColumns.lt-lg', 'gdAlignColumns.lt-xl',\n 'gdAlignColumns.gt-xs', 'gdAlignColumns.gt-sm', 'gdAlignColumns.gt-md',\n 'gdAlignColumns.gt-lg'\n];\n/** @type {?} */\nconst selector$1 = `\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n`;\n/**\n * 'column alignment' CSS Grid styling directive\n * Configures the alignment in the column direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-19\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-21\n */\nclass DefaultGridAlignColumnsDirective extends GridAlignColumnsDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$1;\n }\n}\nDefaultGridAlignColumnsDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultGridAlignColumnsDirective_BaseFactory; return function DefaultGridAlignColumnsDirective_Factory(t) { return (ɵDefaultGridAlignColumnsDirective_BaseFactory || (ɵDefaultGridAlignColumnsDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultGridAlignColumnsDirective)))(t || DefaultGridAlignColumnsDirective); }; }();\nDefaultGridAlignColumnsDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultGridAlignColumnsDirective, selectors: [[\"\", \"gdAlignColumns\", \"\"], [\"\", \"gdAlignColumns.xs\", \"\"], [\"\", \"gdAlignColumns.sm\", \"\"], [\"\", \"gdAlignColumns.md\", \"\"], [\"\", \"gdAlignColumns.lg\", \"\"], [\"\", \"gdAlignColumns.xl\", \"\"], [\"\", \"gdAlignColumns.lt-sm\", \"\"], [\"\", \"gdAlignColumns.lt-md\", \"\"], [\"\", \"gdAlignColumns.lt-lg\", \"\"], [\"\", \"gdAlignColumns.lt-xl\", \"\"], [\"\", \"gdAlignColumns.gt-xs\", \"\"], [\"\", \"gdAlignColumns.gt-sm\", \"\"], [\"\", \"gdAlignColumns.gt-md\", \"\"], [\"\", \"gdAlignColumns.gt-lg\", \"\"]], inputs: { gdAlignColumns: \"gdAlignColumns\", \"gdAlignColumns.xs\": \"gdAlignColumns.xs\", \"gdAlignColumns.sm\": \"gdAlignColumns.sm\", \"gdAlignColumns.md\": \"gdAlignColumns.md\", \"gdAlignColumns.lg\": \"gdAlignColumns.lg\", \"gdAlignColumns.xl\": \"gdAlignColumns.xl\", \"gdAlignColumns.lt-sm\": \"gdAlignColumns.lt-sm\", \"gdAlignColumns.lt-md\": \"gdAlignColumns.lt-md\", \"gdAlignColumns.lt-lg\": \"gdAlignColumns.lt-lg\", \"gdAlignColumns.lt-xl\": \"gdAlignColumns.lt-xl\", \"gdAlignColumns.gt-xs\": \"gdAlignColumns.gt-xs\", \"gdAlignColumns.gt-sm\": \"gdAlignColumns.gt-sm\", \"gdAlignColumns.gt-md\": \"gdAlignColumns.gt-md\", \"gdAlignColumns.gt-lg\": \"gdAlignColumns.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultGridAlignColumnsDirective, [{\n type: Directive,\n args: [{ selector: selector$1, inputs: inputs$1 }]\n }], null, null); })();\n/**\n * @param {?} align\n * @param {?} inline\n * @return {?}\n */\nfunction buildCss$1(align, inline) {\n /** @type {?} */\n const css = {};\n const [mainAxis, crossAxis] = align.split(' ');\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['align-content'] = 'center';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['align-content'] = 'space-evenly';\n break;\n case 'end':\n css['align-content'] = 'end';\n break;\n case 'start':\n css['align-content'] = 'start';\n break;\n case 'stretch':\n css['align-content'] = 'stretch';\n break;\n default:\n css['align-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n css['align-items'] = 'start';\n break;\n case 'center':\n css['align-items'] = 'center';\n break;\n case 'end':\n css['align-items'] = 'end';\n break;\n case 'stretch':\n css['align-items'] = 'stretch';\n break;\n default: // 'stretch'\n css['align-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n css['display'] = inline ? 'inline-grid' : 'grid';\n return css;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/align-rows/align-rows.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DEFAULT_MAIN$1 = 'start';\n/** @type {?} */\nconst DEFAULT_CROSS$1 = 'stretch';\nclass GridAlignRowsStyleBuilder extends StyleBuilder {\n /**\n * @param {?} input\n * @param {?} parent\n * @return {?}\n */\n buildStyles(input, parent) {\n return buildCss$2(input || `${DEFAULT_MAIN$1} ${DEFAULT_CROSS$1}`, parent.inline);\n }\n}\nGridAlignRowsStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵGridAlignRowsStyleBuilder_BaseFactory; return function GridAlignRowsStyleBuilder_Factory(t) { return (ɵGridAlignRowsStyleBuilder_BaseFactory || (ɵGridAlignRowsStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GridAlignRowsStyleBuilder)))(t || GridAlignRowsStyleBuilder); }; }();\n/** @nocollapse */ GridAlignRowsStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function GridAlignRowsStyleBuilder_Factory() { return new GridAlignRowsStyleBuilder(); }, token: GridAlignRowsStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridAlignRowsStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nclass GridAlignRowsDirective extends BaseDirective2 {\n /**\n * @param {?} elementRef\n * @param {?} styleBuilder\n * @param {?} styler\n * @param {?} marshal\n */\n constructor(elementRef, styleBuilder, styler, marshal) {\n super(elementRef, styleBuilder, styler, marshal);\n this.DIRECTIVE_KEY = 'grid-align-rows';\n this._inline = false;\n this.init();\n }\n /**\n * @return {?}\n */\n get inline() { return this._inline; }\n /**\n * @param {?} val\n * @return {?}\n */\n set inline(val) { this._inline = coerceBooleanProperty(val); }\n // *********************************************\n // Protected methods\n // *********************************************\n /**\n * @protected\n * @param {?} value\n * @return {?}\n */\n updateWithValue(value) {\n this.styleCache = this.inline ? alignRowsInlineCache : alignRowsCache;\n this.addStyles(value, { inline: this.inline });\n }\n}\nGridAlignRowsDirective.ɵfac = function GridAlignRowsDirective_Factory(t) { return new (t || GridAlignRowsDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(GridAlignRowsStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nGridAlignRowsDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GridAlignRowsDirective, inputs: { inline: [\"gdInline\", \"inline\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nGridAlignRowsDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: GridAlignRowsStyleBuilder },\n { type: StyleUtils },\n { type: MediaMarshaller }\n];\nGridAlignRowsDirective.propDecorators = {\n inline: [{ type: Input, args: ['gdInline',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridAlignRowsDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: GridAlignRowsStyleBuilder }, { type: ɵngcc1.StyleUtils }, { type: ɵngcc1.MediaMarshaller }]; }, { inline: [{\n type: Input,\n args: ['gdInline']\n }] }); })();\n/** @type {?} */\nconst alignRowsCache = new Map();\n/** @type {?} */\nconst alignRowsInlineCache = new Map();\n/** @type {?} */\nconst inputs$2 = [\n 'gdAlignRows',\n 'gdAlignRows.xs', 'gdAlignRows.sm', 'gdAlignRows.md',\n 'gdAlignRows.lg', 'gdAlignRows.xl', 'gdAlignRows.lt-sm',\n 'gdAlignRows.lt-md', 'gdAlignRows.lt-lg', 'gdAlignRows.lt-xl',\n 'gdAlignRows.gt-xs', 'gdAlignRows.gt-sm', 'gdAlignRows.gt-md',\n 'gdAlignRows.gt-lg'\n];\n/** @type {?} */\nconst selector$2 = `\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n`;\n/**\n * 'row alignment' CSS Grid styling directive\n * Configures the alignment in the row direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-18\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-20\n */\nclass DefaultGridAlignRowsDirective extends GridAlignRowsDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$2;\n }\n}\nDefaultGridAlignRowsDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultGridAlignRowsDirective_BaseFactory; return function DefaultGridAlignRowsDirective_Factory(t) { return (ɵDefaultGridAlignRowsDirective_BaseFactory || (ɵDefaultGridAlignRowsDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultGridAlignRowsDirective)))(t || DefaultGridAlignRowsDirective); }; }();\nDefaultGridAlignRowsDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultGridAlignRowsDirective, selectors: [[\"\", \"gdAlignRows\", \"\"], [\"\", \"gdAlignRows.xs\", \"\"], [\"\", \"gdAlignRows.sm\", \"\"], [\"\", \"gdAlignRows.md\", \"\"], [\"\", \"gdAlignRows.lg\", \"\"], [\"\", \"gdAlignRows.xl\", \"\"], [\"\", \"gdAlignRows.lt-sm\", \"\"], [\"\", \"gdAlignRows.lt-md\", \"\"], [\"\", \"gdAlignRows.lt-lg\", \"\"], [\"\", \"gdAlignRows.lt-xl\", \"\"], [\"\", \"gdAlignRows.gt-xs\", \"\"], [\"\", \"gdAlignRows.gt-sm\", \"\"], [\"\", \"gdAlignRows.gt-md\", \"\"], [\"\", \"gdAlignRows.gt-lg\", \"\"]], inputs: { gdAlignRows: \"gdAlignRows\", \"gdAlignRows.xs\": \"gdAlignRows.xs\", \"gdAlignRows.sm\": \"gdAlignRows.sm\", \"gdAlignRows.md\": \"gdAlignRows.md\", \"gdAlignRows.lg\": \"gdAlignRows.lg\", \"gdAlignRows.xl\": \"gdAlignRows.xl\", \"gdAlignRows.lt-sm\": \"gdAlignRows.lt-sm\", \"gdAlignRows.lt-md\": \"gdAlignRows.lt-md\", \"gdAlignRows.lt-lg\": \"gdAlignRows.lt-lg\", \"gdAlignRows.lt-xl\": \"gdAlignRows.lt-xl\", \"gdAlignRows.gt-xs\": \"gdAlignRows.gt-xs\", \"gdAlignRows.gt-sm\": \"gdAlignRows.gt-sm\", \"gdAlignRows.gt-md\": \"gdAlignRows.gt-md\", \"gdAlignRows.gt-lg\": \"gdAlignRows.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultGridAlignRowsDirective, [{\n type: Directive,\n args: [{ selector: selector$2, inputs: inputs$2 }]\n }], null, null); })();\n/**\n * @param {?} align\n * @param {?} inline\n * @return {?}\n */\nfunction buildCss$2(align, inline) {\n /** @type {?} */\n const css = {};\n const [mainAxis, crossAxis] = align.split(' ');\n // Main axis\n switch (mainAxis) {\n case 'center':\n case 'space-around':\n case 'space-between':\n case 'space-evenly':\n case 'end':\n case 'start':\n case 'stretch':\n css['justify-content'] = mainAxis;\n break;\n default:\n css['justify-content'] = DEFAULT_MAIN$1; // default main axis\n break;\n }\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'center':\n case 'end':\n case 'stretch':\n css['justify-items'] = crossAxis;\n break;\n default: // 'stretch'\n css['justify-items'] = DEFAULT_CROSS$1; // default cross axis\n break;\n }\n css['display'] = inline ? 'inline-grid' : 'grid';\n return css;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/area/area.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DEFAULT_VALUE = 'auto';\nclass GridAreaStyleBuilder extends StyleBuilder {\n /**\n * @param {?} input\n * @return {?}\n */\n buildStyles(input) {\n return { 'grid-area': input || DEFAULT_VALUE };\n }\n}\nGridAreaStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵGridAreaStyleBuilder_BaseFactory; return function GridAreaStyleBuilder_Factory(t) { return (ɵGridAreaStyleBuilder_BaseFactory || (ɵGridAreaStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GridAreaStyleBuilder)))(t || GridAreaStyleBuilder); }; }();\n/** @nocollapse */ GridAreaStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function GridAreaStyleBuilder_Factory() { return new GridAreaStyleBuilder(); }, token: GridAreaStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridAreaStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nclass GridAreaDirective extends BaseDirective2 {\n /**\n * @param {?} elRef\n * @param {?} styleUtils\n * @param {?} styleBuilder\n * @param {?} marshal\n */\n constructor(elRef, styleUtils, styleBuilder, marshal) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.DIRECTIVE_KEY = 'grid-area';\n this.styleCache = gridAreaCache;\n this.init();\n }\n}\nGridAreaDirective.ɵfac = function GridAreaDirective_Factory(t) { return new (t || GridAreaDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(GridAreaStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nGridAreaDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GridAreaDirective, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nGridAreaDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: StyleUtils },\n { type: GridAreaStyleBuilder },\n { type: MediaMarshaller }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridAreaDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.StyleUtils }, { type: GridAreaStyleBuilder }, { type: ɵngcc1.MediaMarshaller }]; }, null); })();\n/** @type {?} */\nconst gridAreaCache = new Map();\n/** @type {?} */\nconst inputs$3 = [\n 'gdArea',\n 'gdArea.xs', 'gdArea.sm', 'gdArea.md', 'gdArea.lg', 'gdArea.xl',\n 'gdArea.lt-sm', 'gdArea.lt-md', 'gdArea.lt-lg', 'gdArea.lt-xl',\n 'gdArea.gt-xs', 'gdArea.gt-sm', 'gdArea.gt-md', 'gdArea.gt-lg'\n];\n/** @type {?} */\nconst selector$3 = `\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n`;\n/**\n * 'grid-area' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-27\n */\nclass DefaultGridAreaDirective extends GridAreaDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$3;\n }\n}\nDefaultGridAreaDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultGridAreaDirective_BaseFactory; return function DefaultGridAreaDirective_Factory(t) { return (ɵDefaultGridAreaDirective_BaseFactory || (ɵDefaultGridAreaDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultGridAreaDirective)))(t || DefaultGridAreaDirective); }; }();\nDefaultGridAreaDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultGridAreaDirective, selectors: [[\"\", \"gdArea\", \"\"], [\"\", \"gdArea.xs\", \"\"], [\"\", \"gdArea.sm\", \"\"], [\"\", \"gdArea.md\", \"\"], [\"\", \"gdArea.lg\", \"\"], [\"\", \"gdArea.xl\", \"\"], [\"\", \"gdArea.lt-sm\", \"\"], [\"\", \"gdArea.lt-md\", \"\"], [\"\", \"gdArea.lt-lg\", \"\"], [\"\", \"gdArea.lt-xl\", \"\"], [\"\", \"gdArea.gt-xs\", \"\"], [\"\", \"gdArea.gt-sm\", \"\"], [\"\", \"gdArea.gt-md\", \"\"], [\"\", \"gdArea.gt-lg\", \"\"]], inputs: { gdArea: \"gdArea\", \"gdArea.xs\": \"gdArea.xs\", \"gdArea.sm\": \"gdArea.sm\", \"gdArea.md\": \"gdArea.md\", \"gdArea.lg\": \"gdArea.lg\", \"gdArea.xl\": \"gdArea.xl\", \"gdArea.lt-sm\": \"gdArea.lt-sm\", \"gdArea.lt-md\": \"gdArea.lt-md\", \"gdArea.lt-lg\": \"gdArea.lt-lg\", \"gdArea.lt-xl\": \"gdArea.lt-xl\", \"gdArea.gt-xs\": \"gdArea.gt-xs\", \"gdArea.gt-sm\": \"gdArea.gt-sm\", \"gdArea.gt-md\": \"gdArea.gt-md\", \"gdArea.gt-lg\": \"gdArea.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultGridAreaDirective, [{\n type: Directive,\n args: [{ selector: selector$3, inputs: inputs$3 }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/areas/areas.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DEFAULT_VALUE$1 = 'none';\n/** @type {?} */\nconst DELIMETER = '|';\nclass GridAreasStyleBuiler extends StyleBuilder {\n /**\n * @param {?} input\n * @param {?} parent\n * @return {?}\n */\n buildStyles(input, parent) {\n /** @type {?} */\n const areas = (input || DEFAULT_VALUE$1).split(DELIMETER).map((/**\n * @param {?} v\n * @return {?}\n */\n v => `\"${v.trim()}\"`));\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-template-areas': areas.join(' ')\n };\n }\n}\nGridAreasStyleBuiler.ɵfac = /*@__PURE__*/ function () { let ɵGridAreasStyleBuiler_BaseFactory; return function GridAreasStyleBuiler_Factory(t) { return (ɵGridAreasStyleBuiler_BaseFactory || (ɵGridAreasStyleBuiler_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GridAreasStyleBuiler)))(t || GridAreasStyleBuiler); }; }();\n/** @nocollapse */ GridAreasStyleBuiler.ɵprov = ɵɵdefineInjectable({ factory: function GridAreasStyleBuiler_Factory() { return new GridAreasStyleBuiler(); }, token: GridAreasStyleBuiler, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridAreasStyleBuiler, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nclass GridAreasDirective extends BaseDirective2 {\n /**\n * @param {?} elRef\n * @param {?} styleUtils\n * @param {?} styleBuilder\n * @param {?} marshal\n */\n constructor(elRef, styleUtils, styleBuilder, marshal) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.DIRECTIVE_KEY = 'grid-areas';\n this._inline = false;\n this.init();\n }\n /**\n * @return {?}\n */\n get inline() { return this._inline; }\n /**\n * @param {?} val\n * @return {?}\n */\n set inline(val) { this._inline = coerceBooleanProperty(val); }\n // *********************************************\n // Protected methods\n // *********************************************\n /**\n * @protected\n * @param {?} value\n * @return {?}\n */\n updateWithValue(value) {\n this.styleCache = this.inline ? areasInlineCache : areasCache;\n this.addStyles(value, { inline: this.inline });\n }\n}\nGridAreasDirective.ɵfac = function GridAreasDirective_Factory(t) { return new (t || GridAreasDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(GridAreasStyleBuiler), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nGridAreasDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GridAreasDirective, inputs: { inline: [\"gdInline\", \"inline\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nGridAreasDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: StyleUtils },\n { type: GridAreasStyleBuiler },\n { type: MediaMarshaller }\n];\nGridAreasDirective.propDecorators = {\n inline: [{ type: Input, args: ['gdInline',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridAreasDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.StyleUtils }, { type: GridAreasStyleBuiler }, { type: ɵngcc1.MediaMarshaller }]; }, { inline: [{\n type: Input,\n args: ['gdInline']\n }] }); })();\n/** @type {?} */\nconst areasCache = new Map();\n/** @type {?} */\nconst areasInlineCache = new Map();\n/** @type {?} */\nconst inputs$4 = [\n 'gdAreas',\n 'gdAreas.xs', 'gdAreas.sm', 'gdAreas.md', 'gdAreas.lg', 'gdAreas.xl',\n 'gdAreas.lt-sm', 'gdAreas.lt-md', 'gdAreas.lt-lg', 'gdAreas.lt-xl',\n 'gdAreas.gt-xs', 'gdAreas.gt-sm', 'gdAreas.gt-md', 'gdAreas.gt-lg'\n];\n/** @type {?} */\nconst selector$4 = `\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n`;\n/**\n * 'grid-template-areas' CSS Grid styling directive\n * Configures the names of elements within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-14\n */\nclass DefaultGridAreasDirective extends GridAreasDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$4;\n }\n}\nDefaultGridAreasDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultGridAreasDirective_BaseFactory; return function DefaultGridAreasDirective_Factory(t) { return (ɵDefaultGridAreasDirective_BaseFactory || (ɵDefaultGridAreasDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultGridAreasDirective)))(t || DefaultGridAreasDirective); }; }();\nDefaultGridAreasDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultGridAreasDirective, selectors: [[\"\", \"gdAreas\", \"\"], [\"\", \"gdAreas.xs\", \"\"], [\"\", \"gdAreas.sm\", \"\"], [\"\", \"gdAreas.md\", \"\"], [\"\", \"gdAreas.lg\", \"\"], [\"\", \"gdAreas.xl\", \"\"], [\"\", \"gdAreas.lt-sm\", \"\"], [\"\", \"gdAreas.lt-md\", \"\"], [\"\", \"gdAreas.lt-lg\", \"\"], [\"\", \"gdAreas.lt-xl\", \"\"], [\"\", \"gdAreas.gt-xs\", \"\"], [\"\", \"gdAreas.gt-sm\", \"\"], [\"\", \"gdAreas.gt-md\", \"\"], [\"\", \"gdAreas.gt-lg\", \"\"]], inputs: { gdAreas: \"gdAreas\", \"gdAreas.xs\": \"gdAreas.xs\", \"gdAreas.sm\": \"gdAreas.sm\", \"gdAreas.md\": \"gdAreas.md\", \"gdAreas.lg\": \"gdAreas.lg\", \"gdAreas.xl\": \"gdAreas.xl\", \"gdAreas.lt-sm\": \"gdAreas.lt-sm\", \"gdAreas.lt-md\": \"gdAreas.lt-md\", \"gdAreas.lt-lg\": \"gdAreas.lt-lg\", \"gdAreas.lt-xl\": \"gdAreas.lt-xl\", \"gdAreas.gt-xs\": \"gdAreas.gt-xs\", \"gdAreas.gt-sm\": \"gdAreas.gt-sm\", \"gdAreas.gt-md\": \"gdAreas.gt-md\", \"gdAreas.gt-lg\": \"gdAreas.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultGridAreasDirective, [{\n type: Directive,\n args: [{ selector: selector$4, inputs: inputs$4 }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/auto/auto.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DEFAULT_VALUE$2 = 'initial';\nclass GridAutoStyleBuilder extends StyleBuilder {\n /**\n * @param {?} input\n * @param {?} parent\n * @return {?}\n */\n buildStyles(input, parent) {\n let [direction, dense] = (input || DEFAULT_VALUE$2).split(' ');\n if (direction !== 'column' && direction !== 'row' && direction !== 'dense') {\n direction = 'row';\n }\n dense = (dense === 'dense' && direction !== 'dense') ? ' dense' : '';\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-flow': direction + dense\n };\n }\n}\nGridAutoStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵGridAutoStyleBuilder_BaseFactory; return function GridAutoStyleBuilder_Factory(t) { return (ɵGridAutoStyleBuilder_BaseFactory || (ɵGridAutoStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GridAutoStyleBuilder)))(t || GridAutoStyleBuilder); }; }();\n/** @nocollapse */ GridAutoStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function GridAutoStyleBuilder_Factory() { return new GridAutoStyleBuilder(); }, token: GridAutoStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridAutoStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nclass GridAutoDirective extends BaseDirective2 {\n /**\n * @param {?} elementRef\n * @param {?} styleBuilder\n * @param {?} styler\n * @param {?} marshal\n */\n constructor(elementRef, styleBuilder, styler, marshal) {\n super(elementRef, styleBuilder, styler, marshal);\n this._inline = false;\n this.DIRECTIVE_KEY = 'grid-auto';\n this.init();\n }\n /**\n * @return {?}\n */\n get inline() { return this._inline; }\n /**\n * @param {?} val\n * @return {?}\n */\n set inline(val) { this._inline = coerceBooleanProperty(val); }\n // *********************************************\n // Protected methods\n // *********************************************\n /**\n * @protected\n * @param {?} value\n * @return {?}\n */\n updateWithValue(value) {\n this.styleCache = this.inline ? autoInlineCache : autoCache;\n this.addStyles(value, { inline: this.inline });\n }\n}\nGridAutoDirective.ɵfac = function GridAutoDirective_Factory(t) { return new (t || GridAutoDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(GridAutoStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nGridAutoDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GridAutoDirective, inputs: { inline: [\"gdInline\", \"inline\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nGridAutoDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: GridAutoStyleBuilder },\n { type: StyleUtils },\n { type: MediaMarshaller }\n];\nGridAutoDirective.propDecorators = {\n inline: [{ type: Input, args: ['gdInline',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridAutoDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: GridAutoStyleBuilder }, { type: ɵngcc1.StyleUtils }, { type: ɵngcc1.MediaMarshaller }]; }, { inline: [{\n type: Input,\n args: ['gdInline']\n }] }); })();\n/** @type {?} */\nconst autoCache = new Map();\n/** @type {?} */\nconst autoInlineCache = new Map();\n/** @type {?} */\nconst inputs$5 = [\n 'gdAuto',\n 'gdAuto.xs', 'gdAuto.sm', 'gdAuto.md', 'gdAuto.lg', 'gdAuto.xl',\n 'gdAuto.lt-sm', 'gdAuto.lt-md', 'gdAuto.lt-lg', 'gdAuto.lt-xl',\n 'gdAuto.gt-xs', 'gdAuto.gt-sm', 'gdAuto.gt-md', 'gdAuto.gt-lg'\n];\n/** @type {?} */\nconst selector$5 = `\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n`;\n/**\n * 'grid-auto-flow' CSS Grid styling directive\n * Configures the auto placement algorithm for the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-23\n */\nclass DefaultGridAutoDirective extends GridAutoDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$5;\n }\n}\nDefaultGridAutoDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultGridAutoDirective_BaseFactory; return function DefaultGridAutoDirective_Factory(t) { return (ɵDefaultGridAutoDirective_BaseFactory || (ɵDefaultGridAutoDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultGridAutoDirective)))(t || DefaultGridAutoDirective); }; }();\nDefaultGridAutoDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultGridAutoDirective, selectors: [[\"\", \"gdAuto\", \"\"], [\"\", \"gdAuto.xs\", \"\"], [\"\", \"gdAuto.sm\", \"\"], [\"\", \"gdAuto.md\", \"\"], [\"\", \"gdAuto.lg\", \"\"], [\"\", \"gdAuto.xl\", \"\"], [\"\", \"gdAuto.lt-sm\", \"\"], [\"\", \"gdAuto.lt-md\", \"\"], [\"\", \"gdAuto.lt-lg\", \"\"], [\"\", \"gdAuto.lt-xl\", \"\"], [\"\", \"gdAuto.gt-xs\", \"\"], [\"\", \"gdAuto.gt-sm\", \"\"], [\"\", \"gdAuto.gt-md\", \"\"], [\"\", \"gdAuto.gt-lg\", \"\"]], inputs: { gdAuto: \"gdAuto\", \"gdAuto.xs\": \"gdAuto.xs\", \"gdAuto.sm\": \"gdAuto.sm\", \"gdAuto.md\": \"gdAuto.md\", \"gdAuto.lg\": \"gdAuto.lg\", \"gdAuto.xl\": \"gdAuto.xl\", \"gdAuto.lt-sm\": \"gdAuto.lt-sm\", \"gdAuto.lt-md\": \"gdAuto.lt-md\", \"gdAuto.lt-lg\": \"gdAuto.lt-lg\", \"gdAuto.lt-xl\": \"gdAuto.lt-xl\", \"gdAuto.gt-xs\": \"gdAuto.gt-xs\", \"gdAuto.gt-sm\": \"gdAuto.gt-sm\", \"gdAuto.gt-md\": \"gdAuto.gt-md\", \"gdAuto.gt-lg\": \"gdAuto.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultGridAutoDirective, [{\n type: Directive,\n args: [{ selector: selector$5, inputs: inputs$5 }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/column/column.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DEFAULT_VALUE$3 = 'auto';\nclass GridColumnStyleBuilder extends StyleBuilder {\n /**\n * @param {?} input\n * @return {?}\n */\n buildStyles(input) {\n return { 'grid-column': input || DEFAULT_VALUE$3 };\n }\n}\nGridColumnStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵGridColumnStyleBuilder_BaseFactory; return function GridColumnStyleBuilder_Factory(t) { return (ɵGridColumnStyleBuilder_BaseFactory || (ɵGridColumnStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GridColumnStyleBuilder)))(t || GridColumnStyleBuilder); }; }();\n/** @nocollapse */ GridColumnStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function GridColumnStyleBuilder_Factory() { return new GridColumnStyleBuilder(); }, token: GridColumnStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridColumnStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nclass GridColumnDirective extends BaseDirective2 {\n /**\n * @param {?} elementRef\n * @param {?} styleBuilder\n * @param {?} styler\n * @param {?} marshal\n */\n constructor(elementRef, styleBuilder, styler, marshal) {\n super(elementRef, styleBuilder, styler, marshal);\n this.DIRECTIVE_KEY = 'grid-column';\n this.styleCache = columnCache;\n this.init();\n }\n}\nGridColumnDirective.ɵfac = function GridColumnDirective_Factory(t) { return new (t || GridColumnDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(GridColumnStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nGridColumnDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GridColumnDirective, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nGridColumnDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: GridColumnStyleBuilder },\n { type: StyleUtils },\n { type: MediaMarshaller }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridColumnDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: GridColumnStyleBuilder }, { type: ɵngcc1.StyleUtils }, { type: ɵngcc1.MediaMarshaller }]; }, null); })();\n/** @type {?} */\nconst columnCache = new Map();\n/** @type {?} */\nconst inputs$6 = [\n 'gdColumn',\n 'gdColumn.xs', 'gdColumn.sm', 'gdColumn.md', 'gdColumn.lg', 'gdColumn.xl',\n 'gdColumn.lt-sm', 'gdColumn.lt-md', 'gdColumn.lt-lg', 'gdColumn.lt-xl',\n 'gdColumn.gt-xs', 'gdColumn.gt-sm', 'gdColumn.gt-md', 'gdColumn.gt-lg'\n];\n/** @type {?} */\nconst selector$6 = `\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n`;\n/**\n * 'grid-column' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\nclass DefaultGridColumnDirective extends GridColumnDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$6;\n }\n}\nDefaultGridColumnDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultGridColumnDirective_BaseFactory; return function DefaultGridColumnDirective_Factory(t) { return (ɵDefaultGridColumnDirective_BaseFactory || (ɵDefaultGridColumnDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultGridColumnDirective)))(t || DefaultGridColumnDirective); }; }();\nDefaultGridColumnDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultGridColumnDirective, selectors: [[\"\", \"gdColumn\", \"\"], [\"\", \"gdColumn.xs\", \"\"], [\"\", \"gdColumn.sm\", \"\"], [\"\", \"gdColumn.md\", \"\"], [\"\", \"gdColumn.lg\", \"\"], [\"\", \"gdColumn.xl\", \"\"], [\"\", \"gdColumn.lt-sm\", \"\"], [\"\", \"gdColumn.lt-md\", \"\"], [\"\", \"gdColumn.lt-lg\", \"\"], [\"\", \"gdColumn.lt-xl\", \"\"], [\"\", \"gdColumn.gt-xs\", \"\"], [\"\", \"gdColumn.gt-sm\", \"\"], [\"\", \"gdColumn.gt-md\", \"\"], [\"\", \"gdColumn.gt-lg\", \"\"]], inputs: { gdColumn: \"gdColumn\", \"gdColumn.xs\": \"gdColumn.xs\", \"gdColumn.sm\": \"gdColumn.sm\", \"gdColumn.md\": \"gdColumn.md\", \"gdColumn.lg\": \"gdColumn.lg\", \"gdColumn.xl\": \"gdColumn.xl\", \"gdColumn.lt-sm\": \"gdColumn.lt-sm\", \"gdColumn.lt-md\": \"gdColumn.lt-md\", \"gdColumn.lt-lg\": \"gdColumn.lt-lg\", \"gdColumn.lt-xl\": \"gdColumn.lt-xl\", \"gdColumn.gt-xs\": \"gdColumn.gt-xs\", \"gdColumn.gt-sm\": \"gdColumn.gt-sm\", \"gdColumn.gt-md\": \"gdColumn.gt-md\", \"gdColumn.gt-lg\": \"gdColumn.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultGridColumnDirective, [{\n type: Directive,\n args: [{ selector: selector$6, inputs: inputs$6 }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/columns/columns.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DEFAULT_VALUE$4 = 'none';\n/** @type {?} */\nconst AUTO_SPECIFIER = '!';\nclass GridColumnsStyleBuilder extends StyleBuilder {\n /**\n * @param {?} input\n * @param {?} parent\n * @return {?}\n */\n buildStyles(input, parent) {\n input = input || DEFAULT_VALUE$4;\n /** @type {?} */\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n /** @type {?} */\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-columns': '',\n 'grid-template-columns': '',\n };\n /** @type {?} */\n const key = (auto ? 'grid-auto-columns' : 'grid-template-columns');\n css[key] = input;\n return css;\n }\n}\nGridColumnsStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵGridColumnsStyleBuilder_BaseFactory; return function GridColumnsStyleBuilder_Factory(t) { return (ɵGridColumnsStyleBuilder_BaseFactory || (ɵGridColumnsStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GridColumnsStyleBuilder)))(t || GridColumnsStyleBuilder); }; }();\n/** @nocollapse */ GridColumnsStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function GridColumnsStyleBuilder_Factory() { return new GridColumnsStyleBuilder(); }, token: GridColumnsStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridColumnsStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nclass GridColumnsDirective extends BaseDirective2 {\n /**\n * @param {?} elementRef\n * @param {?} styleBuilder\n * @param {?} styler\n * @param {?} marshal\n */\n constructor(elementRef, styleBuilder, styler, marshal) {\n super(elementRef, styleBuilder, styler, marshal);\n this.DIRECTIVE_KEY = 'grid-columns';\n this._inline = false;\n this.init();\n }\n /**\n * @return {?}\n */\n get inline() { return this._inline; }\n /**\n * @param {?} val\n * @return {?}\n */\n set inline(val) { this._inline = coerceBooleanProperty(val); }\n // *********************************************\n // Protected methods\n // *********************************************\n /**\n * @protected\n * @param {?} value\n * @return {?}\n */\n updateWithValue(value) {\n this.styleCache = this.inline ? columnsInlineCache : columnsCache;\n this.addStyles(value, { inline: this.inline });\n }\n}\nGridColumnsDirective.ɵfac = function GridColumnsDirective_Factory(t) { return new (t || GridColumnsDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(GridColumnsStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nGridColumnsDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GridColumnsDirective, inputs: { inline: [\"gdInline\", \"inline\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nGridColumnsDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: GridColumnsStyleBuilder },\n { type: StyleUtils },\n { type: MediaMarshaller }\n];\nGridColumnsDirective.propDecorators = {\n inline: [{ type: Input, args: ['gdInline',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridColumnsDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: GridColumnsStyleBuilder }, { type: ɵngcc1.StyleUtils }, { type: ɵngcc1.MediaMarshaller }]; }, { inline: [{\n type: Input,\n args: ['gdInline']\n }] }); })();\n/** @type {?} */\nconst columnsCache = new Map();\n/** @type {?} */\nconst columnsInlineCache = new Map();\n/** @type {?} */\nconst inputs$7 = [\n 'gdColumns',\n 'gdColumns.xs', 'gdColumns.sm', 'gdColumns.md', 'gdColumns.lg', 'gdColumns.xl',\n 'gdColumns.lt-sm', 'gdColumns.lt-md', 'gdColumns.lt-lg', 'gdColumns.lt-xl',\n 'gdColumns.gt-xs', 'gdColumns.gt-sm', 'gdColumns.gt-md', 'gdColumns.gt-lg'\n];\n/** @type {?} */\nconst selector$7 = `\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n`;\n/**\n * 'grid-template-columns' CSS Grid styling directive\n * Configures the sizing for the columns in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\nclass DefaultGridColumnsDirective extends GridColumnsDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$7;\n }\n}\nDefaultGridColumnsDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultGridColumnsDirective_BaseFactory; return function DefaultGridColumnsDirective_Factory(t) { return (ɵDefaultGridColumnsDirective_BaseFactory || (ɵDefaultGridColumnsDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultGridColumnsDirective)))(t || DefaultGridColumnsDirective); }; }();\nDefaultGridColumnsDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultGridColumnsDirective, selectors: [[\"\", \"gdColumns\", \"\"], [\"\", \"gdColumns.xs\", \"\"], [\"\", \"gdColumns.sm\", \"\"], [\"\", \"gdColumns.md\", \"\"], [\"\", \"gdColumns.lg\", \"\"], [\"\", \"gdColumns.xl\", \"\"], [\"\", \"gdColumns.lt-sm\", \"\"], [\"\", \"gdColumns.lt-md\", \"\"], [\"\", \"gdColumns.lt-lg\", \"\"], [\"\", \"gdColumns.lt-xl\", \"\"], [\"\", \"gdColumns.gt-xs\", \"\"], [\"\", \"gdColumns.gt-sm\", \"\"], [\"\", \"gdColumns.gt-md\", \"\"], [\"\", \"gdColumns.gt-lg\", \"\"]], inputs: { gdColumns: \"gdColumns\", \"gdColumns.xs\": \"gdColumns.xs\", \"gdColumns.sm\": \"gdColumns.sm\", \"gdColumns.md\": \"gdColumns.md\", \"gdColumns.lg\": \"gdColumns.lg\", \"gdColumns.xl\": \"gdColumns.xl\", \"gdColumns.lt-sm\": \"gdColumns.lt-sm\", \"gdColumns.lt-md\": \"gdColumns.lt-md\", \"gdColumns.lt-lg\": \"gdColumns.lt-lg\", \"gdColumns.lt-xl\": \"gdColumns.lt-xl\", \"gdColumns.gt-xs\": \"gdColumns.gt-xs\", \"gdColumns.gt-sm\": \"gdColumns.gt-sm\", \"gdColumns.gt-md\": \"gdColumns.gt-md\", \"gdColumns.gt-lg\": \"gdColumns.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultGridColumnsDirective, [{\n type: Directive,\n args: [{ selector: selector$7, inputs: inputs$7 }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/gap/gap.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DEFAULT_VALUE$5 = '0';\nclass GridGapStyleBuilder extends StyleBuilder {\n /**\n * @param {?} input\n * @param {?} parent\n * @return {?}\n */\n buildStyles(input, parent) {\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-gap': input || DEFAULT_VALUE$5\n };\n }\n}\nGridGapStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵGridGapStyleBuilder_BaseFactory; return function GridGapStyleBuilder_Factory(t) { return (ɵGridGapStyleBuilder_BaseFactory || (ɵGridGapStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GridGapStyleBuilder)))(t || GridGapStyleBuilder); }; }();\n/** @nocollapse */ GridGapStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function GridGapStyleBuilder_Factory() { return new GridGapStyleBuilder(); }, token: GridGapStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridGapStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nclass GridGapDirective extends BaseDirective2 {\n /**\n * @param {?} elRef\n * @param {?} styleUtils\n * @param {?} styleBuilder\n * @param {?} marshal\n */\n constructor(elRef, styleUtils, styleBuilder, marshal) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.DIRECTIVE_KEY = 'grid-gap';\n this._inline = false;\n this.init();\n }\n /**\n * @return {?}\n */\n get inline() { return this._inline; }\n /**\n * @param {?} val\n * @return {?}\n */\n set inline(val) { this._inline = coerceBooleanProperty(val); }\n // *********************************************\n // Protected methods\n // *********************************************\n /**\n * @protected\n * @param {?} value\n * @return {?}\n */\n updateWithValue(value) {\n this.styleCache = this.inline ? gapInlineCache : gapCache;\n this.addStyles(value, { inline: this.inline });\n }\n}\nGridGapDirective.ɵfac = function GridGapDirective_Factory(t) { return new (t || GridGapDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(GridGapStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nGridGapDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GridGapDirective, inputs: { inline: [\"gdInline\", \"inline\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nGridGapDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: StyleUtils },\n { type: GridGapStyleBuilder },\n { type: MediaMarshaller }\n];\nGridGapDirective.propDecorators = {\n inline: [{ type: Input, args: ['gdInline',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridGapDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.StyleUtils }, { type: GridGapStyleBuilder }, { type: ɵngcc1.MediaMarshaller }]; }, { inline: [{\n type: Input,\n args: ['gdInline']\n }] }); })();\n/** @type {?} */\nconst gapCache = new Map();\n/** @type {?} */\nconst gapInlineCache = new Map();\n/** @type {?} */\nconst inputs$8 = [\n 'gdGap',\n 'gdGap.xs', 'gdGap.sm', 'gdGap.md', 'gdGap.lg', 'gdGap.xl',\n 'gdGap.lt-sm', 'gdGap.lt-md', 'gdGap.lt-lg', 'gdGap.lt-xl',\n 'gdGap.gt-xs', 'gdGap.gt-sm', 'gdGap.gt-md', 'gdGap.gt-lg'\n];\n/** @type {?} */\nconst selector$8 = `\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n`;\n/**\n * 'grid-gap' CSS Grid styling directive\n * Configures the gap between items in the grid\n * Syntax: []\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-17\n */\nclass DefaultGridGapDirective extends GridGapDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$8;\n }\n}\nDefaultGridGapDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultGridGapDirective_BaseFactory; return function DefaultGridGapDirective_Factory(t) { return (ɵDefaultGridGapDirective_BaseFactory || (ɵDefaultGridGapDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultGridGapDirective)))(t || DefaultGridGapDirective); }; }();\nDefaultGridGapDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultGridGapDirective, selectors: [[\"\", \"gdGap\", \"\"], [\"\", \"gdGap.xs\", \"\"], [\"\", \"gdGap.sm\", \"\"], [\"\", \"gdGap.md\", \"\"], [\"\", \"gdGap.lg\", \"\"], [\"\", \"gdGap.xl\", \"\"], [\"\", \"gdGap.lt-sm\", \"\"], [\"\", \"gdGap.lt-md\", \"\"], [\"\", \"gdGap.lt-lg\", \"\"], [\"\", \"gdGap.lt-xl\", \"\"], [\"\", \"gdGap.gt-xs\", \"\"], [\"\", \"gdGap.gt-sm\", \"\"], [\"\", \"gdGap.gt-md\", \"\"], [\"\", \"gdGap.gt-lg\", \"\"]], inputs: { gdGap: \"gdGap\", \"gdGap.xs\": \"gdGap.xs\", \"gdGap.sm\": \"gdGap.sm\", \"gdGap.md\": \"gdGap.md\", \"gdGap.lg\": \"gdGap.lg\", \"gdGap.xl\": \"gdGap.xl\", \"gdGap.lt-sm\": \"gdGap.lt-sm\", \"gdGap.lt-md\": \"gdGap.lt-md\", \"gdGap.lt-lg\": \"gdGap.lt-lg\", \"gdGap.lt-xl\": \"gdGap.lt-xl\", \"gdGap.gt-xs\": \"gdGap.gt-xs\", \"gdGap.gt-sm\": \"gdGap.gt-sm\", \"gdGap.gt-md\": \"gdGap.gt-md\", \"gdGap.gt-lg\": \"gdGap.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultGridGapDirective, [{\n type: Directive,\n args: [{ selector: selector$8, inputs: inputs$8 }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/row/row.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DEFAULT_VALUE$6 = 'auto';\nclass GridRowStyleBuilder extends StyleBuilder {\n /**\n * @param {?} input\n * @return {?}\n */\n buildStyles(input) {\n return { 'grid-row': input || DEFAULT_VALUE$6 };\n }\n}\nGridRowStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵGridRowStyleBuilder_BaseFactory; return function GridRowStyleBuilder_Factory(t) { return (ɵGridRowStyleBuilder_BaseFactory || (ɵGridRowStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GridRowStyleBuilder)))(t || GridRowStyleBuilder); }; }();\n/** @nocollapse */ GridRowStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function GridRowStyleBuilder_Factory() { return new GridRowStyleBuilder(); }, token: GridRowStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridRowStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nclass GridRowDirective extends BaseDirective2 {\n /**\n * @param {?} elementRef\n * @param {?} styleBuilder\n * @param {?} styler\n * @param {?} marshal\n */\n constructor(elementRef, styleBuilder, styler, marshal) {\n super(elementRef, styleBuilder, styler, marshal);\n this.DIRECTIVE_KEY = 'grid-row';\n this.styleCache = rowCache;\n this.init();\n }\n}\nGridRowDirective.ɵfac = function GridRowDirective_Factory(t) { return new (t || GridRowDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(GridRowStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nGridRowDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GridRowDirective, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nGridRowDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: GridRowStyleBuilder },\n { type: StyleUtils },\n { type: MediaMarshaller }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridRowDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: GridRowStyleBuilder }, { type: ɵngcc1.StyleUtils }, { type: ɵngcc1.MediaMarshaller }]; }, null); })();\n/** @type {?} */\nconst rowCache = new Map();\n/** @type {?} */\nconst inputs$9 = [\n 'gdRow',\n 'gdRow.xs', 'gdRow.sm', 'gdRow.md', 'gdRow.lg', 'gdRow.xl',\n 'gdRow.lt-sm', 'gdRow.lt-md', 'gdRow.lt-lg', 'gdRow.lt-xl',\n 'gdRow.gt-xs', 'gdRow.gt-sm', 'gdRow.gt-md', 'gdRow.gt-lg'\n];\n/** @type {?} */\nconst selector$9 = `\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n`;\n/**\n * 'grid-row' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\nclass DefaultGridRowDirective extends GridRowDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$9;\n }\n}\nDefaultGridRowDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultGridRowDirective_BaseFactory; return function DefaultGridRowDirective_Factory(t) { return (ɵDefaultGridRowDirective_BaseFactory || (ɵDefaultGridRowDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultGridRowDirective)))(t || DefaultGridRowDirective); }; }();\nDefaultGridRowDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultGridRowDirective, selectors: [[\"\", \"gdRow\", \"\"], [\"\", \"gdRow.xs\", \"\"], [\"\", \"gdRow.sm\", \"\"], [\"\", \"gdRow.md\", \"\"], [\"\", \"gdRow.lg\", \"\"], [\"\", \"gdRow.xl\", \"\"], [\"\", \"gdRow.lt-sm\", \"\"], [\"\", \"gdRow.lt-md\", \"\"], [\"\", \"gdRow.lt-lg\", \"\"], [\"\", \"gdRow.lt-xl\", \"\"], [\"\", \"gdRow.gt-xs\", \"\"], [\"\", \"gdRow.gt-sm\", \"\"], [\"\", \"gdRow.gt-md\", \"\"], [\"\", \"gdRow.gt-lg\", \"\"]], inputs: { gdRow: \"gdRow\", \"gdRow.xs\": \"gdRow.xs\", \"gdRow.sm\": \"gdRow.sm\", \"gdRow.md\": \"gdRow.md\", \"gdRow.lg\": \"gdRow.lg\", \"gdRow.xl\": \"gdRow.xl\", \"gdRow.lt-sm\": \"gdRow.lt-sm\", \"gdRow.lt-md\": \"gdRow.lt-md\", \"gdRow.lt-lg\": \"gdRow.lt-lg\", \"gdRow.lt-xl\": \"gdRow.lt-xl\", \"gdRow.gt-xs\": \"gdRow.gt-xs\", \"gdRow.gt-sm\": \"gdRow.gt-sm\", \"gdRow.gt-md\": \"gdRow.gt-md\", \"gdRow.gt-lg\": \"gdRow.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultGridRowDirective, [{\n type: Directive,\n args: [{ selector: selector$9, inputs: inputs$9 }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/rows/rows.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DEFAULT_VALUE$7 = 'none';\n/** @type {?} */\nconst AUTO_SPECIFIER$1 = '!';\nclass GridRowsStyleBuilder extends StyleBuilder {\n /**\n * @param {?} input\n * @param {?} parent\n * @return {?}\n */\n buildStyles(input, parent) {\n input = input || DEFAULT_VALUE$7;\n /** @type {?} */\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER$1)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER$1));\n auto = true;\n }\n /** @type {?} */\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-rows': '',\n 'grid-template-rows': '',\n };\n /** @type {?} */\n const key = (auto ? 'grid-auto-rows' : 'grid-template-rows');\n css[key] = input;\n return css;\n }\n}\nGridRowsStyleBuilder.ɵfac = /*@__PURE__*/ function () { let ɵGridRowsStyleBuilder_BaseFactory; return function GridRowsStyleBuilder_Factory(t) { return (ɵGridRowsStyleBuilder_BaseFactory || (ɵGridRowsStyleBuilder_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GridRowsStyleBuilder)))(t || GridRowsStyleBuilder); }; }();\n/** @nocollapse */ GridRowsStyleBuilder.ɵprov = ɵɵdefineInjectable({ factory: function GridRowsStyleBuilder_Factory() { return new GridRowsStyleBuilder(); }, token: GridRowsStyleBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridRowsStyleBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\nclass GridRowsDirective extends BaseDirective2 {\n /**\n * @param {?} elementRef\n * @param {?} styleBuilder\n * @param {?} styler\n * @param {?} marshal\n */\n constructor(elementRef, styleBuilder, styler, marshal) {\n super(elementRef, styleBuilder, styler, marshal);\n this.DIRECTIVE_KEY = 'grid-rows';\n this._inline = false;\n this.init();\n }\n /**\n * @return {?}\n */\n get inline() { return this._inline; }\n /**\n * @param {?} val\n * @return {?}\n */\n set inline(val) { this._inline = coerceBooleanProperty(val); }\n // *********************************************\n // Protected methods\n // *********************************************\n /**\n * @protected\n * @param {?} value\n * @return {?}\n */\n updateWithValue(value) {\n this.styleCache = this.inline ? rowsInlineCache : rowsCache;\n this.addStyles(value, { inline: this.inline });\n }\n}\nGridRowsDirective.ɵfac = function GridRowsDirective_Factory(t) { return new (t || GridRowsDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(GridRowsStyleBuilder), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.StyleUtils), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.MediaMarshaller)); };\nGridRowsDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GridRowsDirective, inputs: { inline: [\"gdInline\", \"inline\"] }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nGridRowsDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: GridRowsStyleBuilder },\n { type: StyleUtils },\n { type: MediaMarshaller }\n];\nGridRowsDirective.propDecorators = {\n inline: [{ type: Input, args: ['gdInline',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridRowsDirective, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: GridRowsStyleBuilder }, { type: ɵngcc1.StyleUtils }, { type: ɵngcc1.MediaMarshaller }]; }, { inline: [{\n type: Input,\n args: ['gdInline']\n }] }); })();\n/** @type {?} */\nconst rowsCache = new Map();\n/** @type {?} */\nconst rowsInlineCache = new Map();\n/** @type {?} */\nconst inputs$10 = [\n 'gdRows',\n 'gdRows.xs', 'gdRows.sm', 'gdRows.md', 'gdRows.lg', 'gdRows.xl',\n 'gdRows.lt-sm', 'gdRows.lt-md', 'gdRows.lt-lg', 'gdRows.lt-xl',\n 'gdRows.gt-xs', 'gdRows.gt-sm', 'gdRows.gt-md', 'gdRows.gt-lg'\n];\n/** @type {?} */\nconst selector$10 = `\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n`;\n/**\n * 'grid-template-rows' CSS Grid styling directive\n * Configures the sizing for the rows in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\nclass DefaultGridRowsDirective extends GridRowsDirective {\n constructor() {\n super(...arguments);\n this.inputs = inputs$10;\n }\n}\nDefaultGridRowsDirective.ɵfac = /*@__PURE__*/ function () { let ɵDefaultGridRowsDirective_BaseFactory; return function DefaultGridRowsDirective_Factory(t) { return (ɵDefaultGridRowsDirective_BaseFactory || (ɵDefaultGridRowsDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(DefaultGridRowsDirective)))(t || DefaultGridRowsDirective); }; }();\nDefaultGridRowsDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DefaultGridRowsDirective, selectors: [[\"\", \"gdRows\", \"\"], [\"\", \"gdRows.xs\", \"\"], [\"\", \"gdRows.sm\", \"\"], [\"\", \"gdRows.md\", \"\"], [\"\", \"gdRows.lg\", \"\"], [\"\", \"gdRows.xl\", \"\"], [\"\", \"gdRows.lt-sm\", \"\"], [\"\", \"gdRows.lt-md\", \"\"], [\"\", \"gdRows.lt-lg\", \"\"], [\"\", \"gdRows.lt-xl\", \"\"], [\"\", \"gdRows.gt-xs\", \"\"], [\"\", \"gdRows.gt-sm\", \"\"], [\"\", \"gdRows.gt-md\", \"\"], [\"\", \"gdRows.gt-lg\", \"\"]], inputs: { gdRows: \"gdRows\", \"gdRows.xs\": \"gdRows.xs\", \"gdRows.sm\": \"gdRows.sm\", \"gdRows.md\": \"gdRows.md\", \"gdRows.lg\": \"gdRows.lg\", \"gdRows.xl\": \"gdRows.xl\", \"gdRows.lt-sm\": \"gdRows.lt-sm\", \"gdRows.lt-md\": \"gdRows.lt-md\", \"gdRows.lt-lg\": \"gdRows.lt-lg\", \"gdRows.lt-xl\": \"gdRows.lt-xl\", \"gdRows.gt-xs\": \"gdRows.gt-xs\", \"gdRows.gt-sm\": \"gdRows.gt-sm\", \"gdRows.gt-md\": \"gdRows.gt-md\", \"gdRows.gt-lg\": \"gdRows.gt-lg\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultGridRowsDirective, [{\n type: Directive,\n args: [{ selector: selector$10, inputs: inputs$10 }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst ALL_DIRECTIVES = [\n DefaultGridAlignDirective,\n DefaultGridAlignColumnsDirective,\n DefaultGridAlignRowsDirective,\n DefaultGridAreaDirective,\n DefaultGridAreasDirective,\n DefaultGridAutoDirective,\n DefaultGridColumnDirective,\n DefaultGridColumnsDirective,\n DefaultGridGapDirective,\n DefaultGridRowDirective,\n DefaultGridRowsDirective,\n];\n/**\n * *****************************************************************\n * Define module for the CSS Grid API\n * *****************************************************************\n */\nclass GridModule {\n}\nGridModule.ɵfac = function GridModule_Factory(t) { return new (t || GridModule)(); };\nGridModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: GridModule });\nGridModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CoreModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridModule, [{\n type: NgModule,\n args: [{\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(GridModule, { declarations: function () { return [DefaultGridAlignDirective, DefaultGridAlignColumnsDirective, DefaultGridAlignRowsDirective, DefaultGridAreaDirective, DefaultGridAreasDirective, DefaultGridAutoDirective, DefaultGridColumnDirective, DefaultGridColumnsDirective, DefaultGridGapDirective, DefaultGridRowDirective, DefaultGridRowsDirective]; }, imports: function () { return [CoreModule]; }, exports: function () { return [DefaultGridAlignDirective, DefaultGridAlignColumnsDirective, DefaultGridAlignRowsDirective, DefaultGridAreaDirective, DefaultGridAreasDirective, DefaultGridAutoDirective, DefaultGridColumnDirective, DefaultGridColumnsDirective, DefaultGridGapDirective, DefaultGridRowDirective, DefaultGridRowsDirective]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/public-api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: grid/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { GridModule, DefaultGridAlignColumnsDirective as ɵgrid_privatef, GridAlignColumnsDirective as ɵgrid_privatee, GridAlignColumnsStyleBuilder as ɵgrid_privated, DefaultGridAlignRowsDirective as ɵgrid_privatei, GridAlignRowsDirective as ɵgrid_privateh, GridAlignRowsStyleBuilder as ɵgrid_privateg, DefaultGridAreaDirective as ɵgrid_privatel, GridAreaDirective as ɵgrid_privatek, GridAreaStyleBuilder as ɵgrid_privatej, DefaultGridAreasDirective as ɵgrid_privateo, GridAreasDirective as ɵgrid_privaten, GridAreasStyleBuiler as ɵgrid_privatem, DefaultGridAutoDirective as ɵgrid_privater, GridAutoDirective as ɵgrid_privateq, GridAutoStyleBuilder as ɵgrid_privatep, DefaultGridColumnDirective as ɵgrid_privateu, GridColumnDirective as ɵgrid_privatet, GridColumnStyleBuilder as ɵgrid_privates, DefaultGridColumnsDirective as ɵgrid_privatex, GridColumnsDirective as ɵgrid_privatew, GridColumnsStyleBuilder as ɵgrid_privatev, DefaultGridGapDirective as ɵgrid_privateba, GridGapDirective as ɵgrid_privatez, GridGapStyleBuilder as ɵgrid_privatey, DefaultGridAlignDirective as ɵgrid_privatec, GridAlignDirective as ɵgrid_privateb, GridAlignStyleBuilder as ɵgrid_privatea, DefaultGridRowDirective as ɵgrid_privatebd, GridRowDirective as ɵgrid_privatebc, GridRowStyleBuilder as ɵgrid_privatebb, DefaultGridRowsDirective as ɵgrid_privatebg, GridRowsDirective as ɵgrid_privatebf, GridRowsStyleBuilder as ɵgrid_privatebe };\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Version, Inject, NgModule, PLATFORM_ID } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { SERVER_TOKEN, LAYOUT_CONFIG, DEFAULT_CONFIG, BREAKPOINT } from '@angular/flex-layout/core';\nimport * as ɵngcc0 from '@angular/core';\nexport { ɵMatchMedia, ɵMockMatchMedia, ɵMockMatchMediaProvider, CoreModule, removeStyles, BROWSER_PROVIDER, CLASS_NAME, MediaChange, StylesheetMap, DEFAULT_CONFIG, LAYOUT_CONFIG, SERVER_TOKEN, BREAKPOINT, mergeAlias, BaseDirective2, DEFAULT_BREAKPOINTS, ScreenTypes, ORIENTATION_BREAKPOINTS, BreakPointRegistry, BREAKPOINTS, MediaObserver, MediaTrigger, sortDescendingPriority, sortAscendingPriority, coerceArray, StyleUtils, StyleBuilder, validateBasis, MediaMarshaller, BREAKPOINT_PRINT, PrintHook } from '@angular/flex-layout/core';\nimport { ExtendedModule } from '@angular/flex-layout/extended';\nexport { ExtendedModule, ClassDirective, DefaultClassDirective, ImgSrcStyleBuilder, ImgSrcDirective, DefaultImgSrcDirective, ShowHideStyleBuilder, ShowHideDirective, DefaultShowHideDirective, StyleDirective, DefaultStyleDirective } from '@angular/flex-layout/extended';\nimport { FlexModule } from '@angular/flex-layout/flex';\nexport { FlexModule, FlexStyleBuilder, FlexDirective, DefaultFlexDirective, FlexAlignStyleBuilder, FlexAlignDirective, DefaultFlexAlignDirective, FlexFillStyleBuilder, FlexFillDirective, FlexOffsetStyleBuilder, FlexOffsetDirective, DefaultFlexOffsetDirective, FlexOrderStyleBuilder, FlexOrderDirective, DefaultFlexOrderDirective, LayoutStyleBuilder, LayoutDirective, DefaultLayoutDirective, LayoutAlignStyleBuilder, LayoutAlignDirective, DefaultLayoutAlignDirective, LayoutGapStyleBuilder, LayoutGapDirective, DefaultLayoutGapDirective } from '@angular/flex-layout/flex';\nimport { GridModule } from '@angular/flex-layout/grid';\nexport { ɵgrid_privatef, ɵgrid_privatee, ɵgrid_privated, ɵgrid_privatei, ɵgrid_privateh, ɵgrid_privateg, ɵgrid_privatel, ɵgrid_privatek, ɵgrid_privatej, ɵgrid_privateo, ɵgrid_privaten, ɵgrid_privatem, ɵgrid_privater, ɵgrid_privateq, ɵgrid_privatep, ɵgrid_privateu, ɵgrid_privatet, ɵgrid_privates, ɵgrid_privatex, ɵgrid_privatew, ɵgrid_privatev, ɵgrid_privateba, ɵgrid_privatez, ɵgrid_privatey, ɵgrid_privatec, ɵgrid_privateb, ɵgrid_privatea, ɵgrid_privatebd, ɵgrid_privatebc, ɵgrid_privatebb, ɵgrid_privatebg, ɵgrid_privatebf, ɵgrid_privatebe, GridModule } from '@angular/flex-layout/grid';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: version.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Current version of Angular Flex-Layout.\n * @type {?}\n */\nconst VERSION = new Version('12.0.0-beta.34');\n\n/**\n * @fileoverview added by tsickle\n * Generated from: module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * FlexLayoutModule -- the main import for all utilities in the Angular Layout library\n * * Will automatically provide Flex, Grid, and Extended modules for use in the application\n * * Can be configured using the static withConfig method, options viewable on the Wiki's\n * Configuration page\n */\nclass FlexLayoutModule {\n /**\n * @param {?} serverModuleLoaded\n * @param {?} platformId\n */\n constructor(serverModuleLoaded, platformId) {\n if (isPlatformServer(platformId) && !serverModuleLoaded) {\n console.warn('Warning: Flex Layout loaded on the server without FlexLayoutServerModule');\n }\n }\n /**\n * Initialize the FlexLayoutModule with a set of config options,\n * which sets the corresponding tokens accordingly\n * @param {?} configOptions\n * @param {?=} breakpoints\n * @return {?}\n */\n static withConfig(configOptions, \n // tslint:disable-next-line:max-line-length\n breakpoints = []) {\n return {\n ngModule: FlexLayoutModule,\n providers: configOptions.serverLoaded ?\n [\n { provide: LAYOUT_CONFIG, useValue: Object.assign(Object.assign({}, DEFAULT_CONFIG), configOptions) },\n { provide: BREAKPOINT, useValue: breakpoints, multi: true },\n { provide: SERVER_TOKEN, useValue: true },\n ] : [\n { provide: LAYOUT_CONFIG, useValue: Object.assign(Object.assign({}, DEFAULT_CONFIG), configOptions) },\n { provide: BREAKPOINT, useValue: breakpoints, multi: true },\n ]\n };\n }\n}\nFlexLayoutModule.ɵfac = function FlexLayoutModule_Factory(t) { return new (t || FlexLayoutModule)(ɵngcc0.ɵɵinject(SERVER_TOKEN), ɵngcc0.ɵɵinject(PLATFORM_ID)); };\nFlexLayoutModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: FlexLayoutModule });\nFlexLayoutModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[FlexModule, ExtendedModule, GridModule], FlexModule, ExtendedModule, GridModule] });\n/** @nocollapse */\nFlexLayoutModule.ctorParameters = () => [\n { type: Boolean, decorators: [{ type: Inject, args: [SERVER_TOKEN,] }] },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlexLayoutModule, [{\n type: NgModule,\n args: [{\n imports: [FlexModule, ExtendedModule, GridModule],\n exports: [FlexModule, ExtendedModule, GridModule]\n }]\n }], function () { return [{ type: Boolean, decorators: [{\n type: Inject,\n args: [SERVER_TOKEN]\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FlexLayoutModule, { imports: function () { return [FlexModule, ExtendedModule, GridModule]; }, exports: function () { return [FlexModule, ExtendedModule, GridModule]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: public-api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { VERSION, FlexLayoutModule };\n\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ElementRef, NgZone, Inject, PLATFORM_ID, Input, Output, Directive, ContentChildren, NgModule, Injectable } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject, Observable, Subject, combineLatest } from 'rxjs';\nimport { switchMap, take, map, takeUntil } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Manages event on a Google Maps object, ensuring that events are added only when necessary. */\nimport * as ɵngcc0 from '@angular/core';\n\nconst _c0 = [\"*\"];\nclass MapEventManager {\n constructor(_ngZone) {\n this._ngZone = _ngZone;\n /** Pending listeners that were added before the target was set. */\n this._pending = [];\n this._listeners = [];\n this._targetStream = new BehaviorSubject(undefined);\n }\n /** Clears all currently-registered event listeners. */\n _clearListeners() {\n for (const listener of this._listeners) {\n listener.remove();\n }\n this._listeners = [];\n }\n /** Gets an observable that adds an event listener to the map when a consumer subscribes to it. */\n getLazyEmitter(name) {\n return this._targetStream.pipe(switchMap(target => {\n const observable = new Observable(observer => {\n // If the target hasn't been initialized yet, cache the observer so it can be added later.\n if (!target) {\n this._pending.push({ observable, observer });\n return undefined;\n }\n const listener = target.addListener(name, (event) => {\n this._ngZone.run(() => observer.next(event));\n });\n this._listeners.push(listener);\n return () => listener.remove();\n });\n return observable;\n }));\n }\n /** Sets the current target that the manager should bind events to. */\n setTarget(target) {\n const currentTarget = this._targetStream.value;\n if (target === currentTarget) {\n return;\n }\n // Clear the listeners from the pre-existing target.\n if (currentTarget) {\n this._clearListeners();\n this._pending = [];\n }\n this._targetStream.next(target);\n // Add the listeners that were bound before the map was initialized.\n this._pending.forEach(subscriber => subscriber.observable.subscribe(subscriber.observer));\n this._pending = [];\n }\n /** Destroys the manager and clears the event listeners. */\n destroy() {\n this._clearListeners();\n this._pending = [];\n this._targetStream.complete();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** default options set to the Googleplex */\nconst DEFAULT_OPTIONS = {\n center: { lat: 37.421995, lng: -122.084092 },\n zoom: 17,\n // Note: the type conversion here isn't necessary for our CI, but it resolves a g3 failure.\n mapTypeId: 'roadmap'\n};\n/** Arbitrary default height for the map element */\nconst DEFAULT_HEIGHT = '500px';\n/** Arbitrary default width for the map element */\nconst DEFAULT_WIDTH = '500px';\n/**\n * Angular component that renders a Google Map via the Google Maps JavaScript\n * API.\n * @see https://developers.google.com/maps/documentation/javascript/reference/\n */\nclass GoogleMap {\n constructor(_elementRef, _ngZone, platformId) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(this._ngZone);\n /** Height of the map. Set this to `null` if you'd like to control the height through CSS. */\n this.height = DEFAULT_HEIGHT;\n /** Width of the map. Set this to `null` if you'd like to control the width through CSS. */\n this.width = DEFAULT_WIDTH;\n this._options = DEFAULT_OPTIONS;\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/events#auth-errors\n */\n this.authFailure = new EventEmitter();\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.bounds_changed\n */\n this.boundsChanged = this._eventManager.getLazyEmitter('bounds_changed');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.center_changed\n */\n this.centerChanged = this._eventManager.getLazyEmitter('center_changed');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.click\n */\n this.mapClick = this._eventManager\n .getLazyEmitter('click');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.dblclick\n */\n this.mapDblclick = this._eventManager.getLazyEmitter('dblclick');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.drag\n */\n this.mapDrag = this._eventManager.getLazyEmitter('drag');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.dragend\n */\n this.mapDragend = this._eventManager.getLazyEmitter('dragend');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.dragstart\n */\n this.mapDragstart = this._eventManager.getLazyEmitter('dragstart');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.heading_changed\n */\n this.headingChanged = this._eventManager.getLazyEmitter('heading_changed');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.idle\n */\n this.idle = this._eventManager.getLazyEmitter('idle');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.maptypeid_changed\n */\n this.maptypeidChanged = this._eventManager.getLazyEmitter('maptypeid_changed');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mousemove\n */\n this.mapMousemove = this._eventManager.getLazyEmitter('mousemove');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mouseout\n */\n this.mapMouseout = this._eventManager.getLazyEmitter('mouseout');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mouseover\n */\n this.mapMouseover = this._eventManager.getLazyEmitter('mouseover');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/map#Map.projection_changed\n */\n this.projectionChanged = this._eventManager.getLazyEmitter('projection_changed');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.rightclick\n */\n this.mapRightclick = this._eventManager.getLazyEmitter('rightclick');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.tilesloaded\n */\n this.tilesloaded = this._eventManager.getLazyEmitter('tilesloaded');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.tilt_changed\n */\n this.tiltChanged = this._eventManager.getLazyEmitter('tilt_changed');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.zoom_changed\n */\n this.zoomChanged = this._eventManager.getLazyEmitter('zoom_changed');\n this._isBrowser = isPlatformBrowser(platformId);\n if (this._isBrowser) {\n const googleMapsWindow = window;\n if (!googleMapsWindow.google && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Namespace google not found, cannot construct embedded google ' +\n 'map. Please install the Google Maps JavaScript API: ' +\n 'https://developers.google.com/maps/documentation/javascript/' +\n 'tutorial#Loading_the_Maps_API');\n }\n this._existingAuthFailureCallback = googleMapsWindow.gm_authFailure;\n googleMapsWindow.gm_authFailure = () => {\n if (this._existingAuthFailureCallback) {\n this._existingAuthFailureCallback();\n }\n this.authFailure.emit();\n };\n }\n }\n set center(center) {\n this._center = center;\n }\n set zoom(zoom) {\n this._zoom = zoom;\n }\n set options(options) {\n this._options = options || DEFAULT_OPTIONS;\n }\n ngOnChanges(changes) {\n if (changes['height'] || changes['width']) {\n this._setSize();\n }\n const googleMap = this.googleMap;\n if (googleMap) {\n if (changes['options']) {\n googleMap.setOptions(this._combineOptions());\n }\n if (changes['center'] && this._center) {\n googleMap.setCenter(this._center);\n }\n // Note that the zoom can be zero.\n if (changes['zoom'] && this._zoom != null) {\n googleMap.setZoom(this._zoom);\n }\n if (changes['mapTypeId'] && this.mapTypeId) {\n googleMap.setMapTypeId(this.mapTypeId);\n }\n }\n }\n ngOnInit() {\n // It should be a noop during server-side rendering.\n if (this._isBrowser) {\n this._mapEl = this._elementRef.nativeElement.querySelector('.map-container');\n this._setSize();\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.googleMap = new google.maps.Map(this._mapEl, this._combineOptions());\n });\n this._eventManager.setTarget(this.googleMap);\n }\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n if (this._isBrowser) {\n const googleMapsWindow = window;\n googleMapsWindow.gm_authFailure = this._existingAuthFailureCallback;\n }\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.fitBounds\n */\n fitBounds(bounds, padding) {\n this._assertInitialized();\n this.googleMap.fitBounds(bounds, padding);\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.panBy\n */\n panBy(x, y) {\n this._assertInitialized();\n this.googleMap.panBy(x, y);\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.panTo\n */\n panTo(latLng) {\n this._assertInitialized();\n this.googleMap.panTo(latLng);\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.panToBounds\n */\n panToBounds(latLngBounds, padding) {\n this._assertInitialized();\n this.googleMap.panToBounds(latLngBounds, padding);\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getBounds\n */\n getBounds() {\n this._assertInitialized();\n return this.googleMap.getBounds() || null;\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getCenter\n */\n getCenter() {\n this._assertInitialized();\n return this.googleMap.getCenter();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getClickableIcons\n */\n getClickableIcons() {\n this._assertInitialized();\n return this.googleMap.getClickableIcons();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getHeading\n */\n getHeading() {\n this._assertInitialized();\n return this.googleMap.getHeading();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getMapTypeId\n */\n getMapTypeId() {\n this._assertInitialized();\n return this.googleMap.getMapTypeId();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getProjection\n */\n getProjection() {\n this._assertInitialized();\n return this.googleMap.getProjection();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getStreetView\n */\n getStreetView() {\n this._assertInitialized();\n return this.googleMap.getStreetView();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getTilt\n */\n getTilt() {\n this._assertInitialized();\n return this.googleMap.getTilt();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getZoom\n */\n getZoom() {\n this._assertInitialized();\n return this.googleMap.getZoom();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.controls\n */\n get controls() {\n this._assertInitialized();\n return this.googleMap.controls;\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.data\n */\n get data() {\n this._assertInitialized();\n return this.googleMap.data;\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mapTypes\n */\n get mapTypes() {\n this._assertInitialized();\n return this.googleMap.mapTypes;\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.overlayMapTypes\n */\n get overlayMapTypes() {\n this._assertInitialized();\n return this.googleMap.overlayMapTypes;\n }\n _setSize() {\n if (this._mapEl) {\n const styles = this._mapEl.style;\n styles.height =\n this.height === null ? '' : (coerceCssPixelValue(this.height) || DEFAULT_HEIGHT);\n styles.width = this.width === null ? '' : (coerceCssPixelValue(this.width) || DEFAULT_WIDTH);\n }\n }\n /** Combines the center and zoom and the other map options into a single object */\n _combineOptions() {\n var _a, _b;\n const options = this._options || {};\n return Object.assign(Object.assign({}, options), { \n // It's important that we set **some** kind of `center` and `zoom`, otherwise\n // Google Maps will render a blank rectangle which looks broken.\n center: this._center || options.center || DEFAULT_OPTIONS.center, zoom: (_b = (_a = this._zoom) !== null && _a !== void 0 ? _a : options.zoom) !== null && _b !== void 0 ? _b : DEFAULT_OPTIONS.zoom, \n // Passing in an undefined `mapTypeId` seems to break tile loading\n // so make sure that we have some kind of default (see #22082).\n mapTypeId: this.mapTypeId || options.mapTypeId || DEFAULT_OPTIONS.mapTypeId });\n }\n /** Asserts that the map has been initialized. */\n _assertInitialized() {\n if (!this.googleMap && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n }\n}\nGoogleMap.ɵfac = function GoogleMap_Factory(t) { return new (t || GoogleMap)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nGoogleMap.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: GoogleMap, selectors: [[\"google-map\"]], inputs: { height: \"height\", width: \"width\", center: \"center\", zoom: \"zoom\", options: \"options\", mapTypeId: \"mapTypeId\" }, outputs: { authFailure: \"authFailure\", boundsChanged: \"boundsChanged\", centerChanged: \"centerChanged\", mapClick: \"mapClick\", mapDblclick: \"mapDblclick\", mapDrag: \"mapDrag\", mapDragend: \"mapDragend\", mapDragstart: \"mapDragstart\", headingChanged: \"headingChanged\", idle: \"idle\", maptypeidChanged: \"maptypeidChanged\", mapMousemove: \"mapMousemove\", mapMouseout: \"mapMouseout\", mapMouseover: \"mapMouseover\", projectionChanged: \"projectionChanged\", mapRightclick: \"mapRightclick\", tilesloaded: \"tilesloaded\", tiltChanged: \"tiltChanged\", zoomChanged: \"zoomChanged\" }, exportAs: [\"googleMap\"], features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 2, vars: 0, consts: [[1, \"map-container\"]], template: function GoogleMap_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n ɵngcc0.ɵɵprojection(1);\n } }, encapsulation: 2, changeDetection: 0 });\nGoogleMap.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\nGoogleMap.propDecorators = {\n height: [{ type: Input }],\n width: [{ type: Input }],\n mapTypeId: [{ type: Input }],\n center: [{ type: Input }],\n zoom: [{ type: Input }],\n options: [{ type: Input }],\n authFailure: [{ type: Output }],\n boundsChanged: [{ type: Output }],\n centerChanged: [{ type: Output }],\n mapClick: [{ type: Output }],\n mapDblclick: [{ type: Output }],\n mapDrag: [{ type: Output }],\n mapDragend: [{ type: Output }],\n mapDragstart: [{ type: Output }],\n headingChanged: [{ type: Output }],\n idle: [{ type: Output }],\n maptypeidChanged: [{ type: Output }],\n mapMousemove: [{ type: Output }],\n mapMouseout: [{ type: Output }],\n mapMouseover: [{ type: Output }],\n projectionChanged: [{ type: Output }],\n mapRightclick: [{ type: Output }],\n tilesloaded: [{ type: Output }],\n tiltChanged: [{ type: Output }],\n zoomChanged: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GoogleMap, [{\n type: Component,\n args: [{\n selector: 'google-map',\n exportAs: 'googleMap',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '
',\n encapsulation: ViewEncapsulation.None\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { height: [{\n type: Input\n }], width: [{\n type: Input\n }], authFailure: [{\n type: Output\n }], boundsChanged: [{\n type: Output\n }], centerChanged: [{\n type: Output\n }], mapClick: [{\n type: Output\n }], mapDblclick: [{\n type: Output\n }], mapDrag: [{\n type: Output\n }], mapDragend: [{\n type: Output\n }], mapDragstart: [{\n type: Output\n }], headingChanged: [{\n type: Output\n }], idle: [{\n type: Output\n }], maptypeidChanged: [{\n type: Output\n }], mapMousemove: [{\n type: Output\n }], mapMouseout: [{\n type: Output\n }], mapMouseover: [{\n type: Output\n }], projectionChanged: [{\n type: Output\n }], mapRightclick: [{\n type: Output\n }], tilesloaded: [{\n type: Output\n }], tiltChanged: [{\n type: Output\n }], zoomChanged: [{\n type: Output\n }], center: [{\n type: Input\n }], zoom: [{\n type: Input\n }], options: [{\n type: Input\n }], mapTypeId: [{\n type: Input\n }] }); })();\nconst cssUnitsPattern = /([A-Za-z%]+)$/;\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return cssUnitsPattern.test(value) ? value : `${value}px`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MapBaseLayer {\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n this._ngZone.runOutsideAngular(() => {\n this._initializeObject();\n });\n this._assertInitialized();\n this._setMap();\n }\n }\n ngOnDestroy() {\n this._unsetMap();\n }\n _assertInitialized() {\n if (!this._map.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n }\n _initializeObject() { }\n _setMap() { }\n _unsetMap() { }\n}\nMapBaseLayer.ɵfac = function MapBaseLayer_Factory(t) { return new (t || MapBaseLayer)(ɵngcc0.ɵɵdirectiveInject(GoogleMap), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nMapBaseLayer.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapBaseLayer, selectors: [[\"map-base-layer\"]], exportAs: [\"mapBaseLayer\"] });\nMapBaseLayer.ctorParameters = () => [\n { type: GoogleMap },\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapBaseLayer, [{\n type: Directive,\n args: [{\n selector: 'map-base-layer',\n exportAs: 'mapBaseLayer'\n }]\n }], function () { return [{ type: GoogleMap }, { type: ɵngcc0.NgZone }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular component that renders a Google Maps Bicycling Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#BicyclingLayer\n */\nclass MapBicyclingLayer extends MapBaseLayer {\n _initializeObject() {\n this.bicyclingLayer = new google.maps.BicyclingLayer();\n }\n _setMap() {\n this._assertLayerInitialized();\n this.bicyclingLayer.setMap(this._map.googleMap);\n }\n _unsetMap() {\n if (this.bicyclingLayer) {\n this.bicyclingLayer.setMap(null);\n }\n }\n _assertLayerInitialized() {\n if (!this.bicyclingLayer) {\n throw Error('Cannot interact with a Google Map Bicycling Layer before it has been initialized. ' +\n 'Please wait for the Transit Layer to load before trying to interact with it.');\n }\n }\n}\nMapBicyclingLayer.ɵfac = /*@__PURE__*/ function () { let ɵMapBicyclingLayer_BaseFactory; return function MapBicyclingLayer_Factory(t) { return (ɵMapBicyclingLayer_BaseFactory || (ɵMapBicyclingLayer_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(MapBicyclingLayer)))(t || MapBicyclingLayer); }; }();\nMapBicyclingLayer.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapBicyclingLayer, selectors: [[\"map-bicycling-layer\"]], exportAs: [\"mapBicyclingLayer\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapBicyclingLayer, [{\n type: Directive,\n args: [{\n selector: 'map-bicycling-layer',\n exportAs: 'mapBicyclingLayer'\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular component that renders a Google Maps Circle via the Google Maps JavaScript API.\n * @see developers.google.com/maps/documentation/javascript/reference/polygon#Circle\n */\nclass MapCircle {\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(this._ngZone);\n this._options = new BehaviorSubject({});\n this._center = new BehaviorSubject(undefined);\n this._radius = new BehaviorSubject(undefined);\n this._destroyed = new Subject();\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.center_changed\n */\n this.centerChanged = this._eventManager.getLazyEmitter('center_changed');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.click\n */\n this.circleClick = this._eventManager.getLazyEmitter('click');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.dblclick\n */\n this.circleDblclick = this._eventManager.getLazyEmitter('dblclick');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.drag\n */\n this.circleDrag = this._eventManager.getLazyEmitter('drag');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.dragend\n */\n this.circleDragend = this._eventManager.getLazyEmitter('dragend');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.dragstart\n */\n this.circleDragstart = this._eventManager.getLazyEmitter('dragstart');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mousedown\n */\n this.circleMousedown = this._eventManager.getLazyEmitter('mousedown');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mousemove\n */\n this.circleMousemove = this._eventManager.getLazyEmitter('mousemove');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mouseout\n */\n this.circleMouseout = this._eventManager.getLazyEmitter('mouseout');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mouseover\n */\n this.circleMouseover = this._eventManager.getLazyEmitter('mouseover');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mouseup\n */\n this.circleMouseup = this._eventManager.getLazyEmitter('mouseup');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.radius_changed\n */\n this.radiusChanged = this._eventManager.getLazyEmitter('radius_changed');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.rightclick\n */\n this.circleRightclick = this._eventManager.getLazyEmitter('rightclick');\n }\n set options(options) {\n this._options.next(options || {});\n }\n set center(center) {\n this._center.next(center);\n }\n set radius(radius) {\n this._radius.next(radius);\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions().pipe(take(1)).subscribe(options => {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.circle = new google.maps.Circle(options);\n });\n this._assertInitialized();\n this.circle.setMap(this._map.googleMap);\n this._eventManager.setTarget(this.circle);\n });\n this._watchForOptionsChanges();\n this._watchForCenterChanges();\n this._watchForRadiusChanges();\n }\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n if (this.circle) {\n this.circle.setMap(null);\n }\n }\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getBounds\n */\n getBounds() {\n this._assertInitialized();\n return this.circle.getBounds();\n }\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getCenter\n */\n getCenter() {\n this._assertInitialized();\n return this.circle.getCenter();\n }\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getDraggable\n */\n getDraggable() {\n this._assertInitialized();\n return this.circle.getDraggable();\n }\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getEditable\n */\n getEditable() {\n this._assertInitialized();\n return this.circle.getEditable();\n }\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getRadius\n */\n getRadius() {\n this._assertInitialized();\n return this.circle.getRadius();\n }\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getVisible\n */\n getVisible() {\n this._assertInitialized();\n return this.circle.getVisible();\n }\n _combineOptions() {\n return combineLatest([this._options, this._center, this._radius])\n .pipe(map(([options, center, radius]) => {\n const combinedOptions = Object.assign(Object.assign({}, options), { center: center || options.center, radius: radius !== undefined ? radius : options.radius });\n return combinedOptions;\n }));\n }\n _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.circle.setOptions(options);\n });\n }\n _watchForCenterChanges() {\n this._center.pipe(takeUntil(this._destroyed)).subscribe(center => {\n if (center) {\n this._assertInitialized();\n this.circle.setCenter(center);\n }\n });\n }\n _watchForRadiusChanges() {\n this._radius.pipe(takeUntil(this._destroyed)).subscribe(radius => {\n if (radius !== undefined) {\n this._assertInitialized();\n this.circle.setRadius(radius);\n }\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._map.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n if (!this.circle) {\n throw Error('Cannot interact with a Google Map Circle before it has been ' +\n 'initialized. Please wait for the Circle to load before trying to interact with it.');\n }\n }\n }\n}\nMapCircle.ɵfac = function MapCircle_Factory(t) { return new (t || MapCircle)(ɵngcc0.ɵɵdirectiveInject(GoogleMap), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nMapCircle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapCircle, selectors: [[\"map-circle\"]], inputs: { options: \"options\", center: \"center\", radius: \"radius\" }, outputs: { centerChanged: \"centerChanged\", circleClick: \"circleClick\", circleDblclick: \"circleDblclick\", circleDrag: \"circleDrag\", circleDragend: \"circleDragend\", circleDragstart: \"circleDragstart\", circleMousedown: \"circleMousedown\", circleMousemove: \"circleMousemove\", circleMouseout: \"circleMouseout\", circleMouseover: \"circleMouseover\", circleMouseup: \"circleMouseup\", radiusChanged: \"radiusChanged\", circleRightclick: \"circleRightclick\" }, exportAs: [\"mapCircle\"] });\nMapCircle.ctorParameters = () => [\n { type: GoogleMap },\n { type: NgZone }\n];\nMapCircle.propDecorators = {\n options: [{ type: Input }],\n center: [{ type: Input }],\n radius: [{ type: Input }],\n centerChanged: [{ type: Output }],\n circleClick: [{ type: Output }],\n circleDblclick: [{ type: Output }],\n circleDrag: [{ type: Output }],\n circleDragend: [{ type: Output }],\n circleDragstart: [{ type: Output }],\n circleMousedown: [{ type: Output }],\n circleMousemove: [{ type: Output }],\n circleMouseout: [{ type: Output }],\n circleMouseover: [{ type: Output }],\n circleMouseup: [{ type: Output }],\n radiusChanged: [{ type: Output }],\n circleRightclick: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapCircle, [{\n type: Directive,\n args: [{\n selector: 'map-circle',\n exportAs: 'mapCircle'\n }]\n }], function () { return [{ type: GoogleMap }, { type: ɵngcc0.NgZone }]; }, { centerChanged: [{\n type: Output\n }], circleClick: [{\n type: Output\n }], circleDblclick: [{\n type: Output\n }], circleDrag: [{\n type: Output\n }], circleDragend: [{\n type: Output\n }], circleDragstart: [{\n type: Output\n }], circleMousedown: [{\n type: Output\n }], circleMousemove: [{\n type: Output\n }], circleMouseout: [{\n type: Output\n }], circleMouseover: [{\n type: Output\n }], circleMouseup: [{\n type: Output\n }], radiusChanged: [{\n type: Output\n }], circleRightclick: [{\n type: Output\n }], options: [{\n type: Input\n }], center: [{\n type: Input\n }], radius: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular component that renders a Google Maps Directions Renderer via the Google Maps\n * JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/directions#DirectionsRenderer\n */\nclass MapDirectionsRenderer {\n constructor(_googleMap, _ngZone) {\n this._googleMap = _googleMap;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(this._ngZone);\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.directions_changed\n */\n this.directionsChanged = this._eventManager.getLazyEmitter('directions_changed');\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRendererOptions.directions\n */\n set directions(directions) {\n this._directions = directions;\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRendererOptions\n */\n set options(options) {\n this._options = options;\n }\n ngOnInit() {\n if (this._googleMap._isBrowser) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.directionsRenderer = new google.maps.DirectionsRenderer(this._combineOptions());\n });\n this._assertInitialized();\n this.directionsRenderer.setMap(this._googleMap.googleMap);\n this._eventManager.setTarget(this.directionsRenderer);\n }\n }\n ngOnChanges(changes) {\n if (this.directionsRenderer) {\n if (changes['options']) {\n this.directionsRenderer.setOptions(this._combineOptions());\n }\n if (changes['directions'] && this._directions !== undefined) {\n this.directionsRenderer.setDirections(this._directions);\n }\n }\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n if (this.directionsRenderer) {\n this.directionsRenderer.setMap(null);\n }\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.getDirections\n */\n getDirections() {\n this._assertInitialized();\n return this.directionsRenderer.getDirections();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.getPanel\n */\n getPanel() {\n this._assertInitialized();\n return this.directionsRenderer.getPanel();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.getRouteIndex\n */\n getRouteIndex() {\n this._assertInitialized();\n return this.directionsRenderer.getRouteIndex();\n }\n _combineOptions() {\n const options = this._options || {};\n return Object.assign(Object.assign({}, options), { directions: this._directions || options.directions, map: this._googleMap.googleMap });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._googleMap.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n if (!this.directionsRenderer) {\n throw Error('Cannot interact with a Google Map Directions Renderer before it has been ' +\n 'initialized. Please wait for the Directions Renderer to load before trying ' +\n 'to interact with it.');\n }\n }\n }\n}\nMapDirectionsRenderer.ɵfac = function MapDirectionsRenderer_Factory(t) { return new (t || MapDirectionsRenderer)(ɵngcc0.ɵɵdirectiveInject(GoogleMap), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nMapDirectionsRenderer.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapDirectionsRenderer, selectors: [[\"map-directions-renderer\"]], inputs: { directions: \"directions\", options: \"options\" }, outputs: { directionsChanged: \"directionsChanged\" }, exportAs: [\"mapDirectionsRenderer\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nMapDirectionsRenderer.ctorParameters = () => [\n { type: GoogleMap },\n { type: NgZone }\n];\nMapDirectionsRenderer.propDecorators = {\n directions: [{ type: Input }],\n options: [{ type: Input }],\n directionsChanged: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapDirectionsRenderer, [{\n type: Directive,\n args: [{\n selector: 'map-directions-renderer',\n exportAs: 'mapDirectionsRenderer'\n }]\n }], function () { return [{ type: GoogleMap }, { type: ɵngcc0.NgZone }]; }, { directionsChanged: [{\n type: Output\n }], directions: [{\n type: Input\n }], options: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular component that renders a Google Maps Ground Overlay via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/image-overlay#GroundOverlay\n */\nclass MapGroundOverlay {\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(this._ngZone);\n this._opacity = new BehaviorSubject(1);\n this._url = new BehaviorSubject('');\n this._bounds = new BehaviorSubject(undefined);\n this._destroyed = new Subject();\n /** Whether the overlay is clickable */\n this.clickable = false;\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay#GroundOverlay.click\n */\n this.mapClick = this._eventManager.getLazyEmitter('click');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.dblclick\n */\n this.mapDblclick = this._eventManager.getLazyEmitter('dblclick');\n }\n /** URL of the image that will be shown in the overlay. */\n set url(url) {\n this._url.next(url);\n }\n /** Bounds for the overlay. */\n get bounds() {\n return this._bounds.value;\n }\n set bounds(bounds) {\n this._bounds.next(bounds);\n }\n /** Opacity of the overlay. */\n set opacity(opacity) {\n this._opacity.next(opacity);\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n // The ground overlay setup is slightly different from the other Google Maps objects in that\n // we have to recreate the `GroundOverlay` object whenever the bounds change, because\n // Google Maps doesn't provide an API to update the bounds of an existing overlay.\n this._bounds.pipe(takeUntil(this._destroyed)).subscribe(bounds => {\n if (this.groundOverlay) {\n this.groundOverlay.setMap(null);\n this.groundOverlay = undefined;\n }\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n if (bounds) {\n this._ngZone.runOutsideAngular(() => {\n this.groundOverlay = new google.maps.GroundOverlay(this._url.getValue(), bounds, {\n clickable: this.clickable,\n opacity: this._opacity.value,\n });\n });\n this._assertInitialized();\n this.groundOverlay.setMap(this._map.googleMap);\n this._eventManager.setTarget(this.groundOverlay);\n }\n });\n this._watchForOpacityChanges();\n this._watchForUrlChanges();\n }\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n if (this.groundOverlay) {\n this.groundOverlay.setMap(null);\n }\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.getBounds\n */\n getBounds() {\n this._assertInitialized();\n return this.groundOverlay.getBounds();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.getOpacity\n */\n getOpacity() {\n this._assertInitialized();\n return this.groundOverlay.getOpacity();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.getUrl\n */\n getUrl() {\n this._assertInitialized();\n return this.groundOverlay.getUrl();\n }\n _watchForOpacityChanges() {\n this._opacity.pipe(takeUntil(this._destroyed)).subscribe(opacity => {\n if (opacity != null) {\n this._assertInitialized();\n this.groundOverlay.setOpacity(opacity);\n }\n });\n }\n _watchForUrlChanges() {\n this._url.pipe(takeUntil(this._destroyed)).subscribe(url => {\n this._assertInitialized();\n const overlay = this.groundOverlay;\n overlay.set('url', url);\n // Google Maps only redraws the overlay if we re-set the map.\n overlay.setMap(null);\n overlay.setMap(this._map.googleMap);\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._map.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n if (!this.groundOverlay) {\n throw Error('Cannot interact with a Google Map GroundOverlay before it has been initialized. ' +\n 'Please wait for the GroundOverlay to load before trying to interact with it.');\n }\n }\n }\n}\nMapGroundOverlay.ɵfac = function MapGroundOverlay_Factory(t) { return new (t || MapGroundOverlay)(ɵngcc0.ɵɵdirectiveInject(GoogleMap), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nMapGroundOverlay.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapGroundOverlay, selectors: [[\"map-ground-overlay\"]], inputs: { clickable: \"clickable\", url: \"url\", bounds: \"bounds\", opacity: \"opacity\" }, outputs: { mapClick: \"mapClick\", mapDblclick: \"mapDblclick\" }, exportAs: [\"mapGroundOverlay\"] });\nMapGroundOverlay.ctorParameters = () => [\n { type: GoogleMap },\n { type: NgZone }\n];\nMapGroundOverlay.propDecorators = {\n url: [{ type: Input }],\n bounds: [{ type: Input }],\n clickable: [{ type: Input }],\n opacity: [{ type: Input }],\n mapClick: [{ type: Output }],\n mapDblclick: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapGroundOverlay, [{\n type: Directive,\n args: [{\n selector: 'map-ground-overlay',\n exportAs: 'mapGroundOverlay'\n }]\n }], function () { return [{ type: GoogleMap }, { type: ɵngcc0.NgZone }]; }, { clickable: [{\n type: Input\n }], mapClick: [{\n type: Output\n }], mapDblclick: [{\n type: Output\n }], url: [{\n type: Input\n }], bounds: [{\n type: Input\n }], opacity: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular component that renders a Google Maps info window via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/info-window\n */\nclass MapInfoWindow {\n constructor(_googleMap, _elementRef, _ngZone) {\n this._googleMap = _googleMap;\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(this._ngZone);\n this._options = new BehaviorSubject({});\n this._position = new BehaviorSubject(undefined);\n this._destroy = new Subject();\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.closeclick\n */\n this.closeclick = this._eventManager.getLazyEmitter('closeclick');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.content_changed\n */\n this.contentChanged = this._eventManager.getLazyEmitter('content_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.domready\n */\n this.domready = this._eventManager.getLazyEmitter('domready');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.position_changed\n */\n this.positionChanged = this._eventManager.getLazyEmitter('position_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.zindex_changed\n */\n this.zindexChanged = this._eventManager.getLazyEmitter('zindex_changed');\n }\n set options(options) {\n this._options.next(options || {});\n }\n set position(position) {\n this._position.next(position);\n }\n ngOnInit() {\n if (this._googleMap._isBrowser) {\n const combinedOptionsChanges = this._combineOptions();\n combinedOptionsChanges.pipe(take(1)).subscribe(options => {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.infoWindow = new google.maps.InfoWindow(options);\n });\n this._eventManager.setTarget(this.infoWindow);\n });\n this._watchForOptionsChanges();\n this._watchForPositionChanges();\n }\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroy.next();\n this._destroy.complete();\n // If no info window has been created on the server, we do not try closing it.\n // On the server, an info window cannot be created and this would cause errors.\n if (this.infoWindow) {\n this.close();\n }\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.close\n */\n close() {\n this._assertInitialized();\n this.infoWindow.close();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.getContent\n */\n getContent() {\n this._assertInitialized();\n return this.infoWindow.getContent();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.getPosition\n */\n getPosition() {\n this._assertInitialized();\n return this.infoWindow.getPosition();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.getZIndex\n */\n getZIndex() {\n this._assertInitialized();\n return this.infoWindow.getZIndex();\n }\n /**\n * Opens the MapInfoWindow using the provided anchor. If the anchor is not set,\n * then the position property of the options input is used instead.\n */\n open(anchor) {\n this._assertInitialized();\n const anchorObject = anchor ? anchor.getAnchor() : undefined;\n // Prevent the info window from initializing when trying to reopen on the same anchor.\n // Note that when the window is opened for the first time, the anchor will always be\n // undefined. If that's the case, we have to allow it to open in order to handle the\n // case where the window doesn't have an anchor, but is placed at a particular position.\n if (this.infoWindow.get('anchor') !== anchorObject || !anchorObject) {\n this._elementRef.nativeElement.style.display = '';\n this.infoWindow.open(this._googleMap.googleMap, anchorObject);\n }\n }\n _combineOptions() {\n return combineLatest([this._options, this._position]).pipe(map(([options, position]) => {\n const combinedOptions = Object.assign(Object.assign({}, options), { position: position || options.position, content: this._elementRef.nativeElement });\n return combinedOptions;\n }));\n }\n _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroy)).subscribe(options => {\n this._assertInitialized();\n this.infoWindow.setOptions(options);\n });\n }\n _watchForPositionChanges() {\n this._position.pipe(takeUntil(this._destroy)).subscribe(position => {\n if (position) {\n this._assertInitialized();\n this.infoWindow.setPosition(position);\n }\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._googleMap.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n if (!this.infoWindow) {\n throw Error('Cannot interact with a Google Map Info Window before it has been ' +\n 'initialized. Please wait for the Info Window to load before trying to interact with ' +\n 'it.');\n }\n }\n }\n}\nMapInfoWindow.ɵfac = function MapInfoWindow_Factory(t) { return new (t || MapInfoWindow)(ɵngcc0.ɵɵdirectiveInject(GoogleMap), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nMapInfoWindow.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapInfoWindow, selectors: [[\"map-info-window\"]], hostAttrs: [2, \"display\", \"none\"], inputs: { options: \"options\", position: \"position\" }, outputs: { closeclick: \"closeclick\", contentChanged: \"contentChanged\", domready: \"domready\", positionChanged: \"positionChanged\", zindexChanged: \"zindexChanged\" }, exportAs: [\"mapInfoWindow\"] });\nMapInfoWindow.ctorParameters = () => [\n { type: GoogleMap },\n { type: ElementRef },\n { type: NgZone }\n];\nMapInfoWindow.propDecorators = {\n options: [{ type: Input }],\n position: [{ type: Input }],\n closeclick: [{ type: Output }],\n contentChanged: [{ type: Output }],\n domready: [{ type: Output }],\n positionChanged: [{ type: Output }],\n zindexChanged: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapInfoWindow, [{\n type: Directive,\n args: [{\n selector: 'map-info-window',\n exportAs: 'mapInfoWindow',\n host: { 'style': 'display: none' }\n }]\n }], function () { return [{ type: GoogleMap }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { closeclick: [{\n type: Output\n }], contentChanged: [{\n type: Output\n }], domready: [{\n type: Output\n }], positionChanged: [{\n type: Output\n }], zindexChanged: [{\n type: Output\n }], options: [{\n type: Input\n }], position: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular component that renders a Google Maps KML Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer\n */\nclass MapKmlLayer {\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(this._ngZone);\n this._options = new BehaviorSubject({});\n this._url = new BehaviorSubject('');\n this._destroyed = new Subject();\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.click\n */\n this.kmlClick = this._eventManager.getLazyEmitter('click');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/kml\n * #KmlLayer.defaultviewport_changed\n */\n this.defaultviewportChanged = this._eventManager.getLazyEmitter('defaultviewport_changed');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.status_changed\n */\n this.statusChanged = this._eventManager.getLazyEmitter('status_changed');\n }\n set options(options) {\n this._options.next(options || {});\n }\n set url(url) {\n this._url.next(url);\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions().pipe(take(1)).subscribe(options => {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => this.kmlLayer = new google.maps.KmlLayer(options));\n this._assertInitialized();\n this.kmlLayer.setMap(this._map.googleMap);\n this._eventManager.setTarget(this.kmlLayer);\n });\n this._watchForOptionsChanges();\n this._watchForUrlChanges();\n }\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n if (this.kmlLayer) {\n this.kmlLayer.setMap(null);\n }\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getDefaultViewport\n */\n getDefaultViewport() {\n this._assertInitialized();\n return this.kmlLayer.getDefaultViewport();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getMetadata\n */\n getMetadata() {\n this._assertInitialized();\n return this.kmlLayer.getMetadata();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getStatus\n */\n getStatus() {\n this._assertInitialized();\n return this.kmlLayer.getStatus();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getUrl\n */\n getUrl() {\n this._assertInitialized();\n return this.kmlLayer.getUrl();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getZIndex\n */\n getZIndex() {\n this._assertInitialized();\n return this.kmlLayer.getZIndex();\n }\n _combineOptions() {\n return combineLatest([this._options, this._url]).pipe(map(([options, url]) => {\n const combinedOptions = Object.assign(Object.assign({}, options), { url: url || options.url });\n return combinedOptions;\n }));\n }\n _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n if (this.kmlLayer) {\n this._assertInitialized();\n this.kmlLayer.setOptions(options);\n }\n });\n }\n _watchForUrlChanges() {\n this._url.pipe(takeUntil(this._destroyed)).subscribe(url => {\n if (url && this.kmlLayer) {\n this._assertInitialized();\n this.kmlLayer.setUrl(url);\n }\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._map.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n if (!this.kmlLayer) {\n throw Error('Cannot interact with a Google Map KmlLayer before it has been ' +\n 'initialized. Please wait for the KmlLayer to load before trying to interact with it.');\n }\n }\n }\n}\nMapKmlLayer.ɵfac = function MapKmlLayer_Factory(t) { return new (t || MapKmlLayer)(ɵngcc0.ɵɵdirectiveInject(GoogleMap), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nMapKmlLayer.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapKmlLayer, selectors: [[\"map-kml-layer\"]], inputs: { options: \"options\", url: \"url\" }, outputs: { kmlClick: \"kmlClick\", defaultviewportChanged: \"defaultviewportChanged\", statusChanged: \"statusChanged\" }, exportAs: [\"mapKmlLayer\"] });\nMapKmlLayer.ctorParameters = () => [\n { type: GoogleMap },\n { type: NgZone }\n];\nMapKmlLayer.propDecorators = {\n options: [{ type: Input }],\n url: [{ type: Input }],\n kmlClick: [{ type: Output }],\n defaultviewportChanged: [{ type: Output }],\n statusChanged: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapKmlLayer, [{\n type: Directive,\n args: [{\n selector: 'map-kml-layer',\n exportAs: 'mapKmlLayer'\n }]\n }], function () { return [{ type: GoogleMap }, { type: ɵngcc0.NgZone }]; }, { kmlClick: [{\n type: Output\n }], defaultviewportChanged: [{\n type: Output\n }], statusChanged: [{\n type: Output\n }], options: [{\n type: Input\n }], url: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Default options for the Google Maps marker component. Displays a marker\n * at the Googleplex.\n */\nconst DEFAULT_MARKER_OPTIONS = {\n position: { lat: 37.421995, lng: -122.084092 },\n};\n/**\n * Angular component that renders a Google Maps marker via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/marker\n */\nclass MapMarker {\n constructor(_googleMap, _ngZone) {\n this._googleMap = _googleMap;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(this._ngZone);\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.animation_changed\n */\n this.animationChanged = this._eventManager.getLazyEmitter('animation_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.click\n */\n this.mapClick = this._eventManager.getLazyEmitter('click');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.clickable_changed\n */\n this.clickableChanged = this._eventManager.getLazyEmitter('clickable_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.cursor_changed\n */\n this.cursorChanged = this._eventManager.getLazyEmitter('cursor_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.dblclick\n */\n this.mapDblclick = this._eventManager.getLazyEmitter('dblclick');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.drag\n */\n this.mapDrag = this._eventManager.getLazyEmitter('drag');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.dragend\n */\n this.mapDragend = this._eventManager.getLazyEmitter('dragend');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.draggable_changed\n */\n this.draggableChanged = this._eventManager.getLazyEmitter('draggable_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.dragstart\n */\n this.mapDragstart = this._eventManager.getLazyEmitter('dragstart');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.flat_changed\n */\n this.flatChanged = this._eventManager.getLazyEmitter('flat_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.icon_changed\n */\n this.iconChanged = this._eventManager.getLazyEmitter('icon_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mousedown\n */\n this.mapMousedown = this._eventManager.getLazyEmitter('mousedown');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mouseout\n */\n this.mapMouseout = this._eventManager.getLazyEmitter('mouseout');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mouseover\n */\n this.mapMouseover = this._eventManager.getLazyEmitter('mouseover');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mouseup\n */\n this.mapMouseup = this._eventManager.getLazyEmitter('mouseup');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.position_changed\n */\n this.positionChanged = this._eventManager.getLazyEmitter('position_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.rightclick\n */\n this.mapRightclick = this._eventManager.getLazyEmitter('rightclick');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.shape_changed\n */\n this.shapeChanged = this._eventManager.getLazyEmitter('shape_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.title_changed\n */\n this.titleChanged = this._eventManager.getLazyEmitter('title_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.visible_changed\n */\n this.visibleChanged = this._eventManager.getLazyEmitter('visible_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.zindex_changed\n */\n this.zindexChanged = this._eventManager.getLazyEmitter('zindex_changed');\n }\n /**\n * Title of the marker.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.title\n */\n set title(title) {\n this._title = title;\n }\n /**\n * Position of the marker. See:\n * developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.position\n */\n set position(position) {\n this._position = position;\n }\n /**\n * Label for the marker.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.label\n */\n set label(label) {\n this._label = label;\n }\n /**\n * Whether the marker is clickable. See:\n * developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.clickable\n */\n set clickable(clickable) {\n this._clickable = clickable;\n }\n /**\n * Options used to configure the marker.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions\n */\n set options(options) {\n this._options = options;\n }\n /**\n * Icon to be used for the marker.\n * See: https://developers.google.com/maps/documentation/javascript/reference/marker#Icon\n */\n set icon(icon) {\n this._icon = icon;\n }\n /**\n * Whether the marker is visible.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.visible\n */\n set visible(value) {\n this._visible = value;\n }\n ngOnInit() {\n if (this._googleMap._isBrowser) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.marker = new google.maps.Marker(this._combineOptions());\n });\n this._assertInitialized();\n this.marker.setMap(this._googleMap.googleMap);\n this._eventManager.setTarget(this.marker);\n }\n }\n ngOnChanges(changes) {\n const { marker, _title, _position, _label, _clickable, _icon, _visible } = this;\n if (marker) {\n if (changes['options']) {\n marker.setOptions(this._combineOptions());\n }\n if (changes['title'] && _title !== undefined) {\n marker.setTitle(_title);\n }\n if (changes['position'] && _position) {\n marker.setPosition(_position);\n }\n if (changes['label'] && _label !== undefined) {\n marker.setLabel(_label);\n }\n if (changes['clickable'] && _clickable !== undefined) {\n marker.setClickable(_clickable);\n }\n if (changes['icon'] && _icon) {\n marker.setIcon(_icon);\n }\n if (changes['visible'] && _visible !== undefined) {\n marker.setVisible(_visible);\n }\n }\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n if (this.marker) {\n this.marker.setMap(null);\n }\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getAnimation\n */\n getAnimation() {\n this._assertInitialized();\n return this.marker.getAnimation() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getClickable\n */\n getClickable() {\n this._assertInitialized();\n return this.marker.getClickable();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getCursor\n */\n getCursor() {\n this._assertInitialized();\n return this.marker.getCursor() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getDraggable\n */\n getDraggable() {\n this._assertInitialized();\n return !!this.marker.getDraggable();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getIcon\n */\n getIcon() {\n this._assertInitialized();\n return this.marker.getIcon() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getLabel\n */\n getLabel() {\n this._assertInitialized();\n return this.marker.getLabel() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getOpacity\n */\n getOpacity() {\n this._assertInitialized();\n return this.marker.getOpacity() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getPosition\n */\n getPosition() {\n this._assertInitialized();\n return this.marker.getPosition() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getShape\n */\n getShape() {\n this._assertInitialized();\n return this.marker.getShape() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getTitle\n */\n getTitle() {\n this._assertInitialized();\n return this.marker.getTitle() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getVisible\n */\n getVisible() {\n this._assertInitialized();\n return this.marker.getVisible();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getZIndex\n */\n getZIndex() {\n this._assertInitialized();\n return this.marker.getZIndex() || null;\n }\n /** Gets the anchor point that can be used to attach other Google Maps objects. */\n getAnchor() {\n this._assertInitialized();\n return this.marker;\n }\n /** Creates a combined options object using the passed-in options and the individual inputs. */\n _combineOptions() {\n var _a, _b;\n const options = this._options || DEFAULT_MARKER_OPTIONS;\n return Object.assign(Object.assign({}, options), { title: this._title || options.title, position: this._position || options.position, label: this._label || options.label, clickable: (_a = this._clickable) !== null && _a !== void 0 ? _a : options.clickable, map: this._googleMap.googleMap, icon: this._icon || options.icon, visible: (_b = this._visible) !== null && _b !== void 0 ? _b : options.visible });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._googleMap.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n if (!this.marker) {\n throw Error('Cannot interact with a Google Map Marker before it has been ' +\n 'initialized. Please wait for the Marker to load before trying to interact with it.');\n }\n }\n }\n}\nMapMarker.ɵfac = function MapMarker_Factory(t) { return new (t || MapMarker)(ɵngcc0.ɵɵdirectiveInject(GoogleMap), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nMapMarker.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapMarker, selectors: [[\"map-marker\"]], inputs: { title: \"title\", position: \"position\", label: \"label\", clickable: \"clickable\", options: \"options\", icon: \"icon\", visible: \"visible\" }, outputs: { animationChanged: \"animationChanged\", mapClick: \"mapClick\", clickableChanged: \"clickableChanged\", cursorChanged: \"cursorChanged\", mapDblclick: \"mapDblclick\", mapDrag: \"mapDrag\", mapDragend: \"mapDragend\", draggableChanged: \"draggableChanged\", mapDragstart: \"mapDragstart\", flatChanged: \"flatChanged\", iconChanged: \"iconChanged\", mapMousedown: \"mapMousedown\", mapMouseout: \"mapMouseout\", mapMouseover: \"mapMouseover\", mapMouseup: \"mapMouseup\", positionChanged: \"positionChanged\", mapRightclick: \"mapRightclick\", shapeChanged: \"shapeChanged\", titleChanged: \"titleChanged\", visibleChanged: \"visibleChanged\", zindexChanged: \"zindexChanged\" }, exportAs: [\"mapMarker\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nMapMarker.ctorParameters = () => [\n { type: GoogleMap },\n { type: NgZone }\n];\nMapMarker.propDecorators = {\n title: [{ type: Input }],\n position: [{ type: Input }],\n label: [{ type: Input }],\n clickable: [{ type: Input }],\n options: [{ type: Input }],\n icon: [{ type: Input }],\n visible: [{ type: Input }],\n animationChanged: [{ type: Output }],\n mapClick: [{ type: Output }],\n clickableChanged: [{ type: Output }],\n cursorChanged: [{ type: Output }],\n mapDblclick: [{ type: Output }],\n mapDrag: [{ type: Output }],\n mapDragend: [{ type: Output }],\n draggableChanged: [{ type: Output }],\n mapDragstart: [{ type: Output }],\n flatChanged: [{ type: Output }],\n iconChanged: [{ type: Output }],\n mapMousedown: [{ type: Output }],\n mapMouseout: [{ type: Output }],\n mapMouseover: [{ type: Output }],\n mapMouseup: [{ type: Output }],\n positionChanged: [{ type: Output }],\n mapRightclick: [{ type: Output }],\n shapeChanged: [{ type: Output }],\n titleChanged: [{ type: Output }],\n visibleChanged: [{ type: Output }],\n zindexChanged: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapMarker, [{\n type: Directive,\n args: [{\n selector: 'map-marker',\n exportAs: 'mapMarker'\n }]\n }], function () { return [{ type: GoogleMap }, { type: ɵngcc0.NgZone }]; }, { animationChanged: [{\n type: Output\n }], mapClick: [{\n type: Output\n }], clickableChanged: [{\n type: Output\n }], cursorChanged: [{\n type: Output\n }], mapDblclick: [{\n type: Output\n }], mapDrag: [{\n type: Output\n }], mapDragend: [{\n type: Output\n }], draggableChanged: [{\n type: Output\n }], mapDragstart: [{\n type: Output\n }], flatChanged: [{\n type: Output\n }], iconChanged: [{\n type: Output\n }], mapMousedown: [{\n type: Output\n }], mapMouseout: [{\n type: Output\n }], mapMouseover: [{\n type: Output\n }], mapMouseup: [{\n type: Output\n }], positionChanged: [{\n type: Output\n }], mapRightclick: [{\n type: Output\n }], shapeChanged: [{\n type: Output\n }], titleChanged: [{\n type: Output\n }], visibleChanged: [{\n type: Output\n }], zindexChanged: [{\n type: Output\n }], title: [{\n type: Input\n }], position: [{\n type: Input\n }], label: [{\n type: Input\n }], clickable: [{\n type: Input\n }], options: [{\n type: Input\n }], icon: [{\n type: Input\n }], visible: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Default options for a clusterer. */\nconst DEFAULT_CLUSTERER_OPTIONS = {};\n/**\n * Angular component for implementing a Google Maps Marker Clusterer.\n *\n * See https://developers.google.com/maps/documentation/javascript/marker-clustering\n */\nclass MapMarkerClusterer {\n constructor(_googleMap, _ngZone) {\n this._googleMap = _googleMap;\n this._ngZone = _ngZone;\n this._currentMarkers = new Set();\n this._eventManager = new MapEventManager(this._ngZone);\n this._destroy = new Subject();\n this.ariaLabelFn = () => '';\n /**\n * See\n * googlemaps.github.io/v3-utility-library/modules/\n * _google_markerclustererplus.html#clusteringbegin\n */\n this.clusteringbegin = this._eventManager.getLazyEmitter('clusteringbegin');\n /**\n * See\n * googlemaps.github.io/v3-utility-library/modules/_google_markerclustererplus.html#clusteringend\n */\n this.clusteringend = this._eventManager.getLazyEmitter('clusteringend');\n /** Emits when a cluster has been clicked. */\n this.clusterClick = this._eventManager.getLazyEmitter('click');\n this._canInitialize = this._googleMap._isBrowser;\n }\n set averageCenter(averageCenter) {\n this._averageCenter = averageCenter;\n }\n set batchSizeIE(batchSizeIE) {\n this._batchSizeIE = batchSizeIE;\n }\n set calculator(calculator) {\n this._calculator = calculator;\n }\n set clusterClass(clusterClass) {\n this._clusterClass = clusterClass;\n }\n set enableRetinaIcons(enableRetinaIcons) {\n this._enableRetinaIcons = enableRetinaIcons;\n }\n set gridSize(gridSize) {\n this._gridSize = gridSize;\n }\n set ignoreHidden(ignoreHidden) {\n this._ignoreHidden = ignoreHidden;\n }\n set imageExtension(imageExtension) {\n this._imageExtension = imageExtension;\n }\n set imagePath(imagePath) {\n this._imagePath = imagePath;\n }\n set imageSizes(imageSizes) {\n this._imageSizes = imageSizes;\n }\n set maxZoom(maxZoom) {\n this._maxZoom = maxZoom;\n }\n set minimumClusterSize(minimumClusterSize) {\n this._minimumClusterSize = minimumClusterSize;\n }\n set styles(styles) {\n this._styles = styles;\n }\n set title(title) {\n this._title = title;\n }\n set zIndex(zIndex) {\n this._zIndex = zIndex;\n }\n set zoomOnClick(zoomOnClick) {\n this._zoomOnClick = zoomOnClick;\n }\n set options(options) {\n this._options = options;\n }\n ngOnInit() {\n if (this._canInitialize) {\n const clustererWindow = window;\n if (!clustererWindow.MarkerClusterer && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('MarkerClusterer class not found, cannot construct a marker cluster. ' +\n 'Please install the MarkerClustererPlus library: ' +\n 'https://github.com/googlemaps/js-markerclustererplus');\n }\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.markerClusterer = new MarkerClusterer(this._googleMap.googleMap, [], this._combineOptions());\n });\n this._assertInitialized();\n this._eventManager.setTarget(this.markerClusterer);\n }\n }\n ngAfterContentInit() {\n if (this._canInitialize) {\n this._watchForMarkerChanges();\n }\n }\n ngOnChanges(changes) {\n const { markerClusterer: clusterer, ariaLabelFn, _averageCenter, _batchSizeIE, _calculator, _styles, _clusterClass, _enableRetinaIcons, _gridSize, _ignoreHidden, _imageExtension, _imagePath, _imageSizes, _maxZoom, _minimumClusterSize, _title, _zIndex, _zoomOnClick } = this;\n if (clusterer) {\n if (changes['options']) {\n clusterer.setOptions(this._combineOptions());\n }\n if (changes['ariaLabelFn']) {\n clusterer.ariaLabelFn = ariaLabelFn;\n }\n if (changes['averageCenter'] && _averageCenter !== undefined) {\n clusterer.setAverageCenter(_averageCenter);\n }\n if (changes['batchSizeIE'] && _batchSizeIE !== undefined) {\n clusterer.setBatchSizeIE(_batchSizeIE);\n }\n if (changes['calculator'] && !!_calculator) {\n clusterer.setCalculator(_calculator);\n }\n if (changes['clusterClass'] && _clusterClass !== undefined) {\n clusterer.setClusterClass(_clusterClass);\n }\n if (changes['enableRetinaIcons'] && _enableRetinaIcons !== undefined) {\n clusterer.setEnableRetinaIcons(_enableRetinaIcons);\n }\n if (changes['gridSize'] && _gridSize !== undefined) {\n clusterer.setGridSize(_gridSize);\n }\n if (changes['ignoreHidden'] && _ignoreHidden !== undefined) {\n clusterer.setIgnoreHidden(_ignoreHidden);\n }\n if (changes['imageExtension'] && _imageExtension !== undefined) {\n clusterer.setImageExtension(_imageExtension);\n }\n if (changes['imagePath'] && _imagePath !== undefined) {\n clusterer.setImagePath(_imagePath);\n }\n if (changes['imageSizes'] && _imageSizes) {\n clusterer.setImageSizes(_imageSizes);\n }\n if (changes['maxZoom'] && _maxZoom !== undefined) {\n clusterer.setMaxZoom(_maxZoom);\n }\n if (changes['minimumClusterSize'] && _minimumClusterSize !== undefined) {\n clusterer.setMinimumClusterSize(_minimumClusterSize);\n }\n if (changes['styles'] && _styles) {\n clusterer.setStyles(_styles);\n }\n if (changes['title'] && _title !== undefined) {\n clusterer.setTitle(_title);\n }\n if (changes['zIndex'] && _zIndex !== undefined) {\n clusterer.setZIndex(_zIndex);\n }\n if (changes['zoomOnClick'] && _zoomOnClick !== undefined) {\n clusterer.setZoomOnClick(_zoomOnClick);\n }\n }\n }\n ngOnDestroy() {\n this._destroy.next();\n this._destroy.complete();\n this._eventManager.destroy();\n if (this.markerClusterer) {\n this.markerClusterer.setMap(null);\n }\n }\n fitMapToMarkers(padding) {\n this._assertInitialized();\n this.markerClusterer.fitMapToMarkers(padding);\n }\n getAverageCenter() {\n this._assertInitialized();\n return this.markerClusterer.getAverageCenter();\n }\n getBatchSizeIE() {\n this._assertInitialized();\n return this.markerClusterer.getBatchSizeIE();\n }\n getCalculator() {\n this._assertInitialized();\n return this.markerClusterer.getCalculator();\n }\n getClusterClass() {\n this._assertInitialized();\n return this.markerClusterer.getClusterClass();\n }\n getClusters() {\n this._assertInitialized();\n return this.markerClusterer.getClusters();\n }\n getEnableRetinaIcons() {\n this._assertInitialized();\n return this.markerClusterer.getEnableRetinaIcons();\n }\n getGridSize() {\n this._assertInitialized();\n return this.markerClusterer.getGridSize();\n }\n getIgnoreHidden() {\n this._assertInitialized();\n return this.markerClusterer.getIgnoreHidden();\n }\n getImageExtension() {\n this._assertInitialized();\n return this.markerClusterer.getImageExtension();\n }\n getImagePath() {\n this._assertInitialized();\n return this.markerClusterer.getImagePath();\n }\n getImageSizes() {\n this._assertInitialized();\n return this.markerClusterer.getImageSizes();\n }\n getMaxZoom() {\n this._assertInitialized();\n return this.markerClusterer.getMaxZoom();\n }\n getMinimumClusterSize() {\n this._assertInitialized();\n return this.markerClusterer.getMinimumClusterSize();\n }\n getStyles() {\n this._assertInitialized();\n return this.markerClusterer.getStyles();\n }\n getTitle() {\n this._assertInitialized();\n return this.markerClusterer.getTitle();\n }\n getTotalClusters() {\n this._assertInitialized();\n return this.markerClusterer.getTotalClusters();\n }\n getTotalMarkers() {\n this._assertInitialized();\n return this.markerClusterer.getTotalMarkers();\n }\n getZIndex() {\n this._assertInitialized();\n return this.markerClusterer.getZIndex();\n }\n getZoomOnClick() {\n this._assertInitialized();\n return this.markerClusterer.getZoomOnClick();\n }\n _combineOptions() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;\n const options = this._options || DEFAULT_CLUSTERER_OPTIONS;\n return Object.assign(Object.assign({}, options), { ariaLabelFn: (_a = this.ariaLabelFn) !== null && _a !== void 0 ? _a : options.ariaLabelFn, averageCenter: (_b = this._averageCenter) !== null && _b !== void 0 ? _b : options.averageCenter, batchSize: (_c = this.batchSize) !== null && _c !== void 0 ? _c : options.batchSize, batchSizeIE: (_d = this._batchSizeIE) !== null && _d !== void 0 ? _d : options.batchSizeIE, calculator: (_e = this._calculator) !== null && _e !== void 0 ? _e : options.calculator, clusterClass: (_f = this._clusterClass) !== null && _f !== void 0 ? _f : options.clusterClass, enableRetinaIcons: (_g = this._enableRetinaIcons) !== null && _g !== void 0 ? _g : options.enableRetinaIcons, gridSize: (_h = this._gridSize) !== null && _h !== void 0 ? _h : options.gridSize, ignoreHidden: (_j = this._ignoreHidden) !== null && _j !== void 0 ? _j : options.ignoreHidden, imageExtension: (_k = this._imageExtension) !== null && _k !== void 0 ? _k : options.imageExtension, imagePath: (_l = this._imagePath) !== null && _l !== void 0 ? _l : options.imagePath, imageSizes: (_m = this._imageSizes) !== null && _m !== void 0 ? _m : options.imageSizes, maxZoom: (_o = this._maxZoom) !== null && _o !== void 0 ? _o : options.maxZoom, minimumClusterSize: (_p = this._minimumClusterSize) !== null && _p !== void 0 ? _p : options.minimumClusterSize, styles: (_q = this._styles) !== null && _q !== void 0 ? _q : options.styles, title: (_r = this._title) !== null && _r !== void 0 ? _r : options.title, zIndex: (_s = this._zIndex) !== null && _s !== void 0 ? _s : options.zIndex, zoomOnClick: (_t = this._zoomOnClick) !== null && _t !== void 0 ? _t : options.zoomOnClick });\n }\n _watchForMarkerChanges() {\n this._assertInitialized();\n const initialMarkers = [];\n for (const marker of this._getInternalMarkers(this._markers.toArray())) {\n this._currentMarkers.add(marker);\n initialMarkers.push(marker);\n }\n this.markerClusterer.addMarkers(initialMarkers);\n this._markers.changes.pipe(takeUntil(this._destroy)).subscribe((markerComponents) => {\n this._assertInitialized();\n const newMarkers = new Set(this._getInternalMarkers(markerComponents));\n const markersToAdd = [];\n const markersToRemove = [];\n for (const marker of Array.from(newMarkers)) {\n if (!this._currentMarkers.has(marker)) {\n this._currentMarkers.add(marker);\n markersToAdd.push(marker);\n }\n }\n for (const marker of Array.from(this._currentMarkers)) {\n if (!newMarkers.has(marker)) {\n markersToRemove.push(marker);\n }\n }\n this.markerClusterer.addMarkers(markersToAdd, true);\n this.markerClusterer.removeMarkers(markersToRemove, true);\n this.markerClusterer.repaint();\n for (const marker of markersToRemove) {\n this._currentMarkers.delete(marker);\n }\n });\n }\n _getInternalMarkers(markers) {\n return markers.filter(markerComponent => !!markerComponent.marker)\n .map(markerComponent => markerComponent.marker);\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._googleMap.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n if (!this.markerClusterer) {\n throw Error('Cannot interact with a MarkerClusterer before it has been initialized. ' +\n 'Please wait for the MarkerClusterer to load before trying to interact with it.');\n }\n }\n }\n}\nMapMarkerClusterer.ɵfac = function MapMarkerClusterer_Factory(t) { return new (t || MapMarkerClusterer)(ɵngcc0.ɵɵdirectiveInject(GoogleMap), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nMapMarkerClusterer.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MapMarkerClusterer, selectors: [[\"map-marker-clusterer\"]], contentQueries: function MapMarkerClusterer_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, MapMarker, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._markers = _t);\n } }, inputs: { ariaLabelFn: \"ariaLabelFn\", averageCenter: \"averageCenter\", batchSizeIE: \"batchSizeIE\", calculator: \"calculator\", clusterClass: \"clusterClass\", enableRetinaIcons: \"enableRetinaIcons\", gridSize: \"gridSize\", ignoreHidden: \"ignoreHidden\", imageExtension: \"imageExtension\", imagePath: \"imagePath\", imageSizes: \"imageSizes\", maxZoom: \"maxZoom\", minimumClusterSize: \"minimumClusterSize\", styles: \"styles\", title: \"title\", zIndex: \"zIndex\", zoomOnClick: \"zoomOnClick\", options: \"options\", batchSize: \"batchSize\" }, outputs: { clusteringbegin: \"clusteringbegin\", clusteringend: \"clusteringend\", clusterClick: \"clusterClick\" }, exportAs: [\"mapMarkerClusterer\"], features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function MapMarkerClusterer_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2, changeDetection: 0 });\nMapMarkerClusterer.ctorParameters = () => [\n { type: GoogleMap },\n { type: NgZone }\n];\nMapMarkerClusterer.propDecorators = {\n ariaLabelFn: [{ type: Input }],\n averageCenter: [{ type: Input }],\n batchSize: [{ type: Input }],\n batchSizeIE: [{ type: Input }],\n calculator: [{ type: Input }],\n clusterClass: [{ type: Input }],\n enableRetinaIcons: [{ type: Input }],\n gridSize: [{ type: Input }],\n ignoreHidden: [{ type: Input }],\n imageExtension: [{ type: Input }],\n imagePath: [{ type: Input }],\n imageSizes: [{ type: Input }],\n maxZoom: [{ type: Input }],\n minimumClusterSize: [{ type: Input }],\n styles: [{ type: Input }],\n title: [{ type: Input }],\n zIndex: [{ type: Input }],\n zoomOnClick: [{ type: Input }],\n options: [{ type: Input }],\n clusteringbegin: [{ type: Output }],\n clusteringend: [{ type: Output }],\n clusterClick: [{ type: Output }],\n _markers: [{ type: ContentChildren, args: [MapMarker, { descendants: true },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapMarkerClusterer, [{\n type: Component,\n args: [{\n selector: 'map-marker-clusterer',\n exportAs: 'mapMarkerClusterer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '',\n encapsulation: ViewEncapsulation.None\n }]\n }], function () { return [{ type: GoogleMap }, { type: ɵngcc0.NgZone }]; }, { ariaLabelFn: [{\n type: Input\n }], clusteringbegin: [{\n type: Output\n }], clusteringend: [{\n type: Output\n }], clusterClick: [{\n type: Output\n }], averageCenter: [{\n type: Input\n }], batchSizeIE: [{\n type: Input\n }], calculator: [{\n type: Input\n }], clusterClass: [{\n type: Input\n }], enableRetinaIcons: [{\n type: Input\n }], gridSize: [{\n type: Input\n }], ignoreHidden: [{\n type: Input\n }], imageExtension: [{\n type: Input\n }], imagePath: [{\n type: Input\n }], imageSizes: [{\n type: Input\n }], maxZoom: [{\n type: Input\n }], minimumClusterSize: [{\n type: Input\n }], styles: [{\n type: Input\n }], title: [{\n type: Input\n }], zIndex: [{\n type: Input\n }], zoomOnClick: [{\n type: Input\n }], options: [{\n type: Input\n }], batchSize: [{\n type: Input\n }], _markers: [{\n type: ContentChildren,\n args: [MapMarker, { descendants: true }]\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular component that renders a Google Maps Polygon via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon\n */\nclass MapPolygon {\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(this._ngZone);\n this._options = new BehaviorSubject({});\n this._paths = new BehaviorSubject(undefined);\n this._destroyed = new Subject();\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.click\n */\n this.polygonClick = this._eventManager.getLazyEmitter('click');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.dblclick\n */\n this.polygonDblclick = this._eventManager.getLazyEmitter('dblclick');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.drag\n */\n this.polygonDrag = this._eventManager.getLazyEmitter('drag');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.dragend\n */\n this.polygonDragend = this._eventManager.getLazyEmitter('dragend');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.dragstart\n */\n this.polygonDragstart = this._eventManager.getLazyEmitter('dragstart');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mousedown\n */\n this.polygonMousedown = this._eventManager.getLazyEmitter('mousedown');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mousemove\n */\n this.polygonMousemove = this._eventManager.getLazyEmitter('mousemove');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mouseout\n */\n this.polygonMouseout = this._eventManager.getLazyEmitter('mouseout');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mouseover\n */\n this.polygonMouseover = this._eventManager.getLazyEmitter('mouseover');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mouseup\n */\n this.polygonMouseup = this._eventManager.getLazyEmitter('mouseup');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.rightclick\n */\n this.polygonRightclick = this._eventManager.getLazyEmitter('rightclick');\n }\n set options(options) {\n this._options.next(options || {});\n }\n set paths(paths) {\n this._paths.next(paths);\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions().pipe(take(1)).subscribe(options => {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.polygon = new google.maps.Polygon(options);\n });\n this._assertInitialized();\n this.polygon.setMap(this._map.googleMap);\n this._eventManager.setTarget(this.polygon);\n });\n this._watchForOptionsChanges();\n this._watchForPathChanges();\n }\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n if (this.polygon) {\n this.polygon.setMap(null);\n }\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getDraggable\n */\n getDraggable() {\n this._assertInitialized();\n return this.polygon.getDraggable();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getEditable\n */\n getEditable() {\n this._assertInitialized();\n return this.polygon.getEditable();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getPath\n */\n getPath() {\n this._assertInitialized();\n return this.polygon.getPath();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getPaths\n */\n getPaths() {\n this._assertInitialized();\n return this.polygon.getPaths();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getVisible\n */\n getVisible() {\n this._assertInitialized();\n return this.polygon.getVisible();\n }\n _combineOptions() {\n return combineLatest([this._options, this._paths]).pipe(map(([options, paths]) => {\n const combinedOptions = Object.assign(Object.assign({}, options), { paths: paths || options.paths });\n return combinedOptions;\n }));\n }\n _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.polygon.setOptions(options);\n });\n }\n _watchForPathChanges() {\n this._paths.pipe(takeUntil(this._destroyed)).subscribe(paths => {\n if (paths) {\n this._assertInitialized();\n this.polygon.setPaths(paths);\n }\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._map.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n if (!this.polygon) {\n throw Error('Cannot interact with a Google Map Polygon before it has been ' +\n 'initialized. Please wait for the Polygon to load before trying to interact with it.');\n }\n }\n }\n}\nMapPolygon.ɵfac = function MapPolygon_Factory(t) { return new (t || MapPolygon)(ɵngcc0.ɵɵdirectiveInject(GoogleMap), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nMapPolygon.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapPolygon, selectors: [[\"map-polygon\"]], inputs: { options: \"options\", paths: \"paths\" }, outputs: { polygonClick: \"polygonClick\", polygonDblclick: \"polygonDblclick\", polygonDrag: \"polygonDrag\", polygonDragend: \"polygonDragend\", polygonDragstart: \"polygonDragstart\", polygonMousedown: \"polygonMousedown\", polygonMousemove: \"polygonMousemove\", polygonMouseout: \"polygonMouseout\", polygonMouseover: \"polygonMouseover\", polygonMouseup: \"polygonMouseup\", polygonRightclick: \"polygonRightclick\" }, exportAs: [\"mapPolygon\"] });\nMapPolygon.ctorParameters = () => [\n { type: GoogleMap },\n { type: NgZone }\n];\nMapPolygon.propDecorators = {\n options: [{ type: Input }],\n paths: [{ type: Input }],\n polygonClick: [{ type: Output }],\n polygonDblclick: [{ type: Output }],\n polygonDrag: [{ type: Output }],\n polygonDragend: [{ type: Output }],\n polygonDragstart: [{ type: Output }],\n polygonMousedown: [{ type: Output }],\n polygonMousemove: [{ type: Output }],\n polygonMouseout: [{ type: Output }],\n polygonMouseover: [{ type: Output }],\n polygonMouseup: [{ type: Output }],\n polygonRightclick: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapPolygon, [{\n type: Directive,\n args: [{\n selector: 'map-polygon',\n exportAs: 'mapPolygon'\n }]\n }], function () { return [{ type: GoogleMap }, { type: ɵngcc0.NgZone }]; }, { polygonClick: [{\n type: Output\n }], polygonDblclick: [{\n type: Output\n }], polygonDrag: [{\n type: Output\n }], polygonDragend: [{\n type: Output\n }], polygonDragstart: [{\n type: Output\n }], polygonMousedown: [{\n type: Output\n }], polygonMousemove: [{\n type: Output\n }], polygonMouseout: [{\n type: Output\n }], polygonMouseover: [{\n type: Output\n }], polygonMouseup: [{\n type: Output\n }], polygonRightclick: [{\n type: Output\n }], options: [{\n type: Input\n }], paths: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular component that renders a Google Maps Polyline via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline\n */\nclass MapPolyline {\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(this._ngZone);\n this._options = new BehaviorSubject({});\n this._path = new BehaviorSubject(undefined);\n this._destroyed = new Subject();\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.click\n */\n this.polylineClick = this._eventManager.getLazyEmitter('click');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.dblclick\n */\n this.polylineDblclick = this._eventManager.getLazyEmitter('dblclick');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.drag\n */\n this.polylineDrag = this._eventManager.getLazyEmitter('drag');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.dragend\n */\n this.polylineDragend = this._eventManager.getLazyEmitter('dragend');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.dragstart\n */\n this.polylineDragstart = this._eventManager.getLazyEmitter('dragstart');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mousedown\n */\n this.polylineMousedown = this._eventManager.getLazyEmitter('mousedown');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mousemove\n */\n this.polylineMousemove = this._eventManager.getLazyEmitter('mousemove');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mouseout\n */\n this.polylineMouseout = this._eventManager.getLazyEmitter('mouseout');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mouseover\n */\n this.polylineMouseover = this._eventManager.getLazyEmitter('mouseover');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mouseup\n */\n this.polylineMouseup = this._eventManager.getLazyEmitter('mouseup');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.rightclick\n */\n this.polylineRightclick = this._eventManager.getLazyEmitter('rightclick');\n }\n set options(options) {\n this._options.next(options || {});\n }\n set path(path) {\n this._path.next(path);\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions().pipe(take(1)).subscribe(options => {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => this.polyline = new google.maps.Polyline(options));\n this._assertInitialized();\n this.polyline.setMap(this._map.googleMap);\n this._eventManager.setTarget(this.polyline);\n });\n this._watchForOptionsChanges();\n this._watchForPathChanges();\n }\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n if (this.polyline) {\n this.polyline.setMap(null);\n }\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getDraggable\n */\n getDraggable() {\n this._assertInitialized();\n return this.polyline.getDraggable();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getEditable\n */\n getEditable() {\n this._assertInitialized();\n return this.polyline.getEditable();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getPath\n */\n getPath() {\n this._assertInitialized();\n return this.polyline.getPath();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getVisible\n */\n getVisible() {\n this._assertInitialized();\n return this.polyline.getVisible();\n }\n _combineOptions() {\n return combineLatest([this._options, this._path]).pipe(map(([options, path]) => {\n const combinedOptions = Object.assign(Object.assign({}, options), { path: path || options.path });\n return combinedOptions;\n }));\n }\n _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.polyline.setOptions(options);\n });\n }\n _watchForPathChanges() {\n this._path.pipe(takeUntil(this._destroyed)).subscribe(path => {\n if (path) {\n this._assertInitialized();\n this.polyline.setPath(path);\n }\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._map.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n if (!this.polyline) {\n throw Error('Cannot interact with a Google Map Polyline before it has been ' +\n 'initialized. Please wait for the Polyline to load before trying to interact with it.');\n }\n }\n }\n}\nMapPolyline.ɵfac = function MapPolyline_Factory(t) { return new (t || MapPolyline)(ɵngcc0.ɵɵdirectiveInject(GoogleMap), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nMapPolyline.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapPolyline, selectors: [[\"map-polyline\"]], inputs: { options: \"options\", path: \"path\" }, outputs: { polylineClick: \"polylineClick\", polylineDblclick: \"polylineDblclick\", polylineDrag: \"polylineDrag\", polylineDragend: \"polylineDragend\", polylineDragstart: \"polylineDragstart\", polylineMousedown: \"polylineMousedown\", polylineMousemove: \"polylineMousemove\", polylineMouseout: \"polylineMouseout\", polylineMouseover: \"polylineMouseover\", polylineMouseup: \"polylineMouseup\", polylineRightclick: \"polylineRightclick\" }, exportAs: [\"mapPolyline\"] });\nMapPolyline.ctorParameters = () => [\n { type: GoogleMap },\n { type: NgZone }\n];\nMapPolyline.propDecorators = {\n options: [{ type: Input }],\n path: [{ type: Input }],\n polylineClick: [{ type: Output }],\n polylineDblclick: [{ type: Output }],\n polylineDrag: [{ type: Output }],\n polylineDragend: [{ type: Output }],\n polylineDragstart: [{ type: Output }],\n polylineMousedown: [{ type: Output }],\n polylineMousemove: [{ type: Output }],\n polylineMouseout: [{ type: Output }],\n polylineMouseover: [{ type: Output }],\n polylineMouseup: [{ type: Output }],\n polylineRightclick: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapPolyline, [{\n type: Directive,\n args: [{\n selector: 'map-polyline',\n exportAs: 'mapPolyline'\n }]\n }], function () { return [{ type: GoogleMap }, { type: ɵngcc0.NgZone }]; }, { polylineClick: [{\n type: Output\n }], polylineDblclick: [{\n type: Output\n }], polylineDrag: [{\n type: Output\n }], polylineDragend: [{\n type: Output\n }], polylineDragstart: [{\n type: Output\n }], polylineMousedown: [{\n type: Output\n }], polylineMousemove: [{\n type: Output\n }], polylineMouseout: [{\n type: Output\n }], polylineMouseover: [{\n type: Output\n }], polylineMouseup: [{\n type: Output\n }], polylineRightclick: [{\n type: Output\n }], options: [{\n type: Input\n }], path: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular component that renders a Google Maps Rectangle via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle\n */\nclass MapRectangle {\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(this._ngZone);\n this._options = new BehaviorSubject({});\n this._bounds = new BehaviorSubject(undefined);\n this._destroyed = new Subject();\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.boundsChanged\n */ this.boundsChanged = this._eventManager.getLazyEmitter('bounds_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.click\n */\n this.rectangleClick = this._eventManager.getLazyEmitter('click');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.dblclick\n */\n this.rectangleDblclick = this._eventManager.getLazyEmitter('dblclick');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.drag\n */\n this.rectangleDrag = this._eventManager.getLazyEmitter('drag');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.dragend\n */\n this.rectangleDragend = this._eventManager.getLazyEmitter('dragend');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.dragstart\n */\n this.rectangleDragstart = this._eventManager.getLazyEmitter('dragstart');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mousedown\n */\n this.rectangleMousedown = this._eventManager.getLazyEmitter('mousedown');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mousemove\n */\n this.rectangleMousemove = this._eventManager.getLazyEmitter('mousemove');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mouseout\n */\n this.rectangleMouseout = this._eventManager.getLazyEmitter('mouseout');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mouseover\n */\n this.rectangleMouseover = this._eventManager.getLazyEmitter('mouseover');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mouseup\n */\n this.rectangleMouseup = this._eventManager.getLazyEmitter('mouseup');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.rightclick\n */\n this.rectangleRightclick = this._eventManager.getLazyEmitter('rightclick');\n }\n set options(options) {\n this._options.next(options || {});\n }\n set bounds(bounds) {\n this._bounds.next(bounds);\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions().pipe(take(1)).subscribe(options => {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.rectangle = new google.maps.Rectangle(options);\n });\n this._assertInitialized();\n this.rectangle.setMap(this._map.googleMap);\n this._eventManager.setTarget(this.rectangle);\n });\n this._watchForOptionsChanges();\n this._watchForBoundsChanges();\n }\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n if (this.rectangle) {\n this.rectangle.setMap(null);\n }\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getBounds\n */\n getBounds() {\n this._assertInitialized();\n return this.rectangle.getBounds();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getDraggable\n */\n getDraggable() {\n this._assertInitialized();\n return this.rectangle.getDraggable();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getEditable\n */\n getEditable() {\n this._assertInitialized();\n return this.rectangle.getEditable();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getVisible\n */\n getVisible() {\n this._assertInitialized();\n return this.rectangle.getVisible();\n }\n _combineOptions() {\n return combineLatest([this._options, this._bounds]).pipe(map(([options, bounds]) => {\n const combinedOptions = Object.assign(Object.assign({}, options), { bounds: bounds || options.bounds });\n return combinedOptions;\n }));\n }\n _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.rectangle.setOptions(options);\n });\n }\n _watchForBoundsChanges() {\n this._bounds.pipe(takeUntil(this._destroyed)).subscribe(bounds => {\n if (bounds) {\n this._assertInitialized();\n this.rectangle.setBounds(bounds);\n }\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._map.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n if (!this.rectangle) {\n throw Error('Cannot interact with a Google Map Rectangle before it has been initialized. ' +\n 'Please wait for the Rectangle to load before trying to interact with it.');\n }\n }\n }\n}\nMapRectangle.ɵfac = function MapRectangle_Factory(t) { return new (t || MapRectangle)(ɵngcc0.ɵɵdirectiveInject(GoogleMap), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nMapRectangle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapRectangle, selectors: [[\"map-rectangle\"]], inputs: { options: \"options\", bounds: \"bounds\" }, outputs: { boundsChanged: \"boundsChanged\", rectangleClick: \"rectangleClick\", rectangleDblclick: \"rectangleDblclick\", rectangleDrag: \"rectangleDrag\", rectangleDragend: \"rectangleDragend\", rectangleDragstart: \"rectangleDragstart\", rectangleMousedown: \"rectangleMousedown\", rectangleMousemove: \"rectangleMousemove\", rectangleMouseout: \"rectangleMouseout\", rectangleMouseover: \"rectangleMouseover\", rectangleMouseup: \"rectangleMouseup\", rectangleRightclick: \"rectangleRightclick\" }, exportAs: [\"mapRectangle\"] });\nMapRectangle.ctorParameters = () => [\n { type: GoogleMap },\n { type: NgZone }\n];\nMapRectangle.propDecorators = {\n options: [{ type: Input }],\n bounds: [{ type: Input }],\n boundsChanged: [{ type: Output }],\n rectangleClick: [{ type: Output }],\n rectangleDblclick: [{ type: Output }],\n rectangleDrag: [{ type: Output }],\n rectangleDragend: [{ type: Output }],\n rectangleDragstart: [{ type: Output }],\n rectangleMousedown: [{ type: Output }],\n rectangleMousemove: [{ type: Output }],\n rectangleMouseout: [{ type: Output }],\n rectangleMouseover: [{ type: Output }],\n rectangleMouseup: [{ type: Output }],\n rectangleRightclick: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapRectangle, [{\n type: Directive,\n args: [{\n selector: 'map-rectangle',\n exportAs: 'mapRectangle'\n }]\n }], function () { return [{ type: GoogleMap }, { type: ɵngcc0.NgZone }]; }, { boundsChanged: [{\n type: Output\n }], rectangleClick: [{\n type: Output\n }], rectangleDblclick: [{\n type: Output\n }], rectangleDrag: [{\n type: Output\n }], rectangleDragend: [{\n type: Output\n }], rectangleDragstart: [{\n type: Output\n }], rectangleMousedown: [{\n type: Output\n }], rectangleMousemove: [{\n type: Output\n }], rectangleMouseout: [{\n type: Output\n }], rectangleMouseover: [{\n type: Output\n }], rectangleMouseup: [{\n type: Output\n }], rectangleRightclick: [{\n type: Output\n }], options: [{\n type: Input\n }], bounds: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular component that renders a Google Maps Traffic Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#TrafficLayer\n */\nclass MapTrafficLayer {\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._autoRefresh = new BehaviorSubject(true);\n this._destroyed = new Subject();\n }\n /**\n * Whether the traffic layer refreshes with updated information automatically.\n */\n set autoRefresh(autoRefresh) {\n this._autoRefresh.next(autoRefresh);\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions().pipe(take(1)).subscribe(options => {\n // Create the object outside the zone so its events don't trigger change detection.\n this._ngZone.runOutsideAngular(() => {\n this.trafficLayer = new google.maps.TrafficLayer(options);\n });\n this._assertInitialized();\n this.trafficLayer.setMap(this._map.googleMap);\n });\n this._watchForAutoRefreshChanges();\n }\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n if (this.trafficLayer) {\n this.trafficLayer.setMap(null);\n }\n }\n _combineOptions() {\n return this._autoRefresh.pipe(map(autoRefresh => {\n const combinedOptions = { autoRefresh };\n return combinedOptions;\n }));\n }\n _watchForAutoRefreshChanges() {\n this._combineOptions().pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.trafficLayer.setOptions(options);\n });\n }\n _assertInitialized() {\n if (!this._map.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n if (!this.trafficLayer) {\n throw Error('Cannot interact with a Google Map Traffic Layer before it has been initialized. ' +\n 'Please wait for the Traffic Layer to load before trying to interact with it.');\n }\n }\n}\nMapTrafficLayer.ɵfac = function MapTrafficLayer_Factory(t) { return new (t || MapTrafficLayer)(ɵngcc0.ɵɵdirectiveInject(GoogleMap), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nMapTrafficLayer.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapTrafficLayer, selectors: [[\"map-traffic-layer\"]], inputs: { autoRefresh: \"autoRefresh\" }, exportAs: [\"mapTrafficLayer\"] });\nMapTrafficLayer.ctorParameters = () => [\n { type: GoogleMap },\n { type: NgZone }\n];\nMapTrafficLayer.propDecorators = {\n autoRefresh: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapTrafficLayer, [{\n type: Directive,\n args: [{\n selector: 'map-traffic-layer',\n exportAs: 'mapTrafficLayer'\n }]\n }], function () { return [{ type: GoogleMap }, { type: ɵngcc0.NgZone }]; }, { autoRefresh: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular component that renders a Google Maps Transit Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#TransitLayer\n */\nclass MapTransitLayer extends MapBaseLayer {\n _initializeObject() {\n this.transitLayer = new google.maps.TransitLayer();\n }\n _setMap() {\n this._assertLayerInitialized();\n this.transitLayer.setMap(this._map.googleMap);\n }\n _unsetMap() {\n if (this.transitLayer) {\n this.transitLayer.setMap(null);\n }\n }\n _assertLayerInitialized() {\n if (!this.transitLayer) {\n throw Error('Cannot interact with a Google Map Transit Layer before it has been initialized. ' +\n 'Please wait for the Transit Layer to load before trying to interact with it.');\n }\n }\n}\nMapTransitLayer.ɵfac = /*@__PURE__*/ function () { let ɵMapTransitLayer_BaseFactory; return function MapTransitLayer_Factory(t) { return (ɵMapTransitLayer_BaseFactory || (ɵMapTransitLayer_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(MapTransitLayer)))(t || MapTransitLayer); }; }();\nMapTransitLayer.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapTransitLayer, selectors: [[\"map-transit-layer\"]], exportAs: [\"mapTransitLayer\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapTransitLayer, [{\n type: Directive,\n args: [{\n selector: 'map-transit-layer',\n exportAs: 'mapTransitLayer'\n }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular directive that renders a Google Maps heatmap via the Google Maps JavaScript API.\n *\n * See: https://developers.google.com/maps/documentation/javascript/reference/visualization\n */\nclass MapHeatmapLayer {\n constructor(_googleMap, _ngZone) {\n this._googleMap = _googleMap;\n this._ngZone = _ngZone;\n }\n /**\n * Data shown on the heatmap.\n * See: https://developers.google.com/maps/documentation/javascript/reference/visualization\n */\n set data(data) {\n this._data = data;\n }\n /**\n * Options used to configure the heatmap. See:\n * developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayerOptions\n */\n set options(options) {\n this._options = options;\n }\n ngOnInit() {\n var _a, _b;\n if (this._googleMap._isBrowser) {\n if (!((_b = (_a = window.google) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.visualization) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Namespace `google.maps.visualization` not found, cannot construct heatmap. ' +\n 'Please install the Google Maps JavaScript API with the \"visualization\" library: ' +\n 'https://developers.google.com/maps/documentation/javascript/visualization');\n }\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.heatmap = new google.maps.visualization.HeatmapLayer(this._combineOptions());\n });\n this._assertInitialized();\n this.heatmap.setMap(this._googleMap.googleMap);\n }\n }\n ngOnChanges(changes) {\n const { _data, heatmap } = this;\n if (heatmap) {\n if (changes['options']) {\n heatmap.setOptions(this._combineOptions());\n }\n if (changes['data'] && _data !== undefined) {\n heatmap.setData(this._normalizeData(_data));\n }\n }\n }\n ngOnDestroy() {\n if (this.heatmap) {\n this.heatmap.setMap(null);\n }\n }\n /**\n * Gets the data that is currently shown on the heatmap.\n * See: developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayer\n */\n getData() {\n this._assertInitialized();\n return this.heatmap.getData();\n }\n /** Creates a combined options object using the passed-in options and the individual inputs. */\n _combineOptions() {\n const options = this._options || {};\n return Object.assign(Object.assign({}, options), { data: this._normalizeData(this._data || options.data || []), map: this._googleMap.googleMap });\n }\n /**\n * Most Google Maps APIs support both `LatLng` objects and `LatLngLiteral`. The latter is more\n * convenient to write out, because the Google Maps API doesn't have to have been loaded in order\n * to construct them. The `HeatmapLayer` appears to be an exception that only allows a `LatLng`\n * object, or it throws a runtime error. Since it's more convenient and we expect that Angular\n * users will load the API asynchronously, we allow them to pass in a `LatLngLiteral` and we\n * convert it to a `LatLng` object before passing it off to Google Maps.\n */\n _normalizeData(data) {\n const result = [];\n data.forEach(item => {\n result.push(isLatLngLiteral(item) ? new google.maps.LatLng(item.lat, item.lng) : item);\n });\n return result;\n }\n /** Asserts that the heatmap object has been initialized. */\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._googleMap.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' +\n 'Please wait for the API to load before trying to interact with it.');\n }\n if (!this.heatmap) {\n throw Error('Cannot interact with a Google Map HeatmapLayer before it has been ' +\n 'initialized. Please wait for the heatmap to load before trying to interact with it.');\n }\n }\n }\n}\nMapHeatmapLayer.ɵfac = function MapHeatmapLayer_Factory(t) { return new (t || MapHeatmapLayer)(ɵngcc0.ɵɵdirectiveInject(GoogleMap), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nMapHeatmapLayer.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MapHeatmapLayer, selectors: [[\"map-heatmap-layer\"]], inputs: { data: \"data\", options: \"options\" }, exportAs: [\"mapHeatmapLayer\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nMapHeatmapLayer.ctorParameters = () => [\n { type: GoogleMap },\n { type: NgZone }\n];\nMapHeatmapLayer.propDecorators = {\n data: [{ type: Input }],\n options: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapHeatmapLayer, [{\n type: Directive,\n args: [{\n selector: 'map-heatmap-layer',\n exportAs: 'mapHeatmapLayer'\n }]\n }], function () { return [{ type: GoogleMap }, { type: ɵngcc0.NgZone }]; }, { data: [{\n type: Input\n }], options: [{\n type: Input\n }] }); })();\n/** Asserts that an object is a `LatLngLiteral`. */\nfunction isLatLngLiteral(value) {\n return value && typeof value.lat === 'number' && typeof value.lng === 'number';\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst COMPONENTS = [\n GoogleMap,\n MapBaseLayer,\n MapBicyclingLayer,\n MapCircle,\n MapDirectionsRenderer,\n MapGroundOverlay,\n MapInfoWindow,\n MapKmlLayer,\n MapMarker,\n MapMarkerClusterer,\n MapPolygon,\n MapPolyline,\n MapRectangle,\n MapTrafficLayer,\n MapTransitLayer,\n MapHeatmapLayer,\n];\nclass GoogleMapsModule {\n}\nGoogleMapsModule.ɵfac = function GoogleMapsModule_Factory(t) { return new (t || GoogleMapsModule)(); };\nGoogleMapsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: GoogleMapsModule });\nGoogleMapsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GoogleMapsModule, [{\n type: NgModule,\n args: [{\n declarations: COMPONENTS,\n exports: COMPONENTS\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(GoogleMapsModule, { declarations: [GoogleMap, MapBaseLayer, MapBicyclingLayer, MapCircle, MapDirectionsRenderer, MapGroundOverlay, MapInfoWindow, MapKmlLayer, MapMarker, MapMarkerClusterer, MapPolygon, MapPolyline, MapRectangle, MapTrafficLayer, MapTransitLayer, MapHeatmapLayer], exports: [GoogleMap, MapBaseLayer, MapBicyclingLayer, MapCircle, MapDirectionsRenderer, MapGroundOverlay, MapInfoWindow, MapKmlLayer, MapMarker, MapMarkerClusterer, MapPolygon, MapPolyline, MapRectangle, MapTrafficLayer, MapTransitLayer, MapHeatmapLayer] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular service that wraps the Google Maps DirectionsService from the Google Maps JavaScript\n * API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/directions#DirectionsService\n */\nclass MapDirectionsService {\n constructor(_ngZone) {\n this._ngZone = _ngZone;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsService.route\n */\n route(request) {\n return new Observable(observer => {\n // Initialize the `DirectionsService` lazily since the Google Maps API may\n // not have been loaded when the provider is instantiated.\n if (!this._directionsService) {\n this._directionsService = new google.maps.DirectionsService();\n }\n const callback = (result, status) => {\n this._ngZone.run(() => {\n observer.next({ result, status });\n observer.complete();\n });\n };\n this._directionsService.route(request, callback);\n });\n }\n}\nMapDirectionsService.ɵfac = function MapDirectionsService_Factory(t) { return new (t || MapDirectionsService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nMapDirectionsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapDirectionsService_Factory() { return new MapDirectionsService(i0.ɵɵinject(i0.NgZone)); }, token: MapDirectionsService, providedIn: \"root\" });\nMapDirectionsService.ctorParameters = () => [\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapDirectionsService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Angular service that wraps the Google Maps Geocoder from the Google Maps JavaScript API.\n * See developers.google.com/maps/documentation/javascript/reference/geocoder#Geocoder\n */\nclass MapGeocoder {\n constructor(_ngZone) {\n this._ngZone = _ngZone;\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/geocoder#Geocoder.geocode\n */\n geocode(request) {\n return new Observable(observer => {\n // Initialize the `Geocoder` lazily since the Google Maps API may\n // not have been loaded when the provider is instantiated.\n if (!this._geocoder) {\n this._geocoder = new google.maps.Geocoder();\n }\n this._geocoder.geocode(request, (results, status) => {\n this._ngZone.run(() => {\n observer.next({ results, status });\n observer.complete();\n });\n });\n });\n }\n}\nMapGeocoder.ɵfac = function MapGeocoder_Factory(t) { return new (t || MapGeocoder)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nMapGeocoder.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGeocoder_Factory() { return new MapGeocoder(i0.ɵɵinject(i0.NgZone)); }, token: MapGeocoder, providedIn: \"root\" });\nMapGeocoder.ctorParameters = () => [\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapGeocoder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { GoogleMap, GoogleMapsModule, MapBaseLayer, MapBicyclingLayer, MapCircle, MapDirectionsRenderer, MapDirectionsService, MapGeocoder, MapGroundOverlay, MapHeatmapLayer, MapInfoWindow, MapKmlLayer, MapMarker, MapMarkerClusterer, MapPolygon, MapPolyline, MapRectangle, MapTrafficLayer, MapTransitLayer };\n\n","/**\n * @license Angular v7.2.16\n * (c) 2010-2019 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { Injectable, NgModule, Version } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ɵgetDOM } from '@angular/platform-browser';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A backend for http that uses the `XMLHttpRequest` browser API.\n *\n * Take care not to evaluate this in non-browser contexts.\n *\n * @deprecated see https://angular.io/guide/http\n * \\@publicApi\n */\nimport * as ɵngcc0 from '@angular/core';\nclass BrowserXhr {\n constructor() { }\n /**\n * @return {?}\n */\n build() { return (/** @type {?} */ ((new XMLHttpRequest()))); }\n}\nBrowserXhr.ɵfac = function BrowserXhr_Factory(t) { return new (t || BrowserXhr)(); };\nBrowserXhr.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: BrowserXhr, factory: BrowserXhr.ɵfac });\n/** @nocollapse */\nBrowserXhr.ctorParameters = () => [];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BrowserXhr, [{\n type: Injectable\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @enum {number} */\nconst RequestMethod = {\n Get: 0,\n Post: 1,\n Put: 2,\n Delete: 3,\n Options: 4,\n Head: 5,\n Patch: 6,\n};\nRequestMethod[RequestMethod.Get] = 'Get';\nRequestMethod[RequestMethod.Post] = 'Post';\nRequestMethod[RequestMethod.Put] = 'Put';\nRequestMethod[RequestMethod.Delete] = 'Delete';\nRequestMethod[RequestMethod.Options] = 'Options';\nRequestMethod[RequestMethod.Head] = 'Head';\nRequestMethod[RequestMethod.Patch] = 'Patch';\n/** @enum {number} */\nconst ReadyState = {\n Unsent: 0,\n Open: 1,\n HeadersReceived: 2,\n Loading: 3,\n Done: 4,\n Cancelled: 5,\n};\nReadyState[ReadyState.Unsent] = 'Unsent';\nReadyState[ReadyState.Open] = 'Open';\nReadyState[ReadyState.HeadersReceived] = 'HeadersReceived';\nReadyState[ReadyState.Loading] = 'Loading';\nReadyState[ReadyState.Done] = 'Done';\nReadyState[ReadyState.Cancelled] = 'Cancelled';\n/** @enum {number} */\nconst ResponseType = {\n Basic: 0,\n Cors: 1,\n Default: 2,\n Error: 3,\n Opaque: 4,\n};\nResponseType[ResponseType.Basic] = 'Basic';\nResponseType[ResponseType.Cors] = 'Cors';\nResponseType[ResponseType.Default] = 'Default';\nResponseType[ResponseType.Error] = 'Error';\nResponseType[ResponseType.Opaque] = 'Opaque';\n/** @enum {number} */\nconst ContentType = {\n NONE: 0,\n JSON: 1,\n FORM: 2,\n FORM_DATA: 3,\n TEXT: 4,\n BLOB: 5,\n ARRAY_BUFFER: 6,\n};\nContentType[ContentType.NONE] = 'NONE';\nContentType[ContentType.JSON] = 'JSON';\nContentType[ContentType.FORM] = 'FORM';\nContentType[ContentType.FORM_DATA] = 'FORM_DATA';\nContentType[ContentType.TEXT] = 'TEXT';\nContentType[ContentType.BLOB] = 'BLOB';\nContentType[ContentType.ARRAY_BUFFER] = 'ARRAY_BUFFER';\n/** @enum {number} */\nconst ResponseContentType = {\n Text: 0,\n Json: 1,\n ArrayBuffer: 2,\n Blob: 3,\n};\nResponseContentType[ResponseContentType.Text] = 'Text';\nResponseContentType[ResponseContentType.Json] = 'Json';\nResponseContentType[ResponseContentType.ArrayBuffer] = 'ArrayBuffer';\nResponseContentType[ResponseContentType.Blob] = 'Blob';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Polyfill for [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers/Headers), as\n * specified in the [Fetch Spec](https://fetch.spec.whatwg.org/#headers-class).\n *\n * The only known difference between this `Headers` implementation and the spec is the\n * lack of an `entries` method.\n *\n * \\@usageNotes\n * ### Example\n *\n * ```\n * import {Headers} from '\\@angular/http';\n *\n * var firstHeaders = new Headers();\n * firstHeaders.append('Content-Type', 'image/jpeg');\n * console.log(firstHeaders.get('Content-Type')) //'image/jpeg'\n *\n * // Create headers from Plain Old JavaScript Object\n * var secondHeaders = new Headers({\n * 'X-My-Custom-Header': 'Angular'\n * });\n * console.log(secondHeaders.get('X-My-Custom-Header')); //'Angular'\n *\n * var thirdHeaders = new Headers(secondHeaders);\n * console.log(thirdHeaders.get('X-My-Custom-Header')); //'Angular'\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * \\@publicApi\n */\nclass Headers {\n // TODO(vicb): any -> string|string[]\n /**\n * @param {?=} headers\n */\n constructor(headers) {\n /**\n * \\@internal header names are lower case\n */\n this._headers = new Map();\n /**\n * \\@internal map lower case names to actual names\n */\n this._normalizedNames = new Map();\n if (!headers) {\n return;\n }\n if (headers instanceof Headers) {\n headers.forEach((values, name) => {\n values.forEach(value => this.append(name, value));\n });\n return;\n }\n Object.keys(headers).forEach((name) => {\n /** @type {?} */\n const values = Array.isArray(headers[name]) ? headers[name] : [headers[name]];\n this.delete(name);\n values.forEach(value => this.append(name, value));\n });\n }\n /**\n * Returns a new Headers instance from the given DOMString of Response Headers\n * @param {?} headersString\n * @return {?}\n */\n static fromResponseHeaderString(headersString) {\n /** @type {?} */\n const headers = new Headers();\n headersString.split('\\n').forEach(line => {\n /** @type {?} */\n const index = line.indexOf(':');\n if (index > 0) {\n /** @type {?} */\n const name = line.slice(0, index);\n /** @type {?} */\n const value = line.slice(index + 1).trim();\n headers.set(name, value);\n }\n });\n return headers;\n }\n /**\n * Appends a header to existing list of header values for a given header name.\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n append(name, value) {\n /** @type {?} */\n const values = this.getAll(name);\n if (values === null) {\n this.set(name, value);\n }\n else {\n values.push(value);\n }\n }\n /**\n * Deletes all header values for the given name.\n * @param {?} name\n * @return {?}\n */\n delete(name) {\n /** @type {?} */\n const lcName = name.toLowerCase();\n this._normalizedNames.delete(lcName);\n this._headers.delete(lcName);\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n forEach(fn) {\n this._headers.forEach((values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));\n }\n /**\n * Returns first header that matches given name.\n * @param {?} name\n * @return {?}\n */\n get(name) {\n /** @type {?} */\n const values = this.getAll(name);\n if (values === null) {\n return null;\n }\n return values.length > 0 ? values[0] : null;\n }\n /**\n * Checks for existence of header by given name.\n * @param {?} name\n * @return {?}\n */\n has(name) { return this._headers.has(name.toLowerCase()); }\n /**\n * Returns the names of the headers\n * @return {?}\n */\n keys() { return Array.from(this._normalizedNames.values()); }\n /**\n * Sets or overrides header value for given name.\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n set(name, value) {\n if (Array.isArray(value)) {\n if (value.length) {\n this._headers.set(name.toLowerCase(), [value.join(',')]);\n }\n }\n else {\n this._headers.set(name.toLowerCase(), [value]);\n }\n this.mayBeSetNormalizedName(name);\n }\n /**\n * Returns values of all headers.\n * @return {?}\n */\n values() { return Array.from(this._headers.values()); }\n /**\n * Returns string of all headers.\n * @return {?}\n */\n // TODO(vicb): returns {[name: string]: string[]}\n toJSON() {\n /** @type {?} */\n const serialized = {};\n this._headers.forEach((values, name) => {\n /** @type {?} */\n const split = [];\n values.forEach(v => split.push(...v.split(',')));\n serialized[(/** @type {?} */ (this._normalizedNames.get(name)))] = split;\n });\n return serialized;\n }\n /**\n * Returns list of header values for a given name.\n * @param {?} name\n * @return {?}\n */\n getAll(name) {\n return this.has(name) ? this._headers.get(name.toLowerCase()) || null : null;\n }\n /**\n * This method is not implemented.\n * @return {?}\n */\n entries() { throw new Error('\"entries\" method is not implemented on Headers class'); }\n /**\n * @private\n * @param {?} name\n * @return {?}\n */\n mayBeSetNormalizedName(name) {\n /** @type {?} */\n const lcName = name.toLowerCase();\n if (!this._normalizedNames.has(lcName)) {\n this._normalizedNames.set(lcName, name);\n }\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Creates a response options object to be optionally provided when instantiating a\n * {\\@link Response}.\n *\n * This class is based on the `ResponseInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#responseinit).\n *\n * All values are null by default. Typical defaults can be found in the\n * {\\@link BaseResponseOptions} class, which sub-classes `ResponseOptions`.\n *\n * This class may be used in tests to build {\\@link Response Responses} for\n * mock responses (see {\\@link MockBackend}).\n *\n * \\@usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '\\@angular/http';\n *\n * var options = new ResponseOptions({\n * body: '{\"name\":\"Jeff\"}'\n * });\n * var res = new Response(options);\n *\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * \\@publicApi\n */\nclass ResponseOptions {\n /**\n * @param {?=} opts\n */\n constructor(opts = {}) {\n const { body, status, headers, statusText, type, url } = opts;\n this.body = body != null ? body : null;\n this.status = status != null ? status : null;\n this.headers = headers != null ? headers : null;\n this.statusText = statusText != null ? statusText : null;\n this.type = type != null ? type : null;\n this.url = url != null ? url : null;\n }\n /**\n * Creates a copy of the `ResponseOptions` instance, using the optional input as values to\n * override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * This may be useful when sharing a base `ResponseOptions` object inside tests,\n * where certain properties may change from test to test.\n *\n * \\@usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '\\@angular/http';\n *\n * var options = new ResponseOptions({\n * body: {name: 'Jeff'}\n * });\n * var res = new Response(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('options.url:', options.url); // null\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * console.log('res.url:', res.url); // https://google.com\n * ```\n * @param {?=} options\n * @return {?}\n */\n merge(options) {\n return new ResponseOptions({\n body: options && options.body != null ? options.body : this.body,\n status: options && options.status != null ? options.status : this.status,\n headers: options && options.headers != null ? options.headers : this.headers,\n statusText: options && options.statusText != null ? options.statusText : this.statusText,\n type: options && options.type != null ? options.type : this.type,\n url: options && options.url != null ? options.url : this.url,\n });\n }\n}\n/**\n * Subclass of {\\@link ResponseOptions}, with default values.\n *\n * Default values:\n * * status: 200\n * * headers: empty {\\@link Headers} object\n *\n * This class could be extended and bound to the {\\@link ResponseOptions} class\n * when configuring an {\\@link Injector}, in order to override the default options\n * used by {\\@link Http} to create {\\@link Response Responses}.\n *\n * \\@usageNotes\n * ### Example\n *\n * ```typescript\n * import {provide} from '\\@angular/core';\n * import {bootstrap} from '\\@angular/platform-browser/browser';\n * import {HTTP_PROVIDERS, Headers, Http, BaseResponseOptions, ResponseOptions} from\n * '\\@angular/http';\n * import {App} from './myapp';\n *\n * class MyOptions extends BaseResponseOptions {\n * headers:Headers = new Headers({network: 'github'});\n * }\n *\n * bootstrap(App, [HTTP_PROVIDERS, {provide: ResponseOptions, useClass: MyOptions}]);\n * ```\n *\n * The options could also be extended when manually creating a {\\@link Response}\n * object.\n *\n * ### Example\n *\n * ```\n * import {BaseResponseOptions, Response} from '\\@angular/http';\n *\n * var options = new BaseResponseOptions();\n * var res = new Response(options.merge({\n * body: 'Angular',\n * headers: new Headers({framework: 'angular'})\n * }));\n * console.log('res.headers.get(\"framework\"):', res.headers.get('framework')); // angular\n * console.log('res.text():', res.text()); // Angular;\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * \\@publicApi\n */\nclass BaseResponseOptions extends ResponseOptions {\n constructor() {\n super({ status: 200, statusText: 'Ok', type: ResponseType.Default, headers: new Headers() });\n }\n}\nBaseResponseOptions.ɵfac = function BaseResponseOptions_Factory(t) { return new (t || BaseResponseOptions)(); };\nBaseResponseOptions.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: BaseResponseOptions, factory: BaseResponseOptions.ɵfac });\n/** @nocollapse */\nBaseResponseOptions.ctorParameters = () => [];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BaseResponseOptions, [{\n type: Injectable\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Abstract class from which real backends are derived.\n *\n * The primary purpose of a `ConnectionBackend` is to create new connections to fulfill a given\n * {\\@link Request}.\n *\n * @deprecated see https://angular.io/guide/http\n * \\@publicApi\n * @abstract\n */\nclass ConnectionBackend {\n}\n/**\n * Abstract class from which real connections are derived.\n *\n * @deprecated see https://angular.io/guide/http\n * \\@publicApi\n * @abstract\n */\nclass Connection {\n}\n/**\n * An XSRFStrategy configures XSRF protection (e.g. via headers) on an HTTP request.\n *\n * @deprecated see https://angular.io/guide/http\n * \\@publicApi\n * @abstract\n */\nclass XSRFStrategy {\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} method\n * @return {?}\n */\nfunction normalizeMethodName(method) {\n if (typeof method !== 'string')\n return method;\n switch (method.toUpperCase()) {\n case 'GET':\n return RequestMethod.Get;\n case 'POST':\n return RequestMethod.Post;\n case 'PUT':\n return RequestMethod.Put;\n case 'DELETE':\n return RequestMethod.Delete;\n case 'OPTIONS':\n return RequestMethod.Options;\n case 'HEAD':\n return RequestMethod.Head;\n case 'PATCH':\n return RequestMethod.Patch;\n }\n throw new Error(`Invalid request method. The method \"${method}\" is not supported.`);\n}\n/** @type {?} */\nconst isSuccess = (status) => (status >= 200 && status < 300);\n/**\n * @param {?} xhr\n * @return {?}\n */\nfunction getResponseURL(xhr) {\n if ('responseURL' in xhr) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n return null;\n}\n/**\n * @param {?} input\n * @return {?}\n */\nfunction stringToArrayBuffer(input) {\n /** @type {?} */\n const view = new Uint16Array(input.length);\n for (let i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?=} rawParams\n * @return {?}\n */\nfunction paramParser(rawParams = '') {\n /** @type {?} */\n const map = new Map();\n if (rawParams.length > 0) {\n /** @type {?} */\n const params = rawParams.split('&');\n params.forEach((param) => {\n /** @type {?} */\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1 ? [param, ''] : [param.slice(0, eqIdx), param.slice(eqIdx + 1)];\n /** @type {?} */\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * @deprecated see https://angular.io/guide/http\n * \\@publicApi\n *\n */\nclass QueryEncoder {\n /**\n * @param {?} key\n * @return {?}\n */\n encodeKey(key) { return standardEncoding(key); }\n /**\n * @param {?} value\n * @return {?}\n */\n encodeValue(value) { return standardEncoding(value); }\n}\n/**\n * @param {?} v\n * @return {?}\n */\nfunction standardEncoding(v) {\n return encodeURIComponent(v)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/gi, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';')\n .replace(/%2B/gi, '+')\n .replace(/%3D/gi, '=')\n .replace(/%3F/gi, '?')\n .replace(/%2F/gi, '/');\n}\n/**\n * Map-like representation of url search parameters, based on\n * [URLSearchParams](https://url.spec.whatwg.org/#urlsearchparams) in the url living standard,\n * with several extensions for merging URLSearchParams objects:\n * - setAll()\n * - appendAll()\n * - replaceAll()\n *\n * This class accepts an optional second parameter of ${\\@link QueryEncoder},\n * which is used to serialize parameters before making a request. By default,\n * `QueryEncoder` encodes keys and values of parameters using `encodeURIComponent`,\n * and then un-encodes certain characters that are allowed to be part of the query\n * according to IETF RFC 3986: https://tools.ietf.org/html/rfc3986.\n *\n * These are the characters that are not encoded: `! $ \\' ( ) * + , ; A 9 - . _ ~ ? /`\n *\n * If the set of allowed query characters is not acceptable for a particular backend,\n * `QueryEncoder` can be subclassed and provided as the 2nd argument to URLSearchParams.\n *\n * ```\n * import {URLSearchParams, QueryEncoder} from '\\@angular/http';\n * class MyQueryEncoder extends QueryEncoder {\n * encodeKey(k: string): string {\n * return myEncodingFunction(k);\n * }\n *\n * encodeValue(v: string): string {\n * return myEncodingFunction(v);\n * }\n * }\n *\n * let params = new URLSearchParams('', new MyQueryEncoder());\n * ```\n * @deprecated see https://angular.io/guide/http\n * \\@publicApi\n */\nclass URLSearchParams {\n /**\n * @param {?=} rawParams\n * @param {?=} queryEncoder\n */\n constructor(rawParams = '', queryEncoder = new QueryEncoder()) {\n this.rawParams = rawParams;\n this.queryEncoder = queryEncoder;\n this.paramsMap = paramParser(rawParams);\n }\n /**\n * @return {?}\n */\n clone() {\n /** @type {?} */\n const clone = new URLSearchParams('', this.queryEncoder);\n clone.appendAll(this);\n return clone;\n }\n /**\n * @param {?} param\n * @return {?}\n */\n has(param) { return this.paramsMap.has(param); }\n /**\n * @param {?} param\n * @return {?}\n */\n get(param) {\n /** @type {?} */\n const storedParam = this.paramsMap.get(param);\n return Array.isArray(storedParam) ? storedParam[0] : null;\n }\n /**\n * @param {?} param\n * @return {?}\n */\n getAll(param) { return this.paramsMap.get(param) || []; }\n /**\n * @param {?} param\n * @param {?} val\n * @return {?}\n */\n set(param, val) {\n if (val === void 0 || val === null) {\n this.delete(param);\n return;\n }\n /** @type {?} */\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(val);\n this.paramsMap.set(param, list);\n }\n // A merge operation\n // For each name-values pair in `searchParams`, perform `set(name, values[0])`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n /**\n * @param {?} searchParams\n * @return {?}\n */\n setAll(searchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n /** @type {?} */\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(value[0]);\n this.paramsMap.set(param, list);\n });\n }\n /**\n * @param {?} param\n * @param {?} val\n * @return {?}\n */\n append(param, val) {\n if (val === void 0 || val === null)\n return;\n /** @type {?} */\n const list = this.paramsMap.get(param) || [];\n list.push(val);\n this.paramsMap.set(param, list);\n }\n // A merge operation\n // For each name-values pair in `searchParams`, perform `append(name, value)`\n // for each value in `values`.\n //\n // E.g: \"a=[1,2], c=[8]\" + \"a=[3,4], b=[7]\" = \"a=[1,2,3,4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n /**\n * @param {?} searchParams\n * @return {?}\n */\n appendAll(searchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n /** @type {?} */\n const list = this.paramsMap.get(param) || [];\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n // A merge operation\n // For each name-values pair in `searchParams`, perform `delete(name)`,\n // followed by `set(name, values)`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4,5,6], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n /**\n * @param {?} searchParams\n * @return {?}\n */\n replaceAll(searchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n /** @type {?} */\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n /**\n * @return {?}\n */\n toString() {\n /** @type {?} */\n const paramsList = [];\n this.paramsMap.forEach((values, k) => {\n values.forEach(v => paramsList.push(this.queryEncoder.encodeKey(k) + '=' + this.queryEncoder.encodeValue(v)));\n });\n return paramsList.join('&');\n }\n /**\n * @param {?} param\n * @return {?}\n */\n delete(param) { this.paramsMap.delete(param); }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * HTTP request body used by both {\\@link Request} and {\\@link Response}\n * https://fetch.spec.whatwg.org/#body\n * @abstract\n */\nclass Body {\n /**\n * Attempts to return body as parsed `JSON` object, or raises an exception.\n * @return {?}\n */\n json() {\n if (typeof this._body === 'string') {\n return JSON.parse((/** @type {?} */ (this._body)));\n }\n if (this._body instanceof ArrayBuffer) {\n return JSON.parse(this.text());\n }\n return this._body;\n }\n /**\n * Returns the body as a string, presuming `toString()` can be called on the response body.\n *\n * When decoding an `ArrayBuffer`, the optional `encodingHint` parameter determines how the\n * bytes in the buffer will be interpreted. Valid values are:\n *\n * - `legacy` - incorrectly interpret the bytes as UTF-16 (technically, UCS-2). Only characters\n * in the Basic Multilingual Plane are supported, surrogate pairs are not handled correctly.\n * In addition, the endianness of the 16-bit octet pairs in the `ArrayBuffer` is not taken\n * into consideration. This is the default behavior to avoid breaking apps, but should be\n * considered deprecated.\n *\n * - `iso-8859` - interpret the bytes as ISO-8859 (which can be used for ASCII encoded text).\n * @param {?=} encodingHint\n * @return {?}\n */\n text(encodingHint = 'legacy') {\n if (this._body instanceof URLSearchParams) {\n return this._body.toString();\n }\n if (this._body instanceof ArrayBuffer) {\n switch (encodingHint) {\n case 'legacy':\n return String.fromCharCode.apply(null, new Uint16Array((/** @type {?} */ (this._body))));\n case 'iso-8859':\n return String.fromCharCode.apply(null, new Uint8Array((/** @type {?} */ (this._body))));\n default:\n throw new Error(`Invalid value for encodingHint: ${encodingHint}`);\n }\n }\n if (this._body == null) {\n return '';\n }\n if (typeof this._body === 'object') {\n return JSON.stringify(this._body, null, 2);\n }\n return this._body.toString();\n }\n /**\n * Return the body as an ArrayBuffer\n * @return {?}\n */\n arrayBuffer() {\n if (this._body instanceof ArrayBuffer) {\n return (/** @type {?} */ (this._body));\n }\n return stringToArrayBuffer(this.text());\n }\n /**\n * Returns the request's body as a Blob, assuming that body exists.\n * @return {?}\n */\n blob() {\n if (this._body instanceof Blob) {\n return (/** @type {?} */ (this._body));\n }\n if (this._body instanceof ArrayBuffer) {\n return new Blob([this._body]);\n }\n throw new Error('The request body isn\\'t either a blob or an array buffer');\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Creates `Response` instances from provided values.\n *\n * Though this object isn't\n * usually instantiated by end-users, it is the primary object interacted with when it comes time to\n * add data to a view.\n *\n * \\@usageNotes\n * ### Example\n *\n * ```\n * http.request('my-friends.txt').subscribe(response => this.friends = response.text());\n * ```\n *\n * The Response's interface is inspired by the Response constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#response-class), but is considered a static value whose body\n * can be accessed many times. There are other differences in the implementation, but this is the\n * most significant.\n *\n * @deprecated see https://angular.io/guide/http\n * \\@publicApi\n */\nclass Response extends Body {\n /**\n * @param {?} responseOptions\n */\n constructor(responseOptions) {\n super();\n this._body = responseOptions.body;\n this.status = (/** @type {?} */ (responseOptions.status));\n this.ok = (this.status >= 200 && this.status <= 299);\n this.statusText = responseOptions.statusText;\n this.headers = responseOptions.headers;\n this.type = (/** @type {?} */ (responseOptions.type));\n this.url = (/** @type {?} */ (responseOptions.url));\n }\n /**\n * @return {?}\n */\n toString() {\n return `Response with status: ${this.status} ${this.statusText} for URL: ${this.url}`;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nlet _nextRequestId = 0;\n/** @type {?} */\nconst JSONP_HOME = '__ng_jsonp__';\n/** @type {?} */\nlet _jsonpConnections = null;\n/**\n * @return {?}\n */\nfunction _getJsonpConnections() {\n /** @type {?} */\n const w = typeof window == 'object' ? window : {};\n if (_jsonpConnections === null) {\n _jsonpConnections = w[JSONP_HOME] = {};\n }\n return _jsonpConnections;\n}\n// Make sure not to evaluate this in a non-browser environment!\nclass BrowserJsonp {\n // Construct a ' + '');\n printWindow.document.close();\n printWindow.focus();\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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction getInstance(element, component) {\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 */\nfunction addInstance(element, instance) {\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 */\nfunction uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\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/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\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 = /** @__PURE__ @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 if (!Object.prototype.hasOwnProperty.call(res, prop[\"\" + key])) {\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 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 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 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 ret.mapper[parseInt(i.toString(), 10)] = digits[parseInt(i.toString(), 10)];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\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 */\nfunction getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nvar defaultCurrencyCode = 'USD';\nvar NumberFormat = null;\nvar DateFormat = null;\nfunction setDefaultCurrencyCode(value) { defaultCurrencyCode = value; }\nfunction setNumberFormat(value) { NumberFormat = value; }\nfunction setDateFormat(value) { DateFormat = value; }\nvar regExp = RegExp;\nvar 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 @typescript-eslint/no-namespace\nvar IntlBase;\n(function (IntlBase) {\n // eslint-disable-next-line security/detect-unsafe-regex\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n // eslint-disable-next-line security/detect-unsafe-regex\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 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 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 = ParserBase.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 * @param {string} ignoreCurrency ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol, ignoreCurrency) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = ignoreCurrency ? '$' : 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[parseInt(i.toString(), 10)]] = customNumberFormat(formatSplit[parseInt(i.toString(), 10)], 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[parseInt(i.toString(), 10)]] = 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(/[dM]([^dM])[dM]/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 = ParserBase.getNumberMapper(dependable.parserObject, ParserBase.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 IntlBase.processSymbol = processSymbol;\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 ParserBase.getNumberMapper(dependable.parserObject, ParserBase.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\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 = /** @__PURE__ @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 * @returns {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 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 var header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 = /** @__PURE__ @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 = !isNullOrUndefined(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 = !isNullOrUndefined(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 (isNullOrUndefined(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNullOrUndefined(this.fetchRequest)) {\n this.data = !isNullOrUndefined(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 }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\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 (!isNullOrUndefined(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 = /** @__PURE__ @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 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 {string} ?\n */\n Browser.getEvent = function (event) {\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 // Set 'isPointer' for pointer-enabled devices (e.g., iPad on Safari)\n browserDetails['isPointer'] = ('pointerEnabled' in window.navigator);\n }\n if (typeof window !== 'undefined' && window.Capacitor && window.Capacitor.getPlatform() === 'ios') {\n browserDetails['isPointer'] = false;\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}());\n\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 = /** @__PURE__ @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 = EventHandler.addOrGetEventData(element);\n var copyData = extend([], undefined, 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}());\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\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 */\nfunction 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 */\nfunction matches(element, selector) {\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 */\nfunction 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 */\nfunction containsClass(ele, className) {\n if (isObject(ele)) {\n var regExp = RegExp;\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 */\nfunction 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\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nvar Observer = /** @__PURE__ @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 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 var eventsArr = this.boundedEvents['notifyExternalChange'];\n if (eventsArr) {\n for (var i = 0; i < eventsArr.length; i++) {\n var curContext = eventsArr[parseInt(i.toString(), 10)].context;\n if (curContext && curContext.detectFunction && curContext.randomId && curContext.isReactMock) {\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 return Object.prototype.hasOwnProperty.call(this.boundedEvents, 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}());\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar isColEName = new RegExp(']');\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n * @returns {void} ?\n */\nvar Base = /** @__PURE__ @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 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 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 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 Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\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 camelcase\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}());\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 */\nfunction 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 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 * @returns {void} ?\n * @private\n */\nfunction removeChildInstance(element) {\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 var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\nvar proxyToRaw;\nvar setProxyToRaw = function (toRaw) { proxyToRaw = toRaw; };\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!Object.prototype.hasOwnProperty.call(instance.properties, 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 */\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 if (!Object.prototype.hasOwnProperty.call(this.properties, 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 var oldVal = Object.prototype.hasOwnProperty.call(this.properties, 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 */\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 */\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (Object.prototype.hasOwnProperty.call(this.properties, 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 if (!Object.prototype.hasOwnProperty.call(this.properties, 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 if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], '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 if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], '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 var oldValueCollection = Object.prototype.hasOwnProperty.call(this.properties, 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 if (!Object.prototype.hasOwnProperty.call(this.properties, 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 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 = getArrayModel(keyString + (prop.length - 1), newValueParse, !this.controlParent, dFunc);\n this.serverDataBind(model, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop': {\n Array.prototype[\"\" + dFunc].apply(prop);\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\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/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * @private\n */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction Event$1() {\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 * @private\n */\nfunction 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 target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\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 */\nfunction CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n if (!Object.prototype.hasOwnProperty.call(builderFunction, '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 if (Object.prototype.hasOwnProperty.call(context, '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\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\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 = /** @__PURE__ @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 * @returns {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 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$1()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event$1()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event$1()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event$1()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\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 */\nfunction 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 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}\nvar 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 */\nfunction enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nvar 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 */\nfunction setGlobalAnimation(value) {\n animationMode = value;\n}\n/**\n * Defines the global animation modes for all components.\n */\nvar 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/* eslint-disable @typescript-eslint/no-explicit-any */\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @__PURE__ @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}());\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To detect the changes for inner properties.\n *\n * @private\n * @returns {void} ?\n */\nvar ChildProperty = /** @__PURE__ @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 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 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}());\n\n/***\n * Hijri parser\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nvar 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\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'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nvar 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/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat$1 = /** @__PURE__ @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 = IntlBase.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: IntlBase.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = IntlBase.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n IntlBase.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : IntlBase.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = IntlBase.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : ParserBase.getNumberMapper(dependable.parserObject, ParserBase.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 formatOptions.weekday = getValue('days.' + IntlBase.monthIndex[\"\" + len], dateObject);\n }\n else {\n formatOptions.weekday = dependable.dateObject[\"\" + IntlBase.days][\"\" + standalone][IntlBase.monthIndex[\"\" + len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n formatOptions.month = getValue('months.' + IntlBase.monthIndex[\"\" + len], dateObject);\n }\n else {\n formatOptions.month = dependable.dateObject[\"\" + IntlBase.month][\"\" + standalone][IntlBase.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 var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n }\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(IntlBase.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 ret += options.month[\"\" + curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\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 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 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 var desig = value.getHours() < 12 ? 'am' : 'pm';\n ret += options.designator[\"\" + desig];\n break;\n }\n case 'G': {\n var dec = value.getFullYear() < 0 ? 0 : 1;\n var retu = options.era[\"\" + dec];\n if (isNullOrUndefined(retu)) {\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n }\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z': {\n var timezone = value.getTimezoneOffset();\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 }\n case ':':\n ret += options.numMapper.numberSymbols[\"\" + timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = IntlBase.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 += ParserBase.convertValueParts(curstr, IntlBase.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}());\nsetDateFormat(DateFormat$1);\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\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$1 = /** @__PURE__ @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 = IntlBase.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n ParserBase.getNumberMapper(dependable.parserObject, ParserBase.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : IntlBase.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol, option.ignoreCurrency);\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) && !(IntlBase.formatRegex.test(option.format))) {\n cOptions = IntlBase.customFormat(option.format, dOptions, dependable.numericObject);\n if (!isUndefined(fOptions.useGrouping) && fOptions.useGrouping) {\n fOptions.useGrouping = cOptions.pData.useGrouping;\n }\n }\n else {\n extend(fOptions, IntlBase.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = IntlBase.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, IntlBase.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = IntlBase.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = IntlBase.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 IntlBase.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(IntlBase.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 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[parseInt(i.toString(), 10)] === '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 fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = ParserBase.convertValueParts(fValue, IntlBase.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 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}());\nsetNumberFormat(NumberFormat$1);\n\nvar standalone$1 = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter$1 = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @__PURE__ @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 = IntlBase.getDependables(cldr, culture, option.calendar);\n var numOptions = ParserBase.getCurrentNumericOptions(dependable.parserObject, ParserBase.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = IntlBase.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n IntlBase.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 = IntlBase.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: IntlBase.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(IntlBase.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 var numMapper = isBlazor() ? dependable.parserObject.numbers\n : ParserBase.getNumberMapper(dependable.parserObject, ParserBase.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 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 var weekData = void 0;\n if (isBlazor()) {\n weekData = getValue('days.' + IntlBase.monthIndex[\"\" + len], dependable.dateObject);\n }\n else {\n weekData = dependable.dateObject[\"\" + IntlBase.days][\"\" + standalone$1][IntlBase.monthIndex[\"\" + len]];\n }\n var weekObject = ParserBase.reverseObject(weekData);\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n }\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 monthData = getValue('months.' + IntlBase.monthIndex[\"\" + len], dependable.dateObject);\n }\n else {\n monthData = dependable.dateObject[\"\" + month][\"\" + standalone$1][IntlBase.monthIndex[\"\" + len]];\n }\n parseOptions[\"\" + charKey] = ParserBase.reverseObject(monthData);\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 var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n }\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 var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n parseOptions[\"\" + charKey] = ParserBase.reverseObject(periodValur);\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + ')';\n break;\n }\n case 'G': {\n canUpdate = true;\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n parseOptions[\"\" + charKey] = ParserBase.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + '?)';\n break;\n }\n case 'z': {\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n parseOptions[\"\" + charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n var tzone = parseOptions[\"\" + charKey];\n hourOnly = (len < 4);\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 }\n case '\\'': {\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n }\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 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 /**\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 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 res[timeSetter$1[\"\" + 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 res[\"\" + timeSetter$1[\"\" + 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 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 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 matchString = ((prop !== 'month') && (prop === 'designator') && parseOptions.culture && parseOptions.culture.indexOf('en-') !== -1 && cultureOptions.indexOf(parseOptions.culture) === -1)\n ? matchString.toLowerCase() : matchString;\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 = ParserBase.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 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 var 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}());\n\nvar regExp$1 = RegExp;\nvar parseRegex = new regExp$1('^([^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 = /** @__PURE__ @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 = IntlBase.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n if ((IntlBase.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, IntlBase.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, IntlBase.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n var numOptions = ParserBase.getCurrentNumericOptions(dependable.parserObject, ParserBase.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = ParserBase.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = IntlBase.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, IntlBase.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = IntlBase.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = IntlBase.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 IntlBase.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 = ParserBase.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = ParserBase.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}());\n\n/**\n * Specifies the observer used for external change detection.\n */\nvar onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nvar rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nvar cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nvar defaultCulture = 'en-US';\nvar mapper$1 = ['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 = /** @__PURE__ @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$1.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$1.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}());\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 */\nfunction 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 */\nfunction setCurrencyCode(currencyCode) {\n setDefaultCurrencyCode(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 */\nfunction 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 */\nfunction 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 */\nfunction getNumericObject(locale, type) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper$1[0]];\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper$1[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 */\nfunction getNumberDependable(locale, currency) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\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 */\nfunction getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper$1[1]];\n}\n\nvar 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 = /** @__PURE__ @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '28';\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=Mjg=&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[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0)\n - 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 */\nfunction registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nvar validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nvar getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nvar 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\\u00AE Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion\\u00AE technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion\\u00AE 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\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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;\nvar 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 */\nfunction enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @__PURE__ @class */ (function (_super) {\n __extends$1(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 _this.isAngular = false;\n _this.isReact = false;\n _this.isVue = 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 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 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 Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Adding unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('pagehide', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('pagehide', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Throw a warning for the required modules to be injected.\n var ignoredComponents = {\n schedule: 'all',\n diagram: 'all',\n PdfViewer: 'all',\n grid: ['logger'],\n richtexteditor: ['link', 'table', 'image', 'audio', 'video', 'formatPainter', 'emojiPicker', 'pasteCleanup', 'htmlEditor', 'toolbar', 'importExport'],\n treegrid: ['filter'],\n gantt: ['tooltip'],\n chart: ['Export', 'Zoom'],\n accumulationchart: ['Export'],\n 'query-builder': 'all'\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 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 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 Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\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 Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\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 = 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 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$1([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate$1([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate$1([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate$1([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\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\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate$2([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @__PURE__ @class */ (function (_super) {\n __extends$2(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 _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n 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 var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n if (this.dragArea) {\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n if (this.isPreventScroll) {\n dragValue = this.getProcessedPositionValue({\n top: (this.position.top - this.parentClientRect.top - 2) + 'px',\n left: (this.position.left - this.parentClientRect.left - 2) + 'px'\n });\n }\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 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 Draggable.prototype.getScrollParent = function (node, reverse) {\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 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 Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version, 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 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$2([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate$2([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate$2([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate$2([\n Property(false)\n ], Draggable.prototype, \"isPreventScroll\", void 0);\n __decorate$2([\n Event$1()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate$2([\n Event$1()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate$2([\n Event$1()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate$2([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate$2([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate$2([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate$2([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate$2([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate$2([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate$2([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate$2([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate$2([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate$2([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate$2([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @__PURE__ @class */ (function (_super) {\n __extends$3(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 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$3([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate$3([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate$3([\n Event$1()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate$3([\n Event$1()\n ], Droppable.prototype, \"over\", void 0);\n __decorate$3([\n Event$1()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate$3([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$4(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 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$4([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate$4([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate$4([\n Event$1()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate$4([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\n\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 = /** @__PURE__ @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}());\n\nvar __extends$5 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$5(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$5([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$5(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 tDistance = _this.swipeSettings.swipeThresholdDistance;\n var eSwipeArgs = extend(undefined, _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 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 EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n var 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 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$5([\n Event$1()\n ], Touch.prototype, \"tap\", void 0);\n __decorate$5([\n Event$1()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate$5([\n Event$1()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate$5([\n Event$1()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate$5([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate$5([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate$5([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate$5([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\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// * 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 */\nfunction 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 var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\"' + evalExpResult + '\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n 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, 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 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 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 var fNameSpace = (helper && Object.prototype.hasOwnProperty.call(helper, 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 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 }\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/**\n * Replace double slashes to single slash.\n *\n * @param {string} tempStr ?\n * @returns {any} ?\n */\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n return tempStr;\n }\n else {\n return tempStr.replace(SINGLE_SLASH, double);\n }\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/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\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 this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n if (item.selector === 'a[href]') {\n elements.forEach(function (element) {\n if ((element.getAttribute(item.attribute)).replace(/\\t|\\s|&/, '').indexOf('javascript:alert') !== -1) {\n element.removeAttribute(item.attribute);\n }\n });\n }\n else {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\n\nexport { Ajax, Animation, Base, Browser, ChildProperty, Collection, CollectionFactory, Complex, ComplexFactory, Component, CreateBuilder, Draggable, Droppable, Event$1 as Event, EventHandler, Fetch, GlobalAnimationMode, HijriParser, Internationalization, IntlBase, KeyboardEvents, L10n, ModuleLoader, NotifyPropertyChanges, Observer, Position, Property, SanitizeHtmlHelper, SwipeSettings, Touch, addClass, addInstance, animationMode, append, attributes, blazorCultureFormats, blazorTemplates, classList, cldrData, cloneNode, closest, compareElementParent, compile$1 as compile, componentList, containerObject, containsClass, createElement, createInstance, createLicenseOverlay, debounce, defaultCulture, defaultCurrencyCode, deleteObject, detach, disableBlazorMode, enableBlazorMode, enableRipple, enableRtl, enableVersionBasedPersistence, extend, formatUnit, getAttributeOrDefault, getComponent, getDefaultDateObject, getElement, getEnumValue, getInstance, getNumberDependable, getNumericObject, getRandomId, getTemplateEngine, getUniqueID, getValue, getVersion, includeInnerHTML, initializeCSPTemplate, isBlazor, isNullOrUndefined, isObject, isObjectArray, isRippleEnabled, isUndefined, isVisible, loadCldr, matches, merge, onIntlChange, prepend, print, proxyToRaw, queryParams, registerLicense, remove, removeChildInstance, removeClass, resetBlazorTemplate, rightToLeft, rippleEffect, select, selectAll, setCulture, setCurrencyCode, setDateFormat, setDefaultCurrencyCode, setGlobalAnimation, setImmediate, setNumberFormat, setProxyToRaw, setStyleAttribute, setTemplateEngine, setValue, siblings, throwError, uniqueID, updateBlazorTemplate, validateLicense, versionBasedStatePersistence };\n","/**\n * @ag-grid-community/all-modules - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * If value is undefined, null or blank, returns null, otherwise returns the value\n * @param {T} value\n * @returns {T | null}\n */\nfunction makeNull(value) {\n if (value == null || value === '') {\n return null;\n }\n return value;\n}\nfunction exists(value, allowEmptyString) {\n if (allowEmptyString === void 0) { allowEmptyString = false; }\n return value != null && (value !== '' || allowEmptyString);\n}\nfunction missing(value) {\n return !exists(value);\n}\nfunction missingOrEmpty(value) {\n return value == null || value.length === 0;\n}\nfunction toStringOrNull(value) {\n return value != null && typeof value.toString === 'function' ? value.toString() : null;\n}\n// for parsing html attributes, where we want empty strings and missing attributes to be undefined\nfunction attrToNumber(value) {\n if (value === undefined) {\n // undefined or empty means ignore the value\n return;\n }\n if (value === null || value === '') {\n // null or blank means clear\n return null;\n }\n if (typeof value === 'number') {\n return isNaN(value) ? undefined : value;\n }\n var valueParsed = parseInt(value, 10);\n return isNaN(valueParsed) ? undefined : valueParsed;\n}\n// for parsing html attributes, where we want empty strings and missing attributes to be undefined\nfunction attrToBoolean(value) {\n if (value === undefined) {\n // undefined or empty means ignore the value\n return;\n }\n if (value === null || value === '') {\n // null means clear\n return false;\n }\n if (typeof value === 'boolean') {\n // if simple boolean, return the boolean\n return value;\n }\n // if equal to the string 'true' (ignoring case) then return true\n return (/true/i).test(value);\n}\n// for parsing html attributes, where we want empty strings and missing attributes to be undefined\nfunction attrToString(value) {\n if (value == null || value === '') {\n return;\n }\n return value;\n}\n/** @deprecated */\nfunction referenceCompare(left, right) {\n if (left == null && right == null) {\n return true;\n }\n if (left == null && right != null) {\n return false;\n }\n if (left != null && right == null) {\n return false;\n }\n return left === right;\n}\nfunction jsonEquals(val1, val2) {\n var val1Json = val1 ? JSON.stringify(val1) : null;\n var val2Json = val2 ? JSON.stringify(val2) : null;\n return val1Json === val2Json;\n}\nfunction defaultComparator(valueA, valueB, accentedCompare) {\n if (accentedCompare === void 0) { accentedCompare = false; }\n var valueAMissing = valueA == null;\n var valueBMissing = valueB == null;\n // this is for aggregations sum and avg, where the result can be a number that is wrapped.\n // if we didn't do this, then the toString() value would be used, which would result in\n // the strings getting used instead of the numbers.\n if (valueA && valueA.toNumber) {\n valueA = valueA.toNumber();\n }\n if (valueB && valueB.toNumber) {\n valueB = valueB.toNumber();\n }\n if (valueAMissing && valueBMissing) {\n return 0;\n }\n if (valueAMissing) {\n return -1;\n }\n if (valueBMissing) {\n return 1;\n }\n function doQuickCompare(a, b) {\n return (a > b ? 1 : (a < b ? -1 : 0));\n }\n if (typeof valueA !== 'string') {\n return doQuickCompare(valueA, valueB);\n }\n if (!accentedCompare) {\n return doQuickCompare(valueA, valueB);\n }\n try {\n // using local compare also allows chinese comparisons\n return valueA.localeCompare(valueB);\n }\n catch (e) {\n // if something wrong with localeCompare, eg not supported\n // by browser, then just continue with the quick one\n return doQuickCompare(valueA, valueB);\n }\n}\nfunction values(object) {\n if (object instanceof Set || object instanceof Map) {\n var arr_1 = [];\n object.forEach(function (value) { return arr_1.push(value); });\n return arr_1;\n }\n return Object.values(object);\n}\n\nvar GenericUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n makeNull: makeNull,\n exists: exists,\n missing: missing,\n missingOrEmpty: missingOrEmpty,\n toStringOrNull: toStringOrNull,\n attrToNumber: attrToNumber,\n attrToBoolean: attrToBoolean,\n attrToString: attrToString,\n referenceCompare: referenceCompare,\n jsonEquals: jsonEquals,\n defaultComparator: defaultComparator,\n values: values\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ColumnKeyCreator = /** @class */ (function () {\n function ColumnKeyCreator() {\n this.existingKeys = {};\n }\n ColumnKeyCreator.prototype.addExistingKeys = function (keys) {\n for (var i = 0; i < keys.length; i++) {\n this.existingKeys[keys[i]] = true;\n }\n };\n ColumnKeyCreator.prototype.getUniqueKey = function (colId, colField) {\n // in case user passed in number for colId, convert to string\n colId = toStringOrNull(colId);\n var count = 0;\n while (true) {\n var idToTry = void 0;\n if (colId) {\n idToTry = colId;\n if (count !== 0) {\n idToTry += '_' + count;\n }\n }\n else if (colField) {\n idToTry = colField;\n if (count !== 0) {\n idToTry += '_' + count;\n }\n }\n else {\n idToTry = '' + count;\n }\n if (!this.existingKeys[idToTry]) {\n this.existingKeys[idToTry] = true;\n return idToTry;\n }\n count++;\n }\n };\n return ColumnKeyCreator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction iterateObject(object, callback) {\n if (object == null) {\n return;\n }\n if (Array.isArray(object)) {\n object.forEach(function (value, index) { return callback(\"\" + index, value); });\n }\n else {\n Object.keys(object).forEach(function (key) { return callback(key, object[key]); });\n }\n}\nfunction cloneObject(object) {\n var copy = {};\n var keys = Object.keys(object);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = object[key];\n copy[key] = value;\n }\n return copy;\n}\nfunction deepCloneObject(object) {\n return JSON.parse(JSON.stringify(object));\n}\n// returns copy of an object, doing a deep clone of any objects with that object.\n// this is used for eg creating copies of Column Definitions, where we want to\n// deep copy all objects, but do not want to deep copy functions (eg when user provides\n// a function or class for colDef.cellRenderer)\nfunction deepCloneDefinition(object, keysToSkip) {\n if (!object) {\n return;\n }\n var obj = object;\n var res = {};\n Object.keys(obj).forEach(function (key) {\n if (keysToSkip && keysToSkip.indexOf(key) >= 0) {\n return;\n }\n var value = obj[key];\n // 'simple object' means a bunch of key/value pairs, eg {filter: 'myFilter'}. it does\n // NOT include the following:\n // 1) arrays\n // 2) functions or classes (eg ColumnAPI instance)\n var sourceIsSimpleObject = isNonNullObject(value) && value.constructor === Object;\n if (sourceIsSimpleObject) {\n res[key] = deepCloneDefinition(value);\n }\n else {\n res[key] = value;\n }\n });\n return res;\n}\nfunction getProperty(object, key) {\n return object[key];\n}\nfunction setProperty(object, key, value) {\n object[key] = value;\n}\n/**\n * Will copy the specified properties from `source` into the equivalent properties on `target`, ignoring properties with\n * a value of `undefined`.\n */\nfunction copyPropertiesIfPresent(source, target) {\n var properties = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n properties[_i - 2] = arguments[_i];\n }\n properties.forEach(function (p) { return copyPropertyIfPresent(source, target, p); });\n}\n/**\n * Will copy the specified property from `source` into the equivalent property on `target`, unless the property has a\n * value of `undefined`. If a transformation is provided, it will be applied to the value before being set on `target`.\n */\nfunction copyPropertyIfPresent(source, target, property, transform) {\n var value = getProperty(source, property);\n if (value !== undefined) {\n setProperty(target, property, transform ? transform(value) : value);\n }\n}\nfunction getAllKeysInObjects(objects) {\n var allValues = {};\n objects.filter(function (obj) { return obj != null; }).forEach(function (obj) {\n Object.keys(obj).forEach(function (key) { return allValues[key] = null; });\n });\n return Object.keys(allValues);\n}\nfunction getAllValuesInObject(obj) {\n if (!obj) {\n return [];\n }\n var anyObject = Object;\n if (typeof anyObject.values === 'function') {\n return anyObject.values(obj);\n }\n var ret = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj.propertyIsEnumerable(key)) {\n ret.push(obj[key]);\n }\n }\n return ret;\n}\nfunction mergeDeep(dest, source, copyUndefined, makeCopyOfSimpleObjects) {\n if (copyUndefined === void 0) { copyUndefined = true; }\n if (makeCopyOfSimpleObjects === void 0) { makeCopyOfSimpleObjects = false; }\n if (!exists(source)) {\n return;\n }\n iterateObject(source, function (key, sourceValue) {\n var destValue = dest[key];\n if (destValue === sourceValue) {\n return;\n }\n // when creating params, we don't want to just copy objects over. otherwise merging ColDefs (eg DefaultColDef\n // and Column Types) would result in params getting shared between objects.\n // by putting an empty value into destValue first, it means we end up copying over values from\n // the source object, rather than just copying in the source object in it's entirety.\n if (makeCopyOfSimpleObjects) {\n var objectIsDueToBeCopied = destValue == null && sourceValue != null;\n if (objectIsDueToBeCopied) {\n // 'simple object' means a bunch of key/value pairs, eg {filter: 'myFilter'}, as opposed\n // to a Class instance (such as ColumnAPI instance).\n var sourceIsSimpleObject = typeof sourceValue === 'object' && sourceValue.constructor === Object;\n var dontCopy = sourceIsSimpleObject;\n if (dontCopy) {\n destValue = {};\n dest[key] = destValue;\n }\n }\n }\n if (isNonNullObject(sourceValue) && isNonNullObject(destValue) && !Array.isArray(destValue)) {\n mergeDeep(destValue, sourceValue, copyUndefined, makeCopyOfSimpleObjects);\n }\n else if (copyUndefined || sourceValue !== undefined) {\n dest[key] = sourceValue;\n }\n });\n}\nfunction missingOrEmptyObject(value) {\n return missing(value) || Object.keys(value).length === 0;\n}\nfunction get(source, expression, defaultValue) {\n if (source == null) {\n return defaultValue;\n }\n var keys = expression.split('.');\n var objectToRead = source;\n while (keys.length > 1) {\n objectToRead = objectToRead[keys.shift()];\n if (objectToRead == null) {\n return defaultValue;\n }\n }\n var value = objectToRead[keys[0]];\n return value != null ? value : defaultValue;\n}\nfunction set(target, expression, value) {\n if (target == null) {\n return;\n }\n var keys = expression.split('.');\n var objectToUpdate = target;\n while (keys.length > 1) {\n objectToUpdate = objectToUpdate[keys.shift()];\n if (objectToUpdate == null) {\n return;\n }\n }\n objectToUpdate[keys[0]] = value;\n}\nfunction deepFreeze(object) {\n Object.freeze(object);\n values(object).forEach(function (v) {\n if (isNonNullObject(v) || typeof v === 'function') {\n deepFreeze(v);\n }\n });\n return object;\n}\nfunction getValueUsingField(data, field, fieldContainsDots) {\n if (!field || !data) {\n return;\n }\n // if no '.', then it's not a deep value\n if (!fieldContainsDots) {\n return data[field];\n }\n // otherwise it is a deep value, so need to dig for it\n var fields = field.split('.');\n var currentObject = data;\n for (var i = 0; i < fields.length; i++) {\n if (currentObject == null) {\n return undefined;\n }\n currentObject = currentObject[fields[i]];\n }\n return currentObject;\n}\n// used by ColumnAPI and GridAPI to remove all references, so keeping grid in memory resulting in a\n// memory leak if user is not disposing of the GridAPI or ColumnApi references\nfunction removeAllReferences(obj, objectName) {\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n // we want to replace all the @autowired services, which are objects. any simple types (boolean, string etc)\n // we don't care about\n if (typeof value === 'object') {\n obj[key] = undefined;\n }\n });\n var proto = Object.getPrototypeOf(obj);\n var properties = {};\n Object.keys(proto).forEach(function (key) {\n var value = proto[key];\n // leave all basic types - this is needed for GridAPI to leave the \"destroyed: boolean\" attribute alone\n if (typeof value === 'function') {\n var func = function () {\n console.warn(\"AG Grid: \" + objectName + \" function \" + key + \"() cannot be called as the grid has been destroyed.\\n Please don't call grid API functions on destroyed grids - as a matter of fact you shouldn't\\n be keeping the API reference, your application has a memory leak! Remove the API reference\\n when the grid is destroyed.\");\n };\n properties[key] = { value: func, writable: true };\n }\n });\n Object.defineProperties(obj, properties);\n}\nfunction isNonNullObject(value) {\n return typeof value === 'object' && value !== null;\n}\n\nvar ObjectUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n iterateObject: iterateObject,\n cloneObject: cloneObject,\n deepCloneObject: deepCloneObject,\n deepCloneDefinition: deepCloneDefinition,\n getProperty: getProperty,\n setProperty: setProperty,\n copyPropertiesIfPresent: copyPropertiesIfPresent,\n copyPropertyIfPresent: copyPropertyIfPresent,\n getAllKeysInObjects: getAllKeysInObjects,\n getAllValuesInObject: getAllValuesInObject,\n mergeDeep: mergeDeep,\n missingOrEmptyObject: missingOrEmptyObject,\n get: get,\n set: set,\n deepFreeze: deepFreeze,\n getValueUsingField: getValueUsingField,\n removeAllReferences: removeAllReferences,\n isNonNullObject: isNonNullObject\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar doOnceFlags = {};\n/**\n * If the key was passed before, then doesn't execute the func\n * @param {Function} func\n * @param {string} key\n */\nfunction doOnce(func, key) {\n if (doOnceFlags[key]) {\n return;\n }\n func();\n doOnceFlags[key] = true;\n}\nfunction getFunctionName(funcConstructor) {\n // for every other browser in the world\n if (funcConstructor.name) {\n return funcConstructor.name;\n }\n // for the pestilence that is ie11\n var matches = /function\\s+([^\\(]+)/.exec(funcConstructor.toString());\n return matches && matches.length === 2 ? matches[1].trim() : null;\n}\nfunction isFunction(val) {\n return !!(val && val.constructor && val.call && val.apply);\n}\nfunction executeInAWhile(funcs) {\n executeAfter(funcs, 400);\n}\nvar executeNextVMTurnFuncs = [];\nvar executeNextVMTurnPending = false;\nfunction executeNextVMTurn(func) {\n executeNextVMTurnFuncs.push(func);\n if (executeNextVMTurnPending) {\n return;\n }\n executeNextVMTurnPending = true;\n window.setTimeout(function () {\n var funcsCopy = executeNextVMTurnFuncs.slice();\n executeNextVMTurnFuncs.length = 0;\n executeNextVMTurnPending = false;\n funcsCopy.forEach(function (func) { return func(); });\n }, 0);\n}\nfunction executeAfter(funcs, milliseconds) {\n if (milliseconds === void 0) { milliseconds = 0; }\n if (funcs.length > 0) {\n window.setTimeout(function () { return funcs.forEach(function (func) { return func(); }); }, milliseconds);\n }\n}\n/**\n * from https://stackoverflow.com/questions/24004791/can-someone-explain-the-debounce-function-in-javascript\n * @param {Function} func The function to be debounced\n * @param {number} wait The time in ms to debounce\n * @param {boolean} immediate If it should run immediately or wait for the initial debounce delay\n * @return {Function} The debounced function\n */\nfunction debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n // 'private' variable for instance\n // The returned function will be able to reference this due to closure.\n // Each call to the returned function will share this common timer.\n var timeout;\n // Calling debounce returns a new anonymous function\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // reference the context and args for the setTimeout function\n var context = this;\n // Should the function be called now? If immediate is true\n // and not already in a timeout then the answer is: Yes\n var callNow = immediate && !timeout;\n // This is the basic debounce behaviour where you can call this\n // function several times, but it will only execute once\n // [before or after imposing a delay].\n // Each time the returned function is called, the timer starts over.\n window.clearTimeout(timeout);\n // Set the new timeout\n timeout = window.setTimeout(function () {\n // Inside the timeout function, clear the timeout variable\n // which will let the next execution run when in 'immediate' mode\n timeout = null;\n // Check if the function already ran with the immediate flag\n if (!immediate) {\n // Call the original function with apply\n // apply lets you define the 'this' object as well as the arguments\n // (both captured before setTimeout)\n func.apply(context, args);\n }\n }, wait);\n // Immediate mode and no wait timer? Execute the function..\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n/**\n * @param {Function} func The function to be throttled\n * @param {number} wait The time in ms to throttle\n * @return {Function} The throttled function\n */\nfunction throttle(func, wait) {\n var previousCall = 0;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = this;\n var currentCall = new Date().getTime();\n if (currentCall - previousCall < wait) {\n return;\n }\n previousCall = currentCall;\n func.apply(context, args);\n };\n}\nfunction waitUntil(condition, callback, timeout, timeoutMessage) {\n if (timeout === void 0) { timeout = 100; }\n var timeStamp = new Date().getTime();\n var interval = null;\n var executed = false;\n var internalCallback = function () {\n var reachedTimeout = ((new Date().getTime()) - timeStamp) > timeout;\n if (condition() || reachedTimeout) {\n callback();\n executed = true;\n if (interval != null) {\n window.clearInterval(interval);\n interval = null;\n }\n if (reachedTimeout && timeoutMessage) {\n console.warn(timeoutMessage);\n }\n }\n };\n internalCallback();\n if (!executed) {\n interval = window.setInterval(internalCallback, 10);\n }\n}\nfunction compose() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return function (arg) { return fns.reduce(function (composed, f) { return f(composed); }, arg); };\n}\nfunction callIfPresent(func) {\n if (func) {\n func();\n }\n}\nvar noop = function () { return; };\n\nvar FunctionUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n doOnce: doOnce,\n getFunctionName: getFunctionName,\n isFunction: isFunction,\n executeInAWhile: executeInAWhile,\n executeNextVMTurn: executeNextVMTurn,\n executeAfter: executeAfter,\n debounce: debounce,\n throttle: throttle,\n waitUntil: waitUntil,\n compose: compose,\n callIfPresent: callIfPresent,\n noop: noop\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar Context = /** @class */ (function () {\n function Context(params, logger) {\n this.beanWrappers = {};\n this.destroyed = false;\n if (!params || !params.beanClasses) {\n return;\n }\n this.contextParams = params;\n this.logger = logger;\n this.logger.log(\">> creating ag-Application Context\");\n this.createBeans();\n var beanInstances = this.getBeanInstances();\n this.wireBeans(beanInstances);\n this.logger.log(\">> ag-Application Context ready - component is alive\");\n }\n Context.prototype.getBeanInstances = function () {\n return values(this.beanWrappers).map(function (beanEntry) { return beanEntry.beanInstance; });\n };\n Context.prototype.createBean = function (bean, afterPreCreateCallback) {\n if (!bean) {\n throw Error(\"Can't wire to bean since it is null\");\n }\n this.wireBeans([bean], afterPreCreateCallback);\n return bean;\n };\n Context.prototype.wireBeans = function (beanInstances, afterPreCreateCallback) {\n this.autoWireBeans(beanInstances);\n this.methodWireBeans(beanInstances);\n this.callLifeCycleMethods(beanInstances, 'preConstructMethods');\n // the callback sets the attributes, so the component has access to attributes\n // before postConstruct methods in the component are executed\n if (exists(afterPreCreateCallback)) {\n beanInstances.forEach(afterPreCreateCallback);\n }\n this.callLifeCycleMethods(beanInstances, 'postConstructMethods');\n };\n Context.prototype.createBeans = function () {\n var _this = this;\n // register all normal beans\n this.contextParams.beanClasses.forEach(this.createBeanWrapper.bind(this));\n // register override beans, these will overwrite beans above of same name\n // instantiate all beans - overridden beans will be left out\n iterateObject(this.beanWrappers, function (key, beanEntry) {\n var constructorParamsMeta;\n if (beanEntry.bean.__agBeanMetaData && beanEntry.bean.__agBeanMetaData.autowireMethods && beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor) {\n constructorParamsMeta = beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor;\n }\n var constructorParams = _this.getBeansForParameters(constructorParamsMeta, beanEntry.bean.name);\n var newInstance = applyToConstructor(beanEntry.bean, constructorParams);\n beanEntry.beanInstance = newInstance;\n });\n var createdBeanNames = Object.keys(this.beanWrappers).join(', ');\n this.logger.log(\"created beans: \" + createdBeanNames);\n };\n // tslint:disable-next-line\n Context.prototype.createBeanWrapper = function (BeanClass) {\n var metaData = BeanClass.__agBeanMetaData;\n if (!metaData) {\n var beanName = void 0;\n if (BeanClass.prototype.constructor) {\n beanName = getFunctionName(BeanClass.prototype.constructor);\n }\n else {\n beanName = \"\" + BeanClass;\n }\n console.error(\"Context item \" + beanName + \" is not a bean\");\n return;\n }\n var beanEntry = {\n bean: BeanClass,\n beanInstance: null,\n beanName: metaData.beanName\n };\n this.beanWrappers[metaData.beanName] = beanEntry;\n };\n Context.prototype.autoWireBeans = function (beanInstances) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n var attributes = metaData.agClassAttributes;\n if (!attributes) {\n return;\n }\n attributes.forEach(function (attribute) {\n var otherBean = _this.lookupBeanInstance(beanName, attribute.beanName, attribute.optional);\n beanInstance[attribute.attributeName] = otherBean;\n });\n });\n });\n };\n Context.prototype.methodWireBeans = function (beanInstances) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n iterateObject(metaData.autowireMethods, function (methodName, wireParams) {\n // skip constructor, as this is dealt with elsewhere\n if (methodName === \"agConstructor\") {\n return;\n }\n var initParams = _this.getBeansForParameters(wireParams, beanName);\n beanInstance[methodName].apply(beanInstance, initParams);\n });\n });\n });\n };\n Context.prototype.forEachMetaDataInHierarchy = function (beanInstance, callback) {\n var prototype = Object.getPrototypeOf(beanInstance);\n while (prototype != null) {\n var constructor = prototype.constructor;\n if (constructor.hasOwnProperty('__agBeanMetaData')) {\n var metaData = constructor.__agBeanMetaData;\n var beanName = this.getBeanName(constructor);\n callback(metaData, beanName);\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n };\n Context.prototype.getBeanName = function (constructor) {\n if (constructor.__agBeanMetaData && constructor.__agBeanMetaData.beanName) {\n return constructor.__agBeanMetaData.beanName;\n }\n var constructorString = constructor.toString();\n var beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n return beanName;\n };\n Context.prototype.getBeansForParameters = function (parameters, beanName) {\n var _this = this;\n var beansList = [];\n if (parameters) {\n iterateObject(parameters, function (paramIndex, otherBeanName) {\n var otherBean = _this.lookupBeanInstance(beanName, otherBeanName);\n beansList[Number(paramIndex)] = otherBean;\n });\n }\n return beansList;\n };\n Context.prototype.lookupBeanInstance = function (wiringBean, beanName, optional) {\n if (optional === void 0) { optional = false; }\n if (beanName === \"context\") {\n return this;\n }\n if (this.contextParams.providedBeanInstances && this.contextParams.providedBeanInstances.hasOwnProperty(beanName)) {\n return this.contextParams.providedBeanInstances[beanName];\n }\n var beanEntry = this.beanWrappers[beanName];\n if (beanEntry) {\n return beanEntry.beanInstance;\n }\n if (!optional) {\n console.error(\"AG Grid: unable to find bean reference \" + beanName + \" while initialising \" + wiringBean);\n }\n return null;\n };\n Context.prototype.callLifeCycleMethods = function (beanInstances, lifeCycleMethod) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) { return _this.callLifeCycleMethodsOnBean(beanInstance, lifeCycleMethod); });\n };\n Context.prototype.callLifeCycleMethodsOnBean = function (beanInstance, lifeCycleMethod, methodToIgnore) {\n // putting all methods into a map removes duplicates\n var allMethods = {};\n // dump methods from each level of the metadata hierarchy\n this.forEachMetaDataInHierarchy(beanInstance, function (metaData) {\n var methods = metaData[lifeCycleMethod];\n if (methods) {\n methods.forEach(function (methodName) {\n if (methodName != methodToIgnore) {\n allMethods[methodName] = true;\n }\n });\n }\n });\n var allMethodsList = Object.keys(allMethods);\n allMethodsList.forEach(function (methodName) { return beanInstance[methodName](); });\n };\n Context.prototype.getBean = function (name) {\n return this.lookupBeanInstance(\"getBean\", name, true);\n };\n Context.prototype.destroy = function () {\n if (this.destroyed) {\n return;\n }\n this.logger.log(\">> Shutting down ag-Application Context\");\n var beanInstances = this.getBeanInstances();\n this.destroyBeans(beanInstances);\n this.contextParams.providedBeanInstances = null;\n this.destroyed = true;\n this.logger.log(\">> ag-Application Context shut down - component is dead\");\n };\n Context.prototype.destroyBean = function (bean) {\n if (!bean) {\n return;\n }\n this.destroyBeans([bean]);\n };\n Context.prototype.destroyBeans = function (beans) {\n var _this = this;\n if (!beans) {\n return [];\n }\n beans.forEach(function (bean) {\n _this.callLifeCycleMethodsOnBean(bean, 'preDestroyMethods', 'destroy');\n // call destroy() explicitly if it exists\n var beanAny = bean;\n if (typeof beanAny.destroy === 'function') {\n beanAny.destroy();\n }\n });\n return [];\n };\n return Context;\n}());\n// taken from: http://stackoverflow.com/questions/3362471/how-can-i-call-a-javascript-constructor-using-call-or-apply\n// allows calling 'apply' on a constructor\nfunction applyToConstructor(constructor, argArray) {\n var args = [null].concat(argArray);\n var factoryFunction = constructor.bind.apply(constructor, args);\n return new factoryFunction();\n}\nfunction PreConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps$1(target.constructor);\n if (!props.preConstructMethods) {\n props.preConstructMethods = [];\n }\n props.preConstructMethods.push(methodName);\n}\nfunction PostConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps$1(target.constructor);\n if (!props.postConstructMethods) {\n props.postConstructMethods = [];\n }\n props.postConstructMethods.push(methodName);\n}\nfunction PreDestroy(target, methodName, descriptor) {\n var props = getOrCreateProps$1(target.constructor);\n if (!props.preDestroyMethods) {\n props.preDestroyMethods = [];\n }\n props.preDestroyMethods.push(methodName);\n}\nfunction Bean(beanName) {\n return function (classConstructor) {\n var props = getOrCreateProps$1(classConstructor);\n props.beanName = beanName;\n };\n}\nfunction Autowired(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, false, target, propertyKey, null);\n };\n}\nfunction Optional(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, true, target, propertyKey, null);\n };\n}\nfunction autowiredFunc(target, name, optional, classPrototype, methodOrAttributeName, index) {\n if (name === null) {\n console.error(\"AG Grid: Autowired name should not be null\");\n return;\n }\n if (typeof index === \"number\") {\n console.error(\"AG Grid: Autowired should be on an attribute\");\n return;\n }\n // it's an attribute on the class\n var props = getOrCreateProps$1(target.constructor);\n if (!props.agClassAttributes) {\n props.agClassAttributes = [];\n }\n props.agClassAttributes.push({\n attributeName: methodOrAttributeName,\n beanName: name,\n optional: optional\n });\n}\nfunction Qualifier(name) {\n return function (classPrototype, methodOrAttributeName, index) {\n var constructor = typeof classPrototype == \"function\" ? classPrototype : classPrototype.constructor;\n var props;\n if (typeof index === \"number\") {\n // it's a parameter on a method\n var methodName = void 0;\n if (methodOrAttributeName) {\n props = getOrCreateProps$1(constructor);\n methodName = methodOrAttributeName;\n }\n else {\n props = getOrCreateProps$1(constructor);\n methodName = \"agConstructor\";\n }\n if (!props.autowireMethods) {\n props.autowireMethods = {};\n }\n if (!props.autowireMethods[methodName]) {\n props.autowireMethods[methodName] = {};\n }\n props.autowireMethods[methodName][index] = name;\n }\n };\n}\nfunction getOrCreateProps$1(target) {\n if (!target.hasOwnProperty(\"__agBeanMetaData\")) {\n target.__agBeanMetaData = {};\n }\n return target.__agBeanMetaData;\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$i = (undefined && undefined.__assign) || function () {\n __assign$i = 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$i.apply(this, arguments);\n};\nvar __decorate$2A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$a = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar EventService = /** @class */ (function () {\n function EventService() {\n this.allSyncListeners = new Map();\n this.allAsyncListeners = new Map();\n this.globalSyncListeners = new Set();\n this.globalAsyncListeners = new Set();\n this.asyncFunctionsQueue = [];\n this.scheduled = false;\n // using an object performs better than a Set for the number of different events we have\n this.firedEvents = {};\n }\n // because this class is used both inside the context and outside the context, we do not\n // use autowired attributes, as that would be confusing, as sometimes the attributes\n // would be wired, and sometimes not.\n //\n // the global event servers used by AG Grid is autowired by the context once, and this\n // setBeans method gets called once.\n //\n // the times when this class is used outside of the context (eg RowNode has an instance of this\n // class) then it is not a bean, and this setBeans method is not called.\n EventService.prototype.setBeans = function (loggerFactory, gridOptionsWrapper, frameworkOverrides, globalEventListener) {\n if (globalEventListener === void 0) { globalEventListener = null; }\n this.frameworkOverrides = frameworkOverrides;\n this.gridOptionsWrapper = gridOptionsWrapper;\n if (globalEventListener) {\n var async = gridOptionsWrapper.useAsyncEvents();\n this.addGlobalListener(globalEventListener, async);\n }\n };\n EventService.prototype.getListeners = function (eventType, async, autoCreateListenerCollection) {\n var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n var listeners = listenerMap.get(eventType);\n // Note: 'autoCreateListenerCollection' should only be 'true' if a listener is about to be added. For instance\n // getListeners() is also called during event dispatch even though no listeners are added. This measure protects\n // against 'memory bloat' as empty collections will prevent the RowNode's event service from being removed after\n // the RowComp is destroyed, see noRegisteredListenersExist() below.\n if (!listeners && autoCreateListenerCollection) {\n listeners = new Set();\n listenerMap.set(eventType, listeners);\n }\n return listeners;\n };\n EventService.prototype.noRegisteredListenersExist = function () {\n return this.allSyncListeners.size === 0 && this.allAsyncListeners.size === 0 &&\n this.globalSyncListeners.size === 0 && this.globalAsyncListeners.size === 0;\n };\n EventService.prototype.addEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n this.getListeners(eventType, async, true).add(listener);\n };\n EventService.prototype.removeEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n var listeners = this.getListeners(eventType, async, false);\n if (!listeners) {\n return;\n }\n listeners.delete(listener);\n if (listeners.size === 0) {\n var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n listenerMap.delete(eventType);\n }\n };\n EventService.prototype.addGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n (async ? this.globalAsyncListeners : this.globalSyncListeners).add(listener);\n };\n EventService.prototype.removeGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n (async ? this.globalAsyncListeners : this.globalSyncListeners).delete(listener);\n };\n EventService.prototype.dispatchEvent = function (event) {\n var agEvent = event;\n if (this.gridOptionsWrapper) {\n // Apply common properties to all dispatched events if this event service has had its beans set with gridOptionsWrapper.\n // Note there are multiple instances of EventService that are used local to components which do not set gridOptionsWrapper. \n agEvent = __assign$i(__assign$i({}, event), { api: this.gridOptionsWrapper.getApi(), columnApi: this.gridOptionsWrapper.getColumnApi(), context: this.gridOptionsWrapper.getContext() });\n }\n this.dispatchToListeners(agEvent, true);\n this.dispatchToListeners(agEvent, false);\n this.firedEvents[agEvent.type] = true;\n };\n EventService.prototype.dispatchEventOnce = function (event) {\n if (!this.firedEvents[event.type]) {\n this.dispatchEvent(event);\n }\n };\n EventService.prototype.dispatchToListeners = function (event, async) {\n var _this = this;\n var eventType = event.type;\n var processEventListeners = function (listeners) { return listeners.forEach(function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(event); });\n }\n else {\n listener(event);\n }\n }); };\n var listeners = this.getListeners(eventType, async, false);\n if (listeners) {\n processEventListeners(listeners);\n }\n var globalListeners = async ? this.globalAsyncListeners : this.globalSyncListeners;\n globalListeners.forEach(function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return _this.frameworkOverrides.dispatchEvent(eventType, function () { return listener(eventType, event); }, true); });\n }\n else {\n _this.frameworkOverrides.dispatchEvent(eventType, function () { return listener(eventType, event); }, true);\n }\n });\n };\n // this gets called inside the grid's thread, for each event that it\n // wants to set async. the grid then batches the events into one setTimeout()\n // because setTimeout() is an expensive operation. ideally we would have\n // each event in it's own setTimeout(), but we batch for performance.\n EventService.prototype.dispatchAsync = function (func) {\n // add to the queue for executing later in the next VM turn\n this.asyncFunctionsQueue.push(func);\n // check if timeout is already scheduled. the first time the grid calls\n // this within it's thread turn, this should be false, so it will schedule\n // the 'flush queue' method the first time it comes here. then the flag is\n // set to 'true' so it will know it's already scheduled for subsequent calls.\n if (!this.scheduled) {\n // if not scheduled, schedule one\n window.setTimeout(this.flushAsyncQueue.bind(this), 0);\n // mark that it is scheduled\n this.scheduled = true;\n }\n };\n // this happens in the next VM turn only, and empties the queue of events\n EventService.prototype.flushAsyncQueue = function () {\n this.scheduled = false;\n // we take a copy, because the event listener could be using\n // the grid, which would cause more events, which would be potentially\n // added to the queue, so safe to take a copy, the new events will\n // get executed in a later VM turn rather than risk updating the\n // queue as we are flushing it.\n var queueCopy = this.asyncFunctionsQueue.slice();\n this.asyncFunctionsQueue = [];\n // execute the queue\n queueCopy.forEach(function (func) { return func(); });\n };\n __decorate$2A([\n __param$a(0, Qualifier('loggerFactory')),\n __param$a(1, Qualifier('gridOptionsWrapper')),\n __param$a(2, Qualifier('frameworkOverrides')),\n __param$a(3, Qualifier('globalEventListener'))\n ], EventService.prototype, \"setBeans\", null);\n EventService = __decorate$2A([\n Bean('eventService')\n ], EventService);\n return EventService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar Constants = /** @class */ (function () {\n function Constants() {\n }\n Constants.ROW_BUFFER_SIZE = 10;\n Constants.LAYOUT_INTERVAL = 500;\n Constants.BATCH_WAIT_MILLIS = 50;\n Constants.EXPORT_TYPE_DRAG_COPY = 'dragCopy';\n Constants.EXPORT_TYPE_CLIPBOARD = 'clipboard';\n Constants.EXPORT_TYPE_EXCEL = 'excel';\n Constants.EXPORT_TYPE_CSV = 'csv';\n Constants.ROW_MODEL_TYPE_INFINITE = 'infinite';\n Constants.ROW_MODEL_TYPE_VIEWPORT = 'viewport';\n Constants.ROW_MODEL_TYPE_CLIENT_SIDE = 'clientSide';\n Constants.ROW_MODEL_TYPE_SERVER_SIDE = 'serverSide';\n Constants.ALWAYS = 'always';\n Constants.ONLY_WHEN_GROUPING = 'onlyWhenGrouping';\n Constants.PINNED_TOP = 'top';\n Constants.PINNED_BOTTOM = 'bottom';\n Constants.DOM_LAYOUT_NORMAL = 'normal';\n Constants.DOM_LAYOUT_PRINT = 'print';\n Constants.DOM_LAYOUT_AUTO_HEIGHT = 'autoHeight';\n Constants.GROUP_AUTO_COLUMN_ID = 'ag-Grid-AutoColumn';\n Constants.SOURCE_PASTE = 'paste';\n Constants.PINNED_RIGHT = 'right';\n Constants.PINNED_LEFT = 'left';\n Constants.SORT_ASC = 'asc';\n Constants.SORT_DESC = 'desc';\n Constants.INPUT_SELECTOR = 'input, select, button, textarea';\n Constants.FOCUSABLE_SELECTOR = '[tabindex], input, select, button, textarea';\n Constants.FOCUSABLE_EXCLUDE = '.ag-hidden, .ag-hidden *, [disabled], .ag-disabled, .ag-disabled *';\n return Constants;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ModuleNames;\n(function (ModuleNames) {\n // when using modules, user references this\n ModuleNames[\"CommunityCoreModule\"] = \"@ag-grid-community/core\";\n // when not using modules, user references this\n ModuleNames[\"CommunityAllModules\"] = \"@ag-grid-community/all\";\n // community modules\n ModuleNames[\"InfiniteRowModelModule\"] = \"@ag-grid-community/infinite-row-model\";\n ModuleNames[\"ClientSideRowModelModule\"] = \"@ag-grid-community/client-side-row-model\";\n ModuleNames[\"CsvExportModule\"] = \"@ag-grid-community/csv-export\";\n // enterprise core - users never import on this, but other enterprise modules do\n ModuleNames[\"EnterpriseCoreModule\"] = \"@ag-grid-enterprise/core\";\n // when not using modules, user references this\n ModuleNames[\"EnterpriseAllModules\"] = \"@ag-grid-enterprise/all\";\n // enterprise modules\n ModuleNames[\"RowGroupingModule\"] = \"@ag-grid-enterprise/row-grouping\";\n ModuleNames[\"ColumnToolPanelModule\"] = \"@ag-grid-enterprise/column-tool-panel\";\n ModuleNames[\"FiltersToolPanelModule\"] = \"@ag-grid-enterprise/filter-tool-panel\";\n ModuleNames[\"MenuModule\"] = \"@ag-grid-enterprise/menu\";\n ModuleNames[\"SetFilterModule\"] = \"@ag-grid-enterprise/set-filter\";\n ModuleNames[\"MultiFilterModule\"] = \"@ag-grid-enterprise/multi-filter\";\n ModuleNames[\"StatusBarModule\"] = \"@ag-grid-enterprise/status-bar\";\n ModuleNames[\"SideBarModule\"] = \"@ag-grid-enterprise/side-bar\";\n ModuleNames[\"RangeSelectionModule\"] = \"@ag-grid-enterprise/range-selection\";\n ModuleNames[\"MasterDetailModule\"] = \"@ag-grid-enterprise/master-detail\";\n ModuleNames[\"RichSelectModule\"] = \"@ag-grid-enterprise/rich-select\";\n ModuleNames[\"GridChartsModule\"] = \"@ag-grid-enterprise/charts\";\n ModuleNames[\"ViewportRowModelModule\"] = \"@ag-grid-enterprise/viewport-row-model\";\n ModuleNames[\"ServerSideRowModelModule\"] = \"@ag-grid-enterprise/server-side-row-model\";\n ModuleNames[\"ExcelExportModule\"] = \"@ag-grid-enterprise/excel-export\";\n ModuleNames[\"ClipboardModule\"] = \"@ag-grid-enterprise/clipboard\";\n ModuleNames[\"SparklinesModule\"] = \"@ag-grid-enterprise/sparklines\";\n // framework wrappers currently don't provide beans, comps etc, so no need to be modules,\n // however i argue they should be as in theory they 'could' provide beans etc\n ModuleNames[\"AngularModule\"] = \"@ag-grid-community/angular\";\n ModuleNames[\"ReactModule\"] = \"@ag-grid-community/react\";\n ModuleNames[\"VueModule\"] = \"@ag-grid-community/vue\";\n ModuleNames[\"PolymerModule\"] = \"@ag-grid-community/polymer\";\n // and then this, which is definitely not a grid module, as it should not have any dependency\n // on the grid (ie shouldn't even reference the Module interface)\n // ChartsModule = \"@ag-grid-community/charts-core\",\n})(ModuleNames || (ModuleNames = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ModuleRegistry = /** @class */ (function () {\n function ModuleRegistry() {\n }\n ModuleRegistry.register = function (module, moduleBased) {\n if (moduleBased === void 0) { moduleBased = true; }\n ModuleRegistry.modulesMap[module.moduleName] = module;\n if (ModuleRegistry.moduleBased === undefined) {\n ModuleRegistry.moduleBased = moduleBased;\n }\n else {\n if (ModuleRegistry.moduleBased !== moduleBased) {\n doOnce(function () {\n console.warn(\"AG Grid: You are mixing modules (i.e. @ag-grid-community/core) and packages (ag-grid-community) - you can only use one or the other of these mechanisms.\");\n console.warn('Please see https://www.ag-grid.com/javascript-grid/packages-modules/ for more information.');\n }, 'ModulePackageCheck');\n }\n }\n };\n // noinspection JSUnusedGlobalSymbols\n ModuleRegistry.registerModules = function (modules, moduleBased) {\n if (moduleBased === void 0) { moduleBased = true; }\n if (!modules) {\n return;\n }\n modules.forEach(function (module) { return ModuleRegistry.register(module, moduleBased); });\n };\n ModuleRegistry.assertRegistered = function (moduleName, reason) {\n if (this.isRegistered(moduleName)) {\n return true;\n }\n var warningKey = reason + moduleName;\n var warningMessage;\n if (ModuleRegistry.moduleBased) {\n warningMessage = \"AG Grid: unable to use \" + reason + \" as module \" + moduleName + \" is not present. Please see: https://www.ag-grid.com/javascript-grid/modules/\";\n }\n else {\n warningMessage = \"AG Grid: unable to use \" + reason + \" as package 'ag-grid-enterprise' is not present. Please see: https://www.ag-grid.com/javascript-grid/packages/\";\n }\n doOnce(function () {\n console.warn(warningMessage);\n }, warningKey);\n return false;\n };\n ModuleRegistry.isRegistered = function (moduleName) {\n return !!ModuleRegistry.modulesMap[moduleName];\n };\n ModuleRegistry.getRegisteredModules = function () {\n return values(ModuleRegistry.modulesMap);\n };\n ModuleRegistry.isPackageBased = function () {\n return !ModuleRegistry.moduleBased;\n };\n // having in a map a) removes duplicates and b) allows fast lookup\n ModuleRegistry.modulesMap = {};\n return ModuleRegistry;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar instanceIdSequence$4 = 0;\n// Wrapper around a user provide column definition. The grid treats the column definition as ready only.\n// This class contains all the runtime information about a column, plus some logic (the definition has no logic).\n// This class implements both interfaces ColumnGroupChild and ProvidedColumnGroupChild as the class can\n// appear as a child of either the original tree or the displayed tree. However the relevant group classes\n// for each type only implements one, as each group can only appear in it's associated tree (eg ProvidedColumnGroup\n// can only appear in OriginalColumn tree).\nvar Column = /** @class */ (function () {\n function Column(colDef, userProvidedColDef, colId, primary) {\n // used by React (and possibly other frameworks) as key for rendering\n this.instanceId = instanceIdSequence$4++;\n // The measured height of this column's header when autoHeaderHeight is enabled\n this.autoHeaderHeight = null;\n this.moving = false;\n this.menuVisible = false;\n this.filterActive = false;\n this.eventService = new EventService();\n this.rowGroupActive = false;\n this.pivotActive = false;\n this.aggregationActive = false;\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.colId = colId;\n this.primary = primary;\n this.setState(colDef);\n }\n Column.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n Column.prototype.setState = function (colDef) {\n // sort\n if (colDef.sort !== undefined) {\n if (colDef.sort === Constants.SORT_ASC || colDef.sort === Constants.SORT_DESC) {\n this.sort = colDef.sort;\n }\n }\n else {\n if (colDef.initialSort === Constants.SORT_ASC || colDef.initialSort === Constants.SORT_DESC) {\n this.sort = colDef.initialSort;\n }\n }\n // sortIndex\n var sortIndex = attrToNumber(colDef.sortIndex);\n var initialSortIndex = attrToNumber(colDef.initialSortIndex);\n if (sortIndex !== undefined) {\n if (sortIndex !== null) {\n this.sortIndex = sortIndex;\n }\n }\n else {\n if (initialSortIndex !== null) {\n this.sortIndex = initialSortIndex;\n }\n }\n // hide\n var hide = attrToBoolean(colDef.hide);\n var initialHide = attrToBoolean(colDef.initialHide);\n if (hide !== undefined) {\n this.visible = !hide;\n }\n else {\n this.visible = !initialHide;\n }\n // pinned\n if (colDef.pinned !== undefined) {\n this.setPinned(colDef.pinned);\n }\n else {\n this.setPinned(colDef.initialPinned);\n }\n // flex\n var flex = attrToNumber(colDef.flex);\n var initialFlex = attrToNumber(colDef.initialFlex);\n if (flex !== undefined) {\n this.flex = flex;\n }\n else if (initialFlex !== undefined) {\n this.flex = initialFlex;\n }\n };\n // gets called when user provides an alternative colDef, eg\n Column.prototype.setColDef = function (colDef, userProvidedColDef) {\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.initMinAndMaxWidths();\n this.initDotNotation();\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_COL_DEF_CHANGED, \"api\"));\n };\n /**\n * Returns the column definition provided by the application.\n * This may not be correct, as items can be superseded by default column options.\n * However it's useful for comparison, eg to know which application column definition matches that column.\n */\n Column.prototype.getUserProvidedColDef = function () {\n return this.userProvidedColDef;\n };\n Column.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n /** Returns the parent column group, if column grouping is active. */\n Column.prototype.getParent = function () {\n return this.parent;\n };\n Column.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = originalParent;\n };\n Column.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n // this is done after constructor as it uses gridOptionsWrapper\n Column.prototype.initialise = function () {\n this.initMinAndMaxWidths();\n this.resetActualWidth('gridInitializing');\n this.initDotNotation();\n this.validate();\n };\n Column.prototype.initDotNotation = function () {\n var suppressDotNotation = this.gridOptionsWrapper.isSuppressFieldDotNotation();\n this.fieldContainsDots = exists(this.colDef.field) && this.colDef.field.indexOf('.') >= 0 && !suppressDotNotation;\n this.tooltipFieldContainsDots = exists(this.colDef.tooltipField) && this.colDef.tooltipField.indexOf('.') >= 0 && !suppressDotNotation;\n };\n Column.prototype.initMinAndMaxWidths = function () {\n var colDef = this.colDef;\n this.minWidth = this.columnUtils.calculateColMinWidth(colDef);\n this.maxWidth = this.columnUtils.calculateColMaxWidth(colDef);\n };\n Column.prototype.resetActualWidth = function (source) {\n if (source === void 0) { source = 'api'; }\n var initialWidth = this.columnUtils.calculateColInitialWidth(this.colDef);\n this.setActualWidth(initialWidth, source, true);\n };\n Column.prototype.isEmptyGroup = function () {\n return false;\n };\n Column.prototype.isRowGroupDisplayed = function (colId) {\n if (missing(this.colDef) || missing(this.colDef.showRowGroup)) {\n return false;\n }\n var showingAllGroups = this.colDef.showRowGroup === true;\n var showingThisGroup = this.colDef.showRowGroup === colId;\n return showingAllGroups || showingThisGroup;\n };\n /** Returns `true` if column is a primary column, `false` if secondary. Secondary columns are used for pivoting. */\n Column.prototype.isPrimary = function () {\n return this.primary;\n };\n /** Returns `true` if column filtering is allowed. */\n Column.prototype.isFilterAllowed = function () {\n // filter defined means it's a string, class or true.\n // if its false, null or undefined then it's false.\n var filterDefined = !!this.colDef.filter || !!this.colDef.filterFramework;\n return filterDefined;\n };\n Column.prototype.isFieldContainsDots = function () {\n return this.fieldContainsDots;\n };\n Column.prototype.isTooltipFieldContainsDots = function () {\n return this.tooltipFieldContainsDots;\n };\n Column.prototype.validate = function () {\n var colDefAny = this.colDef;\n function warnOnce(msg, key, obj) {\n doOnce(function () {\n if (obj) {\n console.warn(msg, obj);\n }\n else {\n doOnce(function () { return console.warn(msg); }, key);\n }\n }, key);\n }\n var usingCSRM = this.gridOptionsWrapper.isRowModelDefault();\n if (usingCSRM && !ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule)) {\n var rowGroupingItems = ['enableRowGroup', 'rowGroup', 'rowGroupIndex', 'enablePivot', 'enableValue', 'pivot', 'pivotIndex', 'aggFunc'];\n rowGroupingItems.forEach(function (item) {\n if (exists(colDefAny[item])) {\n if (ModuleRegistry.isPackageBased()) {\n warnOnce(\"AG Grid: \" + item + \" is only valid in ag-grid-enterprise, your column definition should not have \" + item, 'ColumnRowGroupingMissing' + item);\n }\n else {\n warnOnce(\"AG Grid: \" + item + \" is only valid with AG Grid Enterprise Module \" + ModuleNames.RowGroupingModule + \" - your column definition should not have \" + item, 'ColumnRowGroupingMissing' + item);\n }\n }\n });\n }\n if (!ModuleRegistry.isRegistered(ModuleNames.RichSelectModule)) {\n if (this.colDef.cellEditor === 'agRichSelect' || this.colDef.cellEditor === 'agRichSelectCellEditor') {\n if (ModuleRegistry.isPackageBased()) {\n warnOnce(\"AG Grid: \" + this.colDef.cellEditor + \" can only be used with ag-grid-enterprise\", 'ColumnRichSelectMissing');\n }\n else {\n warnOnce(\"AG Grid: \" + this.colDef.cellEditor + \" can only be used with AG Grid Enterprise Module \" + ModuleNames.RichSelectModule, 'ColumnRichSelectMissing');\n }\n }\n }\n if (this.gridOptionsWrapper.isTreeData()) {\n var itemsNotAllowedWithTreeData = ['rowGroup', 'rowGroupIndex', 'pivot', 'pivotIndex'];\n itemsNotAllowedWithTreeData.forEach(function (item) {\n if (exists(colDefAny[item])) {\n warnOnce(\"AG Grid: \" + item + \" is not possible when doing tree data, your column definition should not have \" + item, 'TreeDataCannotRowGroup');\n }\n });\n }\n if (exists(this.colDef.width) && typeof this.colDef.width !== 'number') {\n warnOnce('AG Grid: colDef.width should be a number, not ' + typeof this.colDef.width, 'ColumnCheck_asdfawef');\n }\n if (colDefAny.pinnedRowCellRenderer) {\n warnOnce('AG Grid: pinnedRowCellRenderer no longer exists, use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned. This was an unfortunate (but necessary) change we had to do to allow future plans we have of re-skinng the data grid in frameworks such as React, Angular and Vue. See https://www.ag-grid.com/javascript-grid/cell-rendering/#many-renderers-one-column', 'colDef.pinnedRowCellRenderer-deprecated');\n }\n if (colDefAny.pinnedRowCellRendererParams) {\n warnOnce('AG Grid: pinnedRowCellRenderer no longer exists, use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned. This was an unfortunate (but necessary) change we had to do to allow future plans we have of re-skinng the data grid in frameworks such as React, Angular and Vue. See https://www.ag-grid.com/javascript-grid/cell-rendering/#many-renderers-one-column', 'colDef.pinnedRowCellRenderer-deprecated');\n }\n if (colDefAny.pinnedRowCellRendererFramework) {\n warnOnce('AG Grid: pinnedRowCellRenderer no longer exists, use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned. This was an unfortunate (but necessary) change we had to do to allow future plans we have of re-skinng the data grid in frameworks such as React, Angular and Vue. See https://www.ag-grid.com/javascript-grid/cell-rendering/#many-renderers-one-column', 'colDef.pinnedRowCellRenderer-deprecated');\n }\n if (colDefAny.pinnedRowValueGetter) {\n warnOnce('AG Grid: pinnedRowCellRenderer is deprecated, use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned. This was an unfortunate (but necessary) change we had to do to allow future plans we have of re-skinng the data grid in frameworks such as React, Angular and Vue.', 'colDef.pinnedRowCellRenderer-deprecated');\n }\n };\n /** Add an event listener to the column. */\n Column.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n /** Remove event listener from the column. */\n Column.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n Column.prototype.createColumnFunctionCallbackParams = function (rowNode) {\n return {\n node: rowNode,\n data: rowNode.data,\n column: this,\n colDef: this.colDef,\n context: this.gridOptionsWrapper.getContext(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n };\n Column.prototype.isSuppressNavigable = function (rowNode) {\n // if boolean set, then just use it\n if (typeof this.colDef.suppressNavigable === 'boolean') {\n return this.colDef.suppressNavigable;\n }\n // if function, then call the function to find out\n if (typeof this.colDef.suppressNavigable === 'function') {\n var params = this.createColumnFunctionCallbackParams(rowNode);\n var userFunc = this.colDef.suppressNavigable;\n return userFunc(params);\n }\n return false;\n };\n Column.prototype.isCellEditable = function (rowNode) {\n // only allow editing of groups if the user has this option enabled\n if (rowNode.group && !this.gridOptionsWrapper.isEnableGroupEdit()) {\n return false;\n }\n return this.isColumnFunc(rowNode, this.colDef.editable);\n };\n Column.prototype.isSuppressFillHandle = function () {\n return !!attrToBoolean(this.colDef.suppressFillHandle);\n };\n Column.prototype.isAutoHeight = function () {\n return !!attrToBoolean(this.colDef.autoHeight);\n };\n Column.prototype.isAutoHeaderHeight = function () {\n return !!attrToBoolean(this.colDef.autoHeaderHeight);\n };\n Column.prototype.isRowDrag = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.rowDrag);\n };\n Column.prototype.isDndSource = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.dndSource);\n };\n Column.prototype.isCellCheckboxSelection = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.checkboxSelection);\n };\n Column.prototype.isSuppressPaste = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef ? this.colDef.suppressPaste : null);\n };\n Column.prototype.isResizable = function () {\n return !!attrToBoolean(this.colDef.resizable);\n };\n Column.prototype.isColumnFunc = function (rowNode, value) {\n // if boolean set, then just use it\n if (typeof value === 'boolean') {\n return value;\n }\n // if function, then call the function to find out\n if (typeof value === 'function') {\n var params = this.createColumnFunctionCallbackParams(rowNode);\n var editableFunc = value;\n return editableFunc(params);\n }\n return false;\n };\n Column.prototype.setMoving = function (moving, source) {\n if (source === void 0) { source = \"api\"; }\n this.moving = moving;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MOVING_CHANGED, source));\n };\n Column.prototype.createColumnEvent = function (type, source) {\n return {\n type: type,\n column: this,\n columns: [this],\n source: source,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n };\n Column.prototype.isMoving = function () {\n return this.moving;\n };\n /** If sorting is active, returns the sort direction e.g. `'asc'` or `'desc'`. */\n Column.prototype.getSort = function () {\n return this.sort;\n };\n Column.prototype.setSort = function (sort, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.sort !== sort) {\n this.sort = sort;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_SORT_CHANGED, source));\n }\n };\n Column.prototype.setMenuVisible = function (visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.menuVisible !== visible) {\n this.menuVisible = visible;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MENU_VISIBLE_CHANGED, source));\n }\n };\n Column.prototype.isMenuVisible = function () {\n return this.menuVisible;\n };\n Column.prototype.isSortAscending = function () {\n return this.sort === Constants.SORT_ASC;\n };\n Column.prototype.isSortDescending = function () {\n return this.sort === Constants.SORT_DESC;\n };\n Column.prototype.isSortNone = function () {\n return missing(this.sort);\n };\n Column.prototype.isSorting = function () {\n return exists(this.sort);\n };\n Column.prototype.getSortIndex = function () {\n return this.sortIndex;\n };\n Column.prototype.setSortIndex = function (sortOrder) {\n this.sortIndex = sortOrder;\n };\n Column.prototype.setAggFunc = function (aggFunc) {\n this.aggFunc = aggFunc;\n };\n /** If aggregation is set for the column, returns the aggregation function. */\n Column.prototype.getAggFunc = function () {\n return this.aggFunc;\n };\n Column.prototype.getLeft = function () {\n return this.left;\n };\n Column.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n Column.prototype.getRight = function () {\n return this.left + this.actualWidth;\n };\n Column.prototype.setLeft = function (left, source) {\n if (source === void 0) { source = \"api\"; }\n this.oldLeft = this.left;\n if (this.left !== left) {\n this.left = left;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LEFT_CHANGED, source));\n }\n };\n /** Returns `true` if filter is active on the column. */\n Column.prototype.isFilterActive = function () {\n return this.filterActive;\n };\n // additionalEventAttributes is used by provided simple floating filter, so it can add 'floatingFilter=true' to the event\n Column.prototype.setFilterActive = function (active, source, additionalEventAttributes) {\n if (source === void 0) { source = \"api\"; }\n if (this.filterActive !== active) {\n this.filterActive = active;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FILTER_ACTIVE_CHANGED, source));\n }\n var filterChangedEvent = this.createColumnEvent(Column.EVENT_FILTER_CHANGED, source);\n if (additionalEventAttributes) {\n mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n this.eventService.dispatchEvent(filterChangedEvent);\n };\n Column.prototype.setPinned = function (pinned) {\n if (pinned === true || pinned === Constants.PINNED_LEFT) {\n this.pinned = Constants.PINNED_LEFT;\n }\n else if (pinned === Constants.PINNED_RIGHT) {\n this.pinned = Constants.PINNED_RIGHT;\n }\n else {\n this.pinned = null;\n }\n };\n Column.prototype.setFirstRightPinned = function (firstRightPinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, source));\n }\n };\n Column.prototype.setLastLeftPinned = function (lastLeftPinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LAST_LEFT_PINNED_CHANGED, source));\n }\n };\n Column.prototype.isFirstRightPinned = function () {\n return this.firstRightPinned;\n };\n Column.prototype.isLastLeftPinned = function () {\n return this.lastLeftPinned;\n };\n Column.prototype.isPinned = function () {\n return this.pinned === Constants.PINNED_LEFT || this.pinned === Constants.PINNED_RIGHT;\n };\n Column.prototype.isPinnedLeft = function () {\n return this.pinned === Constants.PINNED_LEFT;\n };\n Column.prototype.isPinnedRight = function () {\n return this.pinned === Constants.PINNED_RIGHT;\n };\n Column.prototype.getPinned = function () {\n return this.pinned;\n };\n Column.prototype.setVisible = function (visible, source) {\n if (source === void 0) { source = \"api\"; }\n var newValue = visible === true;\n if (this.visible !== newValue) {\n this.visible = newValue;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VISIBLE_CHANGED, source));\n }\n };\n Column.prototype.isVisible = function () {\n return this.visible;\n };\n /** Returns the column definition for this column.\n * The column definition will be the result of merging the application provided column definition with any provided defaults\n * (e.g. `defaultColDef` grid option, or column types.\n *\n * Equivalent: `getDefinition` */\n Column.prototype.getColDef = function () {\n return this.colDef;\n };\n Column.prototype.getColumnGroupShow = function () {\n return this.colDef.columnGroupShow;\n };\n /**\n * Returns the unique ID for the column.\n *\n * Equivalent: `getId`, `getUniqueId` */\n Column.prototype.getColId = function () {\n return this.colId;\n };\n /**\n * Returns the unique ID for the column.\n *\n * Equivalent: `getColId`, `getUniqueId` */\n Column.prototype.getId = function () {\n return this.getColId();\n };\n /**\n * Returns the unique ID for the column.\n *\n * Equivalent: `getColId`, `getId` */\n Column.prototype.getUniqueId = function () {\n return this.getId();\n };\n Column.prototype.getDefinition = function () {\n return this.colDef;\n };\n /** Returns the current width of the column. If the column is resized, the actual width is the new size. */\n Column.prototype.getActualWidth = function () {\n return this.actualWidth;\n };\n Column.prototype.getAutoHeaderHeight = function () {\n return this.autoHeaderHeight;\n };\n /** Returns true if the header height has changed */\n Column.prototype.setAutoHeaderHeight = function (height) {\n var changed = height !== this.autoHeaderHeight;\n this.autoHeaderHeight = height;\n return changed;\n };\n Column.prototype.createBaseColDefParams = function (rowNode) {\n var params = {\n node: rowNode,\n data: rowNode.data,\n colDef: this.colDef,\n column: this,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n return params;\n };\n Column.prototype.getColSpan = function (rowNode) {\n if (missing(this.colDef.colSpan)) {\n return 1;\n }\n var params = this.createBaseColDefParams(rowNode);\n var colSpan = this.colDef.colSpan(params);\n // colSpan must be number equal to or greater than 1\n return Math.max(colSpan, 1);\n };\n Column.prototype.getRowSpan = function (rowNode) {\n if (missing(this.colDef.rowSpan)) {\n return 1;\n }\n var params = this.createBaseColDefParams(rowNode);\n var rowSpan = this.colDef.rowSpan(params);\n // rowSpan must be number equal to or greater than 1\n return Math.max(rowSpan, 1);\n };\n Column.prototype.setActualWidth = function (actualWidth, source, silent) {\n if (source === void 0) { source = \"api\"; }\n if (silent === void 0) { silent = false; }\n if (this.minWidth != null) {\n actualWidth = Math.max(actualWidth, this.minWidth);\n }\n if (this.maxWidth != null) {\n actualWidth = Math.min(actualWidth, this.maxWidth);\n }\n if (this.actualWidth !== actualWidth) {\n // disable flex for this column if it was manually resized.\n this.actualWidth = actualWidth;\n if (this.flex && source !== 'flex' && source !== 'gridInitializing') {\n this.flex = null;\n }\n if (!silent) {\n this.fireColumnWidthChangedEvent(source);\n }\n }\n };\n Column.prototype.fireColumnWidthChangedEvent = function (source) {\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_WIDTH_CHANGED, source));\n };\n Column.prototype.isGreaterThanMax = function (width) {\n if (this.maxWidth != null) {\n return width > this.maxWidth;\n }\n return false;\n };\n Column.prototype.getMinWidth = function () {\n return this.minWidth;\n };\n Column.prototype.getMaxWidth = function () {\n return this.maxWidth;\n };\n Column.prototype.getFlex = function () {\n return this.flex || 0;\n };\n // this method should only be used by the columnModel to\n // change flex when required by the setColumnState method.\n Column.prototype.setFlex = function (flex) {\n if (this.flex !== flex) {\n this.flex = flex;\n }\n };\n Column.prototype.setMinimum = function (source) {\n if (source === void 0) { source = \"api\"; }\n if (exists(this.minWidth)) {\n this.setActualWidth(this.minWidth, source);\n }\n };\n Column.prototype.setRowGroupActive = function (rowGroup, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.rowGroupActive !== rowGroup) {\n this.rowGroupActive = rowGroup;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_ROW_GROUP_CHANGED, source));\n }\n };\n /** Returns `true` if row group is currently active for this column. */\n Column.prototype.isRowGroupActive = function () {\n return this.rowGroupActive;\n };\n Column.prototype.setPivotActive = function (pivot, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.pivotActive !== pivot) {\n this.pivotActive = pivot;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_PIVOT_CHANGED, source));\n }\n };\n /** Returns `true` if pivot is currently active for this column. */\n Column.prototype.isPivotActive = function () {\n return this.pivotActive;\n };\n Column.prototype.isAnyFunctionActive = function () {\n return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();\n };\n Column.prototype.isAnyFunctionAllowed = function () {\n return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();\n };\n Column.prototype.setValueActive = function (value, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.aggregationActive !== value) {\n this.aggregationActive = value;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VALUE_CHANGED, source));\n }\n };\n /** Returns `true` if value (aggregation) is currently active for this column. */\n Column.prototype.isValueActive = function () {\n return this.aggregationActive;\n };\n Column.prototype.isAllowPivot = function () {\n return this.colDef.enablePivot === true;\n };\n Column.prototype.isAllowValue = function () {\n return this.colDef.enableValue === true;\n };\n Column.prototype.isAllowRowGroup = function () {\n return this.colDef.enableRowGroup === true;\n };\n Column.prototype.getMenuTabs = function (defaultValues) {\n var menuTabs = this.getColDef().menuTabs;\n if (menuTabs == null) {\n menuTabs = defaultValues;\n }\n return menuTabs;\n };\n // this used to be needed, as previous version of ag-grid had lockPosition as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockPosition = function () {\n console.warn('AG Grid: since v21, col.isLockPosition() should not be used, please use col.getColDef().lockPosition instead.');\n return this.colDef ? !!this.colDef.lockPosition : false;\n };\n // this used to be needed, as previous version of ag-grid had lockVisible as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockVisible = function () {\n console.warn('AG Grid: since v21, col.isLockVisible() should not be used, please use col.getColDef().lockVisible instead.');\n return this.colDef ? !!this.colDef.lockVisible : false;\n };\n // this used to be needed, as previous version of ag-grid had lockPinned as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockPinned = function () {\n console.warn('AG Grid: since v21, col.isLockPinned() should not be used, please use col.getColDef().lockPinned instead.');\n return this.colDef ? !!this.colDef.lockPinned : false;\n };\n // + renderedHeaderCell - for making header cell transparent when moving\n Column.EVENT_MOVING_CHANGED = 'movingChanged';\n // + renderedCell - changing left position\n Column.EVENT_LEFT_CHANGED = 'leftChanged';\n // + renderedCell - changing width\n Column.EVENT_WIDTH_CHANGED = 'widthChanged';\n // + renderedCell - for changing pinned classes\n Column.EVENT_LAST_LEFT_PINNED_CHANGED = 'lastLeftPinnedChanged';\n Column.EVENT_FIRST_RIGHT_PINNED_CHANGED = 'firstRightPinnedChanged';\n // + renderedColumn - for changing visibility icon\n Column.EVENT_VISIBLE_CHANGED = 'visibleChanged';\n // + every time the filter changes, used in the floating filters\n Column.EVENT_FILTER_CHANGED = 'filterChanged';\n // + renderedHeaderCell - marks the header with filter icon\n Column.EVENT_FILTER_ACTIVE_CHANGED = 'filterActiveChanged';\n // + renderedHeaderCell - marks the header with sort icon\n Column.EVENT_SORT_CHANGED = 'sortChanged';\n // + renderedHeaderCell - marks the header with sort icon\n Column.EVENT_COL_DEF_CHANGED = 'colDefChanged';\n Column.EVENT_MENU_VISIBLE_CHANGED = 'menuVisibleChanged';\n // + toolpanel, for gui updates\n Column.EVENT_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n // + toolpanel, for gui updates\n Column.EVENT_PIVOT_CHANGED = 'columnPivotChanged';\n // + toolpanel, for gui updates\n Column.EVENT_VALUE_CHANGED = 'columnValueChanged';\n __decorate$2z([\n Autowired('gridOptionsWrapper')\n ], Column.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$2z([\n Autowired('columnUtils')\n ], Column.prototype, \"columnUtils\", void 0);\n __decorate$2z([\n PostConstruct\n ], Column.prototype, \"initialise\", null);\n return Column;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction firstExistingValue() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (exists(value)) {\n return value;\n }\n }\n return null;\n}\nfunction existsAndNotEmpty(value) {\n return value != null && value.length > 0;\n}\nfunction last(arr) {\n if (!arr || !arr.length) {\n return;\n }\n return arr[arr.length - 1];\n}\nfunction areEqual(a, b, comparator) {\n if (a == null && b == null) {\n return true;\n }\n return a != null &&\n b != null &&\n a.length === b.length &&\n a.every(function (value, index) { return comparator ? comparator(value, b[index]) : b[index] === value; });\n}\n/** @deprecated */\nfunction compareArrays(array1, array2) {\n return areEqual(array1, array2);\n}\n/** @deprecated */\nfunction shallowCompare(arr1, arr2) {\n return areEqual(arr1, arr2);\n}\nfunction sortNumerically(array) {\n return array.sort(function (a, b) { return a - b; });\n}\nfunction removeRepeatsFromArray(array, object) {\n if (!array) {\n return;\n }\n for (var index = array.length - 2; index >= 0; index--) {\n var thisOneMatches = array[index] === object;\n var nextOneMatches = array[index + 1] === object;\n if (thisOneMatches && nextOneMatches) {\n array.splice(index + 1, 1);\n }\n }\n}\nfunction removeFromArray(array, object) {\n var index = array.indexOf(object);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nfunction removeAllFromArray(array, toRemove) {\n toRemove.forEach(function (item) { return removeFromArray(array, item); });\n}\nfunction insertIntoArray(array, object, toIndex) {\n array.splice(toIndex, 0, object);\n}\nfunction insertArrayIntoArray(dest, src, toIndex) {\n if (dest == null || src == null) {\n return;\n }\n // put items in backwards, otherwise inserted items end up in reverse order\n for (var i = src.length - 1; i >= 0; i--) {\n var item = src[i];\n insertIntoArray(dest, item, toIndex);\n }\n}\nfunction moveInArray(array, objectsToMove, toIndex) {\n // first take out items from the array\n removeAllFromArray(array, objectsToMove);\n // now add the objects, in same order as provided to us, that means we start at the end\n // as the objects will be pushed to the right as they are inserted\n objectsToMove.slice().reverse().forEach(function (obj) { return insertIntoArray(array, obj, toIndex); });\n}\nfunction includes(array, value) {\n return array.indexOf(value) > -1;\n}\nfunction flatten(arrayOfArrays) {\n return [].concat.apply([], arrayOfArrays);\n}\nfunction pushAll(target, source) {\n if (source == null || target == null) {\n return;\n }\n source.forEach(function (value) { return target.push(value); });\n}\nfunction toStrings(array) {\n return array.map(toStringOrNull);\n}\nfunction forEachReverse(list, action) {\n if (list == null) {\n return;\n }\n for (var i = list.length - 1; i >= 0; i--) {\n action(list[i], i);\n }\n}\n\nvar ArrayUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n firstExistingValue: firstExistingValue,\n existsAndNotEmpty: existsAndNotEmpty,\n last: last,\n areEqual: areEqual,\n compareArrays: compareArrays,\n shallowCompare: shallowCompare,\n sortNumerically: sortNumerically,\n removeRepeatsFromArray: removeRepeatsFromArray,\n removeFromArray: removeFromArray,\n removeAllFromArray: removeAllFromArray,\n insertIntoArray: insertIntoArray,\n insertArrayIntoArray: insertArrayIntoArray,\n moveInArray: moveInArray,\n includes: includes,\n flatten: flatten,\n pushAll: pushAll,\n toStrings: toStrings,\n forEachReverse: forEachReverse\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnGroup = /** @class */ (function () {\n function ColumnGroup(providedColumnGroup, groupId, instanceId, pinned) {\n // depends on the open/closed state of the group, only displaying columns are stored here\n this.displayedChildren = [];\n this.localEventService = new EventService();\n this.groupId = groupId;\n this.instanceId = instanceId;\n this.providedColumnGroup = providedColumnGroup;\n this.pinned = pinned;\n }\n // this is static, a it is used outside of this class\n ColumnGroup.createUniqueId = function (groupId, instanceId) {\n return groupId + '_' + instanceId;\n };\n // as the user is adding and removing columns, the groups are recalculated.\n // this reset clears out all children, ready for children to be added again\n ColumnGroup.prototype.reset = function () {\n this.parent = null;\n this.children = null;\n this.displayedChildren = null;\n };\n ColumnGroup.prototype.getParent = function () {\n return this.parent;\n };\n ColumnGroup.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n ColumnGroup.prototype.getUniqueId = function () {\n return ColumnGroup.createUniqueId(this.groupId, this.instanceId);\n };\n ColumnGroup.prototype.isEmptyGroup = function () {\n return this.displayedChildren.length === 0;\n };\n ColumnGroup.prototype.isMoving = function () {\n var allLeafColumns = this.getProvidedColumnGroup().getLeafColumns();\n if (!allLeafColumns || allLeafColumns.length === 0) {\n return false;\n }\n return allLeafColumns.every(function (col) { return col.isMoving(); });\n };\n ColumnGroup.prototype.checkLeft = function () {\n // first get all children to setLeft, as it impacts our decision below\n this.displayedChildren.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n child.checkLeft();\n }\n });\n // set our left based on first displayed column\n if (this.displayedChildren.length > 0) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n var lastChild = last(this.displayedChildren);\n var lastChildLeft = lastChild.getLeft();\n this.setLeft(lastChildLeft);\n }\n else {\n var firstChildLeft = this.displayedChildren[0].getLeft();\n this.setLeft(firstChildLeft);\n }\n }\n else {\n // this should never happen, as if we have no displayed columns, then\n // this groups should not even exist.\n this.setLeft(null);\n }\n };\n ColumnGroup.prototype.getLeft = function () {\n return this.left;\n };\n ColumnGroup.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n ColumnGroup.prototype.setLeft = function (left) {\n this.oldLeft = left;\n if (this.left !== left) {\n this.left = left;\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_LEFT_CHANGED));\n }\n };\n ColumnGroup.prototype.getPinned = function () {\n return this.pinned;\n };\n ColumnGroup.prototype.createAgEvent = function (type) {\n return { type: type };\n };\n ColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n ColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n ColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n ColumnGroup.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n ColumnGroup.prototype.isChildInThisGroupDeepSearch = function (wantedChild) {\n var result = false;\n this.children.forEach(function (foundChild) {\n if (wantedChild === foundChild) {\n result = true;\n }\n if (foundChild instanceof ColumnGroup) {\n if (foundChild.isChildInThisGroupDeepSearch(wantedChild)) {\n result = true;\n }\n }\n });\n return result;\n };\n ColumnGroup.prototype.getActualWidth = function () {\n var groupActualWidth = 0;\n if (this.displayedChildren) {\n this.displayedChildren.forEach(function (child) {\n groupActualWidth += child.getActualWidth();\n });\n }\n return groupActualWidth;\n };\n ColumnGroup.prototype.isResizable = function () {\n if (!this.displayedChildren) {\n return false;\n }\n // if at least one child is resizable, then the group is resizable\n var result = false;\n this.displayedChildren.forEach(function (child) {\n if (child.isResizable()) {\n result = true;\n }\n });\n return result;\n };\n ColumnGroup.prototype.getMinWidth = function () {\n var result = 0;\n this.displayedChildren.forEach(function (groupChild) {\n result += groupChild.getMinWidth() || 0;\n });\n return result;\n };\n ColumnGroup.prototype.addChild = function (child) {\n if (!this.children) {\n this.children = [];\n }\n this.children.push(child);\n };\n ColumnGroup.prototype.getDisplayedChildren = function () {\n return this.displayedChildren;\n };\n ColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n ColumnGroup.prototype.getDisplayedLeafColumns = function () {\n var result = [];\n this.addDisplayedLeafColumns(result);\n return result;\n };\n // why two methods here doing the same thing?\n ColumnGroup.prototype.getDefinition = function () {\n return this.providedColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.getColGroupDef = function () {\n return this.providedColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.isPadding = function () {\n return this.providedColumnGroup.isPadding();\n };\n ColumnGroup.prototype.isExpandable = function () {\n return this.providedColumnGroup.isExpandable();\n };\n ColumnGroup.prototype.isExpanded = function () {\n return this.providedColumnGroup.isExpanded();\n };\n ColumnGroup.prototype.setExpanded = function (expanded) {\n this.providedColumnGroup.setExpanded(expanded);\n };\n ColumnGroup.prototype.addDisplayedLeafColumns = function (leafColumns) {\n this.displayedChildren.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addDisplayedLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n this.children.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n ColumnGroup.prototype.getColumnGroupShow = function () {\n return this.providedColumnGroup.getColumnGroupShow();\n };\n ColumnGroup.prototype.getProvidedColumnGroup = function () {\n return this.providedColumnGroup;\n };\n /** @deprecated getOriginalColumnGroup is deprecated, use getOriginalColumnGroup. */\n ColumnGroup.prototype.getOriginalColumnGroup = function () {\n console.warn('AG Grid: columnGroup.getOriginalColumnGroup() is deprecated due to a method rename, use columnGroup.getProvidedColumnGroup() instead');\n return this.getProvidedColumnGroup();\n };\n ColumnGroup.prototype.getPaddingLevel = function () {\n var parent = this.getParent();\n if (!this.isPadding() || !parent || !parent.isPadding()) {\n return 0;\n }\n return 1 + parent.getPaddingLevel();\n };\n ColumnGroup.prototype.calculateDisplayedColumns = function () {\n var _this = this;\n // clear out last time we calculated\n this.displayedChildren = [];\n // find the column group that is controlling expandable. this is relevant when we have padding (empty)\n // groups, where the expandable is actually the first parent that is not a padding group.\n var parentWithExpansion = this;\n while (parentWithExpansion != null && parentWithExpansion.isPadding()) {\n parentWithExpansion = parentWithExpansion.getParent();\n }\n var isExpandable = parentWithExpansion ? parentWithExpansion.providedColumnGroup.isExpandable() : false;\n // it not expandable, everything is visible\n if (!isExpandable) {\n this.displayedChildren = this.children;\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n return;\n }\n // Add cols based on columnGroupShow\n // Note - the below also adds padding groups, these are always added because they never have\n // colDef.columnGroupShow set.\n this.children.forEach(function (child) {\n // never add empty groups\n var emptyGroup = child instanceof ColumnGroup && (!child.displayedChildren || !child.displayedChildren.length);\n if (emptyGroup) {\n return;\n }\n var headerGroupShow = child.getColumnGroupShow();\n switch (headerGroupShow) {\n case ColumnGroup.HEADER_GROUP_SHOW_OPEN:\n // when set to open, only show col if group is open\n if (parentWithExpansion.providedColumnGroup.isExpanded()) {\n _this.displayedChildren.push(child);\n }\n break;\n case ColumnGroup.HEADER_GROUP_SHOW_CLOSED:\n // when set to open, only show col if group is open\n if (!parentWithExpansion.providedColumnGroup.isExpanded()) {\n _this.displayedChildren.push(child);\n }\n break;\n default:\n _this.displayedChildren.push(child);\n break;\n }\n });\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n };\n ColumnGroup.HEADER_GROUP_SHOW_OPEN = 'open';\n ColumnGroup.HEADER_GROUP_SHOW_CLOSED = 'closed';\n ColumnGroup.EVENT_LEFT_CHANGED = 'leftChanged';\n ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED = 'displayedChildrenChanged';\n __decorate$2y([\n Autowired('gridOptionsWrapper')\n ], ColumnGroup.prototype, \"gridOptionsWrapper\", void 0);\n return ColumnGroup;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ProvidedColumnGroup = /** @class */ (function () {\n function ProvidedColumnGroup(colGroupDef, groupId, padding, level) {\n this.localEventService = new EventService();\n this.expandable = false;\n this.colGroupDef = colGroupDef;\n this.groupId = groupId;\n this.expanded = !!colGroupDef && !!colGroupDef.openByDefault;\n this.padding = padding;\n this.level = level;\n }\n ProvidedColumnGroup.prototype.reset = function (colGroupDef, level) {\n this.colGroupDef = colGroupDef;\n this.level = level;\n this.originalParent = null;\n // we use ! below, as we want to set the object back to the\n // way it was when it was first created\n this.children = undefined;\n this.expandable = undefined;\n };\n ProvidedColumnGroup.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = originalParent;\n };\n ProvidedColumnGroup.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n ProvidedColumnGroup.prototype.getLevel = function () {\n return this.level;\n };\n ProvidedColumnGroup.prototype.isVisible = function () {\n // return true if at least one child is visible\n if (this.children) {\n return this.children.some(function (child) { return child.isVisible(); });\n }\n return false;\n };\n ProvidedColumnGroup.prototype.isPadding = function () {\n return this.padding;\n };\n ProvidedColumnGroup.prototype.setExpanded = function (expanded) {\n this.expanded = expanded === undefined ? false : expanded;\n var event = {\n type: ProvidedColumnGroup.EVENT_EXPANDED_CHANGED\n };\n this.localEventService.dispatchEvent(event);\n };\n ProvidedColumnGroup.prototype.isExpandable = function () {\n return this.expandable;\n };\n ProvidedColumnGroup.prototype.isExpanded = function () {\n return this.expanded;\n };\n ProvidedColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n ProvidedColumnGroup.prototype.getId = function () {\n return this.getGroupId();\n };\n ProvidedColumnGroup.prototype.setChildren = function (children) {\n this.children = children;\n };\n ProvidedColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n ProvidedColumnGroup.prototype.getColGroupDef = function () {\n return this.colGroupDef;\n };\n ProvidedColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n ProvidedColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n if (!this.children) {\n return;\n }\n this.children.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ProvidedColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n ProvidedColumnGroup.prototype.getColumnGroupShow = function () {\n var colGroupDef = this.colGroupDef;\n if (!colGroupDef) {\n return;\n }\n return colGroupDef.columnGroupShow;\n };\n // need to check that this group has at least one col showing when both expanded and contracted.\n // if not, then we don't allow expanding and contracting on this group\n ProvidedColumnGroup.prototype.setupExpandable = function () {\n var _this = this;\n this.setExpandable();\n // note - we should be removing this event listener\n this.getLeafColumns().forEach(function (col) { return col.addEventListener(Column.EVENT_VISIBLE_CHANGED, _this.onColumnVisibilityChanged.bind(_this)); });\n };\n ProvidedColumnGroup.prototype.setExpandable = function () {\n if (this.isPadding()) {\n return;\n }\n // want to make sure the group doesn't disappear when it's open\n var atLeastOneShowingWhenOpen = false;\n // want to make sure the group doesn't disappear when it's closed\n var atLeastOneShowingWhenClosed = false;\n // want to make sure the group has something to show / hide\n var atLeastOneChangeable = false;\n var children = this.findChildrenRemovingPadding();\n for (var i = 0, j = children.length; i < j; i++) {\n var abstractColumn = children[i];\n if (!abstractColumn.isVisible()) {\n continue;\n }\n // if the abstractColumn is a grid generated group, there will be no colDef\n var headerGroupShow = abstractColumn.getColumnGroupShow();\n if (headerGroupShow === ColumnGroup.HEADER_GROUP_SHOW_OPEN) {\n atLeastOneShowingWhenOpen = true;\n atLeastOneChangeable = true;\n }\n else if (headerGroupShow === ColumnGroup.HEADER_GROUP_SHOW_CLOSED) {\n atLeastOneShowingWhenClosed = true;\n atLeastOneChangeable = true;\n }\n else {\n atLeastOneShowingWhenOpen = true;\n atLeastOneShowingWhenClosed = true;\n }\n }\n var expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n if (this.expandable !== expandable) {\n this.expandable = expandable;\n var event_1 = {\n type: ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED\n };\n this.localEventService.dispatchEvent(event_1);\n }\n };\n ProvidedColumnGroup.prototype.findChildrenRemovingPadding = function () {\n var res = [];\n var process = function (items) {\n items.forEach(function (item) {\n // if padding, we add this children instead of the padding\n var skipBecausePadding = item instanceof ProvidedColumnGroup && item.isPadding();\n if (skipBecausePadding) {\n process(item.children);\n }\n else {\n res.push(item);\n }\n });\n };\n process(this.children);\n return res;\n };\n ProvidedColumnGroup.prototype.onColumnVisibilityChanged = function () {\n this.setExpandable();\n };\n ProvidedColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n ProvidedColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n ProvidedColumnGroup.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED = 'expandableChanged';\n return ProvidedColumnGroup;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar DefaultColumnTypes = {\n numericColumn: {\n headerClass: 'ag-right-aligned-header',\n cellClass: 'ag-right-aligned-cell'\n },\n rightAligned: {\n headerClass: 'ag-right-aligned-header',\n cellClass: 'ag-right-aligned-cell'\n }\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar AG_GRID_STOP_PROPAGATION = '__ag_Grid_Stop_Propagation';\nvar PASSIVE_EVENTS$1 = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];\nvar supports = {};\n/**\n * a user once raised an issue - they said that when you opened a popup (eg context menu)\n * and then clicked on a selection checkbox, the popup wasn't closed. this is because the\n * popup listens for clicks on the body, however ag-grid WAS stopping propagation on the\n * checkbox clicks (so the rows didn't pick them up as row selection selection clicks).\n * to get around this, we have a pattern to stop propagation for the purposes of AG Grid,\n * but we still let the event pass back to the body.\n * @param {Event} event\n */\nfunction stopPropagationForAgGrid(event) {\n event[AG_GRID_STOP_PROPAGATION] = true;\n}\nfunction isStopPropagationForAgGrid(event) {\n return event[AG_GRID_STOP_PROPAGATION] === true;\n}\nvar isEventSupported = (function () {\n var tags = {\n select: 'input',\n change: 'input',\n submit: 'form',\n reset: 'form',\n error: 'img',\n load: 'img',\n abort: 'img'\n };\n var eventChecker = function (eventName) {\n if (typeof supports[eventName] === 'boolean') {\n return supports[eventName];\n }\n var el = document.createElement(tags[eventName] || 'div');\n eventName = 'on' + eventName;\n return supports[eventName] = (eventName in el);\n };\n return eventChecker;\n})();\nfunction getCtrlForEvent(gridOptionsWrapper, event, type) {\n var sourceElement = event.target;\n while (sourceElement) {\n var renderedComp = gridOptionsWrapper.getDomData(sourceElement, type);\n if (renderedComp) {\n return renderedComp;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n}\n/**\n * @deprecated\n * Adds all type of change listeners to an element, intended to be a text field\n * @param {HTMLElement} element\n * @param {EventListener} listener\n */\nfunction addChangeListener(element, listener) {\n element.addEventListener('changed', listener);\n element.addEventListener('paste', listener);\n element.addEventListener('input', listener);\n}\nfunction isElementInEventPath(element, event) {\n if (!event || !element) {\n return false;\n }\n return getEventPath(event).indexOf(element) >= 0;\n}\nfunction createEventPath(event) {\n var res = [];\n var pointer = event.target;\n while (pointer) {\n res.push(pointer);\n pointer = pointer.parentElement;\n }\n return res;\n}\n/**\n * firefox doesn't have event.path set, or any alternative to it, so we hack\n * it in. this is needed as it's to late to work out the path when the item is\n * removed from the dom. used by MouseEventService, where it works out if a click\n * was from the current grid, or a detail grid (master / detail).\n * @param {Event} event\n */\nfunction addAgGridEventPath(event) {\n event.__agGridEventPath = getEventPath(event);\n}\n/**\n * Gets the path for an Event.\n * https://stackoverflow.com/questions/39245488/event-path-undefined-with-firefox-and-vue-js\n * https://developer.mozilla.org/en-US/docs/Web/API/Event\n * @param {Event} event\n * @returns {EventTarget[]}\n */\nfunction getEventPath(event) {\n var eventNoType = event;\n if (eventNoType.path) {\n // Chrome supports path\n return eventNoType.path;\n }\n if (eventNoType.composedPath) {\n // Firefox supports composePath\n return eventNoType.composedPath();\n }\n if (eventNoType.__agGridEventPath) {\n // Firefox supports composePath\n return eventNoType.__agGridEventPath;\n }\n // and finally, if none of the above worked,\n // we create the path ourselves\n return createEventPath(event);\n}\nfunction addSafePassiveEventListener(frameworkOverrides, eElement, event, listener) {\n var isPassive = includes(PASSIVE_EVENTS$1, event);\n var options = isPassive ? { passive: true } : undefined;\n // this check is here for certain scenarios where I believe the user must be destroying\n // the grid somehow but continuing for it to be used\n if (frameworkOverrides && frameworkOverrides.addEventListener) {\n frameworkOverrides.addEventListener(eElement, event, listener, options);\n }\n}\n\nvar EventUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n stopPropagationForAgGrid: stopPropagationForAgGrid,\n isStopPropagationForAgGrid: isStopPropagationForAgGrid,\n isEventSupported: isEventSupported,\n getCtrlForEvent: getCtrlForEvent,\n addChangeListener: addChangeListener,\n isElementInEventPath: isElementInEventPath,\n createEventPath: createEventPath,\n addAgGridEventPath: addAgGridEventPath,\n getEventPath: getEventPath,\n addSafePassiveEventListener: addSafePassiveEventListener\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$2x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BeanStub = /** @class */ (function () {\n function BeanStub() {\n var _this = this;\n this.destroyFunctions = [];\n this.destroyed = false;\n // for vue 3 - prevents Vue from trying to make this (and obviously any sub classes) from being reactive\n // prevents vue from creating proxies for created objects and prevents identity related issues\n this.__v_skip = true;\n this.isAlive = function () { return !_this.destroyed; };\n }\n // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are\n // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed\n // points to a bean or component that was not properly disposed of.\n // constructor() {\n // setTimeout(()=> {\n // if (this.isAlive()) {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n // console.log('is alive ' + beanName);\n // }\n // }, 5000);\n // }\n // CellComp and GridComp and override this because they get the FrameworkOverrides from the Beans bean\n BeanStub.prototype.getFrameworkOverrides = function () {\n return this.frameworkOverrides;\n };\n BeanStub.prototype.getContext = function () {\n return this.context;\n };\n BeanStub.prototype.destroy = function () {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n this.destroyFunctions.forEach(function (func) { return func(); });\n this.destroyFunctions.length = 0;\n this.destroyed = true;\n this.dispatchEvent({ type: BeanStub.EVENT_DESTROYED });\n };\n BeanStub.prototype.addEventListener = function (eventType, listener) {\n if (!this.localEventService) {\n this.localEventService = new EventService();\n }\n this.localEventService.addEventListener(eventType, listener);\n };\n BeanStub.prototype.removeEventListener = function (eventType, listener) {\n if (this.localEventService) {\n this.localEventService.removeEventListener(eventType, listener);\n }\n };\n BeanStub.prototype.dispatchEventAsync = function (event) {\n var _this = this;\n window.setTimeout(function () { return _this.dispatchEvent(event); }, 0);\n };\n BeanStub.prototype.dispatchEvent = function (event) {\n if (this.localEventService) {\n this.localEventService.dispatchEvent(event);\n }\n };\n BeanStub.prototype.addManagedListener = function (object, event, listener) {\n var _this = this;\n if (this.destroyed) {\n return;\n }\n if (object instanceof HTMLElement) {\n addSafePassiveEventListener(this.getFrameworkOverrides(), object, event, listener);\n }\n else {\n object.addEventListener(event, listener);\n }\n var destroyFunc = function () {\n object.removeEventListener(event, listener);\n _this.destroyFunctions = _this.destroyFunctions.filter(function (fn) { return fn !== destroyFunc; });\n return null;\n };\n this.destroyFunctions.push(destroyFunc);\n return destroyFunc;\n };\n BeanStub.prototype.addDestroyFunc = function (func) {\n // if we are already destroyed, we execute the func now\n if (this.isAlive()) {\n this.destroyFunctions.push(func);\n }\n else {\n func();\n }\n };\n BeanStub.prototype.createManagedBean = function (bean, context) {\n var res = this.createBean(bean, context);\n this.addDestroyFunc(this.destroyBean.bind(this, bean, context));\n return res;\n };\n BeanStub.prototype.createBean = function (bean, context, afterPreCreateCallback) {\n return (context || this.getContext()).createBean(bean, afterPreCreateCallback);\n };\n BeanStub.prototype.destroyBean = function (bean, context) {\n return (context || this.getContext()).destroyBean(bean);\n };\n BeanStub.prototype.destroyBeans = function (beans, context) {\n var _this = this;\n if (beans) {\n beans.forEach(function (bean) { return _this.destroyBean(bean, context); });\n }\n return [];\n };\n BeanStub.EVENT_DESTROYED = 'destroyed';\n __decorate$2x([\n Autowired('frameworkOverrides')\n ], BeanStub.prototype, \"frameworkOverrides\", void 0);\n __decorate$2x([\n Autowired('context')\n ], BeanStub.prototype, \"context\", void 0);\n __decorate$2x([\n Autowired('eventService')\n ], BeanStub.prototype, \"eventService\", void 0);\n __decorate$2x([\n Autowired('gridOptionsWrapper')\n ], BeanStub.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$2x([\n PreDestroy\n ], BeanStub.prototype, \"destroy\", null);\n return BeanStub;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2U = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$9 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\n// takes ColDefs and ColGroupDefs and turns them into Columns and OriginalGroups\nvar ColumnFactory = /** @class */ (function (_super) {\n __extends$2U(ColumnFactory, _super);\n function ColumnFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnFactory.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ColumnFactory');\n };\n ColumnFactory.prototype.createColumnTree = function (defs, primaryColumns, existingTree) {\n // column key creator dishes out unique column id's in a deterministic way,\n // so if we have two grids (that could be master/slave) with same column definitions,\n // then this ensures the two grids use identical id's.\n var columnKeyCreator = new ColumnKeyCreator();\n var _a = this.extractExistingTreeData(existingTree), existingCols = _a.existingCols, existingGroups = _a.existingGroups, existingColKeys = _a.existingColKeys;\n columnKeyCreator.addExistingKeys(existingColKeys);\n // create am unbalanced tree that maps the provided definitions\n var unbalancedTree = this.recursivelyCreateColumns(defs, 0, primaryColumns, existingCols, columnKeyCreator, existingGroups);\n var treeDept = this.findMaxDept(unbalancedTree, 0);\n this.logger.log('Number of levels for grouped columns is ' + treeDept);\n var columnTree = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);\n var deptFirstCallback = function (child, parent) {\n if (child instanceof ProvidedColumnGroup) {\n child.setupExpandable();\n }\n // we set the original parents at the end, rather than when we go along, as balancing the tree\n // adds extra levels into the tree. so we can only set parents when balancing is done.\n child.setOriginalParent(parent);\n };\n this.columnUtils.depthFirstOriginalTreeSearch(null, columnTree, deptFirstCallback);\n return {\n columnTree: columnTree,\n treeDept: treeDept\n };\n };\n ColumnFactory.prototype.extractExistingTreeData = function (existingTree) {\n var existingCols = [];\n var existingGroups = [];\n var existingColKeys = [];\n if (existingTree) {\n this.columnUtils.depthFirstOriginalTreeSearch(null, existingTree, function (item) {\n if (item instanceof ProvidedColumnGroup) {\n var group = item;\n existingGroups.push(group);\n }\n else {\n var col = item;\n existingColKeys.push(col.getId());\n existingCols.push(col);\n }\n });\n }\n return { existingCols: existingCols, existingGroups: existingGroups, existingColKeys: existingColKeys };\n };\n ColumnFactory.prototype.createForAutoGroups = function (autoGroupCols, gridBalancedTree) {\n var _this = this;\n return autoGroupCols.map(function (col) { return _this.createAutoGroupTreeItem(gridBalancedTree, col); });\n };\n ColumnFactory.prototype.createAutoGroupTreeItem = function (balancedColumnTree, column) {\n var dept = this.findDepth(balancedColumnTree);\n // at the end, this will be the top of the tree item.\n var nextChild = column;\n for (var i = dept - 1; i >= 0; i--) {\n var autoGroup = new ProvidedColumnGroup(null, \"FAKE_PATH_\" + column.getId() + \"}_\" + i, true, i);\n this.context.createBean(autoGroup);\n autoGroup.setChildren([nextChild]);\n nextChild.setOriginalParent(autoGroup);\n nextChild = autoGroup;\n }\n // at this point, the nextChild is the top most item in the tree\n return nextChild;\n };\n ColumnFactory.prototype.findDepth = function (balancedColumnTree) {\n var dept = 0;\n var pointer = balancedColumnTree;\n while (pointer && pointer[0] && pointer[0] instanceof ProvidedColumnGroup) {\n dept++;\n pointer = pointer[0].getChildren();\n }\n return dept;\n };\n ColumnFactory.prototype.balanceColumnTree = function (unbalancedTree, currentDept, columnDept, columnKeyCreator) {\n var result = [];\n // go through each child, for groups, recurse a level deeper,\n // for columns we need to pad\n for (var i = 0; i < unbalancedTree.length; i++) {\n var child = unbalancedTree[i];\n if (child instanceof ProvidedColumnGroup) {\n // child is a group, all we do is go to the next level of recursion\n var originalGroup = child;\n var newChildren = this.balanceColumnTree(originalGroup.getChildren(), currentDept + 1, columnDept, columnKeyCreator);\n originalGroup.setChildren(newChildren);\n result.push(originalGroup);\n }\n else {\n // child is a column - so here we add in the padded column groups if needed\n var firstPaddedGroup = void 0;\n var currentPaddedGroup = void 0;\n // this for loop will NOT run any loops if no padded column groups are needed\n for (var j = columnDept - 1; j >= currentDept; j--) {\n var newColId = columnKeyCreator.getUniqueKey(null, null);\n var colGroupDefMerged = this.createMergedColGroupDef(null);\n var paddedGroup = new ProvidedColumnGroup(colGroupDefMerged, newColId, true, currentDept);\n this.context.createBean(paddedGroup);\n if (currentPaddedGroup) {\n currentPaddedGroup.setChildren([paddedGroup]);\n }\n currentPaddedGroup = paddedGroup;\n if (!firstPaddedGroup) {\n firstPaddedGroup = currentPaddedGroup;\n }\n }\n // likewise this if statement will not run if no padded groups\n if (firstPaddedGroup && currentPaddedGroup) {\n result.push(firstPaddedGroup);\n var hasGroups = unbalancedTree.some(function (leaf) { return leaf instanceof ProvidedColumnGroup; });\n if (hasGroups) {\n currentPaddedGroup.setChildren([child]);\n continue;\n }\n else {\n currentPaddedGroup.setChildren(unbalancedTree);\n break;\n }\n }\n result.push(child);\n }\n }\n return result;\n };\n ColumnFactory.prototype.findMaxDept = function (treeChildren, dept) {\n var maxDeptThisLevel = dept;\n for (var i = 0; i < treeChildren.length; i++) {\n var abstractColumn = treeChildren[i];\n if (abstractColumn instanceof ProvidedColumnGroup) {\n var originalGroup = abstractColumn;\n var newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);\n if (maxDeptThisLevel < newDept) {\n maxDeptThisLevel = newDept;\n }\n }\n }\n return maxDeptThisLevel;\n };\n ColumnFactory.prototype.recursivelyCreateColumns = function (defs, level, primaryColumns, existingColsCopy, columnKeyCreator, existingGroups) {\n var _this = this;\n return (defs || []).map(function (def) {\n if (_this.isColumnGroup(def)) {\n return _this.createColumnGroup(primaryColumns, def, level, existingColsCopy, columnKeyCreator, existingGroups);\n }\n else {\n return _this.createColumn(primaryColumns, def, existingColsCopy, columnKeyCreator);\n }\n });\n };\n ColumnFactory.prototype.createColumnGroup = function (primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, existingGroups) {\n var colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);\n var groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId || null, null);\n var existingGroup = this.findExistingGroup(colGroupDef, existingGroups);\n var providedGroup;\n if (existingGroup) {\n providedGroup = existingGroup;\n providedGroup.reset(colGroupDefMerged, level);\n removeFromArray(existingGroups, existingGroup);\n }\n else {\n providedGroup = new ProvidedColumnGroup(colGroupDefMerged, groupId, false, level);\n this.context.createBean(providedGroup);\n }\n var children = this.recursivelyCreateColumns(colGroupDefMerged.children, level + 1, primaryColumns, existingColumns, columnKeyCreator, existingGroups);\n providedGroup.setChildren(children);\n return providedGroup;\n };\n ColumnFactory.prototype.createMergedColGroupDef = function (colGroupDef) {\n var colGroupDefMerged = {};\n Object.assign(colGroupDefMerged, this.gridOptionsWrapper.getDefaultColGroupDef());\n Object.assign(colGroupDefMerged, colGroupDef);\n this.checkForDeprecatedItems(colGroupDefMerged);\n return colGroupDefMerged;\n };\n ColumnFactory.prototype.createColumn = function (primaryColumns, colDef, existingColsCopy, columnKeyCreator) {\n var colDefMerged = this.mergeColDefs(colDef);\n this.checkForDeprecatedItems(colDefMerged);\n // see if column already exists\n var column = this.findExistingColumn(colDef, existingColsCopy);\n // make sure we remove, so if user provided duplicate id, then we don't have more than\n // one column instance for colDef with common id\n if (existingColsCopy && column) {\n removeFromArray(existingColsCopy, column);\n }\n if (!column) {\n // no existing column, need to create one\n var colId = columnKeyCreator.getUniqueKey(colDefMerged.colId, colDefMerged.field);\n column = new Column(colDefMerged, colDef, colId, primaryColumns);\n this.context.createBean(column);\n }\n else {\n column.setColDef(colDefMerged, colDef);\n this.applyColumnState(column, colDefMerged);\n }\n return column;\n };\n ColumnFactory.prototype.applyColumnState = function (column, colDef) {\n // flex\n var flex = attrToNumber(colDef.flex);\n if (flex !== undefined) {\n column.setFlex(flex);\n }\n // width - we only set width if column is not flexing\n var noFlexThisCol = column.getFlex() <= 0;\n if (noFlexThisCol) {\n // both null and undefined means we skip, as it's not possible to 'clear' width (a column must have a width)\n var width = attrToNumber(colDef.width);\n if (width != null) {\n column.setActualWidth(width);\n }\n else {\n // otherwise set the width again, in case min or max width has changed,\n // and width needs to be adjusted.\n var widthBeforeUpdate = column.getActualWidth();\n column.setActualWidth(widthBeforeUpdate);\n }\n }\n // sort - anything but undefined will set sort, thus null or empty string will clear the sort\n if (colDef.sort !== undefined) {\n if (colDef.sort == Constants.SORT_ASC || colDef.sort == Constants.SORT_DESC) {\n column.setSort(colDef.sort);\n }\n else {\n column.setSort(undefined);\n }\n }\n // sorted at - anything but undefined, thus null will clear the sortIndex\n var sortIndex = attrToNumber(colDef.sortIndex);\n if (sortIndex !== undefined) {\n column.setSortIndex(sortIndex);\n }\n // hide - anything but undefined, thus null will clear the hide\n var hide = attrToBoolean(colDef.hide);\n if (hide !== undefined) {\n column.setVisible(!hide);\n }\n // pinned - anything but undefined, thus null or empty string will remove pinned\n if (colDef.pinned !== undefined) {\n column.setPinned(colDef.pinned);\n }\n };\n ColumnFactory.prototype.findExistingColumn = function (newColDef, existingColsCopy) {\n return (existingColsCopy || []).find(function (existingCol) {\n var existingColDef = existingCol.getUserProvidedColDef();\n if (!existingColDef) {\n return false;\n }\n var newHasId = newColDef.colId != null;\n var newHasField = newColDef.field != null;\n if (newHasId) {\n return existingCol.getId() === newColDef.colId;\n }\n if (newHasField) {\n return existingColDef.field === newColDef.field;\n }\n // if no id or field present, then try object equivalence.\n if (existingColDef === newColDef) {\n return true;\n }\n return false;\n });\n };\n ColumnFactory.prototype.findExistingGroup = function (newGroupDef, existingGroups) {\n return existingGroups.find(function (existingGroup) {\n var existingDef = existingGroup.getColGroupDef();\n if (!existingDef) {\n return false;\n }\n var newHasId = newGroupDef.groupId != null;\n if (newHasId) {\n return existingGroup.getId() === newGroupDef.groupId;\n }\n return false;\n });\n };\n ColumnFactory.prototype.mergeColDefs = function (colDef) {\n // start with empty merged definition\n var colDefMerged = {};\n // merge properties from default column definitions\n var defaultColDef = this.gridOptionsWrapper.getDefaultColDef();\n mergeDeep(colDefMerged, defaultColDef, false, true);\n // merge properties from column type properties\n var columnType = colDef.type;\n if (!columnType) {\n columnType = defaultColDef && defaultColDef.type;\n }\n // if type of both colDef and defaultColDef, then colDef gets preference\n if (columnType) {\n this.assignColumnTypes(columnType, colDefMerged);\n }\n // merge properties from column definitions\n mergeDeep(colDefMerged, colDef, false, true);\n var autoGroupColDef = this.gridOptionsWrapper.getAutoGroupColumnDef();\n var isSortingCoupled = this.gridOptionsWrapper.isColumnsSortingCoupledToGroup();\n if (colDef.rowGroup && autoGroupColDef && isSortingCoupled) {\n // override the sort for row group columns where the autoGroupColDef defines these values.\n mergeDeep(colDefMerged, { sort: autoGroupColDef.sort, initialSort: autoGroupColDef.initialSort }, false, true);\n }\n return colDefMerged;\n };\n ColumnFactory.prototype.assignColumnTypes = function (type, colDefMerged) {\n var typeKeys = [];\n if (type instanceof Array) {\n var invalidArray = type.some(function (a) { return typeof a !== 'string'; });\n if (invalidArray) {\n console.warn(\"AG Grid: if colDef.type is supplied an array it should be of type 'string[]'\");\n }\n else {\n typeKeys = type;\n }\n }\n else if (typeof type === 'string') {\n typeKeys = type.split(',');\n }\n else {\n console.warn(\"AG Grid: colDef.type should be of type 'string' | 'string[]'\");\n return;\n }\n // merge user defined with default column types\n var allColumnTypes = Object.assign({}, DefaultColumnTypes);\n var userTypes = this.gridOptionsWrapper.getColumnTypes() || {};\n iterateObject(userTypes, function (key, value) {\n if (key in allColumnTypes) {\n console.warn(\"AG Grid: the column type '\" + key + \"' is a default column type and cannot be overridden.\");\n }\n else {\n allColumnTypes[key] = value;\n }\n });\n typeKeys.forEach(function (t) {\n var typeColDef = allColumnTypes[t.trim()];\n if (typeColDef) {\n mergeDeep(colDefMerged, typeColDef, false, true);\n }\n else {\n console.warn(\"AG Grid: colDef.type '\" + t + \"' does not correspond to defined gridOptions.columnTypes\");\n }\n });\n };\n ColumnFactory.prototype.checkForDeprecatedItems = function (colDef) {\n if (colDef) {\n var colDefNoType = colDef; // take out the type, so we can access attributes not defined in the type\n if (colDefNoType.group !== undefined) {\n console.warn('AG Grid: colDef.group is invalid, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.headerGroup !== undefined) {\n console.warn('AG Grid: colDef.headerGroup is invalid, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.headerGroupShow !== undefined) {\n console.warn('AG Grid: colDef.headerGroupShow is invalid, should be columnGroupShow, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.suppressRowGroup !== undefined) {\n console.warn('AG Grid: colDef.suppressRowGroup is deprecated, please use colDef.type instead');\n }\n if (colDefNoType.suppressAggregation !== undefined) {\n console.warn('AG Grid: colDef.suppressAggregation is deprecated, please use colDef.type instead');\n }\n if (colDefNoType.suppressRowGroup || colDefNoType.suppressAggregation) {\n console.warn('AG Grid: colDef.suppressAggregation and colDef.suppressRowGroup are deprecated, use allowRowGroup, allowPivot and allowValue instead');\n }\n if (colDefNoType.displayName) {\n console.warn(\"AG Grid: Found displayName \" + colDefNoType.displayName + \", please use headerName instead, displayName is deprecated.\");\n colDefNoType.headerName = colDefNoType.displayName;\n }\n }\n };\n // if object has children, we assume it's a group\n ColumnFactory.prototype.isColumnGroup = function (abstractColDef) {\n return abstractColDef.children !== undefined;\n };\n __decorate$2w([\n Autowired('columnUtils')\n ], ColumnFactory.prototype, \"columnUtils\", void 0);\n __decorate$2w([\n __param$9(0, Qualifier('loggerFactory'))\n ], ColumnFactory.prototype, \"setBeans\", null);\n ColumnFactory = __decorate$2w([\n Bean('columnFactory')\n ], ColumnFactory);\n return ColumnFactory;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar Events = /** @class */ (function () {\n function Events() {\n }\n /** Everything has changed with the columns. Either complete new set of columns set, or user called setState() */\n /** @deprecated - grid no longer uses this, and setSate() also fires individual events */\n Events.EVENT_COLUMN_EVERYTHING_CHANGED = 'columnEverythingChanged';\n /** User has set in new columns. */\n Events.EVENT_NEW_COLUMNS_LOADED = 'newColumnsLoaded';\n /** The pivot mode flag was changed */\n Events.EVENT_COLUMN_PIVOT_MODE_CHANGED = 'columnPivotModeChanged';\n /** A row group column was added, removed or order changed. */\n Events.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n /** expandAll / collapseAll was called from the api. */\n Events.EVENT_EXPAND_COLLAPSE_ALL = 'expandOrCollapseAll';\n /** A pivot column was added, removed or order changed. */\n Events.EVENT_COLUMN_PIVOT_CHANGED = 'columnPivotChanged';\n /** The list of grid columns has changed. */\n Events.EVENT_GRID_COLUMNS_CHANGED = 'gridColumnsChanged';\n /** A value column was added, removed or agg function was changed. */\n Events.EVENT_COLUMN_VALUE_CHANGED = 'columnValueChanged';\n /** A column was moved */\n Events.EVENT_COLUMN_MOVED = 'columnMoved';\n /** One or more columns was shown / hidden */\n Events.EVENT_COLUMN_VISIBLE = 'columnVisible';\n /** One or more columns was pinned / unpinned*/\n Events.EVENT_COLUMN_PINNED = 'columnPinned';\n /** A column group was opened / closed */\n Events.EVENT_COLUMN_GROUP_OPENED = 'columnGroupOpened';\n /** One or more columns was resized. If just one, the column in the event is set. */\n Events.EVENT_COLUMN_RESIZED = 'columnResized';\n /** The list of displayed columns has changed, can result from columns open / close, column move, pivot, group, etc */\n Events.EVENT_DISPLAYED_COLUMNS_CHANGED = 'displayedColumnsChanged';\n /** The list of virtual columns has changed, results from viewport changing */\n Events.EVENT_VIRTUAL_COLUMNS_CHANGED = 'virtualColumnsChanged';\n /** Async Transactions Executed */\n Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED = 'asyncTransactionsFlushed';\n /** A row group was opened / closed */\n Events.EVENT_ROW_GROUP_OPENED = 'rowGroupOpened';\n /** @deprecated use EVENT_ROW_DATA_UPDATED instead */\n Events.EVENT_ROW_DATA_CHANGED = 'rowDataChanged';\n /** The client has updated data for the grid */\n Events.EVENT_ROW_DATA_UPDATED = 'rowDataUpdated';\n /** The client has set new floating data into the grid */\n Events.EVENT_PINNED_ROW_DATA_CHANGED = 'pinnedRowDataChanged';\n /** Range selection has changed */\n Events.EVENT_RANGE_SELECTION_CHANGED = 'rangeSelectionChanged';\n /** Chart was created */\n Events.EVENT_CHART_CREATED = 'chartCreated';\n /** Chart Range selection has changed */\n Events.EVENT_CHART_RANGE_SELECTION_CHANGED = 'chartRangeSelectionChanged';\n /** Chart Options have changed */\n Events.EVENT_CHART_OPTIONS_CHANGED = 'chartOptionsChanged';\n /** Chart was destroyed */\n Events.EVENT_CHART_DESTROYED = 'chartDestroyed';\n /** For when the tool panel is shown / hidden */\n Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED = 'toolPanelVisibleChanged';\n Events.EVENT_TOOL_PANEL_SIZE_CHANGED = 'toolPanelSizeChanged';\n Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START = 'columnPanelItemDragStart';\n Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END = 'columnPanelItemDragEnd';\n /** Model was updated - grid updates the drawn rows when this happens */\n Events.EVENT_MODEL_UPDATED = 'modelUpdated';\n Events.EVENT_PASTE_START = 'pasteStart';\n Events.EVENT_PASTE_END = 'pasteEnd';\n Events.EVENT_FILL_START = 'fillStart';\n Events.EVENT_FILL_END = 'fillEnd';\n Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START = 'keyShortcutChangedCellStart';\n Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END = 'keyShortcutChangedCellEnd';\n Events.EVENT_CELL_CLICKED = 'cellClicked';\n Events.EVENT_CELL_DOUBLE_CLICKED = 'cellDoubleClicked';\n Events.EVENT_CELL_MOUSE_DOWN = 'cellMouseDown';\n Events.EVENT_CELL_CONTEXT_MENU = 'cellContextMenu';\n Events.EVENT_CELL_VALUE_CHANGED = 'cellValueChanged';\n Events.EVENT_CELL_EDIT_REQUEST = 'cellEditRequest';\n Events.EVENT_ROW_VALUE_CHANGED = 'rowValueChanged';\n Events.EVENT_CELL_FOCUSED = 'cellFocused';\n Events.EVENT_FULL_WIDTH_ROW_FOCUSED = 'fullWidthRowFocused';\n Events.EVENT_ROW_SELECTED = 'rowSelected';\n Events.EVENT_SELECTION_CHANGED = 'selectionChanged';\n Events.EVENT_CELL_KEY_DOWN = 'cellKeyDown';\n Events.EVENT_CELL_KEY_PRESS = 'cellKeyPress';\n Events.EVENT_CELL_MOUSE_OVER = 'cellMouseOver';\n Events.EVENT_CELL_MOUSE_OUT = 'cellMouseOut';\n /** 2 events for filtering. The grid LISTENS for filterChanged and afterFilterChanged */\n Events.EVENT_FILTER_CHANGED = 'filterChanged';\n /** Filter was change but not applied. Only useful if apply buttons are used in filters. */\n Events.EVENT_FILTER_MODIFIED = 'filterModified';\n Events.EVENT_FILTER_OPENED = 'filterOpened';\n Events.EVENT_SORT_CHANGED = 'sortChanged';\n /** A row was removed from the dom, for any reason. Use to clean up resources (if any) used by the row. */\n Events.EVENT_VIRTUAL_ROW_REMOVED = 'virtualRowRemoved';\n Events.EVENT_ROW_CLICKED = 'rowClicked';\n Events.EVENT_ROW_DOUBLE_CLICKED = 'rowDoubleClicked';\n /** Gets called once after the grid has finished initialising. */\n Events.EVENT_GRID_READY = 'gridReady';\n /** Width of height of the main grid div has changed. Grid listens for this and does layout of grid if it's\n * changed, so always filling the space it was given. */\n Events.EVENT_GRID_SIZE_CHANGED = 'gridSizeChanged';\n /** The indexes of the rows rendered has changed, eg user has scrolled to a new vertical position. */\n Events.EVENT_VIEWPORT_CHANGED = 'viewportChanged';\n /* The width of the scrollbar has been calculated */\n Events.EVENT_SCROLLBAR_WIDTH_CHANGED = 'scrollbarWidthChanged';\n /** Rows were rendered for the first time (ie on async data load). */\n Events.EVENT_FIRST_DATA_RENDERED = 'firstDataRendered';\n /** A column drag has started, either resizing a column or moving a column. */\n Events.EVENT_DRAG_STARTED = 'dragStarted';\n /** A column drag has stopped */\n Events.EVENT_DRAG_STOPPED = 'dragStopped';\n Events.EVENT_CHECKBOX_CHANGED = 'checkboxChanged';\n Events.EVENT_ROW_EDITING_STARTED = 'rowEditingStarted';\n Events.EVENT_ROW_EDITING_STOPPED = 'rowEditingStopped';\n Events.EVENT_CELL_EDITING_STARTED = 'cellEditingStarted';\n Events.EVENT_CELL_EDITING_STOPPED = 'cellEditingStopped';\n /** Main body of grid has scrolled, either horizontally or vertically */\n Events.EVENT_BODY_SCROLL = 'bodyScroll';\n /** Main body of the grid has stopped scrolling, either horizontally or vertically */\n Events.EVENT_BODY_SCROLL_END = 'bodyScrollEnd';\n Events.EVENT_HEIGHT_SCALE_CHANGED = 'heightScaleChanged';\n /** The displayed page for pagination has changed. For example the data was filtered or sorted,\n * or the user has moved to a different page. */\n Events.EVENT_PAGINATION_CHANGED = 'paginationChanged';\n /** Only used by React, Angular, Web Components and VueJS AG Grid components\n * (not used if doing plain JavaScript). If the grid receives changes due\n * to bound properties, this event fires after the grid has finished processing the change. */\n Events.EVENT_COMPONENT_STATE_CHANGED = 'componentStateChanged';\n /***************************** INTERNAL EVENTS: START ******************************************* */\n /** Please remember to add to ComponentUtil.EXCLUDED_INTERNAL_EVENTS to not have these events exposed to framework components. */\n /** All items from here down are used internally by the grid, not intended for external use. */\n // not documented, either experimental, or we just don't want users using an depending on them\n Events.EVENT_BODY_HEIGHT_CHANGED = 'bodyHeightChanged';\n Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED = 'displayedColumnsWidthChanged';\n Events.EVENT_SCROLL_VISIBILITY_CHANGED = 'scrollVisibilityChanged';\n Events.EVENT_COLUMN_HOVER_CHANGED = 'columnHoverChanged';\n Events.EVENT_FLASH_CELLS = 'flashCells';\n Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED = 'paginationPixelOffsetChanged';\n Events.EVENT_DISPLAYED_ROWS_CHANGED = 'displayedRowsChanged';\n Events.EVENT_LEFT_PINNED_WIDTH_CHANGED = 'leftPinnedWidthChanged';\n Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED = 'rightPinnedWidthChanged';\n Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED = 'rowContainerHeightChanged';\n Events.EVENT_HEADER_HEIGHT_CHANGED = 'headerHeightChanged';\n Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED = 'columnHeaderHeightChanged';\n Events.EVENT_ROW_DRAG_ENTER = 'rowDragEnter';\n Events.EVENT_ROW_DRAG_MOVE = 'rowDragMove';\n Events.EVENT_ROW_DRAG_LEAVE = 'rowDragLeave';\n Events.EVENT_ROW_DRAG_END = 'rowDragEnd';\n // primarily for charts\n Events.EVENT_POPUP_TO_FRONT = 'popupToFront';\n // these are used for server side group and agg - only used by CS with Viewport Row Model - intention is\n // to design these better around server side functions and then release to general public when fully working with\n // all the row models.\n Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST = 'columnRowGroupChangeRequest';\n Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST = 'columnPivotChangeRequest';\n Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST = 'columnValueChangeRequest';\n Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST = 'columnAggFuncChangeRequest';\n Events.EVENT_KEYBOARD_FOCUS = 'keyboardFocus';\n Events.EVENT_MOUSE_FOCUS = 'mouseFocus';\n Events.EVENT_STORE_UPDATED = 'storeUpdated';\n return Events;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n// class returns unique instance id's for columns.\n// eg, the following calls (in this order) will result in:\n//\n// getInstanceIdForKey('country') => 0\n// getInstanceIdForKey('country') => 1\n// getInstanceIdForKey('country') => 2\n// getInstanceIdForKey('country') => 3\n// getInstanceIdForKey('age') => 0\n// getInstanceIdForKey('age') => 1\n// getInstanceIdForKey('country') => 4\nvar GroupInstanceIdCreator = /** @class */ (function () {\n function GroupInstanceIdCreator() {\n // this map contains keys to numbers, so we remember what the last call was\n this.existingIds = {};\n }\n GroupInstanceIdCreator.prototype.getInstanceIdForKey = function (key) {\n var lastResult = this.existingIds[key];\n var result;\n if (typeof lastResult !== 'number') {\n // first time this key\n result = 0;\n }\n else {\n result = lastResult + 1;\n }\n this.existingIds[key] = result;\n return result;\n };\n return GroupInstanceIdCreator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar reUnescapedHtml = /[&<>\"']/g;\n/**\n * HTML Escapes.\n */\nvar HTML_ESCAPES = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n/**\n * It encodes any string in UTF-8 format\n * taken from https://github.com/mathiasbynens/utf8.js\n * @param {string} s\n * @returns {string}\n */\nfunction utf8_encode(s) {\n var stringFromCharCode = String.fromCharCode;\n function ucs2decode(string) {\n var output = [];\n if (!string) {\n return [];\n }\n var len = string.length;\n var counter = 0;\n var value;\n var extra;\n while (counter < len) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < len) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n }\n else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n }\n else {\n output.push(value);\n }\n }\n return output;\n }\n function checkScalarValue(point) {\n if (point >= 0xD800 && point <= 0xDFFF) {\n throw Error('Lone surrogate U+' + point.toString(16).toUpperCase() +\n ' is not a scalar value');\n }\n }\n function createByte(point, shift) {\n return stringFromCharCode(((point >> shift) & 0x3F) | 0x80);\n }\n function encodeCodePoint(point) {\n if ((point >= 0 && point <= 31 && point !== 10)) {\n var convertedCode = point.toString(16).toUpperCase();\n var paddedCode = convertedCode.padStart(4, '0');\n return \"_x\" + paddedCode + \"_\";\n }\n if ((point & 0xFFFFFF80) == 0) { // 1-byte sequence\n return stringFromCharCode(point);\n }\n var symbol = '';\n if ((point & 0xFFFFF800) == 0) { // 2-byte sequence\n symbol = stringFromCharCode(((point >> 6) & 0x1F) | 0xC0);\n }\n else if ((point & 0xFFFF0000) == 0) { // 3-byte sequence\n checkScalarValue(point);\n symbol = stringFromCharCode(((point >> 12) & 0x0F) | 0xE0);\n symbol += createByte(point, 6);\n }\n else if ((point & 0xFFE00000) == 0) { // 4-byte sequence\n symbol = stringFromCharCode(((point >> 18) & 0x07) | 0xF0);\n symbol += createByte(point, 12);\n symbol += createByte(point, 6);\n }\n symbol += stringFromCharCode((point & 0x3F) | 0x80);\n return symbol;\n }\n var codePoints = ucs2decode(s);\n var length = codePoints.length;\n var index = -1;\n var codePoint;\n var byteString = '';\n while (++index < length) {\n codePoint = codePoints[index];\n byteString += encodeCodePoint(codePoint);\n }\n return byteString;\n}\n/**\n * Converts a camelCase string into hyphenated string\n * from https://gist.github.com/youssman/745578062609e8acac9f\n * @param {string} str\n * @return {string}\n */\nfunction camelCaseToHyphen(str) {\n if (str === null || str === undefined) {\n return null;\n }\n return str.replace(/([A-Z])/g, function (g) { return '-' + g[0].toLowerCase(); });\n}\n/**\n * Converts a hyphenated string into camelCase string\n * from https://stackoverflow.com/questions/6660977/convert-hyphens-to-camel-case-camelcase\n * @param {string} str\n * @return {string}\n */\nfunction hyphenToCamelCase(str) {\n if (str === null || str === undefined) {\n return null;\n }\n return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\n}\nfunction capitalise(str) {\n return str[0].toUpperCase() + str.substr(1).toLowerCase();\n}\nfunction escapeString(toEscape, skipEscapingHtmlChars) {\n if (toEscape == null) {\n return null;\n }\n // we call toString() twice, in case value is an object, where user provides\n // a toString() method, and first call to toString() returns back something other\n // than a string (eg a number to render)\n var stringResult = toEscape.toString().toString();\n if (skipEscapingHtmlChars) {\n return stringResult;\n }\n // in react we don't need to escape html characters, as it's done by the framework\n return stringResult.replace(reUnescapedHtml, function (chr) { return HTML_ESCAPES[chr]; });\n}\n/**\n * Converts a camelCase string into regular text\n * from: https://stackoverflow.com/questions/15369566/putting-space-in-camel-case-string-using-regular-expression\n * @param {string} camelCase\n * @return {string}\n */\nfunction camelCaseToHumanText(camelCase) {\n if (!camelCase || camelCase == null) {\n return null;\n }\n var rex = /([A-Z])([A-Z])([a-z])|([a-z])([A-Z])/g;\n var words = camelCase.replace(rex, '$1$4 $2$3$5').replace('.', ' ').split(' ');\n return words.map(function (word) { return word.substring(0, 1).toUpperCase() + ((word.length > 1) ? word.substring(1, word.length) : ''); }).join(' ');\n}\n\nvar StringUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n utf8_encode: utf8_encode,\n camelCaseToHyphen: camelCaseToHyphen,\n hyphenToCamelCase: hyphenToCamelCase,\n capitalise: capitalise,\n escapeString: escapeString,\n camelCaseToHumanText: camelCaseToHumanText\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction convertToMap(arr) {\n var map = new Map();\n arr.forEach(function (pair) { return map.set(pair[0], pair[1]); });\n return map;\n}\n// handy for organising a list into a map, where each item is mapped by an attribute, eg mapping Columns by ID\nfunction mapById(arr, callback) {\n var map = new Map();\n arr.forEach(function (item) { return map.set(callback(item), item); });\n return map;\n}\nfunction keys(map) {\n var arr = [];\n map.forEach(function (_, key) { return arr.push(key); });\n return arr;\n}\n\nvar MapUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n convertToMap: convertToMap,\n mapById: mapById,\n keys: keys\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$p = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$j = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$p(arguments[i]));\n return ar;\n};\nvar ColDefUtil = /** @class */ (function () {\n function ColDefUtil() {\n }\n ColDefUtil.STRING_PROPERTIES = [\n 'headerName',\n 'columnGroupShow',\n 'headerClass',\n 'toolPanelClass',\n 'headerValueGetter',\n 'pivotKeys',\n 'groupId',\n 'colId',\n 'sort',\n 'initialSort',\n 'field',\n 'type',\n 'tooltipComponent',\n 'tooltipField',\n 'headerTooltip',\n 'cellClass',\n 'showRowGroup',\n 'filter',\n 'initialAggFunc',\n 'defaultAggFunc',\n 'aggFunc',\n 'pinned',\n 'initialPinned',\n 'chartDataType',\n 'cellEditorPopupPosition'\n ];\n ColDefUtil.OBJECT_PROPERTIES = [\n 'headerGroupComponent',\n 'headerGroupComponentFramework',\n 'headerGroupComponentParams',\n 'cellStyle',\n 'cellRenderer',\n 'cellRendererParams',\n 'cellRendererFramework',\n 'cellEditor',\n 'cellEditorFramework',\n 'cellEditorParams',\n 'pinnedRowCellRendererFramework',\n 'pinnedRowCellRendererParams',\n 'filterFramework',\n 'filterParams',\n 'pivotValueColumn',\n 'headerComponent',\n 'headerComponentFramework',\n 'headerComponentParams',\n 'floatingFilterComponent',\n 'floatingFilterComponentParams',\n 'floatingFilterComponentFramework',\n 'tooltipComponent',\n 'tooltipComponentParams',\n 'tooltipComponentFramework',\n 'refData',\n 'columnsMenuParams'\n ];\n ColDefUtil.ARRAY_PROPERTIES = [\n 'children',\n 'sortingOrder',\n 'allowedAggFuncs',\n 'menuTabs',\n 'pivotTotalColumnIds',\n 'cellClassRules',\n 'icons'\n ];\n ColDefUtil.NUMBER_PROPERTIES = [\n 'sortedAt',\n 'sortIndex',\n 'initialSortIndex',\n 'flex',\n 'initialFlex',\n 'width',\n 'initialWidth',\n 'minWidth',\n 'maxWidth',\n 'rowGroupIndex',\n 'initialRowGroupIndex',\n 'pivotIndex',\n 'initialPivotIndex'\n ];\n ColDefUtil.BOOLEAN_PROPERTIES = [\n 'suppressCellFlash',\n 'suppressColumnsToolPanel',\n 'suppressFiltersToolPanel',\n 'openByDefault',\n 'marryChildren',\n 'hide',\n 'initialHide',\n 'rowGroup',\n 'initialRowGroup',\n 'pivot',\n 'initialPivot',\n 'checkboxSelection',\n 'showDisabledCheckboxes',\n 'headerCheckboxSelection',\n 'headerCheckboxSelectionFilteredOnly',\n 'suppressMenu',\n 'suppressMovable',\n 'lockPosition',\n 'lockVisible',\n 'lockPinned',\n 'unSortIcon',\n 'suppressSizeToFit',\n 'suppressAutoSize',\n 'enableRowGroup',\n 'enablePivot',\n 'enableValue',\n 'editable',\n 'suppressPaste',\n 'suppressNavigable',\n 'enableCellChangeFlash',\n 'rowDrag',\n 'dndSource',\n 'autoHeight',\n 'wrapText',\n 'sortable',\n 'resizable',\n 'singleClickEdit',\n 'floatingFilter',\n 'cellEditorPopup',\n 'suppressFillHandle',\n 'wrapHeaderText',\n 'autoHeaderHeight'\n ];\n ColDefUtil.FUNCTION_PROPERTIES = [\n 'dndSourceOnRowDrag',\n 'valueGetter',\n 'valueSetter',\n 'filterValueGetter',\n 'keyCreator',\n 'pinnedRowCellRenderer',\n 'valueFormatter',\n 'pinnedRowValueFormatter',\n 'valueParser',\n 'comparator',\n 'equals',\n 'pivotComparator',\n 'suppressKeyboardEvent',\n 'suppressHeaderKeyboardEvent',\n 'colSpan',\n 'rowSpan',\n 'getQuickFilterText',\n 'newValueHandler',\n 'onCellValueChanged',\n 'onCellClicked',\n 'onCellDoubleClicked',\n 'onCellContextMenu',\n 'rowDragText',\n 'tooltipValueGetter',\n 'tooltipComponent',\n 'tooltipComponentFramework',\n 'cellRendererSelector',\n 'cellEditorSelector'\n ];\n ColDefUtil.ALL_PROPERTIES = __spread$j(ColDefUtil.ARRAY_PROPERTIES, ColDefUtil.OBJECT_PROPERTIES, ColDefUtil.STRING_PROPERTIES, ColDefUtil.NUMBER_PROPERTIES, ColDefUtil.FUNCTION_PROPERTIES, ColDefUtil.BOOLEAN_PROPERTIES);\n // used when doing property checks - this causes noise when using frameworks which can add their own fw specific\n // properties to colDefs, gridOptions etc\n ColDefUtil.FRAMEWORK_PROPERTIES = [\n '__ob__',\n '__v_skip',\n '__metadata__',\n 'mappedColumnProperties',\n 'hasChildColumns',\n 'toColDef',\n 'createColDefFromGridColumn'\n ];\n return ColDefUtil;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$o = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$i = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$o(arguments[i]));\n return ar;\n};\n/**\n * These keys are used for validating properties supplied on a gridOptions object, and for code generation.\n * If you change the properties on the gridOptions interface, you *must* update this file as well to be consistent.\n */\nvar PropertyKeys = /** @class */ (function () {\n function PropertyKeys() {\n }\n PropertyKeys.STRING_PROPERTIES = [\n 'rowSelection', 'overlayLoadingTemplate', 'overlayNoRowsTemplate',\n 'quickFilterText', 'rowModelType', 'editType', 'domLayout', 'clipboardDelimiter', 'rowGroupPanelShow',\n 'multiSortKey', 'pivotColumnGroupTotals', 'pivotRowTotals', 'pivotPanelShow', 'fillHandleDirection',\n 'serverSideStoreType', 'groupDisplayType', 'treeDataDisplayType', 'colResizeDefault'\n ];\n PropertyKeys.OBJECT_PROPERTIES = [\n 'components', 'frameworkComponents', 'rowStyle', 'context', 'autoGroupColumnDef', 'localeText', 'icons',\n 'datasource', 'serverSideDatasource', 'viewportDatasource', 'groupRowRendererParams', 'aggFuncs', 'fullWidthCellRendererParams',\n 'defaultColGroupDef', 'defaultColDef', 'defaultExportParams', 'defaultCsvExportParams', 'defaultExcelExportParams', 'columnTypes',\n 'rowClassRules', 'detailCellRendererParams', 'loadingCellRendererParams', 'loadingOverlayComponentParams',\n 'noRowsOverlayComponentParams', 'popupParent', 'statusBar', 'sideBar', 'chartThemeOverrides',\n 'customChartThemes', 'chartToolPanelsDef'\n ];\n PropertyKeys.ARRAY_PROPERTIES = [\n 'sortingOrder', 'alignedGrids', 'rowData', 'columnDefs', 'excelStyles', 'pinnedTopRowData', 'pinnedBottomRowData', 'chartThemes', 'rowClass'\n ];\n PropertyKeys.NUMBER_PROPERTIES = [\n 'rowHeight', 'detailRowHeight', 'rowBuffer', 'colWidth', 'headerHeight', 'groupHeaderHeight', 'floatingFiltersHeight',\n 'pivotHeaderHeight', 'pivotGroupHeaderHeight', 'groupDefaultExpanded', 'minColWidth', 'maxColWidth', 'viewportRowModelPageSize',\n 'viewportRowModelBufferSize', 'autoSizePadding', 'maxBlocksInCache', 'maxConcurrentDatasourceRequests', 'tooltipShowDelay',\n 'tooltipHideDelay', 'cacheOverflowSize', 'paginationPageSize', 'cacheBlockSize', 'infiniteInitialRowCount', 'serverSideInitialRowCount', 'scrollbarWidth',\n 'batchUpdateWaitMillis', 'asyncTransactionWaitMillis', 'blockLoadDebounceMillis', 'keepDetailRowsCount',\n 'undoRedoCellEditingLimit', 'cellFlashDelay', 'cellFadeDelay', 'tabIndex'\n ];\n PropertyKeys.BOOLEAN_PROPERTIES = [\n 'suppressMakeColumnVisibleAfterUnGroup', 'suppressRowClickSelection', 'suppressCellSelection', 'suppressCellFocus', 'suppressHorizontalScroll',\n 'alwaysShowHorizontalScroll', 'alwaysShowVerticalScroll', 'debug', 'enableBrowserTooltips', 'enableCellExpressions',\n 'angularCompileRows', 'angularCompileFilters', 'groupSuppressAutoColumn', 'groupSelectsChildren', 'groupIncludeFooter',\n 'groupIncludeTotalFooter', 'groupUseEntireRow', 'groupSuppressBlankHeader', 'suppressMenuHide', 'suppressRowDeselection',\n 'unSortIcon', 'suppressMultiSort', 'alwaysMultiSort', 'singleClickEdit', 'suppressLoadingOverlay', 'suppressNoRowsOverlay', 'suppressAutoSize',\n 'skipHeaderOnAutoSize', 'suppressParentsInRowNodes', 'suppressColumnMoveAnimation', 'suppressMovableColumns',\n 'suppressFieldDotNotation', 'enableRangeSelection', 'enableRangeHandle', 'enableFillHandle', 'suppressClearOnFillReduction',\n 'deltaSort', 'suppressTouch', 'suppressAsyncEvents', 'allowContextMenuWithControlKey', 'suppressContextMenu',\n 'rememberGroupStateWhenNewData', 'enableCellChangeFlash', 'suppressDragLeaveHidesColumns', 'suppressRowGroupHidesColumns', 'suppressMiddleClickScrolls',\n 'suppressPreventDefaultOnMouseWheel', 'suppressCopyRowsToClipboard', 'copyHeadersToClipboard', 'copyGroupHeadersToClipboard',\n 'pivotMode', 'suppressAggFuncInHeader', 'suppressColumnVirtualisation', 'suppressAggAtRootLevel', 'suppressFocusAfterRefresh',\n 'functionsPassive', 'functionsReadOnly', 'animateRows', 'groupSelectsFiltered', 'groupRemoveSingleChildren',\n 'groupRemoveLowestSingleChildren', 'enableRtl', 'suppressClickEdit', 'rowDragEntireRow', 'rowDragManaged', 'suppressRowDrag',\n 'suppressMoveWhenRowDragging', 'rowDragMultiRow', 'enableGroupEdit', 'embedFullWidthRows', 'deprecatedEmbedFullWidthRows',\n 'suppressPaginationPanel', 'groupHideOpenParents', 'groupMultiAutoColumn', 'pagination',\n 'stopEditingWhenGridLosesFocus', 'paginationAutoPageSize', 'suppressScrollOnNewData', 'suppressScrollWhenPopupsAreOpen',\n 'purgeClosedRowNodes', 'cacheQuickFilter', 'deltaRowDataMode', 'ensureDomOrder', 'accentedSort', 'suppressChangeDetection',\n 'valueCache', 'valueCacheNeverExpires', 'aggregateOnlyChangedColumns', 'suppressAnimationFrame', 'suppressExcelExport',\n 'suppressCsvExport', 'treeData', 'masterDetail', 'suppressMultiRangeSelection', 'enterMovesDownAfterEdit', 'enterMovesDown',\n 'suppressPropertyNamesCheck', 'rowMultiSelectWithClick', 'suppressEnterpriseResetOnNewColumns',\n 'suppressRowHoverHighlight', 'suppressRowTransform', 'suppressClipboardPaste', 'suppressLastEmptyLineOnPaste',\n 'suppressSetColumnStateEvents', 'suppressColumnStateEvents', 'enableCharts', 'enableChartToolPanelsButton', 'deltaColumnMode',\n 'suppressMaintainUnsortedOrder', 'enableCellTextSelection', 'suppressBrowserResizeObserver', 'suppressMaxRenderedRowRestriction',\n 'excludeChildrenWhenTreeDataFiltering', 'tooltipMouseTrack', 'keepDetailRows', 'paginateChildRows', 'preventDefaultOnContextMenu',\n 'undoRedoCellEditing', 'allowDragFromColumnsToolPanel', 'immutableData', 'immutableColumns', 'pivotSuppressAutoColumn',\n 'suppressExpandablePivotGroups', 'applyColumnDefOrder', 'debounceVerticalScrollbar', 'detailRowAutoHeight',\n 'serverSideFilteringAlwaysResets', 'serverSideSortingAlwaysResets', 'serverSideSortAllLevels', 'serverSideFilterAllLevels',\n 'serverSideSortOnServer', 'serverSideFilterOnServer', 'suppressAggFilteredOnly', 'showOpenedGroup', 'suppressClipboardApi',\n 'suppressModelUpdateAfterUpdateTransaction', 'stopEditingWhenCellsLoseFocus', 'maintainColumnOrder', 'groupMaintainOrder',\n 'columnHoverHighlight', 'reactUi', 'suppressReactUi', 'readOnlyEdit', 'suppressRowVirtualisation', 'enableCellEditingOnBackspace',\n 'resetRowDataOnUpdate', 'removePivotHeaderRowWhenSingleValueColumn', 'suppressCopySingleCellRanges',\n 'groupRowsSticky', 'serverSideInfiniteScroll', 'rowGroupPanelSuppressSort', 'allowShowChangeAfterFilter'\n ];\n /** You do not need to include event callbacks in this list, as they are generated automatically. */\n PropertyKeys.FUNCTIONAL_PROPERTIES = [\n 'localeTextFunc', 'doesExternalFilterPass', 'groupRowAggNodes', 'isFullWidthCell', 'processSecondaryColDef', 'processSecondaryColGroupDef', 'processPivotResultColDef',\n 'processPivotResultColGroupDef', 'getBusinessKeyForNode', 'isRowSelectable', 'postSort', 'defaultGroupSortComparator', 'defaultGroupOrderComparator', 'rowDragText',\n 'groupRowInnerRenderer', 'groupRowInnerRendererFramework', 'groupRowRenderer', 'groupRowRendererFramework', 'fullWidthCellRenderer', 'fullWidthCellRendererFramework',\n 'loadingCellRenderer', 'loadingCellRendererFramework', 'loadingOverlayComponent', 'loadingOverlayComponentFramework', 'noRowsOverlayComponent', 'noRowsOverlayComponentFramework',\n 'detailCellRenderer', 'detailCellRendererFramework'\n ];\n PropertyKeys.CALLBACK_PROPERTIES = [\n 'getLocaleText', 'isExternalFilterPresent', 'getRowHeight', 'getRowClass', 'getRowStyle', 'getContextMenuItems', 'getMainMenuItems',\n 'processRowPostCreate', 'processCellForClipboard', 'getGroupRowAgg', 'getRowNodeId', 'isFullWidthRow',\n 'sendToClipboard', 'navigateToNextHeader', 'tabToNextHeader', 'navigateToNextCell',\n 'tabToNextCell', 'processCellFromClipboard', 'getDocument', 'postProcessPopup', 'getChildCount', 'getDataPath', 'isRowMaster', 'postSortRows', 'processHeaderForClipboard',\n 'processGroupHeaderForClipboard', 'paginationNumberFormatter', 'processDataFromClipboard', 'getServerSideGroupKey', 'isServerSideGroup', 'suppressKeyboardEvent',\n 'createChartContainer', 'getChartToolbarItems', 'fillOperation', 'isApplyServerSideTransaction', 'getServerSideStoreParams', 'getServerSideGroupLevelParams',\n 'isServerSideGroupOpenByDefault', 'isGroupOpenByDefault', 'initialGroupOrderComparator',\n 'loadingCellRendererSelector', 'getRowId', 'groupAggFiltering'\n ];\n PropertyKeys.FUNCTION_PROPERTIES = __spread$i(PropertyKeys.FUNCTIONAL_PROPERTIES, PropertyKeys.CALLBACK_PROPERTIES);\n PropertyKeys.ALL_PROPERTIES = __spread$i(PropertyKeys.ARRAY_PROPERTIES, PropertyKeys.OBJECT_PROPERTIES, PropertyKeys.STRING_PROPERTIES, PropertyKeys.NUMBER_PROPERTIES, PropertyKeys.FUNCTION_PROPERTIES, PropertyKeys.BOOLEAN_PROPERTIES);\n /**\n * Used when performing property checks. This avoids noise caused when using frameworks, which can add their own\n * framework-specific properties to colDefs, gridOptions etc.\n */\n PropertyKeys.FRAMEWORK_PROPERTIES = [\n '__ob__', '__v_skip', '__metadata__', 'mappedColumnProperties', 'hasChildColumns', 'toColDef', 'createColDefFromGridColumn'\n ];\n return PropertyKeys;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$h = (undefined && undefined.__assign) || function () {\n __assign$h = 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$h.apply(this, arguments);\n};\nvar __read$n = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$h = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$n(arguments[i]));\n return ar;\n};\nvar ComponentUtil = /** @class */ (function () {\n function ComponentUtil() {\n }\n ComponentUtil.getEventCallbacks = function () {\n if (!ComponentUtil.EVENT_CALLBACKS) {\n ComponentUtil.EVENT_CALLBACKS = ComponentUtil.EVENTS.map(function (event) { return ComponentUtil.getCallbackForEvent(event); });\n }\n return ComponentUtil.EVENT_CALLBACKS;\n };\n ComponentUtil.copyAttributesToGridOptions = function (gridOptions, component, skipEventDeprecationCheck) {\n // create empty grid options if none were passed\n if (typeof gridOptions !== 'object') {\n gridOptions = {};\n }\n // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n var pGridOptions = gridOptions;\n var keyExists = function (key) { return typeof component[key] !== 'undefined'; };\n // if groupAggFiltering exists and isn't a function, handle as a boolean.\n if (keyExists('groupAggFiltering') && typeof component.groupAggFiltering !== 'function') {\n pGridOptions.groupAggFiltering = ComponentUtil.toBoolean(component.groupAggFiltering);\n delete component.groupAggFiltering;\n }\n // add in all the simple properties\n __spread$h(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.FUNCTION_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = component[key]; });\n ComponentUtil.BOOLEAN_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(component[key]); });\n ComponentUtil.NUMBER_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(component[key]); });\n return gridOptions;\n };\n ComponentUtil.getCallbackForEvent = function (eventName) {\n if (!eventName || eventName.length < 2) {\n return eventName;\n }\n return 'on' + eventName[0].toUpperCase() + eventName.substr(1);\n };\n ComponentUtil.processOnChange = function (changes, gridOptions, api, columnApi) {\n if (!changes) {\n return;\n }\n var changesToApply = __assign$h({}, changes);\n // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n var pGridOptions = gridOptions;\n var keyExists = function (key) { return changesToApply[key]; };\n // if groupAggFiltering exists and isn't a function, handle as a boolean.\n if (keyExists('groupAggFiltering')) {\n if (typeof changesToApply.groupAggFiltering === 'function') {\n pGridOptions.groupAggFiltering = changesToApply.groupAggFiltering;\n }\n else {\n pGridOptions.groupAggFiltering = ComponentUtil.toBoolean(changesToApply.groupAggFiltering);\n }\n delete changesToApply.groupAggFiltering;\n }\n if (keyExists('groupDisplayType')) {\n if (typeof changesToApply.groupDisplayType.currentValue === 'string') {\n api.setGroupDisplayType(changesToApply.groupDisplayType.currentValue);\n delete changesToApply.groupDisplayType;\n }\n }\n // ********* CODE ORDER TO AVOID BUGS *************** //\n // If you want to call an update method that just calls through to gridOptionsWrapper.setProperty then it needs to be\n // called before the values get copied across otherwise the change will not fire an event because the method\n // gridOptionsWrapper.setProperty does a diff check first.\n // All these manual calls are required in the current setup as changes to these properties are being listened to in the \n // rest of the code base which can be found by searching for: \"addManagedListener(this.gridOptionsWrapper\"\n if (changesToApply.domLayout) {\n api.setDomLayout(changesToApply.domLayout.currentValue);\n delete changesToApply.domLayout;\n }\n if (changesToApply.rowClass) {\n api.setRowClass(changesToApply.rowClass.currentValue);\n delete changesToApply.rowClass;\n }\n if (changesToApply.paginationPageSize) {\n api.paginationSetPageSize(ComponentUtil.toNumber(changesToApply.paginationPageSize.currentValue));\n delete changesToApply.paginationPageSize;\n }\n if (changesToApply.rowGroupPanelShow) {\n api.setRowGroupPanelShow(changesToApply.rowGroupPanelShow.currentValue);\n delete changesToApply.rowGroupPanelShow;\n }\n if (changesToApply.groupRemoveSingleChildren) {\n api.setGroupRemoveSingleChildren(ComponentUtil.toBoolean(changesToApply.groupRemoveSingleChildren.currentValue));\n delete changesToApply.groupRemoveSingleChildren;\n }\n if (changesToApply.groupRemoveLowestSingleChildren) {\n api.setGroupRemoveLowestSingleChildren(ComponentUtil.toBoolean(changesToApply.groupRemoveLowestSingleChildren.currentValue));\n delete changesToApply.groupRemoveLowestSingleChildren;\n }\n if (changesToApply.suppressRowDrag) {\n api.setSuppressRowDrag(ComponentUtil.toBoolean(changesToApply.suppressRowDrag.currentValue));\n delete changesToApply.suppressRowDrag;\n }\n if (changesToApply.suppressMoveWhenRowDragging) {\n api.setSuppressMoveWhenRowDragging(ComponentUtil.toBoolean(changesToApply.suppressMoveWhenRowDragging.currentValue));\n delete changesToApply.suppressMoveWhenRowDragging;\n }\n if (changesToApply.suppressRowClickSelection) {\n api.setSuppressRowClickSelection(ComponentUtil.toBoolean(changesToApply.suppressRowClickSelection.currentValue));\n delete changesToApply.suppressRowClickSelection;\n }\n if (changesToApply.suppressClipboardPaste) {\n api.setSuppressClipboardPaste(ComponentUtil.toBoolean(changesToApply.suppressClipboardPaste.currentValue));\n delete changesToApply.suppressClipboardPaste;\n }\n if (changesToApply.headerHeight) {\n api.setHeaderHeight(ComponentUtil.toNumber(changesToApply.headerHeight.currentValue));\n delete changesToApply.headerHeight;\n }\n if (changesToApply.pivotHeaderHeight) {\n api.setPivotHeaderHeight(ComponentUtil.toNumber(changesToApply.pivotHeaderHeight.currentValue));\n delete changesToApply.pivotHeaderHeight;\n }\n if (changesToApply.groupHeaderHeight) {\n api.setGroupHeaderHeight(ComponentUtil.toNumber(changesToApply.groupHeaderHeight.currentValue));\n delete changesToApply.groupHeaderHeight;\n }\n if (changesToApply.pivotGroupHeaderHeight) {\n api.setPivotGroupHeaderHeight(ComponentUtil.toNumber(changesToApply.pivotGroupHeaderHeight.currentValue));\n delete changesToApply.pivotGroupHeaderHeight;\n }\n if (changesToApply.floatingFiltersHeight) {\n api.setFloatingFiltersHeight(ComponentUtil.toNumber(changesToApply.floatingFiltersHeight.currentValue));\n delete changesToApply.floatingFiltersHeight;\n }\n if (changesToApply.functionsReadOnly) {\n api.setFunctionsReadOnly(ComponentUtil.toBoolean(changesToApply.functionsReadOnly.currentValue));\n delete changesToApply.functionsReadOnly;\n }\n // ********* CODE ORDER TO AVOID BUGS *************** //\n // check if any change for the simple types, and if so, then just copy in the new value\n __spread$h(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = changesToApply[key].currentValue; });\n ComponentUtil.BOOLEAN_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(changesToApply[key].currentValue); });\n ComponentUtil.NUMBER_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(changesToApply[key].currentValue); });\n // ********* CODE ORDER TO AVOID BUGS *************** //\n // The following manual updates call directly into code models and rely on the simple copy being made by the\n // code above to keep gridOptions in sync with the change.\n if (changesToApply.enableCellTextSelection) {\n api.setEnableCellTextSelection(ComponentUtil.toBoolean(changesToApply.enableCellTextSelection.currentValue));\n delete changesToApply.enableCellTextSelection;\n }\n if (changesToApply.quickFilterText) {\n api.setQuickFilter(changesToApply.quickFilterText.currentValue);\n delete changesToApply.quickFilterText;\n }\n if (changesToApply.autoGroupColumnDef) {\n api.setAutoGroupColumnDef(changesToApply.autoGroupColumnDef.currentValue, \"gridOptionsChanged\");\n delete changesToApply.autoGroupColumnDef;\n }\n if (changesToApply.columnDefs) {\n api.setColumnDefs(changesToApply.columnDefs.currentValue, \"gridOptionsChanged\");\n delete changesToApply.columnDefs;\n }\n if (changesToApply.defaultColDef) {\n api.setDefaultColDef(changesToApply.defaultColDef.currentValue, \"gridOptionsChanged\");\n delete changesToApply.defaultColDef;\n }\n if (changesToApply.pivotMode) {\n columnApi.setPivotMode(ComponentUtil.toBoolean(changesToApply.pivotMode.currentValue));\n delete changesToApply.pivotMode;\n }\n // any remaining properties can be set in a generic way\n // ie the setter takes the form of setXXX and the argument requires no formatting/translation first\n var dynamicApi = api;\n Object.keys(changesToApply)\n .forEach(function (property) {\n var setterName = \"set\" + property.charAt(0).toUpperCase() + property.substring(1);\n if (dynamicApi[setterName]) {\n dynamicApi[setterName](changes[property].currentValue);\n }\n });\n // copy changes into an event for dispatch\n var event = {\n type: Events.EVENT_COMPONENT_STATE_CHANGED\n };\n iterateObject(changes, function (key, value) {\n event[key] = value;\n });\n api.dispatchEvent(event);\n };\n ComponentUtil.toBoolean = function (value) {\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n // for boolean, compare to empty String to allow attributes appearing with\n // no value to be treated as 'true'\n return value.toUpperCase() === 'TRUE' || value == '';\n }\n return false;\n };\n ComponentUtil.toNumber = function (value) {\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n return Number(value);\n }\n };\n // all the events are populated in here AFTER this class (at the bottom of the file).\n ComponentUtil.EVENTS = [];\n // events that are available for use by users of AG Grid and so should be documented\n ComponentUtil.PUBLIC_EVENTS = [];\n // events that are internal to AG Grid and should not be exposed to users via documentation or generated framework components\n ComponentUtil.EXCLUDED_INTERNAL_EVENTS = [];\n ComponentUtil.STRING_PROPERTIES = PropertyKeys.STRING_PROPERTIES;\n ComponentUtil.OBJECT_PROPERTIES = PropertyKeys.OBJECT_PROPERTIES;\n ComponentUtil.ARRAY_PROPERTIES = PropertyKeys.ARRAY_PROPERTIES;\n ComponentUtil.NUMBER_PROPERTIES = PropertyKeys.NUMBER_PROPERTIES;\n ComponentUtil.BOOLEAN_PROPERTIES = PropertyKeys.BOOLEAN_PROPERTIES;\n ComponentUtil.FUNCTION_PROPERTIES = PropertyKeys.FUNCTION_PROPERTIES;\n ComponentUtil.ALL_PROPERTIES = PropertyKeys.ALL_PROPERTIES;\n return ComponentUtil;\n}());\nComponentUtil.EVENTS = values(Events);\n/** Exclude the following internal events from code generation to prevent exposing these events via framework components */\nComponentUtil.EXCLUDED_INTERNAL_EVENTS = [\n Events.EVENT_SCROLLBAR_WIDTH_CHANGED,\n Events.EVENT_CHECKBOX_CHANGED,\n Events.EVENT_HEIGHT_SCALE_CHANGED,\n Events.EVENT_BODY_HEIGHT_CHANGED,\n Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n Events.EVENT_SCROLL_VISIBILITY_CHANGED,\n Events.EVENT_COLUMN_HOVER_CHANGED,\n Events.EVENT_FLASH_CELLS,\n Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED,\n Events.EVENT_DISPLAYED_ROWS_CHANGED,\n Events.EVENT_LEFT_PINNED_WIDTH_CHANGED,\n Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED,\n Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED,\n Events.EVENT_POPUP_TO_FRONT,\n Events.EVENT_KEYBOARD_FOCUS,\n Events.EVENT_MOUSE_FOCUS,\n Events.EVENT_STORE_UPDATED,\n Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END,\n Events.EVENT_FILL_START,\n Events.EVENT_FILL_END,\n Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START,\n Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END,\n Events.EVENT_FULL_WIDTH_ROW_FOCUSED,\n Events.EVENT_HEADER_HEIGHT_CHANGED,\n Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED\n];\n/** EVENTS that should be exposed via code generation for the framework components. */\nComponentUtil.PUBLIC_EVENTS = ComponentUtil.EVENTS.filter(function (e) { return !includes(ComponentUtil.EXCLUDED_INTERNAL_EVENTS, e); });\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar SideBarDefParser = /** @class */ (function () {\n function SideBarDefParser() {\n }\n SideBarDefParser.parse = function (toParse) {\n if (!toParse) {\n return null;\n }\n if (toParse === true) {\n return {\n toolPanels: [\n SideBarDefParser.DEFAULT_COLUMN_COMP,\n SideBarDefParser.DEFAULT_FILTER_COMP,\n ],\n defaultToolPanel: 'columns'\n };\n }\n if (typeof toParse === 'string') {\n return SideBarDefParser.parse([toParse]);\n }\n if (Array.isArray(toParse)) {\n var comps_1 = [];\n toParse.forEach(function (key) {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[key];\n if (!lookupResult) {\n console.warn(\"AG Grid: the key \" + key + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n comps_1.push(lookupResult);\n });\n if (comps_1.length === 0) {\n return null;\n }\n return {\n toolPanels: comps_1,\n defaultToolPanel: comps_1[0].id\n };\n }\n var result = {\n toolPanels: SideBarDefParser.parseComponents(toParse.toolPanels),\n defaultToolPanel: toParse.defaultToolPanel,\n hiddenByDefault: toParse.hiddenByDefault,\n position: toParse.position\n };\n return result;\n };\n SideBarDefParser.parseComponents = function (from) {\n var result = [];\n if (!from) {\n return result;\n }\n from.forEach(function (it) {\n var toAdd = null;\n if (typeof it === 'string') {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[it];\n if (!lookupResult) {\n console.warn(\"AG Grid: the key \" + it + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n toAdd = lookupResult;\n }\n else {\n toAdd = it;\n }\n result.push(toAdd);\n });\n return result;\n };\n SideBarDefParser.DEFAULT_COLUMN_COMP = {\n id: 'columns',\n labelDefault: 'Columns',\n labelKey: 'columns',\n iconKey: 'columns',\n toolPanel: 'agColumnsToolPanel',\n };\n SideBarDefParser.DEFAULT_FILTER_COMP = {\n id: 'filters',\n labelDefault: 'Filters',\n labelKey: 'filters',\n iconKey: 'filter',\n toolPanel: 'agFiltersToolPanel',\n };\n SideBarDefParser.DEFAULT_BY_KEY = {\n columns: SideBarDefParser.DEFAULT_COLUMN_COMP,\n filters: SideBarDefParser.DEFAULT_FILTER_COMP\n };\n return SideBarDefParser;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __values$5 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n/**\n * These variables are lazy loaded, as otherwise they try and get initialised when we are loading\n * unit tests and we don't have references to window or document in the unit tests\n * from http://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser\n */\nvar isSafari;\nvar isIE;\nvar isEdge;\nvar isChrome;\nvar isFirefox;\nvar isMacOs;\nvar isIOS;\nvar invisibleScrollbar;\nvar browserScrollbarWidth;\nvar browserInfo;\n/**\n * from https://stackoverflow.com/a/16938481/1388233\n */\nfunction getBrowserInfo() {\n if (browserInfo) {\n return browserInfo;\n }\n var userAgent = navigator.userAgent;\n var match = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n var tem;\n var version;\n if (/trident/i.test(match[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(userAgent) || [];\n version = tem[1] != null ? parseFloat(tem[1]) : 0;\n return {\n name: 'IE',\n version: version\n };\n }\n if (match[1] === 'Chrome') {\n tem = userAgent.match(/\\bOPR|Edge\\/(\\d+)/);\n if (tem != null) {\n version = tem[1] != null ? parseFloat(tem[1]) : 0;\n return {\n name: 'Opera',\n version: version\n };\n }\n }\n match = match[2] ? [match[1], match[2]] : [navigator.appName, navigator.appVersion, '-?'];\n tem = userAgent.match(/version\\/(\\d+)/i);\n if (tem != null) {\n match.splice(1, 1, tem[1]);\n }\n var name = match[0];\n version = match[1] != null ? parseFloat(match[1]) : 0;\n browserInfo = { name: name, version: version };\n return browserInfo;\n}\nfunction isBrowserIE() {\n if (isIE === undefined) {\n isIE = /*@cc_on!@*/ !!document.documentMode; // At least IE6\n }\n return isIE;\n}\nfunction isBrowserEdge() {\n if (isEdge === undefined) {\n isEdge = !isBrowserIE() && !!window.StyleMedia;\n }\n return isEdge;\n}\nfunction isBrowserSafari() {\n if (isSafari === undefined) {\n // taken from https://stackoverflow.com/a/23522755/1388233\n isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n }\n return isSafari;\n}\nfunction isBrowserChrome() {\n if (isChrome === undefined) {\n var win = window;\n isChrome = (!!win.chrome && (!!win.chrome.webstore || !!win.chrome.runtime)) ||\n (/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor));\n }\n return isChrome;\n}\nfunction isBrowserFirefox() {\n if (isFirefox === undefined) {\n var win = window;\n isFirefox = typeof win.InstallTrigger !== 'undefined';\n }\n return isFirefox;\n}\nfunction isMacOsUserAgent() {\n if (isMacOs === undefined) {\n isMacOs = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\n }\n return isMacOs;\n}\nfunction isIOSUserAgent() {\n if (isIOS === undefined) {\n // taken from https://stackoverflow.com/a/58064481/1388233\n isIOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n // eslint-disable-next-line\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&\n // @ts-ignore\n !window.MSStream;\n }\n return isIOS;\n}\nfunction browserSupportsPreventScroll() {\n // all browsers except safari support focus({ preventScroll: true }).\n // this feature was added on Safari 15+\n return !isBrowserSafari() || getBrowserInfo().version >= 15;\n}\nfunction getTabIndex(el) {\n if (!el) {\n return null;\n }\n var numberTabIndex = el.tabIndex;\n var tabIndex = el.getAttribute('tabIndex');\n if (numberTabIndex === -1 && (tabIndex === null || (tabIndex === '' && !isBrowserFirefox()))) {\n return null;\n }\n return numberTabIndex.toString();\n}\nfunction getMaxDivHeight() {\n if (!document.body) {\n return -1;\n }\n var res = 1000000;\n // FF reports the height back but still renders blank after ~6M px\n var testUpTo = navigator.userAgent.toLowerCase().match(/firefox/) ? 6000000 : 1000000000;\n var div = document.createElement('div');\n document.body.appendChild(div);\n while (true) {\n var test = res * 2;\n div.style.height = test + 'px';\n if (test > testUpTo || div.clientHeight !== test) {\n break;\n }\n else {\n res = test;\n }\n }\n document.body.removeChild(div);\n return res;\n}\nfunction getScrollbarWidth() {\n if (browserScrollbarWidth == null) {\n initScrollbarWidthAndVisibility();\n }\n return browserScrollbarWidth;\n}\nfunction initScrollbarWidthAndVisibility() {\n var body = document.body;\n var div = document.createElement('div');\n div.style.width = div.style.height = '100px';\n div.style.opacity = '0';\n div.style.overflow = 'scroll';\n div.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n div.style.position = 'absolute';\n body.appendChild(div);\n var width = div.offsetWidth - div.clientWidth;\n // if width is 0 and client width is 0, means the DOM isn't ready\n if (width === 0 && div.clientWidth === 0) {\n width = null;\n }\n // remove div\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n if (width != null) {\n browserScrollbarWidth = width;\n invisibleScrollbar = width === 0;\n }\n}\nfunction isInvisibleScrollbar() {\n if (invisibleScrollbar == null) {\n initScrollbarWidthAndVisibility();\n }\n return invisibleScrollbar;\n}\n/** @deprecated */\nfunction hasOverflowScrolling() {\n var e_1, _a;\n var prefixes = ['webkit', 'moz', 'o', 'ms'];\n var div = document.createElement('div');\n var body = document.getElementsByTagName('body')[0];\n var found = false;\n var p;\n body.appendChild(div);\n div.setAttribute('style', prefixes.map(function (prefix) { return \"-\" + prefix + \"-overflow-scrolling: touch\"; }).concat('overflow-scrolling: touch').join(';'));\n var computedStyle = window.getComputedStyle(div);\n if (computedStyle.overflowScrolling === 'touch') {\n found = true;\n }\n if (!found) {\n try {\n for (var prefixes_1 = __values$5(prefixes), prefixes_1_1 = prefixes_1.next(); !prefixes_1_1.done; prefixes_1_1 = prefixes_1.next()) {\n p = prefixes_1_1.value;\n if (computedStyle[p + \"OverflowScrolling\"] === 'touch') {\n found = true;\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (prefixes_1_1 && !prefixes_1_1.done && (_a = prefixes_1.return)) _a.call(prefixes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n return found;\n}\n/**\n * Gets the document body width\n * from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n * @returns {number}\n */\nfunction getBodyWidth() {\n if (document.body) {\n return document.body.clientWidth;\n }\n if (window.innerHeight) {\n return window.innerWidth;\n }\n if (document.documentElement && document.documentElement.clientWidth) {\n return document.documentElement.clientWidth;\n }\n return -1;\n}\n/**\n * Gets the body height\n * from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n * @returns {number}\n */\nfunction getBodyHeight() {\n if (document.body) {\n return document.body.clientHeight;\n }\n if (window.innerHeight) {\n return window.innerHeight;\n }\n if (document.documentElement && document.documentElement.clientHeight) {\n return document.documentElement.clientHeight;\n }\n return -1;\n}\n\nvar BrowserUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getBrowserInfo: getBrowserInfo,\n isBrowserEdge: isBrowserEdge,\n isBrowserSafari: isBrowserSafari,\n isBrowserChrome: isBrowserChrome,\n isBrowserFirefox: isBrowserFirefox,\n isMacOsUserAgent: isMacOsUserAgent,\n isIOSUserAgent: isIOSUserAgent,\n browserSupportsPreventScroll: browserSupportsPreventScroll,\n getTabIndex: getTabIndex,\n getMaxDivHeight: getMaxDivHeight,\n getScrollbarWidth: getScrollbarWidth,\n isInvisibleScrollbar: isInvisibleScrollbar,\n hasOverflowScrolling: hasOverflowScrolling,\n getBodyWidth: getBodyWidth,\n getBodyHeight: getBodyHeight\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction fuzzyCheckStrings(inputValues, validValues, allSuggestions) {\n var fuzzyMatches = {};\n var invalidInputs = inputValues.filter(function (inputValue) {\n return !validValues.some(function (validValue) { return validValue === inputValue; });\n });\n if (invalidInputs.length > 0) {\n invalidInputs.forEach(function (invalidInput) {\n return fuzzyMatches[invalidInput] = fuzzySuggestions(invalidInput, allSuggestions);\n });\n }\n return fuzzyMatches;\n}\n/**\n *\n * @param {String} inputValue The value to be compared against a list of strings\n * @param allSuggestions The list of strings to be compared against\n * @param hideIrrelevant By default, fuzzy suggestions will just sort the allSuggestions list, set this to true\n * to filter out the irrelevant values\n * @param weighted Set this to true, to make letters matched in the order they were typed have priority in the results.\n */\nfunction fuzzySuggestions(inputValue, allSuggestions, hideIrrelevant, weighted) {\n var search = weighted ? string_weighted_distances : string_distances;\n var thisSuggestions = allSuggestions.map(function (text) { return ({\n value: text,\n relevance: search(inputValue.toLowerCase(), text.toLocaleLowerCase())\n }); });\n thisSuggestions.sort(function (a, b) { return b.relevance - a.relevance; });\n if (hideIrrelevant) {\n thisSuggestions = thisSuggestions.filter(function (suggestion) { return suggestion.relevance !== 0; });\n }\n return thisSuggestions.map(function (suggestion) { return suggestion.value; });\n}\n/**\n * Algorithm to do fuzzy search\n * from https://stackoverflow.com/questions/23305000/javascript-fuzzy-search-that-makes-sense\n * @param {string} from\n * @return {[]}\n */\nfunction get_bigrams(from) {\n var s = from.toLowerCase();\n var v = new Array(s.length - 1);\n var i;\n var j;\n var ref;\n for (i = j = 0, ref = v.length; j <= ref; i = j += 1) {\n v[i] = s.slice(i, i + 2);\n }\n return v;\n}\nfunction string_distances(str1, str2) {\n if (str1.length === 0 && str2.length === 0) {\n return 0;\n }\n var pairs1 = get_bigrams(str1);\n var pairs2 = get_bigrams(str2);\n var union = pairs1.length + pairs2.length;\n var hit_count = 0;\n var j;\n var len;\n for (j = 0, len = pairs1.length; j < len; j++) {\n var x = pairs1[j];\n var k = void 0;\n var len1 = void 0;\n for (k = 0, len1 = pairs2.length; k < len1; k++) {\n var y = pairs2[k];\n if (x === y) {\n hit_count++;\n }\n }\n }\n return hit_count > 0 ? (2 * hit_count) / union : 0;\n}\nfunction string_weighted_distances(str1, str2) {\n var a = str1.replace(/\\s/g, '');\n var b = str2.replace(/\\s/g, '');\n var weight = 0;\n var lastIndex = 0;\n for (var i = 0; i < a.length; i++) {\n var idx = b.indexOf(a[i], lastIndex);\n if (idx === -1) {\n continue;\n }\n lastIndex = idx;\n weight += (100 - (lastIndex * 100 / 10000) * 100);\n }\n return weight;\n}\n\nvar FuzzyMatchUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n fuzzyCheckStrings: fuzzyCheckStrings,\n fuzzySuggestions: fuzzySuggestions,\n get_bigrams: get_bigrams,\n string_distances: string_distances,\n string_weighted_distances: string_weighted_distances\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction padStartWidthZeros(value, totalStringSize) {\n return value.toString().padStart(totalStringSize, '0');\n}\nfunction createArrayOfNumbers(first, last) {\n var result = [];\n for (var i = first; i <= last; i++) {\n result.push(i);\n }\n return result;\n}\n/**\n * Check if a value is numeric\n * from http://stackoverflow.com/questions/9716468/is-there-any-function-like-isnumeric-in-javascript-to-validate-numbers\n * @param {any} value\n * @return {boolean}\n */\nfunction isNumeric(value) {\n return value !== '' && !isNaN(parseFloat(value)) && isFinite(value);\n}\nfunction cleanNumber(value) {\n if (typeof value === 'string') {\n value = parseInt(value, 10);\n }\n if (typeof value === 'number') {\n return Math.floor(value);\n }\n return null;\n}\nfunction decToHex(number, bytes) {\n var hex = '';\n for (var i = 0; i < bytes; i++) {\n hex += String.fromCharCode(number & 0xff);\n number >>>= 8;\n }\n return hex;\n}\nfunction formatNumberTwoDecimalPlacesAndCommas(value, thousandSeparator, decimalSeparator) {\n if (typeof value !== 'number') {\n return '';\n }\n return formatNumberCommas(Math.round(value * 100) / 100, thousandSeparator, decimalSeparator);\n}\n/**\n * the native method number.toLocaleString(undefined, {minimumFractionDigits: 0})\n * puts in decimal places in IE, so we use this method instead\n * from: http://blog.tompawlak.org/number-currency-formatting-javascript\n * @param {number} value\n * @returns {string}\n */\nfunction formatNumberCommas(value, thousandSeparator, decimalSeparator) {\n if (typeof value !== 'number') {\n return '';\n }\n return value.toString().replace('.', decimalSeparator).replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1\" + thousandSeparator);\n}\nfunction sum(values) {\n return values == null ? null : values.reduce(function (total, value) { return total + value; }, 0);\n}\n\nvar NumberUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n padStartWidthZeros: padStartWidthZeros,\n createArrayOfNumbers: createArrayOfNumbers,\n isNumeric: isNumeric,\n cleanNumber: cleanNumber,\n decToHex: decToHex,\n formatNumberTwoDecimalPlacesAndCommas: formatNumberTwoDecimalPlacesAndCommas,\n formatNumberCommas: formatNumberCommas,\n sum: sum\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$g = (undefined && undefined.__assign) || function () {\n __assign$g = 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$g.apply(this, arguments);\n};\nvar __decorate$2v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$8 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __read$m = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$g = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$m(arguments[i]));\n return ar;\n};\nvar DEFAULT_ROW_HEIGHT = 25;\nvar DEFAULT_DETAIL_ROW_HEIGHT = 300;\nvar DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE = 5;\nvar DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE = 5;\nvar DEFAULT_KEEP_DETAIL_ROW_COUNT = 10;\nfunction isTrue(value) {\n return value === true || value === 'true';\n}\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (typeof value == 'string') {\n return parseInt(value, 10);\n }\n}\nfunction zeroOrGreater(value, defaultValue) {\n if (value >= 0) {\n return value;\n }\n // zero gets returned if number is missing or the wrong type\n return defaultValue;\n}\nfunction oneOrGreater(value, defaultValue) {\n var valueNumber = parseInt(value, 10);\n if (isNumeric(valueNumber) && valueNumber > 0) {\n return valueNumber;\n }\n return defaultValue;\n}\nvar GridOptionsWrapper = /** @class */ (function () {\n function GridOptionsWrapper() {\n this.propertyEventService = new EventService();\n this.domDataKey = '__AG_' + Math.random().toString();\n this.destroyed = false;\n }\n GridOptionsWrapper_1 = GridOptionsWrapper;\n GridOptionsWrapper.prototype.agWire = function (gridApi, columnApi) {\n this.gridOptions.api = gridApi;\n this.gridOptions.columnApi = columnApi;\n this.checkForDeprecated();\n this.checkForViolations();\n };\n GridOptionsWrapper.prototype.destroy = function () {\n // need to remove these, as we don't own the lifecycle of the gridOptions, we need to\n // remove the references in case the user keeps the grid options, we want the rest\n // of the grid to be picked up by the garbage collector\n this.gridOptions.api = null;\n this.gridOptions.columnApi = null;\n this.destroyed = true;\n };\n GridOptionsWrapper.prototype.init = function () {\n var _this = this;\n if (this.gridOptions.suppressPropertyNamesCheck !== true) {\n this.checkGridOptionsProperties();\n this.checkColumnDefProperties();\n }\n // parse side bar options into correct format\n if (this.gridOptions.sideBar != null) {\n this.gridOptions.sideBar = SideBarDefParser.parse(this.gridOptions.sideBar);\n }\n var async = this.useAsyncEvents();\n this.eventService.addGlobalListener(this.globalEventHandler.bind(this), async);\n if (this.isGroupSelectsChildren() && this.isSuppressParentsInRowNodes()) {\n console.warn(\"AG Grid: 'groupSelectsChildren' does not work with 'suppressParentsInRowNodes', this selection method needs the part in rowNode to work\");\n }\n if (this.isGroupSelectsChildren()) {\n if (!this.isRowSelectionMulti()) {\n console.warn(\"AG Grid: rowSelection must be 'multiple' for groupSelectsChildren to make sense\");\n }\n if (this.isRowModelServerSide()) {\n console.warn('AG Grid: group selects children is NOT support for Server Side Row Model. ' +\n 'This is because the rows are lazy loaded, so selecting a group is not possible as' +\n 'the grid has no way of knowing what the children are.');\n }\n }\n if (this.isGroupRemoveSingleChildren() && this.isGroupHideOpenParents()) {\n console.warn(\"AG Grid: groupRemoveSingleChildren and groupHideOpenParents do not work with each other, you need to pick one. And don't ask us how to use these together on our support forum either, you will get the same answer!\");\n }\n if (this.isRowModelServerSide()) {\n var msg = function (prop) { return \"AG Grid: '\" + prop + \"' is not supported on the Server-Side Row Model\"; };\n if (exists(this.gridOptions.groupDefaultExpanded)) {\n console.warn(msg('groupDefaultExpanded'));\n }\n if (exists(this.gridOptions.groupDefaultExpanded)) {\n console.warn(msg('groupIncludeFooter'));\n }\n if (exists(this.gridOptions.groupDefaultExpanded)) {\n console.warn(msg('groupIncludeTotalFooter'));\n }\n }\n if (isTrue(this.gridOptions.enableRangeSelection)) {\n ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'enableRangeSelection');\n }\n else if (this.isEnableRangeHandle() || this.isEnableFillHandle()) {\n console.warn(\"AG Grid: 'enableRangeHandle' or 'enableFillHandle' will not work unless 'enableRangeSelection' is set to true\");\n }\n if (this.isGroupRowsSticky()) {\n if (this.isGroupHideOpenParents()) {\n console.warn(\"AG Grid: groupRowsSticky and groupHideOpenParents do not work with each other, you need to pick one.\");\n }\n if (this.isMasterDetail()) {\n console.warn(\"AG Grid: groupRowsSticky and masterDetail do not work with each other, you need to pick one.\");\n }\n if (this.isPagination()) {\n console.warn(\"AG Grid: groupRowsSticky and pagination do not work with each other, you need to pick one.\");\n }\n }\n var warnOfDeprecaredIcon = function (name) {\n if (_this.gridOptions.icons && _this.gridOptions.icons[name]) {\n console.warn(\"gridOptions.icons.\" + name + \" is no longer supported. For information on how to style checkboxes and radio buttons, see https://www.ag-grid.com/javascript-grid-icons/\");\n }\n };\n warnOfDeprecaredIcon('radioButtonOff');\n warnOfDeprecaredIcon('radioButtonOn');\n warnOfDeprecaredIcon('checkboxChecked');\n warnOfDeprecaredIcon('checkboxUnchecked');\n warnOfDeprecaredIcon('checkboxIndeterminate');\n // sets an initial calculation for the scrollbar width\n this.getScrollbarWidth();\n };\n GridOptionsWrapper.prototype.checkColumnDefProperties = function () {\n var _this = this;\n if (this.gridOptions.columnDefs == null) {\n return;\n }\n this.gridOptions.columnDefs.forEach(function (colDef) {\n var userProperties = Object.getOwnPropertyNames(colDef);\n var validProperties = __spread$g(ColDefUtil.ALL_PROPERTIES, ColDefUtil.FRAMEWORK_PROPERTIES);\n _this.checkProperties(userProperties, validProperties, validProperties, 'colDef', 'https://www.ag-grid.com/javascript-grid-column-properties/');\n });\n };\n GridOptionsWrapper.prototype.checkGridOptionsProperties = function () {\n var userProperties = Object.getOwnPropertyNames(this.gridOptions);\n var validProperties = __spread$g(PropertyKeys.ALL_PROPERTIES, PropertyKeys.FRAMEWORK_PROPERTIES, values(Events).map(function (event) { return ComponentUtil.getCallbackForEvent(event); }));\n var validPropertiesAndExceptions = __spread$g(validProperties, ['api', 'columnApi']);\n this.checkProperties(userProperties, validPropertiesAndExceptions, validProperties, 'gridOptions', 'https://www.ag-grid.com/javascript-data-grid/grid-options/');\n };\n GridOptionsWrapper.prototype.checkProperties = function (userProperties, validPropertiesAndExceptions, validProperties, containerName, docsUrl) {\n var invalidProperties = fuzzyCheckStrings(userProperties, validPropertiesAndExceptions, validProperties);\n iterateObject(invalidProperties, function (key, value) {\n console.warn(\"ag-grid: invalid \" + containerName + \" property '\" + key + \"' did you mean any of these: \" + value.slice(0, 8).join(\", \"));\n });\n if (Object.keys(invalidProperties).length > 0) {\n console.warn(\"ag-grid: to see all the valid \" + containerName + \" properties please check: \" + docsUrl);\n }\n };\n /**\n * Wrap the user callback and attach the api, columnApi and context to the params object on the way through.\n * @param callback User provided callback\n * @returns Wrapped callback where the params object not require api, columnApi and context\n */\n GridOptionsWrapper.prototype.mergeGridCommonParams = function (callback) {\n var _this = this;\n if (callback) {\n var wrapped = function (callbackParams) {\n var mergedParams = __assign$g(__assign$g({}, callbackParams), { api: _this.getApi(), columnApi: _this.getColumnApi(), context: _this.getContext() });\n return callback(mergedParams);\n };\n return wrapped;\n }\n return callback;\n };\n GridOptionsWrapper.prototype.getDomDataKey = function () {\n return this.domDataKey;\n };\n // returns the dom data, or undefined if not found\n GridOptionsWrapper.prototype.getDomData = function (element, key) {\n var domData = element[this.getDomDataKey()];\n return domData ? domData[key] : undefined;\n };\n GridOptionsWrapper.prototype.setDomData = function (element, key, value) {\n var domDataKey = this.getDomDataKey();\n var domData = element[domDataKey];\n if (missing(domData)) {\n domData = {};\n element[domDataKey] = domData;\n }\n domData[key] = value;\n };\n GridOptionsWrapper.prototype.isRowSelection = function () {\n return this.gridOptions.rowSelection === 'single' || this.gridOptions.rowSelection === 'multiple';\n };\n GridOptionsWrapper.prototype.isSuppressRowDeselection = function () {\n return isTrue(this.gridOptions.suppressRowDeselection);\n };\n GridOptionsWrapper.prototype.isRowSelectionMulti = function () {\n return this.gridOptions.rowSelection === 'multiple';\n };\n GridOptionsWrapper.prototype.isRowMultiSelectWithClick = function () {\n return isTrue(this.gridOptions.rowMultiSelectWithClick);\n };\n GridOptionsWrapper.prototype.getContext = function () {\n return this.gridOptions.context;\n };\n GridOptionsWrapper.prototype.isPivotMode = function () {\n return isTrue(this.gridOptions.pivotMode);\n };\n GridOptionsWrapper.prototype.isSuppressExpandablePivotGroups = function () {\n return isTrue(this.gridOptions.suppressExpandablePivotGroups);\n };\n GridOptionsWrapper.prototype.getPivotColumnGroupTotals = function () {\n return this.gridOptions.pivotColumnGroupTotals;\n };\n GridOptionsWrapper.prototype.getPivotRowTotals = function () {\n return this.gridOptions.pivotRowTotals;\n };\n GridOptionsWrapper.prototype.isRowModelInfinite = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_INFINITE;\n };\n GridOptionsWrapper.prototype.isRowModelViewport = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_VIEWPORT;\n };\n GridOptionsWrapper.prototype.isRowModelServerSide = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n };\n GridOptionsWrapper.prototype.isRowModelDefault = function () {\n return (missing(this.gridOptions.rowModelType) ||\n this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE);\n };\n GridOptionsWrapper.prototype.isFullRowEdit = function () {\n return this.gridOptions.editType === 'fullRow';\n };\n GridOptionsWrapper.prototype.isSuppressFocusAfterRefresh = function () {\n return isTrue(this.gridOptions.suppressFocusAfterRefresh);\n };\n GridOptionsWrapper.prototype.isSuppressBrowserResizeObserver = function () {\n return isTrue(this.gridOptions.suppressBrowserResizeObserver);\n };\n GridOptionsWrapper.prototype.isSuppressMaintainUnsortedOrder = function () {\n return isTrue(this.gridOptions.suppressMaintainUnsortedOrder);\n };\n GridOptionsWrapper.prototype.isSuppressClearOnFillReduction = function () {\n return isTrue(this.gridOptions.suppressClearOnFillReduction);\n };\n GridOptionsWrapper.prototype.isShowToolPanel = function () {\n return isTrue(this.gridOptions.sideBar && Array.isArray(this.getSideBar().toolPanels));\n };\n GridOptionsWrapper.prototype.getSideBar = function () {\n return this.gridOptions.sideBar;\n };\n GridOptionsWrapper.prototype.isSuppressTouch = function () {\n return isTrue(this.gridOptions.suppressTouch);\n };\n GridOptionsWrapper.prototype.isMaintainColumnOrder = function () {\n return isTrue(this.gridOptions.maintainColumnOrder);\n };\n GridOptionsWrapper.prototype.isSuppressRowTransform = function () {\n return isTrue(this.gridOptions.suppressRowTransform);\n };\n GridOptionsWrapper.prototype.isSuppressColumnStateEvents = function () {\n return isTrue(this.gridOptions.suppressColumnStateEvents);\n };\n GridOptionsWrapper.prototype.isAllowDragFromColumnsToolPanel = function () {\n return isTrue(this.gridOptions.allowDragFromColumnsToolPanel);\n };\n GridOptionsWrapper.prototype.useAsyncEvents = function () {\n return !isTrue(this.gridOptions.suppressAsyncEvents);\n };\n GridOptionsWrapper.prototype.isEnableCellChangeFlash = function () {\n return isTrue(this.gridOptions.enableCellChangeFlash);\n };\n GridOptionsWrapper.prototype.getCellFlashDelay = function () {\n return this.gridOptions.cellFlashDelay || 500;\n };\n GridOptionsWrapper.prototype.getCellFadeDelay = function () {\n return this.gridOptions.cellFadeDelay || 1000;\n };\n GridOptionsWrapper.prototype.isGroupSelectsChildren = function () {\n return isTrue(this.gridOptions.groupSelectsChildren);\n };\n GridOptionsWrapper.prototype.isSuppressRowHoverHighlight = function () {\n return isTrue(this.gridOptions.suppressRowHoverHighlight);\n };\n GridOptionsWrapper.prototype.isColumnHoverHighlight = function () {\n return isTrue(this.gridOptions.columnHoverHighlight);\n };\n GridOptionsWrapper.prototype.isGroupSelectsFiltered = function () {\n return isTrue(this.gridOptions.groupSelectsFiltered);\n };\n GridOptionsWrapper.prototype.isGroupHideOpenParents = function () {\n return isTrue(this.gridOptions.groupHideOpenParents);\n };\n GridOptionsWrapper.prototype.isGroupMaintainOrder = function () {\n return isTrue(this.gridOptions.groupMaintainOrder);\n };\n GridOptionsWrapper.prototype.getAutoGroupColumnDef = function () {\n return this.gridOptions.autoGroupColumnDef;\n };\n GridOptionsWrapper.prototype.isColumnsSortingCoupledToGroup = function () {\n var _a;\n var autoGroupColumnDef = this.getAutoGroupColumnDef();\n var isClientSideRowModel = this.isRowModelDefault();\n return isClientSideRowModel && !((_a = autoGroupColumnDef) === null || _a === void 0 ? void 0 : _a.comparator);\n };\n GridOptionsWrapper.prototype.isGroupMultiAutoColumn = function () {\n if (this.gridOptions.groupDisplayType) {\n return this.matchesGroupDisplayType('multipleColumns', this.gridOptions.groupDisplayType);\n }\n // if we are doing hideOpenParents we also show multiple columns, otherwise hideOpenParents would not work\n return isTrue(this.gridOptions.groupHideOpenParents);\n };\n GridOptionsWrapper.prototype.isGroupUseEntireRow = function (pivotMode) {\n // we never allow groupUseEntireRow if in pivot mode, otherwise we won't see the pivot values.\n if (pivotMode) {\n return false;\n }\n return this.gridOptions.groupDisplayType ?\n this.matchesGroupDisplayType('groupRows', this.gridOptions.groupDisplayType) : false;\n };\n GridOptionsWrapper.prototype.isRowGroupPanelSuppressSort = function () {\n return isTrue(this.gridOptions.rowGroupPanelSuppressSort);\n };\n GridOptionsWrapper.prototype.isGroupRowsSticky = function () {\n return isTrue(this.gridOptions.groupRowsSticky);\n };\n GridOptionsWrapper.prototype.isGroupSuppressAutoColumn = function () {\n var isCustomRowGroups = this.gridOptions.groupDisplayType ?\n this.matchesGroupDisplayType('custom', this.gridOptions.groupDisplayType) : false;\n if (isCustomRowGroups) {\n return true;\n }\n return this.gridOptions.treeDataDisplayType ?\n this.matchesTreeDataDisplayType('custom', this.gridOptions.treeDataDisplayType) : false;\n };\n GridOptionsWrapper.prototype.isGroupRemoveSingleChildren = function () {\n return isTrue(this.gridOptions.groupRemoveSingleChildren);\n };\n GridOptionsWrapper.prototype.isGroupRemoveLowestSingleChildren = function () {\n return isTrue(this.gridOptions.groupRemoveLowestSingleChildren);\n };\n GridOptionsWrapper.prototype.isGroupIncludeFooter = function () {\n return isTrue(this.gridOptions.groupIncludeFooter);\n };\n GridOptionsWrapper.prototype.isGroupIncludeTotalFooter = function () {\n return isTrue(this.gridOptions.groupIncludeTotalFooter);\n };\n GridOptionsWrapper.prototype.isGroupSuppressBlankHeader = function () {\n return isTrue(this.gridOptions.groupSuppressBlankHeader);\n };\n GridOptionsWrapper.prototype.isSuppressRowClickSelection = function () {\n return isTrue(this.gridOptions.suppressRowClickSelection);\n };\n GridOptionsWrapper.prototype.isSuppressCellFocus = function () {\n return isTrue(this.gridOptions.suppressCellFocus);\n };\n GridOptionsWrapper.prototype.isSuppressMultiSort = function () {\n return isTrue(this.gridOptions.suppressMultiSort);\n };\n GridOptionsWrapper.prototype.isAlwaysMultiSort = function () {\n return isTrue(this.gridOptions.alwaysMultiSort);\n };\n GridOptionsWrapper.prototype.isMultiSortKeyCtrl = function () {\n return this.gridOptions.multiSortKey === 'ctrl';\n };\n GridOptionsWrapper.prototype.isPivotSuppressAutoColumn = function () {\n return isTrue(this.gridOptions.pivotSuppressAutoColumn);\n };\n GridOptionsWrapper.prototype.isSuppressDragLeaveHidesColumns = function () {\n return isTrue(this.gridOptions.suppressDragLeaveHidesColumns);\n };\n GridOptionsWrapper.prototype.isSuppressRowGroupHidesColumns = function () {\n return isTrue(this.gridOptions.suppressRowGroupHidesColumns);\n };\n GridOptionsWrapper.prototype.isSuppressScrollOnNewData = function () {\n return isTrue(this.gridOptions.suppressScrollOnNewData);\n };\n GridOptionsWrapper.prototype.isSuppressScrollWhenPopupsAreOpen = function () {\n return isTrue(this.gridOptions.suppressScrollWhenPopupsAreOpen);\n };\n GridOptionsWrapper.prototype.isRowDragEntireRow = function () {\n return isTrue(this.gridOptions.rowDragEntireRow);\n };\n GridOptionsWrapper.prototype.getRowDragText = function (column) {\n if (column) {\n var colDef = column.getColDef();\n if (colDef.rowDragText) {\n return colDef.rowDragText;\n }\n }\n return this.gridOptions.rowDragText;\n };\n GridOptionsWrapper.prototype.isSuppressRowDrag = function () {\n return isTrue(this.gridOptions.suppressRowDrag);\n };\n GridOptionsWrapper.prototype.isRowDragManaged = function () {\n return isTrue(this.gridOptions.rowDragManaged);\n };\n GridOptionsWrapper.prototype.isSuppressMoveWhenRowDragging = function () {\n return isTrue(this.gridOptions.suppressMoveWhenRowDragging);\n };\n GridOptionsWrapper.prototype.isRowDragMultiRow = function () {\n return isTrue(this.gridOptions.rowDragMultiRow);\n };\n // returns either 'print', 'autoHeight' or 'normal' (normal is the default)\n GridOptionsWrapper.prototype.getDomLayout = function () {\n var domLayout = this.gridOptions.domLayout || Constants.DOM_LAYOUT_NORMAL;\n var validLayouts = [\n Constants.DOM_LAYOUT_PRINT,\n Constants.DOM_LAYOUT_AUTO_HEIGHT,\n Constants.DOM_LAYOUT_NORMAL\n ];\n if (validLayouts.indexOf(domLayout) === -1) {\n doOnce(function () {\n return console.warn(\"AG Grid: \" + domLayout + \" is not valid for DOM Layout, valid values are \" + Constants.DOM_LAYOUT_NORMAL + \", \" + Constants.DOM_LAYOUT_AUTO_HEIGHT + \" and \" + Constants.DOM_LAYOUT_PRINT);\n }, 'warn about dom layout values');\n return Constants.DOM_LAYOUT_NORMAL;\n }\n return domLayout;\n };\n GridOptionsWrapper.prototype.isSuppressHorizontalScroll = function () {\n return isTrue(this.gridOptions.suppressHorizontalScroll);\n };\n GridOptionsWrapper.prototype.isSuppressMaxRenderedRowRestriction = function () {\n return isTrue(this.gridOptions.suppressMaxRenderedRowRestriction);\n };\n GridOptionsWrapper.prototype.isExcludeChildrenWhenTreeDataFiltering = function () {\n return isTrue(this.gridOptions.excludeChildrenWhenTreeDataFiltering);\n };\n GridOptionsWrapper.prototype.isAlwaysShowHorizontalScroll = function () {\n return isTrue(this.gridOptions.alwaysShowHorizontalScroll);\n };\n GridOptionsWrapper.prototype.isAlwaysShowVerticalScroll = function () {\n return isTrue(this.gridOptions.alwaysShowVerticalScroll);\n };\n GridOptionsWrapper.prototype.isDebounceVerticalScrollbar = function () {\n return isTrue(this.gridOptions.debounceVerticalScrollbar);\n };\n GridOptionsWrapper.prototype.isSuppressLoadingOverlay = function () {\n return isTrue(this.gridOptions.suppressLoadingOverlay);\n };\n GridOptionsWrapper.prototype.isSuppressNoRowsOverlay = function () {\n return isTrue(this.gridOptions.suppressNoRowsOverlay);\n };\n GridOptionsWrapper.prototype.isSuppressFieldDotNotation = function () {\n return isTrue(this.gridOptions.suppressFieldDotNotation);\n };\n GridOptionsWrapper.prototype.getPinnedTopRowData = function () {\n return this.gridOptions.pinnedTopRowData;\n };\n GridOptionsWrapper.prototype.getPinnedBottomRowData = function () {\n return this.gridOptions.pinnedBottomRowData;\n };\n GridOptionsWrapper.prototype.isFunctionsPassive = function () {\n return isTrue(this.gridOptions.functionsPassive);\n };\n GridOptionsWrapper.prototype.isSuppressChangeDetection = function () {\n return isTrue(this.gridOptions.suppressChangeDetection);\n };\n GridOptionsWrapper.prototype.isSuppressAnimationFrame = function () {\n return isTrue(this.gridOptions.suppressAnimationFrame);\n };\n GridOptionsWrapper.prototype.getQuickFilterText = function () {\n return this.gridOptions.quickFilterText;\n };\n GridOptionsWrapper.prototype.isCacheQuickFilter = function () {\n return isTrue(this.gridOptions.cacheQuickFilter);\n };\n GridOptionsWrapper.prototype.isUnSortIcon = function () {\n return isTrue(this.gridOptions.unSortIcon);\n };\n GridOptionsWrapper.prototype.isSuppressMenuHide = function () {\n return isTrue(this.gridOptions.suppressMenuHide);\n };\n GridOptionsWrapper.prototype.isEnterMovesDownAfterEdit = function () {\n return isTrue(this.gridOptions.enterMovesDownAfterEdit);\n };\n GridOptionsWrapper.prototype.isEnterMovesDown = function () {\n return isTrue(this.gridOptions.enterMovesDown);\n };\n GridOptionsWrapper.prototype.isUndoRedoCellEditing = function () {\n return isTrue(this.gridOptions.undoRedoCellEditing);\n };\n GridOptionsWrapper.prototype.getUndoRedoCellEditingLimit = function () {\n return toNumber(this.gridOptions.undoRedoCellEditingLimit);\n };\n GridOptionsWrapper.prototype.isEnableCellEditingOnBackspace = function () {\n return isTrue(this.gridOptions.enableCellEditingOnBackspace);\n };\n GridOptionsWrapper.prototype.getRowStyle = function () {\n return this.gridOptions.rowStyle;\n };\n GridOptionsWrapper.prototype.getRowClass = function () {\n return this.gridOptions.rowClass;\n };\n GridOptionsWrapper.prototype.getRowStyleFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.getRowStyle);\n };\n GridOptionsWrapper.prototype.getRowClassFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.getRowClass);\n };\n GridOptionsWrapper.prototype.rowClassRules = function () {\n return this.gridOptions.rowClassRules;\n };\n GridOptionsWrapper.prototype.isServerSideInfiniteScroll = function () {\n return isTrue(this.gridOptions.serverSideInfiniteScroll);\n };\n GridOptionsWrapper.prototype.getServerSideGroupLevelParamsFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.getServerSideGroupLevelParams);\n };\n GridOptionsWrapper.prototype.getCreateChartContainerFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.createChartContainer);\n };\n GridOptionsWrapper.prototype.getPopupParent = function () {\n return this.gridOptions.popupParent;\n };\n GridOptionsWrapper.prototype.getBlockLoadDebounceMillis = function () {\n return this.gridOptions.blockLoadDebounceMillis;\n };\n GridOptionsWrapper.prototype.getPostProcessPopupFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.postProcessPopup);\n };\n GridOptionsWrapper.prototype.getPaginationNumberFormatterFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.paginationNumberFormatter);\n };\n GridOptionsWrapper.prototype.getChildCountFunc = function () {\n return this.gridOptions.getChildCount;\n };\n GridOptionsWrapper.prototype.getIsApplyServerSideTransactionFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.isApplyServerSideTransaction);\n };\n GridOptionsWrapper.prototype.getInitialGroupOrderComparator = function () {\n var _a = this.gridOptions, initialGroupOrderComparator = _a.initialGroupOrderComparator, defaultGroupOrderComparator = _a.defaultGroupOrderComparator;\n if (initialGroupOrderComparator) {\n return this.mergeGridCommonParams(initialGroupOrderComparator);\n }\n // this is the deprecated way, so provide a proxy to make it compatible\n if (defaultGroupOrderComparator) {\n return function (params) { return defaultGroupOrderComparator(params.nodeA, params.nodeB); };\n }\n };\n GridOptionsWrapper.prototype.getIsFullWidthCellFunc = function () {\n var _a = this.gridOptions, isFullWidthRow = _a.isFullWidthRow, isFullWidthCell = _a.isFullWidthCell;\n if (isFullWidthRow) {\n return this.mergeGridCommonParams(isFullWidthRow);\n }\n // this is the deprecated way, so provide a proxy to make it compatible\n if (isFullWidthCell) {\n return function (params) { return isFullWidthCell(params.rowNode); };\n }\n };\n GridOptionsWrapper.prototype.getFullWidthCellRendererParams = function () {\n return this.gridOptions.fullWidthCellRendererParams;\n };\n GridOptionsWrapper.prototype.isEmbedFullWidthRows = function () {\n return isTrue(this.gridOptions.embedFullWidthRows) || isTrue(this.gridOptions.deprecatedEmbedFullWidthRows);\n };\n GridOptionsWrapper.prototype.isDetailRowAutoHeight = function () {\n return isTrue(this.gridOptions.detailRowAutoHeight);\n };\n GridOptionsWrapper.prototype.getSuppressKeyboardEventFunc = function () {\n return this.gridOptions.suppressKeyboardEvent;\n };\n GridOptionsWrapper.prototype.getBusinessKeyForNodeFunc = function () {\n return this.gridOptions.getBusinessKeyForNode;\n };\n GridOptionsWrapper.prototype.getApi = function () {\n return this.gridOptions.api;\n };\n GridOptionsWrapper.prototype.getColumnApi = function () {\n return this.gridOptions.columnApi;\n };\n GridOptionsWrapper.prototype.isReadOnlyEdit = function () {\n return isTrue(this.gridOptions.readOnlyEdit);\n };\n GridOptionsWrapper.prototype.isImmutableData = function () {\n // we used to have a property immutableData for this. however this was deprecated\n // in favour of having Immutable Data on by default when getRowId is provided\n var getRowIdProvided = this.gridOptions.getRowId != null;\n var immutableData = isTrue(this.gridOptions.immutableData);\n // this property is a backwards compatibility property, for those who want\n // the old behaviour of Row ID's but NOT Immutable Data.\n var resetRowDataOnUpdate = isTrue(this.gridOptions.resetRowDataOnUpdate);\n if (resetRowDataOnUpdate) {\n return false;\n }\n return getRowIdProvided || immutableData;\n };\n GridOptionsWrapper.prototype.isEnsureDomOrder = function () {\n return isTrue(this.gridOptions.ensureDomOrder);\n };\n GridOptionsWrapper.prototype.isEnableCharts = function () {\n if (isTrue(this.gridOptions.enableCharts)) {\n return ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'enableCharts');\n }\n return false;\n };\n GridOptionsWrapper.prototype.isEnableChartToolPanelsButton = function () {\n return isTrue(this.gridOptions.enableChartToolPanelsButton);\n };\n GridOptionsWrapper.prototype.getColResizeDefault = function () {\n return this.gridOptions.colResizeDefault;\n };\n GridOptionsWrapper.prototype.isSingleClickEdit = function () {\n return isTrue(this.gridOptions.singleClickEdit);\n };\n GridOptionsWrapper.prototype.isSuppressClickEdit = function () {\n return isTrue(this.gridOptions.suppressClickEdit);\n };\n GridOptionsWrapper.prototype.isStopEditingWhenCellsLoseFocus = function () {\n return isTrue(this.gridOptions.stopEditingWhenCellsLoseFocus);\n };\n GridOptionsWrapper.prototype.getGroupDefaultExpanded = function () {\n return this.gridOptions.groupDefaultExpanded;\n };\n GridOptionsWrapper.prototype.getMaxConcurrentDatasourceRequests = function () {\n var res = toNumber(this.gridOptions.maxConcurrentDatasourceRequests);\n if (res == null) {\n return 2;\n } // 2 is the default\n if (res <= 0) {\n return;\n } // negative number, eg -1, means no max restriction\n return res;\n };\n GridOptionsWrapper.prototype.getMaxBlocksInCache = function () {\n return this.gridOptions.maxBlocksInCache;\n };\n GridOptionsWrapper.prototype.getCacheOverflowSize = function () {\n return this.gridOptions.cacheOverflowSize;\n };\n GridOptionsWrapper.prototype.getPaginationPageSize = function () {\n return toNumber(this.gridOptions.paginationPageSize);\n };\n GridOptionsWrapper.prototype.isPaginateChildRows = function () {\n var shouldPaginate = this.isGroupRemoveSingleChildren() || this.isGroupRemoveLowestSingleChildren();\n if (shouldPaginate) {\n return true;\n }\n return isTrue(this.gridOptions.paginateChildRows);\n };\n GridOptionsWrapper.prototype.getCacheBlockSize = function () {\n return oneOrGreater(this.gridOptions.cacheBlockSize);\n };\n GridOptionsWrapper.prototype.getInfiniteInitialRowCount = function () {\n return this.gridOptions.infiniteInitialRowCount;\n };\n GridOptionsWrapper.prototype.getServerSideInitialRowCount = function () {\n var rowCount = this.gridOptions.serverSideInitialRowCount;\n if (typeof rowCount === 'number' && rowCount > 0) {\n return rowCount;\n }\n return 1;\n };\n GridOptionsWrapper.prototype.isPurgeClosedRowNodes = function () {\n return isTrue(this.gridOptions.purgeClosedRowNodes);\n };\n GridOptionsWrapper.prototype.isSuppressPaginationPanel = function () {\n return isTrue(this.gridOptions.suppressPaginationPanel);\n };\n GridOptionsWrapper.prototype.getRowData = function () {\n return this.gridOptions.rowData;\n };\n GridOptionsWrapper.prototype.isEnableRtl = function () {\n return isTrue(this.gridOptions.enableRtl);\n };\n GridOptionsWrapper.prototype.getRowGroupPanelShow = function () {\n return this.gridOptions.rowGroupPanelShow;\n };\n GridOptionsWrapper.prototype.getPivotPanelShow = function () {\n return this.gridOptions.pivotPanelShow;\n };\n GridOptionsWrapper.prototype.isAngularCompileRows = function () {\n return isTrue(this.gridOptions.angularCompileRows);\n };\n GridOptionsWrapper.prototype.isAngularCompileFilters = function () {\n return isTrue(this.gridOptions.angularCompileFilters);\n };\n GridOptionsWrapper.prototype.isDebug = function () {\n return isTrue(this.gridOptions.debug);\n };\n GridOptionsWrapper.prototype.getColumnDefs = function () {\n return this.gridOptions.columnDefs;\n };\n GridOptionsWrapper.prototype.getColumnTypes = function () {\n return this.gridOptions.columnTypes;\n };\n GridOptionsWrapper.prototype.getDatasource = function () {\n return this.gridOptions.datasource;\n };\n GridOptionsWrapper.prototype.getViewportDatasource = function () {\n return this.gridOptions.viewportDatasource;\n };\n GridOptionsWrapper.prototype.getServerSideDatasource = function () {\n return this.gridOptions.serverSideDatasource;\n };\n GridOptionsWrapper.prototype.isAccentedSort = function () {\n return isTrue(this.gridOptions.accentedSort);\n };\n GridOptionsWrapper.prototype.isEnableBrowserTooltips = function () {\n return isTrue(this.gridOptions.enableBrowserTooltips);\n };\n GridOptionsWrapper.prototype.isEnableCellExpressions = function () {\n return isTrue(this.gridOptions.enableCellExpressions);\n };\n GridOptionsWrapper.prototype.isEnableGroupEdit = function () {\n return isTrue(this.gridOptions.enableGroupEdit);\n };\n GridOptionsWrapper.prototype.isSuppressMiddleClickScrolls = function () {\n return isTrue(this.gridOptions.suppressMiddleClickScrolls);\n };\n GridOptionsWrapper.prototype.isPreventDefaultOnContextMenu = function () {\n return isTrue(this.gridOptions.preventDefaultOnContextMenu);\n };\n GridOptionsWrapper.prototype.isSuppressPreventDefaultOnMouseWheel = function () {\n return isTrue(this.gridOptions.suppressPreventDefaultOnMouseWheel);\n };\n GridOptionsWrapper.prototype.isSuppressColumnVirtualisation = function () {\n return isTrue(this.gridOptions.suppressColumnVirtualisation);\n };\n GridOptionsWrapper.prototype.isSuppressRowVirtualisation = function () {\n return isTrue(this.gridOptions.suppressRowVirtualisation);\n };\n GridOptionsWrapper.prototype.isSuppressContextMenu = function () {\n return isTrue(this.gridOptions.suppressContextMenu);\n };\n GridOptionsWrapper.prototype.isAllowContextMenuWithControlKey = function () {\n return isTrue(this.gridOptions.allowContextMenuWithControlKey);\n };\n GridOptionsWrapper.prototype.isSuppressCopyRowsToClipboard = function () {\n return isTrue(this.gridOptions.suppressCopyRowsToClipboard);\n };\n GridOptionsWrapper.prototype.isSuppressCopySingleCellRanges = function () {\n return isTrue(this.gridOptions.suppressCopySingleCellRanges);\n };\n GridOptionsWrapper.prototype.isCopyHeadersToClipboard = function () {\n return isTrue(this.gridOptions.copyHeadersToClipboard);\n };\n GridOptionsWrapper.prototype.isCopyGroupHeadersToClipboard = function () {\n return isTrue(this.gridOptions.copyGroupHeadersToClipboard);\n };\n GridOptionsWrapper.prototype.isSuppressClipboardPaste = function () {\n return isTrue(this.gridOptions.suppressClipboardPaste);\n };\n GridOptionsWrapper.prototype.isSuppressLastEmptyLineOnPaste = function () {\n return isTrue(this.gridOptions.suppressLastEmptyLineOnPaste);\n };\n GridOptionsWrapper.prototype.isPagination = function () {\n return isTrue(this.gridOptions.pagination);\n };\n GridOptionsWrapper.prototype.isSuppressEnterpriseResetOnNewColumns = function () {\n return isTrue(this.gridOptions.suppressEnterpriseResetOnNewColumns);\n };\n GridOptionsWrapper.prototype.getProcessDataFromClipboardFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.processDataFromClipboard);\n };\n GridOptionsWrapper.prototype.getAsyncTransactionWaitMillis = function () {\n return exists(this.gridOptions.asyncTransactionWaitMillis) ? this.gridOptions.asyncTransactionWaitMillis : Constants.BATCH_WAIT_MILLIS;\n };\n GridOptionsWrapper.prototype.isSuppressMovableColumns = function () {\n return isTrue(this.gridOptions.suppressMovableColumns);\n };\n GridOptionsWrapper.prototype.isAnimateRows = function () {\n // never allow animating if enforcing the row order\n if (this.isEnsureDomOrder()) {\n return false;\n }\n return isTrue(this.gridOptions.animateRows);\n };\n GridOptionsWrapper.prototype.isSuppressColumnMoveAnimation = function () {\n return isTrue(this.gridOptions.suppressColumnMoveAnimation);\n };\n GridOptionsWrapper.prototype.isSuppressAggFuncInHeader = function () {\n return isTrue(this.gridOptions.suppressAggFuncInHeader);\n };\n GridOptionsWrapper.prototype.isSuppressAggAtRootLevel = function () {\n return isTrue(this.gridOptions.suppressAggAtRootLevel);\n };\n GridOptionsWrapper.prototype.isSuppressAggFilteredOnly = function () {\n var isGroupAggFiltering = this.getGroupAggFiltering() !== undefined;\n return isGroupAggFiltering || isTrue(this.gridOptions.suppressAggFilteredOnly);\n };\n GridOptionsWrapper.prototype.isRemovePivotHeaderRowWhenSingleValueColumn = function () {\n return isTrue(this.gridOptions.removePivotHeaderRowWhenSingleValueColumn);\n };\n GridOptionsWrapper.prototype.isShowOpenedGroup = function () {\n return isTrue(this.gridOptions.showOpenedGroup);\n };\n GridOptionsWrapper.prototype.isReactUi = function () {\n return isTrue(this.gridOptions.reactUi);\n };\n GridOptionsWrapper.prototype.isSuppressReactUi = function () {\n return isTrue(this.gridOptions.suppressReactUi);\n };\n GridOptionsWrapper.prototype.isEnableRangeSelection = function () {\n return ModuleRegistry.isRegistered(ModuleNames.RangeSelectionModule) && isTrue(this.gridOptions.enableRangeSelection);\n };\n GridOptionsWrapper.prototype.isEnableRangeHandle = function () {\n return isTrue(this.gridOptions.enableRangeHandle);\n };\n GridOptionsWrapper.prototype.isEnableFillHandle = function () {\n return isTrue(this.gridOptions.enableFillHandle);\n };\n GridOptionsWrapper.prototype.getFillHandleDirection = function () {\n var direction = this.gridOptions.fillHandleDirection;\n if (!direction) {\n return 'xy';\n }\n if (direction !== 'x' && direction !== 'y' && direction !== 'xy') {\n doOnce(function () { return console.warn(\"AG Grid: valid values for fillHandleDirection are 'x', 'y' and 'xy'. Default to 'xy'.\"); }, 'warn invalid fill direction');\n return 'xy';\n }\n return direction;\n };\n GridOptionsWrapper.prototype.getFillOperation = function () {\n return this.mergeGridCommonParams(this.gridOptions.fillOperation);\n };\n GridOptionsWrapper.prototype.isSuppressMultiRangeSelection = function () {\n return isTrue(this.gridOptions.suppressMultiRangeSelection);\n };\n GridOptionsWrapper.prototype.isPaginationAutoPageSize = function () {\n return isTrue(this.gridOptions.paginationAutoPageSize);\n };\n GridOptionsWrapper.prototype.isRememberGroupStateWhenNewData = function () {\n return isTrue(this.gridOptions.rememberGroupStateWhenNewData);\n };\n GridOptionsWrapper.prototype.getIcons = function () {\n return this.gridOptions.icons;\n };\n GridOptionsWrapper.prototype.getGroupAggFiltering = function () {\n var userValue = this.gridOptions.groupAggFiltering;\n if (typeof userValue === 'function') {\n return this.mergeGridCommonParams(userValue);\n }\n if (isTrue(userValue)) {\n return function () { return true; };\n }\n return undefined;\n };\n GridOptionsWrapper.prototype.getAggFuncs = function () {\n return this.gridOptions.aggFuncs;\n };\n GridOptionsWrapper.prototype.getSortingOrder = function () {\n return this.gridOptions.sortingOrder;\n };\n GridOptionsWrapper.prototype.getAlignedGrids = function () {\n return this.gridOptions.alignedGrids;\n };\n GridOptionsWrapper.prototype.isMasterDetail = function () {\n var masterDetail = isTrue(this.gridOptions.masterDetail);\n if (masterDetail) {\n return ModuleRegistry.assertRegistered(ModuleNames.MasterDetailModule, 'masterDetail');\n }\n else {\n return false;\n }\n };\n GridOptionsWrapper.prototype.isKeepDetailRows = function () {\n return isTrue(this.gridOptions.keepDetailRows);\n };\n GridOptionsWrapper.prototype.getKeepDetailRowsCount = function () {\n var keepDetailRowsCount = this.gridOptions.keepDetailRowsCount;\n if (exists(keepDetailRowsCount) && keepDetailRowsCount > 0) {\n return this.gridOptions.keepDetailRowsCount;\n }\n return DEFAULT_KEEP_DETAIL_ROW_COUNT;\n };\n GridOptionsWrapper.prototype.getIsRowMasterFunc = function () {\n return this.gridOptions.isRowMaster;\n };\n GridOptionsWrapper.prototype.getIsRowSelectableFunc = function () {\n return this.gridOptions.isRowSelectable;\n };\n GridOptionsWrapper.prototype.getGroupRowRendererParams = function () {\n return this.gridOptions.groupRowRendererParams;\n };\n GridOptionsWrapper.prototype.getOverlayLoadingTemplate = function () {\n return this.gridOptions.overlayLoadingTemplate;\n };\n GridOptionsWrapper.prototype.getOverlayNoRowsTemplate = function () {\n return this.gridOptions.overlayNoRowsTemplate;\n };\n GridOptionsWrapper.prototype.isSuppressAutoSize = function () {\n return isTrue(this.gridOptions.suppressAutoSize);\n };\n GridOptionsWrapper.prototype.isEnableCellTextSelection = function () {\n return isTrue(this.gridOptions.enableCellTextSelection);\n };\n GridOptionsWrapper.prototype.isSuppressParentsInRowNodes = function () {\n return isTrue(this.gridOptions.suppressParentsInRowNodes);\n };\n GridOptionsWrapper.prototype.isSuppressClipboardApi = function () {\n return isTrue(this.gridOptions.suppressClipboardApi);\n };\n GridOptionsWrapper.prototype.isFunctionsReadOnly = function () {\n return isTrue(this.gridOptions.functionsReadOnly);\n };\n GridOptionsWrapper.prototype.isEnableCellTextSelect = function () {\n return isTrue(this.gridOptions.enableCellTextSelection);\n };\n GridOptionsWrapper.prototype.getDefaultColDef = function () {\n return this.gridOptions.defaultColDef;\n };\n GridOptionsWrapper.prototype.getDefaultColGroupDef = function () {\n return this.gridOptions.defaultColGroupDef;\n };\n GridOptionsWrapper.prototype.getDefaultExportParams = function (type) {\n if (this.gridOptions.defaultExportParams) {\n console.warn(\"AG Grid: Since v25.2 `defaultExportParams` has been replaced by `default\" + capitalise(type) + \"ExportParams`'\");\n if (type === 'csv') {\n return this.gridOptions.defaultExportParams;\n }\n return this.gridOptions.defaultExportParams;\n }\n if (type === 'csv' && this.gridOptions.defaultCsvExportParams) {\n return this.gridOptions.defaultCsvExportParams;\n }\n if (type === 'excel' && this.gridOptions.defaultExcelExportParams) {\n return this.gridOptions.defaultExcelExportParams;\n }\n };\n GridOptionsWrapper.prototype.isSuppressCsvExport = function () {\n return isTrue(this.gridOptions.suppressCsvExport);\n };\n GridOptionsWrapper.prototype.isAllowShowChangeAfterFilter = function () {\n return isTrue(this.gridOptions.allowShowChangeAfterFilter);\n };\n GridOptionsWrapper.prototype.isSuppressExcelExport = function () {\n return isTrue(this.gridOptions.suppressExcelExport);\n };\n GridOptionsWrapper.prototype.isSuppressMakeColumnVisibleAfterUnGroup = function () {\n return isTrue(this.gridOptions.suppressMakeColumnVisibleAfterUnGroup);\n };\n GridOptionsWrapper.prototype.getDataPathFunc = function () {\n return this.gridOptions.getDataPath;\n };\n GridOptionsWrapper.prototype.getIsServerSideGroupFunc = function () {\n return this.gridOptions.isServerSideGroup;\n };\n GridOptionsWrapper.prototype.getIsServerSideGroupOpenByDefaultFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.isServerSideGroupOpenByDefault);\n };\n GridOptionsWrapper.prototype.getIsGroupOpenByDefaultFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.isGroupOpenByDefault);\n };\n GridOptionsWrapper.prototype.getServerSideGroupKeyFunc = function () {\n return this.gridOptions.getServerSideGroupKey;\n };\n GridOptionsWrapper.prototype.getGroupRowAggFunc = function () {\n var _a = this.gridOptions, getGroupRowAgg = _a.getGroupRowAgg, groupRowAggNodes = _a.groupRowAggNodes;\n if (getGroupRowAgg) {\n return this.mergeGridCommonParams(getGroupRowAgg);\n }\n // this is the deprecated way, so provide a proxy to make it compatible\n if (groupRowAggNodes) {\n return function (params) { return groupRowAggNodes(params.nodes); };\n }\n };\n GridOptionsWrapper.prototype.getContextMenuItemsFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.getContextMenuItems);\n };\n GridOptionsWrapper.prototype.getMainMenuItemsFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.getMainMenuItems);\n };\n GridOptionsWrapper.prototype.getRowIdFunc = function () {\n var _a = this.gridOptions, getRowId = _a.getRowId, getRowNodeId = _a.getRowNodeId;\n if (getRowId) {\n return this.mergeGridCommonParams(getRowId);\n }\n // this is the deprecated way, so provide a proxy to make it compatible\n if (getRowNodeId) {\n return function (params) { return getRowNodeId(params.data); };\n }\n };\n GridOptionsWrapper.prototype.getNavigateToNextHeaderFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.navigateToNextHeader);\n };\n GridOptionsWrapper.prototype.getTabToNextHeaderFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.tabToNextHeader);\n };\n GridOptionsWrapper.prototype.getNavigateToNextCellFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.navigateToNextCell);\n };\n GridOptionsWrapper.prototype.getTabToNextCellFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.tabToNextCell);\n };\n GridOptionsWrapper.prototype.getGridTabIndex = function () {\n return (this.gridOptions.tabIndex || 0).toString();\n };\n GridOptionsWrapper.prototype.isTreeData = function () {\n var usingTreeData = isTrue(this.gridOptions.treeData);\n if (usingTreeData) {\n return ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Tree Data');\n }\n return false;\n };\n GridOptionsWrapper.prototype.isValueCache = function () {\n return isTrue(this.gridOptions.valueCache);\n };\n GridOptionsWrapper.prototype.isValueCacheNeverExpires = function () {\n return isTrue(this.gridOptions.valueCacheNeverExpires);\n };\n GridOptionsWrapper.prototype.isDeltaSort = function () {\n return isTrue(this.gridOptions.deltaSort);\n };\n GridOptionsWrapper.prototype.isAggregateOnlyChangedColumns = function () {\n return isTrue(this.gridOptions.aggregateOnlyChangedColumns);\n };\n GridOptionsWrapper.prototype.getProcessPivotResultColDefFunc = function () {\n return this.gridOptions.processPivotResultColDef || this.gridOptions.processSecondaryColDef;\n };\n GridOptionsWrapper.prototype.getProcessPivotResultColGroupDefFunc = function () {\n return this.gridOptions.processPivotResultColGroupDef || this.gridOptions.processSecondaryColGroupDef;\n };\n GridOptionsWrapper.prototype.getSendToClipboardFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.sendToClipboard);\n };\n GridOptionsWrapper.prototype.getProcessRowPostCreateFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.processRowPostCreate);\n };\n GridOptionsWrapper.prototype.getProcessCellForClipboardFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.processCellForClipboard);\n };\n GridOptionsWrapper.prototype.getProcessHeaderForClipboardFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.processHeaderForClipboard);\n };\n GridOptionsWrapper.prototype.getProcessGroupHeaderForClipboardFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.processGroupHeaderForClipboard);\n };\n GridOptionsWrapper.prototype.getProcessCellFromClipboardFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.processCellFromClipboard);\n };\n GridOptionsWrapper.prototype.getViewportRowModelPageSize = function () {\n return oneOrGreater(this.gridOptions.viewportRowModelPageSize, DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE);\n };\n GridOptionsWrapper.prototype.getViewportRowModelBufferSize = function () {\n return zeroOrGreater(this.gridOptions.viewportRowModelBufferSize, DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE);\n };\n GridOptionsWrapper.prototype.isServerSideSortAllLevels = function () {\n var isEnabled = isTrue(this.gridOptions.serverSideSortAllLevels);\n if (!this.isRowModelServerSide() && isEnabled) {\n doOnce(function () { return console.warn('AG Grid: The `serverSideSortAllLevels` property can only be used with the server side row model.'); }, 'serverSideSortAllLevels');\n return false;\n }\n return isEnabled;\n };\n GridOptionsWrapper.prototype.isServerSideFilterAllLevels = function () {\n var isEnabled = isTrue(this.gridOptions.serverSideFilterAllLevels);\n if (!this.isRowModelServerSide() && isEnabled) {\n doOnce(function () { return console.warn('AG Grid: The `serverSideFilterAllLevels` property can only be used with the server side row model.'); }, 'serverSideFilterAllLevels');\n return false;\n }\n return isEnabled;\n };\n GridOptionsWrapper.prototype.isServerSideSortOnServer = function () {\n var isEnabled = isTrue(this.gridOptions.serverSideSortOnServer);\n if (!this.isRowModelServerSide() && isEnabled) {\n doOnce(function () { return console.warn('AG Grid: The `serverSideSortOnServer` property can only be used with the server side row model.'); }, 'serverSideSortOnServerRowModel');\n return false;\n }\n if (this.isTreeData() && isEnabled) {\n doOnce(function () { return console.warn('AG Grid: The `serverSideSortOnServer` property cannot be used while using tree data.'); }, 'serverSideSortOnServerTreeData');\n return false;\n }\n return isEnabled;\n };\n GridOptionsWrapper.prototype.isServerSideFilterOnServer = function () {\n var isEnabled = isTrue(this.gridOptions.serverSideFilterOnServer);\n if (!this.isRowModelServerSide() && isEnabled) {\n doOnce(function () { return console.warn('AG Grid: The `serverSideFilterOnServer` property can only be used with the server side row model.'); }, 'serverSideFilterOnServerRowModel');\n return false;\n }\n if (this.isTreeData() && isEnabled) {\n doOnce(function () { return console.warn('AG Grid: The `serverSideFilterOnServer` property cannot be used while using tree data.'); }, 'serverSideFilterOnServerTreeData');\n return false;\n }\n return isEnabled;\n };\n GridOptionsWrapper.prototype.getPostSortFunc = function () {\n var _a = this.gridOptions, postSortRows = _a.postSortRows, postSort = _a.postSort;\n if (postSortRows) {\n return this.mergeGridCommonParams(postSortRows);\n }\n // this is the deprecated way, so provide a proxy to make it compatible\n if (postSort) {\n return function (params) { return postSort(params.nodes); };\n }\n };\n GridOptionsWrapper.prototype.getChartToolbarItemsFunc = function () {\n return this.mergeGridCommonParams(this.gridOptions.getChartToolbarItems);\n };\n GridOptionsWrapper.prototype.getChartThemeOverrides = function () {\n return this.gridOptions.chartThemeOverrides;\n };\n GridOptionsWrapper.prototype.getCustomChartThemes = function () {\n return this.gridOptions.customChartThemes;\n };\n GridOptionsWrapper.prototype.getChartThemes = function () {\n // return default themes if user hasn't supplied any\n return this.gridOptions.chartThemes || ['ag-default', 'ag-material', 'ag-pastel', 'ag-vivid', 'ag-solar'];\n };\n GridOptionsWrapper.prototype.getChartToolPanelsDef = function () {\n return this.gridOptions.chartToolPanelsDef;\n };\n GridOptionsWrapper.prototype.getClipboardDelimiter = function () {\n return exists(this.gridOptions.clipboardDelimiter) ? this.gridOptions.clipboardDelimiter : '\\t';\n };\n GridOptionsWrapper.prototype.setProperty = function (key, value, force) {\n if (force === void 0) { force = false; }\n var previousValue = this.gridOptions[key];\n if (force || previousValue !== value) {\n this.gridOptions[key] = value;\n var event_1 = {\n type: key,\n currentValue: value,\n previousValue: previousValue\n };\n this.propertyEventService.dispatchEvent(event_1);\n }\n };\n GridOptionsWrapper.prototype.addEventListener = function (key, listener) {\n this.propertyEventService.addEventListener(key, listener);\n };\n GridOptionsWrapper.prototype.removeEventListener = function (key, listener) {\n this.propertyEventService.removeEventListener(key, listener);\n };\n GridOptionsWrapper.prototype.isSkipHeaderOnAutoSize = function () {\n return !!this.gridOptions.skipHeaderOnAutoSize;\n };\n GridOptionsWrapper.prototype.getAutoSizePadding = function () {\n var value = this.gridOptions.autoSizePadding;\n return value != null && value >= 0 ? value : 20;\n };\n // properties\n GridOptionsWrapper.prototype.getHeaderHeight = function () {\n if (typeof this.gridOptions.headerHeight === 'number') {\n return this.gridOptions.headerHeight;\n }\n return this.getFromTheme(25, 'headerHeight');\n };\n GridOptionsWrapper.prototype.getFloatingFiltersHeight = function () {\n if (typeof this.gridOptions.floatingFiltersHeight === 'number') {\n return this.gridOptions.floatingFiltersHeight;\n }\n return this.getFromTheme(25, 'headerHeight');\n };\n GridOptionsWrapper.prototype.getGroupHeaderHeight = function () {\n if (typeof this.gridOptions.groupHeaderHeight === 'number') {\n return this.gridOptions.groupHeaderHeight;\n }\n return this.getHeaderHeight();\n };\n GridOptionsWrapper.prototype.getPivotHeaderHeight = function () {\n if (typeof this.gridOptions.pivotHeaderHeight === 'number') {\n return this.gridOptions.pivotHeaderHeight;\n }\n return this.getHeaderHeight();\n };\n GridOptionsWrapper.prototype.getPivotGroupHeaderHeight = function () {\n if (typeof this.gridOptions.pivotGroupHeaderHeight === 'number') {\n return this.gridOptions.pivotGroupHeaderHeight;\n }\n return this.getGroupHeaderHeight();\n };\n GridOptionsWrapper.prototype.isExternalFilterPresent = function () {\n if (typeof this.gridOptions.isExternalFilterPresent === 'function') {\n return this.gridOptions.isExternalFilterPresent({ api: this.getApi(), columnApi: this.getColumnApi(), context: this.getContext() });\n }\n return false;\n };\n GridOptionsWrapper.prototype.doesExternalFilterPass = function (node) {\n if (typeof this.gridOptions.doesExternalFilterPass === 'function') {\n return this.gridOptions.doesExternalFilterPass(node);\n }\n return false;\n };\n GridOptionsWrapper.prototype.getTooltipDelay = function (type) {\n var _a = this.gridOptions, tooltipShowDelay = _a.tooltipShowDelay, tooltipHideDelay = _a.tooltipHideDelay;\n var delay = type === 'show' ? tooltipShowDelay : tooltipHideDelay;\n var capitalisedType = capitalise(type);\n if (exists(delay)) {\n if (delay < 0) {\n doOnce(function () { return console.warn(\"ag-grid: tooltip\" + capitalisedType + \"Delay should not be lower than 0\"); }, \"tooltip\" + capitalisedType + \"DelayWarn\");\n }\n return Math.max(200, delay);\n }\n return null;\n };\n GridOptionsWrapper.prototype.isTooltipMouseTrack = function () {\n return isTrue(this.gridOptions.tooltipMouseTrack);\n };\n GridOptionsWrapper.prototype.isSuppressModelUpdateAfterUpdateTransaction = function () {\n return isTrue(this.gridOptions.suppressModelUpdateAfterUpdateTransaction);\n };\n GridOptionsWrapper.prototype.getDocument = function () {\n // if user is providing document, we use the users one,\n // otherwise we use the document on the global namespace.\n var result = null;\n if (this.gridOptions.getDocument && exists(this.gridOptions.getDocument)) {\n result = this.gridOptions.getDocument();\n }\n else if (this.eGridDiv) {\n result = this.eGridDiv.ownerDocument;\n }\n if (result && exists(result)) {\n return result;\n }\n return document;\n };\n GridOptionsWrapper.prototype.getMinColWidth = function () {\n var minColWidth = this.gridOptions.minColWidth;\n if (exists(minColWidth) && minColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {\n return this.gridOptions.minColWidth;\n }\n var measuredMin = this.getFromTheme(null, 'headerCellMinWidth');\n return exists(measuredMin) ? Math.max(measuredMin, GridOptionsWrapper_1.MIN_COL_WIDTH) : GridOptionsWrapper_1.MIN_COL_WIDTH;\n };\n GridOptionsWrapper.prototype.getMaxColWidth = function () {\n if (this.gridOptions.maxColWidth && this.gridOptions.maxColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {\n return this.gridOptions.maxColWidth;\n }\n return null;\n };\n GridOptionsWrapper.prototype.getColWidth = function () {\n if (typeof this.gridOptions.colWidth !== 'number' || this.gridOptions.colWidth < GridOptionsWrapper_1.MIN_COL_WIDTH) {\n return 200;\n }\n return this.gridOptions.colWidth;\n };\n GridOptionsWrapper.prototype.getRowBuffer = function () {\n var rowBuffer = this.gridOptions.rowBuffer;\n if (typeof rowBuffer === 'number') {\n if (rowBuffer < 0) {\n doOnce(function () { return console.warn(\"AG Grid: rowBuffer should not be negative\"); }, 'warn rowBuffer negative');\n this.gridOptions.rowBuffer = rowBuffer = 0;\n }\n }\n else {\n rowBuffer = Constants.ROW_BUFFER_SIZE;\n }\n return rowBuffer;\n };\n GridOptionsWrapper.prototype.getRowBufferInPixels = function () {\n var rowsToBuffer = this.getRowBuffer();\n var defaultRowHeight = this.getRowHeightAsNumber();\n return rowsToBuffer * defaultRowHeight;\n };\n // the user might be using some non-standard scrollbar, eg a scrollbar that has zero\n // width and overlays (like the Safari scrollbar, but presented in Chrome). so we\n // allow the user to provide the scroll width before we work it out.\n GridOptionsWrapper.prototype.getScrollbarWidth = function () {\n if (this.scrollbarWidth == null) {\n var useGridOptions = typeof this.gridOptions.scrollbarWidth === 'number' && this.gridOptions.scrollbarWidth >= 0;\n var scrollbarWidth = useGridOptions ? this.gridOptions.scrollbarWidth : getScrollbarWidth();\n if (scrollbarWidth != null) {\n this.scrollbarWidth = scrollbarWidth;\n this.eventService.dispatchEvent({\n type: Events.EVENT_SCROLLBAR_WIDTH_CHANGED\n });\n }\n }\n return this.scrollbarWidth;\n };\n GridOptionsWrapper.prototype.checkForDeprecated = function () {\n // casting to generic object, so typescript compiles even though\n // we are looking for attributes that don't exist\n var options = this.gridOptions;\n if (options.deprecatedEmbedFullWidthRows) {\n console.warn(\"AG Grid: since v21.2, deprecatedEmbedFullWidthRows has been replaced with embedFullWidthRows.\");\n }\n if (options.rowDeselection) {\n console.warn('AG Grid: since v24.x, rowDeselection is deprecated and the behaviour is true by default. Please use `suppressRowDeselection` to prevent rows from being deselected.');\n }\n if (options.enableMultiRowDragging) {\n options.rowDragMultiRow = true;\n delete options.enableMultiRowDragging;\n console.warn('AG Grid: since v26.1, `enableMultiRowDragging` is deprecated. Please use `rowDragMultiRow`.');\n }\n var checkRenamedProperty = function (oldProp, newProp, version) {\n if (options[oldProp] != null) {\n console.warn(\"AG Grid: since version \" + version + \", '\" + oldProp + \"' is deprecated / renamed, please use the new property name '\" + newProp + \"' instead.\");\n if (options[newProp] == null) {\n options[newProp] = options[oldProp];\n }\n }\n };\n checkRenamedProperty('batchUpdateWaitMillis', 'asyncTransactionWaitMillis', '23.1.x');\n checkRenamedProperty('deltaRowDataMode', 'immutableData', '23.1.x');\n checkRenamedProperty('serverSideFilteringAlwaysResets', 'serverSideFilterAllLevels', '28.0.0');\n checkRenamedProperty('serverSideSortingAlwaysResets', 'serverSideSortAllLevels', '28.0.0');\n if (options.immutableColumns || options.deltaColumnMode) {\n console.warn('AG Grid: since v24.0, immutableColumns and deltaColumnMode properties are gone. The grid now works like this as default. To keep column order maintained, set grid property applyColumnDefOrder=true');\n }\n checkRenamedProperty('suppressSetColumnStateEvents', 'suppressColumnStateEvents', '24.0.x');\n if (options.groupRowInnerRenderer || options.groupRowInnerRendererParams || options.groupRowInnerRendererFramework) {\n console.warn('AG Grid: since v24.0, grid properties groupRowInnerRenderer, groupRowInnerRendererFramework and groupRowInnerRendererParams are no longer used.');\n console.warn(' Instead use the grid properties groupRowRendererParams.innerRenderer, groupRowRendererParams.innerRendererFramework and groupRowRendererParams.innerRendererParams.');\n console.warn(' For example instead of this:');\n console.warn(' groupRowInnerRenderer: \"myRenderer\"');\n console.warn(' groupRowInnerRendererParams: {x: a}');\n console.warn(' Replace with this:');\n console.warn(' groupRowRendererParams: {');\n console.warn(' innerRenderer: \"myRenderer\",');\n console.warn(' innerRendererParams: {x: a}');\n console.warn(' }');\n console.warn(' We have copied the properties over for you. However to stop this error message, please change your application code.');\n if (!options.groupRowRendererParams) {\n options.groupRowRendererParams = {};\n }\n var params = options.groupRowRendererParams;\n if (options.groupRowInnerRenderer) {\n params.innerRenderer = options.groupRowInnerRenderer;\n }\n if (options.groupRowInnerRendererParams) {\n params.innerRendererParams = options.groupRowInnerRendererParams;\n }\n if (options.groupRowInnerRendererFramework) {\n params.innerRendererFramework = options.groupRowInnerRendererFramework;\n }\n }\n if (options.rememberGroupStateWhenNewData) {\n console.warn('AG Grid: since v24.0, grid property rememberGroupStateWhenNewData is deprecated. This feature was provided before Transaction Updates worked (which keep group state). Now that transaction updates are possible and they keep group state, this feature is no longer needed.');\n }\n if (options.detailCellRendererParams && options.detailCellRendererParams.autoHeight) {\n console.warn('AG Grid: since v24.1, grid property detailCellRendererParams.autoHeight is replaced with grid property detailRowAutoHeight. This allows this feature to work when you provide a custom DetailCellRenderer');\n options.detailRowAutoHeight = true;\n }\n if (options.suppressKeyboardEvent) {\n console.warn(\"AG Grid: since v24.1 suppressKeyboardEvent in the gridOptions has been deprecated and will be removed in\\n future versions of AG Grid. If you need this to be set for every column use the defaultColDef property.\");\n }\n if (options.suppressEnterpriseResetOnNewColumns) {\n console.warn('AG Grid: since v25, grid property suppressEnterpriseResetOnNewColumns is deprecated. This was a temporary property to allow changing columns in Server Side Row Model without triggering a reload. Now that it is possible to dynamically change columns in the grid, this is no longer needed.');\n }\n if (options.suppressColumnStateEvents) {\n console.warn('AG Grid: since v25, grid property suppressColumnStateEvents no longer works due to a refactor that we did. It should be possible to achieve similar using event.source, which would be \"api\" if the event was due to setting column state via the API');\n }\n if (options.defaultExportParams) {\n console.warn('AG Grid: since v25.2, the grid property `defaultExportParams` has been replaced by `defaultCsvExportParams` and `defaultExcelExportParams`.');\n }\n if (options.stopEditingWhenGridLosesFocus) {\n console.warn('AG Grid: since v25.2.2, the grid property `stopEditingWhenGridLosesFocus` has been replaced by `stopEditingWhenCellsLoseFocus`.');\n options.stopEditingWhenCellsLoseFocus = true;\n }\n if (options.applyColumnDefOrder) {\n console.warn('AG Grid: since v26.0, the grid property `applyColumnDefOrder` is no longer needed, as this is the default behaviour. To turn this behaviour off, set maintainColumnOrder=true');\n }\n if (options.groupMultiAutoColumn) {\n console.warn(\"AG Grid: since v26.0, the grid property `groupMultiAutoColumn` has been replaced by `groupDisplayType = 'multipleColumns'`\");\n options.groupDisplayType = 'multipleColumns';\n }\n if (options.groupUseEntireRow) {\n console.warn(\"AG Grid: since v26.0, the grid property `groupUseEntireRow` has been replaced by `groupDisplayType = 'groupRows'`\");\n options.groupDisplayType = 'groupRows';\n }\n if (options.groupSuppressAutoColumn) {\n var propName = options.treeData ? 'treeDataDisplayType' : 'groupDisplayType';\n console.warn(\"AG Grid: since v26.0, the grid property `groupSuppressAutoColumn` has been replaced by `\" + propName + \" = 'custom'`\");\n options.groupDisplayType = 'custom';\n }\n if (options.defaultGroupOrderComparator) {\n console.warn(\"AG Grid: since v27.2, the grid property `defaultGroupOrderComparator` is deprecated and has been replaced by `initialGroupOrderComparator` and now receives a single params object.\");\n }\n if (options.defaultGroupSortComparator) {\n console.warn(\"AG Grid: since v26.0, the grid property `defaultGroupSortComparator` has been replaced by `initialGroupOrderComparator`\");\n options.defaultGroupOrderComparator = options.defaultGroupSortComparator;\n }\n if (options.groupRowAggNodes) {\n console.warn(\"AG Grid: since v27.2, the grid property `groupRowAggNodes` is deprecated and has been replaced by `getGroupRowAgg` and now receives a single params object.\");\n }\n if (options.postSort) {\n console.warn(\"AG Grid: since v27.2, the grid property `postSort` is deprecated and has been replaced by `postSortRows` and now receives a single params object.\");\n }\n if (options.isFullWidthCell) {\n console.warn(\"AG Grid: since v27.2, the grid property `isFullWidthCell` is deprecated and has been replaced by `isFullWidthRow` and now receives a single params object.\");\n }\n if (options.localeTextFunc) {\n console.warn(\"AG Grid: since v27.2, the grid property `localeTextFunc` is deprecated and has been replaced by `getLocaleText` and now receives a single params object.\");\n }\n if (options.colWidth) {\n console.warn('AG Grid: since v26.1, the grid property `colWidth` is deprecated and should be set via `defaultColDef.width`.');\n }\n if (options.minColWidth) {\n console.warn('AG Grid: since v26.1, the grid property `minColWidth` is deprecated and should be set via `defaultColDef.minWidth`.');\n }\n if (options.maxColWidth) {\n console.warn('AG Grid: since v26.1, the grid property `maxColWidth` is deprecated and should be set via `defaultColDef.maxWidth`.');\n }\n if (options.reactUi) {\n console.warn('AG Grid: since v27.0, React UI is on by default, so no need for reactUi=true. To turn it off, set suppressReactUi=true.');\n }\n if (options.suppressReactUi) {\n console.warn('AG Grid: The legacy React rendering engine is deprecated and will be removed in the next major version of the grid.');\n }\n if (options.suppressCellSelection) {\n console.warn('AG Grid: since v27.0, `suppressCellSelection` has been replaced by `suppressCellFocus`.');\n options.suppressCellFocus = options.suppressCellSelection;\n }\n if (options.getRowNodeId) {\n console.warn('AG Grid: since v27.1, `getRowNodeId` is deprecated and has been replaced by `getRowId`. The difference: if getRowId() is implemented then immutable data is enabled by default.');\n }\n if (options.immutableData) {\n if (options.getRowId) {\n console.warn('AG Grid: since v27.1, `immutableData` is deprecated. With the `getRowId` callback implemented, immutable data is enabled by default so you can remove `immutableData=true`.');\n }\n else {\n console.warn('AG Grid: since v27.1, `immutableData` is deprecated. To enable immutable data you must implement the `getRowId()` callback.');\n }\n }\n if (options.clipboardDeliminator) {\n console.warn('AG Grid: since v27.1, `clipboardDeliminator` has been replaced by `clipboardDelimiter`.');\n options.clipboardDelimiter = options.clipboardDeliminator;\n }\n checkRenamedProperty('processSecondaryColDef', 'processPivotResultColDef', '28.0.x');\n checkRenamedProperty('processSecondaryColGroupDef', 'processPivotResultColGroupDef', '28.0.x');\n if (options.serverSideStoreType) {\n console.warn('AG Grid: since v28.0, `serverSideStoreType` has been replaced by `serverSideInfiniteScroll`. Set to true to use Partial Store, and false to use Full Store.');\n options.serverSideInfiniteScroll = options.serverSideStoreType === 'partial';\n }\n checkRenamedProperty('getServerSideStoreParams', 'getServerSideGroupLevelParams', '28.0.x');\n };\n GridOptionsWrapper.prototype.checkForViolations = function () {\n if (this.isTreeData()) {\n this.treeDataViolations();\n }\n };\n GridOptionsWrapper.prototype.treeDataViolations = function () {\n if (this.isRowModelDefault()) {\n if (missing(this.getDataPathFunc())) {\n console.warn('AG Grid: property usingTreeData=true with rowModel=clientSide, but you did not ' +\n 'provide getDataPath function, please provide getDataPath function if using tree data.');\n }\n }\n if (this.isRowModelServerSide()) {\n if (missing(this.getIsServerSideGroupFunc())) {\n console.warn('AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n 'provide isServerSideGroup function, please provide isServerSideGroup function if using tree data.');\n }\n if (missing(this.getServerSideGroupKeyFunc())) {\n console.warn('AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n 'provide getServerSideGroupKey function, please provide getServerSideGroupKey function if using tree data.');\n }\n }\n };\n GridOptionsWrapper.prototype.getLocaleTextFunc = function () {\n var _this = this;\n var _a = this.gridOptions, localeText = _a.localeText, getLocaleText = _a.getLocaleText, localeTextFunc = _a.localeTextFunc;\n if (getLocaleText) {\n //key: string, defaultValue: string, variableValues?: string[]\n return function (key, defaultValue, variableValues) {\n var params = {\n key: key,\n defaultValue: defaultValue,\n variableValues: variableValues,\n api: _this.getApi(),\n columnApi: _this.getColumnApi(),\n context: _this.getContext()\n };\n return getLocaleText(params);\n };\n }\n if (localeTextFunc) {\n return localeTextFunc;\n }\n return function (key, defaultValue, variableValues) {\n var localisedText = localeText && localeText[key];\n if (localisedText && variableValues && variableValues.length) {\n var found = 0;\n while (true) {\n if (found >= variableValues.length) {\n break;\n }\n var idx = localisedText.indexOf('${variable}');\n if (idx === -1) {\n break;\n }\n localisedText = localisedText.replace('${variable}', variableValues[found++]);\n }\n }\n return (localisedText !== null && localisedText !== void 0 ? localisedText : defaultValue);\n };\n };\n // responsible for calling the onXXX functions on gridOptions\n GridOptionsWrapper.prototype.globalEventHandler = function (eventName, event) {\n // prevent events from being fired _after_ the grid has been destroyed\n if (this.destroyed) {\n return;\n }\n var callbackMethodName = ComponentUtil.getCallbackForEvent(eventName);\n if (typeof this.gridOptions[callbackMethodName] === 'function') {\n this.gridOptions[callbackMethodName](event);\n }\n };\n GridOptionsWrapper.prototype.setRowHeightVariable = function (height) {\n var oldRowHeight = this.eGridDiv.style.getPropertyValue('--ag-line-height').trim();\n var newRowHeight = height + \"px\";\n if (oldRowHeight != newRowHeight) {\n this.eGridDiv.style.setProperty('--ag-line-height', newRowHeight);\n }\n };\n // we don't allow dynamic row height for virtual paging\n GridOptionsWrapper.prototype.getRowHeightAsNumber = function () {\n if (!this.gridOptions.rowHeight || missing(this.gridOptions.rowHeight)) {\n return this.getDefaultRowHeight();\n }\n var rowHeight = this.gridOptions.rowHeight;\n if (rowHeight && this.isNumeric(rowHeight)) {\n this.setRowHeightVariable(rowHeight);\n return rowHeight;\n }\n console.warn('AG Grid row height must be a number if not using standard row model');\n return this.getDefaultRowHeight();\n };\n GridOptionsWrapper.prototype.isGetRowHeightFunction = function () {\n return typeof this.gridOptions.getRowHeight === 'function';\n };\n GridOptionsWrapper.prototype.getRowHeightForNode = function (rowNode, allowEstimate, defaultRowHeight) {\n if (allowEstimate === void 0) { allowEstimate = false; }\n if (defaultRowHeight == null) {\n defaultRowHeight = this.getDefaultRowHeight();\n }\n // check the function first, in case use set both function and\n // number, when using virtual pagination then function can be\n // used for pinned rows and the number for the body rows.\n if (this.isGetRowHeightFunction()) {\n if (allowEstimate) {\n return { height: defaultRowHeight, estimated: true };\n }\n var params = {\n node: rowNode,\n data: rowNode.data\n };\n var height = this.mergeGridCommonParams(this.gridOptions.getRowHeight)(params);\n if (this.isNumeric(height)) {\n if (height === 0) {\n doOnce(function () { return console.warn('AG Grid: The return of `getRowHeight` cannot be zero. If the intention is to hide rows, use a filter instead.'); }, 'invalidRowHeight');\n }\n return { height: Math.max(1, height), estimated: false };\n }\n }\n if (rowNode.detail && this.isMasterDetail()) {\n // if autoHeight, we want the height to grow to the new height starting at 1, as otherwise a flicker would happen,\n // as the detail goes to the default (eg 200px) and then immediately shrink up/down to the new measured height\n // (due to auto height) which looks bad, especially if doing row animation.\n if (this.isDetailRowAutoHeight()) {\n return { height: 1, estimated: false };\n }\n if (this.isNumeric(this.gridOptions.detailRowHeight)) {\n return { height: this.gridOptions.detailRowHeight, estimated: false };\n }\n return { height: DEFAULT_DETAIL_ROW_HEIGHT, estimated: false };\n }\n var rowHeight = this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight) ? this.gridOptions.rowHeight : defaultRowHeight;\n return { height: rowHeight, estimated: false };\n };\n GridOptionsWrapper.prototype.isDynamicRowHeight = function () {\n return typeof this.gridOptions.getRowHeight === 'function';\n };\n GridOptionsWrapper.prototype.getListItemHeight = function () {\n return this.getFromTheme(20, 'listItemHeight');\n };\n GridOptionsWrapper.prototype.chartMenuPanelWidth = function () {\n return this.environment.chartMenuPanelWidth();\n };\n GridOptionsWrapper.prototype.isNumeric = function (value) {\n return !isNaN(value) && typeof value === 'number' && isFinite(value);\n };\n GridOptionsWrapper.prototype.getFromTheme = function (defaultValue, sassVariableName) {\n var theme = this.environment.getTheme().theme;\n if (theme && theme.indexOf('ag-theme') === 0) {\n return this.environment.getSassVariable(theme, sassVariableName);\n }\n return defaultValue;\n };\n GridOptionsWrapper.prototype.getDefaultRowHeight = function () {\n return this.getFromTheme(DEFAULT_ROW_HEIGHT, 'rowHeight');\n };\n GridOptionsWrapper.prototype.matchesGroupDisplayType = function (toMatch, supplied) {\n var groupDisplayTypeValues = ['groupRows', 'multipleColumns', 'custom', 'singleColumn'];\n if (groupDisplayTypeValues.indexOf(supplied) < 0) {\n console.warn(\"AG Grid: '\" + supplied + \"' is not a valid groupDisplayType value - possible values are: '\" + groupDisplayTypeValues.join(\"', '\") + \"'\");\n return false;\n }\n return supplied === toMatch;\n };\n GridOptionsWrapper.prototype.matchesTreeDataDisplayType = function (toMatch, supplied) {\n var treeDataDisplayTypeValues = ['auto', 'custom'];\n if (treeDataDisplayTypeValues.indexOf(supplied) < 0) {\n console.warn(\"AG Grid: '\" + supplied + \"' is not a valid treeDataDisplayType value - possible values are: '\" + treeDataDisplayTypeValues.join(\"', '\") + \"'\");\n return false;\n }\n return supplied === toMatch;\n };\n var GridOptionsWrapper_1;\n GridOptionsWrapper.MIN_COL_WIDTH = 10;\n GridOptionsWrapper.PROP_HEADER_HEIGHT = 'headerHeight';\n GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN = 'groupRemoveSingleChildren';\n GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN = 'groupRemoveLowestSingleChildren';\n GridOptionsWrapper.PROP_GROUP_DISPLAY_TYPE = 'groupDisplayType';\n GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT = 'pivotHeaderHeight';\n GridOptionsWrapper.PROP_SUPPRESS_CLIPBOARD_PASTE = 'suppressClipboardPaste';\n GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT = 'groupHeaderHeight';\n GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT = 'pivotGroupHeaderHeight';\n GridOptionsWrapper.PROP_NAVIGATE_TO_NEXT_CELL = 'navigateToNextCell';\n GridOptionsWrapper.PROP_TAB_TO_NEXT_CELL = 'tabToNextCell';\n GridOptionsWrapper.PROP_NAVIGATE_TO_NEXT_HEADER = 'navigateToNextHeader';\n GridOptionsWrapper.PROP_TAB_TO_NEXT_HEADER = 'tabToNextHeader';\n GridOptionsWrapper.PROP_IS_EXTERNAL_FILTER_PRESENT = 'isExternalFilterPresent';\n GridOptionsWrapper.PROP_DOES_EXTERNAL_FILTER_PASS = 'doesExternalFilterPass';\n GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT = 'floatingFiltersHeight';\n GridOptionsWrapper.PROP_SUPPRESS_ROW_CLICK_SELECTION = 'suppressRowClickSelection';\n GridOptionsWrapper.PROP_SUPPRESS_ROW_DRAG = 'suppressRowDrag';\n GridOptionsWrapper.PROP_SUPPRESS_MOVE_WHEN_ROW_DRAG = 'suppressMoveWhenRowDragging';\n GridOptionsWrapper.PROP_GET_ROW_CLASS = 'getRowClass';\n GridOptionsWrapper.PROP_GET_ROW_STYLE = 'getRowStyle';\n GridOptionsWrapper.PROP_GET_ROW_HEIGHT = 'getRowHeight';\n GridOptionsWrapper.PROP_POPUP_PARENT = 'popupParent';\n GridOptionsWrapper.PROP_DOM_LAYOUT = 'domLayout';\n GridOptionsWrapper.PROP_ROW_CLASS = 'rowClass';\n GridOptionsWrapper.PROP_FILL_HANDLE_DIRECTION = 'fillHandleDirection';\n GridOptionsWrapper.PROP_GROUP_ROW_AGG_NODES = 'groupRowAggNodes';\n GridOptionsWrapper.PROP_GET_GROUP_ROW_AGG = 'getGroupRowAgg';\n GridOptionsWrapper.PROP_GET_BUSINESS_KEY_FOR_NODE = 'getBusinessKeyForNode';\n GridOptionsWrapper.PROP_GET_CHILD_COUNT = 'getChildCount';\n GridOptionsWrapper.PROP_PROCESS_ROW_POST_CREATE = 'processRowPostCreate';\n GridOptionsWrapper.PROP_GET_ROW_NODE_ID = 'getRowNodeId';\n GridOptionsWrapper.PROP_GET_ROW_ID = 'getRowId';\n GridOptionsWrapper.PROP_IS_FULL_WIDTH_CELL = 'isFullWidthCell';\n GridOptionsWrapper.PROP_IS_FULL_WIDTH_ROW = 'isFullWidthRow';\n GridOptionsWrapper.PROP_IS_ROW_SELECTABLE = 'isRowSelectable';\n GridOptionsWrapper.PROP_IS_ROW_MASTER = 'isRowMaster';\n GridOptionsWrapper.PROP_POST_SORT = 'postSort';\n GridOptionsWrapper.PROP_POST_SORT_ROWS = 'postSortRows';\n GridOptionsWrapper.PROP_GET_DOCUMENT = 'getDocument';\n GridOptionsWrapper.PROP_POST_PROCESS_POPUP = 'postProcessPopup';\n GridOptionsWrapper.PROP_DEFAULT_GROUP_ORDER_COMPARATOR = 'defaultGroupOrderComparator';\n GridOptionsWrapper.PROP_INITIAL_GROUP_ORDER_COMPARATOR = 'initialGroupOrderComparator';\n GridOptionsWrapper.PROP_PAGINATION_NUMBER_FORMATTER = 'paginationNumberFormatter';\n GridOptionsWrapper.PROP_GET_CONTEXT_MENU_ITEMS = 'getContextMenuItems';\n GridOptionsWrapper.PROP_GET_MAIN_MENU_ITEMS = 'getMainMenuItems';\n GridOptionsWrapper.PROP_PROCESS_CELL_FOR_CLIPBOARD = 'processCellForClipboard';\n GridOptionsWrapper.PROP_PROCESS_CELL_FROM_CLIPBOARD = 'processCellFromClipboard';\n GridOptionsWrapper.PROP_SEND_TO_CLIPBOARD = 'sendToClipboard';\n GridOptionsWrapper.PROP_PROCESS_PIVOT_RESULT_COL_DEF = 'processPivotResultColDef';\n GridOptionsWrapper.PROP_PROCESS_PIVOT_RESULT_COL_GROUP_DEF = 'processPivotResultColGroupDef';\n GridOptionsWrapper.PROP_GET_CHART_TOOLBAR_ITEMS = 'getChartToolbarItems';\n GridOptionsWrapper.PROP_GET_SERVER_SIDE_GROUP_PARAMS = 'getServerSideGroupLevelParams';\n GridOptionsWrapper.PROP_IS_SERVER_SIDE_GROUPS_OPEN_BY_DEFAULT = 'isServerSideGroupOpenByDefault';\n GridOptionsWrapper.PROP_IS_APPLY_SERVER_SIDE_TRANSACTION = 'isApplyServerSideTransaction';\n GridOptionsWrapper.PROP_IS_SERVER_SIDE_GROUP = 'isServerSideGroup';\n GridOptionsWrapper.PROP_GET_SERVER_SIDE_GROUP_KEY = 'getServerSideGroupKey';\n GridOptionsWrapper.PROP_AUTO_GROUP_COLUMN_DEF = 'autoGroupColumnDef';\n GridOptionsWrapper.PROP_DEFAULT_COL_DEF = 'defaultColDef';\n __decorate$2v([\n Autowired('gridOptions')\n ], GridOptionsWrapper.prototype, \"gridOptions\", void 0);\n __decorate$2v([\n Autowired('eventService')\n ], GridOptionsWrapper.prototype, \"eventService\", void 0);\n __decorate$2v([\n Autowired('environment')\n ], GridOptionsWrapper.prototype, \"environment\", void 0);\n __decorate$2v([\n Autowired('eGridDiv')\n ], GridOptionsWrapper.prototype, \"eGridDiv\", void 0);\n __decorate$2v([\n __param$8(0, Qualifier('gridApi')), __param$8(1, Qualifier('columnApi'))\n ], GridOptionsWrapper.prototype, \"agWire\", null);\n __decorate$2v([\n PreDestroy\n ], GridOptionsWrapper.prototype, \"destroy\", null);\n __decorate$2v([\n PostConstruct\n ], GridOptionsWrapper.prototype, \"init\", null);\n GridOptionsWrapper = GridOptionsWrapper_1 = __decorate$2v([\n Bean('gridOptionsWrapper')\n ], GridOptionsWrapper);\n return GridOptionsWrapper;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2T = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$7 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __values$4 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$l = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$f = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$l(arguments[i]));\n return ar;\n};\nvar ColumnModel = /** @class */ (function (_super) {\n __extends$2T(ColumnModel, _super);\n function ColumnModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // header row count, based on user provided columns\n _this.primaryHeaderRowCount = 0;\n _this.secondaryHeaderRowCount = 0;\n // header row count, either above, or based on pivoting if we are pivoting\n _this.gridHeaderRowCount = 0;\n // leave level columns of the displayed trees\n _this.displayedColumnsLeft = [];\n _this.displayedColumnsRight = [];\n _this.displayedColumnsCenter = [];\n // all three lists above combined\n _this.displayedColumns = [];\n // for fast lookup, to see if a column or group is still displayed\n _this.displayedColumnsAndGroupsMap = {};\n // all columns to be rendered\n _this.viewportColumns = [];\n // A hash key to keep track of changes in viewport columns\n _this.viewportColumnsHash = '';\n // same as viewportColumns, except we always include columns with headerAutoHeight\n _this.headerViewportColumns = [];\n // all columns to be rendered in the centre\n _this.viewportColumnsCenter = [];\n // same as viewportColumnsCenter, except we always include columns with headerAutoHeight\n _this.headerViewportColumnsCenter = [];\n _this.autoHeightActiveAtLeastOnce = false;\n _this.rowGroupColumns = [];\n _this.valueColumns = [];\n _this.pivotColumns = [];\n _this.ready = false;\n _this.autoGroupsNeedBuilding = false;\n _this.forceRecreateAutoGroups = false;\n _this.pivotMode = false;\n _this.bodyWidth = 0;\n _this.leftWidth = 0;\n _this.rightWidth = 0;\n _this.bodyWidthDirty = true;\n _this.flexColsCalculatedAtLestOnce = false;\n return _this;\n }\n ColumnModel.prototype.init = function () {\n var _this = this;\n this.suppressColumnVirtualisation = this.gridOptionsWrapper.isSuppressColumnVirtualisation();\n var pivotMode = this.gridOptionsWrapper.isPivotMode();\n if (this.isPivotSettingAllowed(pivotMode)) {\n this.pivotMode = pivotMode;\n }\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_DISPLAY_TYPE, function () { return _this.onAutoGroupColumnDefChanged(); });\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_AUTO_GROUP_COLUMN_DEF, function () { return _this.onAutoGroupColumnDefChanged(); });\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DEFAULT_COL_DEF, function () { return _this.onDefaultColDefChanged(); });\n };\n ColumnModel.prototype.onAutoGroupColumnDefChanged = function () {\n this.autoGroupsNeedBuilding = true;\n this.forceRecreateAutoGroups = true;\n this.updateGridColumns();\n this.updateDisplayedColumns('gridOptionsChanged');\n };\n ColumnModel.prototype.onDefaultColDefChanged = function () {\n // likewise for autoGroupCol, the default col def impacts this\n this.forceRecreateAutoGroups = true;\n this.createColumnsFromColumnDefs(true);\n };\n ColumnModel.prototype.setColumnDefs = function (columnDefs, source) {\n if (source === void 0) { source = 'api'; }\n var colsPreviouslyExisted = !!this.columnDefs;\n this.columnDefs = columnDefs;\n this.createColumnsFromColumnDefs(colsPreviouslyExisted, source);\n };\n ColumnModel.prototype.createColumnsFromColumnDefs = function (colsPreviouslyExisted, source) {\n var _this = this;\n if (source === void 0) { source = 'api'; }\n // only need to raise before/after events if updating columns, never if setting columns for first time\n var raiseEventsFunc = colsPreviouslyExisted ? this.compareColumnStatesAndRaiseEvents(source) : undefined;\n // always invalidate cache on changing columns, as the column id's for the new columns\n // could overlap with the old id's, so the cache would return old values for new columns.\n this.valueCache.expire();\n // NOTE ==================\n // we should be destroying the existing columns and groups if they exist, for example, the original column\n // group adds a listener to the columns, it should be also removing the listeners\n this.autoGroupsNeedBuilding = true;\n var oldPrimaryColumns = this.primaryColumns;\n var oldPrimaryTree = this.primaryColumnTree;\n var balancedTreeResult = this.columnFactory.createColumnTree(this.columnDefs, true, oldPrimaryTree);\n this.primaryColumnTree = balancedTreeResult.columnTree;\n this.primaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n this.primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n this.primaryColumnsMap = {};\n this.primaryColumns.forEach(function (col) { return _this.primaryColumnsMap[col.getId()] = col; });\n this.extractRowGroupColumns(source, oldPrimaryColumns);\n this.extractPivotColumns(source, oldPrimaryColumns);\n this.extractValueColumns(source, oldPrimaryColumns);\n this.ready = true;\n // if we are showing secondary columns, then no need to update grid columns\n // at this point, as it's the pivot service responsibility to change these\n // if we are no longer pivoting (ie and need to revert back to primary, otherwise\n // we shouldn't be touching the primary).\n var gridColsNotProcessed = this.gridColsArePrimary === undefined;\n var processGridCols = this.gridColsArePrimary || gridColsNotProcessed;\n if (processGridCols) {\n this.updateGridColumns();\n if (colsPreviouslyExisted && !this.gridOptionsWrapper.isMaintainColumnOrder()) {\n this.orderGridColumnsLikePrimary();\n }\n this.updateDisplayedColumns(source);\n this.checkViewportColumns();\n }\n // this event is not used by AG Grid, but left here for backwards compatibility,\n // in case applications use it\n this.dispatchEverythingChanged(source);\n if (raiseEventsFunc) {\n raiseEventsFunc();\n }\n this.dispatchNewColumnsLoaded();\n };\n ColumnModel.prototype.dispatchNewColumnsLoaded = function () {\n var newColumnsLoadedEvent = {\n type: Events.EVENT_NEW_COLUMNS_LOADED\n };\n this.eventService.dispatchEvent(newColumnsLoadedEvent);\n };\n // this event is legacy, no grid code listens to it. instead the grid listens to New Columns Loaded\n ColumnModel.prototype.dispatchEverythingChanged = function (source) {\n if (source === void 0) { source = 'api'; }\n var eventEverythingChanged = {\n type: Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n source: source\n };\n this.eventService.dispatchEvent(eventEverythingChanged);\n };\n ColumnModel.prototype.orderGridColumnsLikePrimary = function () {\n var _this = this;\n var primaryColumns = this.primaryColumns;\n if (!primaryColumns) {\n return;\n }\n this.gridColumns.sort(function (colA, colB) {\n var primaryIndexA = primaryColumns.indexOf(colA);\n var primaryIndexB = primaryColumns.indexOf(colB);\n // if both cols are present in primary, then we just return the position,\n // so position is maintained.\n var indexAPresent = primaryIndexA >= 0;\n var indexBPresent = primaryIndexB >= 0;\n if (indexAPresent && indexBPresent) {\n return primaryIndexA - primaryIndexB;\n }\n if (indexAPresent) {\n // B is auto group column, so put B first\n return 1;\n }\n if (indexBPresent) {\n // A is auto group column, so put A first\n return -1;\n }\n // otherwise both A and B are auto-group columns. so we just keep the order\n // as they were already in.\n var gridIndexA = _this.gridColumns.indexOf(colA);\n var gridIndexB = _this.gridColumns.indexOf(colB);\n return gridIndexA - gridIndexB;\n });\n this.gridColumns = this.placeLockedColumns(this.gridColumns);\n };\n ColumnModel.prototype.getAllDisplayedAutoHeightCols = function () {\n return this.displayedAutoHeightCols;\n };\n ColumnModel.prototype.setViewport = function () {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.viewportLeft = this.bodyWidth - this.scrollPosition - this.scrollWidth;\n this.viewportRight = this.bodyWidth - this.scrollPosition;\n }\n else {\n this.viewportLeft = this.scrollPosition;\n this.viewportRight = this.scrollWidth + this.scrollPosition;\n }\n };\n // used by clipboard service, to know what columns to paste into\n ColumnModel.prototype.getDisplayedColumnsStartingAt = function (column) {\n var currentColumn = column;\n var columns = [];\n while (currentColumn != null) {\n columns.push(currentColumn);\n currentColumn = this.getDisplayedColAfter(currentColumn);\n }\n return columns;\n };\n // checks what columns are currently displayed due to column virtualisation. fires an event\n // if the list of columns has changed.\n // + setColumnWidth(), setViewportPosition(), setColumnDefs(), sizeColumnsToFit()\n ColumnModel.prototype.checkViewportColumns = function () {\n // check displayCenterColumnTree exists first, as it won't exist when grid is initialising\n if (this.displayedColumnsCenter == null) {\n return;\n }\n var viewportColumnsChanged = this.extractViewport();\n if (!viewportColumnsChanged) {\n return;\n }\n var event = {\n type: Events.EVENT_VIRTUAL_COLUMNS_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.setViewportPosition = function (scrollWidth, scrollPosition) {\n if (scrollWidth !== this.scrollWidth || scrollPosition !== this.scrollPosition || this.bodyWidthDirty) {\n this.scrollWidth = scrollWidth;\n this.scrollPosition = scrollPosition;\n // we need to call setVirtualViewportLeftAndRight() at least once after the body width changes,\n // as the viewport can stay the same, but in RTL, if body width changes, we need to work out the\n // virtual columns again\n this.bodyWidthDirty = true;\n this.setViewport();\n if (this.ready) {\n this.checkViewportColumns();\n }\n }\n };\n ColumnModel.prototype.isPivotMode = function () {\n return this.pivotMode;\n };\n ColumnModel.prototype.isPivotSettingAllowed = function (pivot) {\n if (pivot && this.gridOptionsWrapper.isTreeData()) {\n console.warn(\"AG Grid: Pivot mode not available in conjunction Tree Data i.e. 'gridOptions.treeData: true'\");\n return false;\n }\n return true;\n };\n ColumnModel.prototype.setPivotMode = function (pivotMode, source) {\n if (source === void 0) { source = 'api'; }\n if (pivotMode === this.pivotMode || !this.isPivotSettingAllowed(this.pivotMode)) {\n return;\n }\n this.pivotMode = pivotMode;\n // we need to update grid columns to cover the scenario where user has groupSuppressAutoColumn=true, as\n // this means we don't use auto group column UNLESS we are in pivot mode (it's mandatory in pivot mode),\n // so need to updateGridColumn() to check it autoGroupCol needs to be added / removed\n this.autoGroupsNeedBuilding = true;\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n var event = {\n type: Events.EVENT_COLUMN_PIVOT_MODE_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) {\n if (missing(this.secondaryColumns)) {\n return null;\n }\n var valueColumnToFind = this.getPrimaryColumn(valueColKey);\n var foundColumn = null;\n this.secondaryColumns.forEach(function (column) {\n var thisPivotKeys = column.getColDef().pivotKeys;\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n var pivotKeyMatches = areEqual(thisPivotKeys, pivotKeys);\n var pivotValueMatches = pivotValueColumn === valueColumnToFind;\n if (pivotKeyMatches && pivotValueMatches) {\n foundColumn = column;\n }\n });\n return foundColumn;\n };\n ColumnModel.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('columnModel');\n };\n ColumnModel.prototype.setFirstRightAndLastLeftPinned = function (source) {\n var lastLeft;\n var firstRight;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n lastLeft = this.displayedColumnsLeft ? this.displayedColumnsLeft[0] : null;\n firstRight = this.displayedColumnsRight ? last(this.displayedColumnsRight) : null;\n }\n else {\n lastLeft = this.displayedColumnsLeft ? last(this.displayedColumnsLeft) : null;\n firstRight = this.displayedColumnsRight ? this.displayedColumnsRight[0] : null;\n }\n this.gridColumns.forEach(function (column) {\n column.setLastLeftPinned(column === lastLeft, source);\n column.setFirstRightPinned(column === firstRight, source);\n });\n };\n ColumnModel.prototype.autoSizeColumns = function (params) {\n var _this = this;\n var columns = params.columns, skipHeader = params.skipHeader, skipHeaderGroups = params.skipHeaderGroups, stopAtGroup = params.stopAtGroup, _a = params.source, source = _a === void 0 ? 'api' : _a;\n // because of column virtualisation, we can only do this function on columns that are\n // actually rendered, as non-rendered columns (outside the viewport and not rendered\n // due to column virtualisation) are not present. this can result in all rendered columns\n // getting narrowed, which in turn introduces more rendered columns on the RHS which\n // did not get autosized in the original run, leaving the visible grid with columns on\n // the LHS sized, but RHS no. so we keep looping through the visible columns until\n // no more cols are available (rendered) to be resized\n // we autosize after animation frames finish in case any cell renderers need to complete first. this can\n // happen eg if client code is calling api.autoSizeAllColumns() straight after grid is initialised, but grid\n // hasn't fully drawn out all the cells yet (due to cell renderers in animation frames).\n this.animationFrameService.flushAllFrames();\n // keep track of which cols we have resized in here\n var columnsAutosized = [];\n // initialise with anything except 0 so that while loop executes at least once\n var changesThisTimeAround = -1;\n var shouldSkipHeader = skipHeader != null ? skipHeader : this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n var shouldSkipHeaderGroups = skipHeaderGroups != null ? skipHeaderGroups : shouldSkipHeader;\n while (changesThisTimeAround !== 0) {\n changesThisTimeAround = 0;\n this.actionOnGridColumns(columns, function (column) {\n // if already autosized, skip it\n if (columnsAutosized.indexOf(column) >= 0) {\n return false;\n }\n // get how wide this col should be\n var preferredWidth = _this.autoWidthCalculator.getPreferredWidthForColumn(column, shouldSkipHeader);\n // preferredWidth = -1 if this col is not on the screen\n if (preferredWidth > 0) {\n var newWidth = _this.normaliseColumnWidth(column, preferredWidth);\n column.setActualWidth(newWidth, source);\n columnsAutosized.push(column);\n changesThisTimeAround++;\n }\n return true;\n }, source);\n }\n if (!shouldSkipHeaderGroups) {\n this.autoSizeColumnGroupsByColumns(columns, stopAtGroup);\n }\n this.fireColumnResizedEvent(columnsAutosized, true, 'autosizeColumns');\n };\n ColumnModel.prototype.fireColumnResizedEvent = function (columns, finished, source, flexColumns) {\n if (flexColumns === void 0) { flexColumns = null; }\n if (columns && columns.length) {\n var event_1 = {\n type: Events.EVENT_COLUMN_RESIZED,\n columns: columns,\n column: columns.length === 1 ? columns[0] : null,\n flexColumns: flexColumns,\n finished: finished,\n source: source\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n ColumnModel.prototype.autoSizeColumn = function (key, skipHeader, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.autoSizeColumns({ columns: [key], skipHeader: skipHeader, skipHeaderGroups: true, source: source });\n }\n };\n ColumnModel.prototype.autoSizeColumnGroupsByColumns = function (keys, stopAtGroup) {\n var e_1, _a, e_2, _b;\n var columnGroups = new Set();\n var columns = this.getGridColumns(keys);\n columns.forEach(function (col) {\n var parent = col.getParent();\n while (parent && parent != stopAtGroup) {\n if (!parent.isPadding()) {\n columnGroups.add(parent);\n }\n parent = parent.getParent();\n }\n });\n var headerGroupCtrl;\n var resizedColumns = [];\n try {\n for (var columnGroups_1 = __values$4(columnGroups), columnGroups_1_1 = columnGroups_1.next(); !columnGroups_1_1.done; columnGroups_1_1 = columnGroups_1.next()) {\n var columnGroup = columnGroups_1_1.value;\n try {\n for (var _c = (e_2 = void 0, __values$4(this.ctrlsService.getHeaderRowContainerCtrls())), _d = _c.next(); !_d.done; _d = _c.next()) {\n var headerContainerCtrl = _d.value;\n headerGroupCtrl = headerContainerCtrl.getHeaderCtrlForColumn(columnGroup);\n if (headerGroupCtrl) {\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (headerGroupCtrl) {\n headerGroupCtrl.resizeLeafColumnsToFit();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (columnGroups_1_1 && !columnGroups_1_1.done && (_a = columnGroups_1.return)) _a.call(columnGroups_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return resizedColumns;\n };\n ColumnModel.prototype.autoSizeAllColumns = function (skipHeader, source) {\n if (source === void 0) { source = \"api\"; }\n var allDisplayedColumns = this.getAllDisplayedColumns();\n this.autoSizeColumns({ columns: allDisplayedColumns, skipHeader: skipHeader, source: source });\n };\n // Possible candidate for reuse (alot of recursive traversal duplication)\n ColumnModel.prototype.getColumnsFromTree = function (rootColumns) {\n var result = [];\n var recursiveFindColumns = function (childColumns) {\n for (var i = 0; i < childColumns.length; i++) {\n var child = childColumns[i];\n if (child instanceof Column) {\n result.push(child);\n }\n else if (child instanceof ProvidedColumnGroup) {\n recursiveFindColumns(child.getChildren());\n }\n }\n };\n recursiveFindColumns(rootColumns);\n return result;\n };\n ColumnModel.prototype.getAllDisplayedTrees = function () {\n if (this.displayedTreeLeft && this.displayedTreeRight && this.displayedTreeCentre) {\n return this.displayedTreeLeft\n .concat(this.displayedTreeCentre)\n .concat(this.displayedTreeRight);\n }\n return null;\n };\n // + columnSelectPanel\n ColumnModel.prototype.getPrimaryColumnTree = function () {\n return this.primaryColumnTree;\n };\n // + gridPanel -> for resizing the body and setting top margin\n ColumnModel.prototype.getHeaderRowCount = function () {\n return this.gridHeaderRowCount;\n };\n // + headerRenderer -> setting pinned body width\n ColumnModel.prototype.getDisplayedTreeLeft = function () {\n return this.displayedTreeLeft;\n };\n // + headerRenderer -> setting pinned body width\n ColumnModel.prototype.getDisplayedTreeRight = function () {\n return this.displayedTreeRight;\n };\n // + headerRenderer -> setting pinned body width\n ColumnModel.prototype.getDisplayedTreeCentre = function () {\n return this.displayedTreeCentre;\n };\n // gridPanel -> ensureColumnVisible\n ColumnModel.prototype.isColumnDisplayed = function (column) {\n return this.getAllDisplayedColumns().indexOf(column) >= 0;\n };\n // + csvCreator\n ColumnModel.prototype.getAllDisplayedColumns = function () {\n return this.displayedColumns;\n };\n ColumnModel.prototype.getViewportColumns = function () {\n return this.viewportColumns;\n };\n ColumnModel.prototype.getDisplayedLeftColumnsForRow = function (rowNode) {\n if (!this.colSpanActive) {\n return this.displayedColumnsLeft;\n }\n return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsLeft);\n };\n ColumnModel.prototype.getDisplayedRightColumnsForRow = function (rowNode) {\n if (!this.colSpanActive) {\n return this.displayedColumnsRight;\n }\n return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsRight);\n };\n ColumnModel.prototype.getDisplayedColumnsForRow = function (rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {\n var result = [];\n var lastConsideredCol = null;\n var _loop_1 = function (i) {\n var col = displayedColumns[i];\n var maxAllowedColSpan = displayedColumns.length - i;\n var colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);\n var columnsToCheckFilter = [col];\n if (colSpan > 1) {\n var colsToRemove = colSpan - 1;\n for (var j = 1; j <= colsToRemove; j++) {\n columnsToCheckFilter.push(displayedColumns[i + j]);\n }\n i += colsToRemove;\n }\n // see which cols we should take out for column virtualisation\n var filterPasses;\n if (filterCallback) {\n // if user provided a callback, means some columns may not be in the viewport.\n // the user will NOT provide a callback if we are talking about pinned areas,\n // as pinned areas have no horizontal scroll and do not virtualise the columns.\n // if lots of columns, that means column spanning, and we set filterPasses = true\n // if one or more of the columns spanned pass the filter.\n filterPasses = false;\n columnsToCheckFilter.forEach(function (colForFilter) {\n if (filterCallback(colForFilter)) {\n filterPasses = true;\n }\n });\n }\n else {\n filterPasses = true;\n }\n if (filterPasses) {\n if (result.length === 0 && lastConsideredCol) {\n var gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;\n if (gapBeforeColumn) {\n result.push(lastConsideredCol);\n }\n }\n result.push(col);\n }\n lastConsideredCol = col;\n out_i_1 = i;\n };\n var out_i_1;\n for (var i = 0; i < displayedColumns.length; i++) {\n _loop_1(i);\n i = out_i_1;\n }\n return result;\n };\n // + rowRenderer\n // if we are not column spanning, this just returns back the virtual centre columns,\n // however if we are column spanning, then different rows can have different virtual\n // columns, so we have to work out the list for each individual row.\n ColumnModel.prototype.getViewportCenterColumnsForRow = function (rowNode) {\n var _this = this;\n if (!this.colSpanActive) {\n return this.viewportColumnsCenter;\n }\n var emptySpaceBeforeColumn = function (col) {\n var left = col.getLeft();\n return exists(left) && left > _this.viewportLeft;\n };\n // if doing column virtualisation, then we filter based on the viewport.\n var filterCallback = this.suppressColumnVirtualisation ? null : this.isColumnInRowViewport.bind(this);\n return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsCenter, filterCallback, emptySpaceBeforeColumn);\n };\n ColumnModel.prototype.getAriaColumnIndex = function (col) {\n return this.getAllGridColumns().indexOf(col) + 1;\n };\n ColumnModel.prototype.isColumnInHeaderViewport = function (col) {\n // for headers, we never filter out autoHeaderHeight columns, if calculating\n if (col.isAutoHeaderHeight()) {\n return true;\n }\n return this.isColumnInRowViewport(col);\n };\n ColumnModel.prototype.isColumnInRowViewport = function (col) {\n // we never filter out autoHeight columns, as we need them in the DOM for calculating Auto Height\n if (col.isAutoHeight()) {\n return true;\n }\n var columnLeft = col.getLeft() || 0;\n var columnRight = columnLeft + col.getActualWidth();\n // adding 200 for buffer size, so some cols off viewport are rendered.\n // this helps horizontal scrolling so user rarely sees white space (unless\n // they scroll horizontally fast). however we are conservative, as the more\n // buffer the slower the vertical redraw speed\n var leftBounds = this.viewportLeft - 200;\n var rightBounds = this.viewportRight + 200;\n var columnToMuchLeft = columnLeft < leftBounds && columnRight < leftBounds;\n var columnToMuchRight = columnLeft > rightBounds && columnRight > rightBounds;\n return !columnToMuchLeft && !columnToMuchRight;\n };\n // used by:\n // + angularGrid -> setting pinned body width\n // note: this should be cached\n ColumnModel.prototype.getDisplayedColumnsLeftWidth = function () {\n return this.getWidthOfColsInList(this.displayedColumnsLeft);\n };\n // note: this should be cached\n ColumnModel.prototype.getDisplayedColumnsRightWidth = function () {\n return this.getWidthOfColsInList(this.displayedColumnsRight);\n };\n ColumnModel.prototype.updatePrimaryColumnList = function (keys, masterList, actionIsAdd, columnCallback, eventType, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n if (!keys || missingOrEmpty(keys)) {\n return;\n }\n var atLeastOne = false;\n keys.forEach(function (key) {\n var columnToAdd = _this.getPrimaryColumn(key);\n if (!columnToAdd) {\n return;\n }\n if (actionIsAdd) {\n if (masterList.indexOf(columnToAdd) >= 0) {\n return;\n }\n masterList.push(columnToAdd);\n }\n else {\n if (masterList.indexOf(columnToAdd) < 0) {\n return;\n }\n removeFromArray(masterList, columnToAdd);\n }\n columnCallback(columnToAdd);\n atLeastOne = true;\n });\n if (!atLeastOne) {\n return;\n }\n if (this.autoGroupsNeedBuilding) {\n this.updateGridColumns();\n }\n this.updateDisplayedColumns(source);\n var event = {\n type: eventType,\n columns: masterList,\n column: masterList.length === 1 ? masterList[0] : null,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.setRowGroupColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.setPrimaryColumnList(colKeys, this.rowGroupColumns, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.setRowGroupActive.bind(this), source);\n };\n ColumnModel.prototype.setRowGroupActive = function (active, column, source) {\n if (active === column.isRowGroupActive()) {\n return;\n }\n column.setRowGroupActive(active, source);\n if (active && !this.gridOptionsWrapper.isSuppressRowGroupHidesColumns()) {\n this.setColumnVisible(column, false, source);\n }\n if (!active && !this.gridOptionsWrapper.isSuppressMakeColumnVisibleAfterUnGroup()) {\n this.setColumnVisible(column, true, source);\n }\n };\n ColumnModel.prototype.addRowGroupColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.addRowGroupColumns([key], source);\n }\n };\n ColumnModel.prototype.addRowGroupColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.updatePrimaryColumnList(keys, this.rowGroupColumns, true, this.setRowGroupActive.bind(this, true), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n };\n ColumnModel.prototype.removeRowGroupColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.updatePrimaryColumnList(keys, this.rowGroupColumns, false, this.setRowGroupActive.bind(this, false), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n };\n ColumnModel.prototype.removeRowGroupColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.removeRowGroupColumns([key], source);\n }\n };\n ColumnModel.prototype.addPivotColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.pivotColumns, true, function (column) { return column.setPivotActive(true, source); }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n };\n ColumnModel.prototype.setPivotColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.setPrimaryColumnList(colKeys, this.pivotColumns, Events.EVENT_COLUMN_PIVOT_CHANGED, function (added, column) {\n column.setPivotActive(added, source);\n }, source);\n };\n ColumnModel.prototype.addPivotColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n this.addPivotColumns([key], source);\n };\n ColumnModel.prototype.removePivotColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.pivotColumns, false, function (column) { return column.setPivotActive(false, source); }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n };\n ColumnModel.prototype.removePivotColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n this.removePivotColumns([key], source);\n };\n ColumnModel.prototype.setPrimaryColumnList = function (colKeys, masterList, eventName, columnCallback, source) {\n var _this = this;\n masterList.length = 0;\n if (exists(colKeys)) {\n colKeys.forEach(function (key) {\n var column = _this.getPrimaryColumn(key);\n if (column) {\n masterList.push(column);\n }\n });\n }\n (this.primaryColumns || []).forEach(function (column) {\n var added = masterList.indexOf(column) >= 0;\n columnCallback(added, column);\n });\n if (this.autoGroupsNeedBuilding) {\n this.updateGridColumns();\n }\n this.updateDisplayedColumns(source);\n this.fireColumnEvent(eventName, masterList, source);\n };\n ColumnModel.prototype.setValueColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.setPrimaryColumnList(colKeys, this.valueColumns, Events.EVENT_COLUMN_VALUE_CHANGED, this.setValueActive.bind(this), source);\n };\n ColumnModel.prototype.setValueActive = function (active, column, source) {\n if (active === column.isValueActive()) {\n return;\n }\n column.setValueActive(active, source);\n if (active && !column.getAggFunc()) {\n var initialAggFunc = this.aggFuncService.getDefaultAggFunc(column);\n column.setAggFunc(initialAggFunc);\n }\n };\n ColumnModel.prototype.addValueColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.valueColumns, true, this.setValueActive.bind(this, true), Events.EVENT_COLUMN_VALUE_CHANGED, source);\n };\n ColumnModel.prototype.addValueColumn = function (colKey, source) {\n if (source === void 0) { source = \"api\"; }\n if (colKey) {\n this.addValueColumns([colKey], source);\n }\n };\n ColumnModel.prototype.removeValueColumn = function (colKey, source) {\n if (source === void 0) { source = \"api\"; }\n this.removeValueColumns([colKey], source);\n };\n ColumnModel.prototype.removeValueColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.valueColumns, false, this.setValueActive.bind(this, false), Events.EVENT_COLUMN_VALUE_CHANGED, source);\n };\n // returns the width we can set to this col, taking into consideration min and max widths\n ColumnModel.prototype.normaliseColumnWidth = function (column, newWidth) {\n var minWidth = column.getMinWidth();\n if (exists(minWidth) && newWidth < minWidth) {\n newWidth = minWidth;\n }\n var maxWidth = column.getMaxWidth();\n if (exists(maxWidth) && column.isGreaterThanMax(newWidth)) {\n newWidth = maxWidth;\n }\n return newWidth;\n };\n ColumnModel.prototype.getPrimaryOrGridColumn = function (key) {\n var column = this.getPrimaryColumn(key);\n return column || this.getGridColumn(key);\n };\n ColumnModel.prototype.setColumnWidths = function (columnWidths, shiftKey, // @takeFromAdjacent - if user has 'shift' pressed, then pixels are taken from adjacent column\n finished, // @finished - ends up in the event, tells the user if more events are to come\n source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n var sets = [];\n columnWidths.forEach(function (columnWidth) {\n var col = _this.getPrimaryOrGridColumn(columnWidth.key);\n if (!col) {\n return;\n }\n sets.push({\n width: columnWidth.newWidth,\n ratios: [1],\n columns: [col]\n });\n // if user wants to do shift resize by default, then we invert the shift operation\n var defaultIsShift = _this.gridOptionsWrapper.getColResizeDefault() === 'shift';\n if (defaultIsShift) {\n shiftKey = !shiftKey;\n }\n if (shiftKey) {\n var otherCol = _this.getDisplayedColAfter(col);\n if (!otherCol) {\n return;\n }\n var widthDiff = col.getActualWidth() - columnWidth.newWidth;\n var otherColWidth = otherCol.getActualWidth() + widthDiff;\n sets.push({\n width: otherColWidth,\n ratios: [1],\n columns: [otherCol]\n });\n }\n });\n if (sets.length === 0) {\n return;\n }\n this.resizeColumnSets({\n resizeSets: sets,\n finished: finished,\n source: source\n });\n };\n ColumnModel.prototype.checkMinAndMaxWidthsForSet = function (columnResizeSet) {\n var columns = columnResizeSet.columns, width = columnResizeSet.width;\n // every col has a min width, so sum them all up and see if we have enough room\n // for all the min widths\n var minWidthAccumulated = 0;\n var maxWidthAccumulated = 0;\n var maxWidthActive = true;\n columns.forEach(function (col) {\n var minWidth = col.getMinWidth();\n minWidthAccumulated += minWidth || 0;\n var maxWidth = col.getMaxWidth();\n if (exists(maxWidth) && maxWidth > 0) {\n maxWidthAccumulated += maxWidth;\n }\n else {\n // if at least one columns has no max width, it means the group of columns\n // then has no max width, as at least one column can take as much width as possible\n maxWidthActive = false;\n }\n });\n var minWidthPasses = width >= minWidthAccumulated;\n var maxWidthPasses = !maxWidthActive || (width <= maxWidthAccumulated);\n return minWidthPasses && maxWidthPasses;\n };\n // method takes sets of columns and resizes them. either all sets will be resized, or nothing\n // be resized. this is used for example when user tries to resize a group and holds shift key,\n // then both the current group (grows), and the adjacent group (shrinks), will get resized,\n // so that's two sets for this method.\n ColumnModel.prototype.resizeColumnSets = function (params) {\n var _this = this;\n var resizeSets = params.resizeSets, finished = params.finished, source = params.source;\n var passMinMaxCheck = !resizeSets || resizeSets.every(function (columnResizeSet) { return _this.checkMinAndMaxWidthsForSet(columnResizeSet); });\n if (!passMinMaxCheck) {\n // even though we are not going to resize beyond min/max size, we still need to raise event when finished\n if (finished) {\n var columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;\n this.fireColumnResizedEvent(columns, finished, source);\n }\n return; // don't resize!\n }\n var changedCols = [];\n var allResizedCols = [];\n resizeSets.forEach(function (set) {\n var width = set.width, columns = set.columns, ratios = set.ratios;\n // keep track of pixels used, and last column gets the remaining,\n // to cater for rounding errors, and min width adjustments\n var newWidths = {};\n var finishedCols = {};\n columns.forEach(function (col) { return allResizedCols.push(col); });\n // the loop below goes through each col. if a col exceeds it's min/max width,\n // it then gets set to its min/max width and the column is removed marked as 'finished'\n // and the calculation is done again leaving this column out. take for example columns\n // {A, width: 50, maxWidth: 100}\n // {B, width: 50}\n // {C, width: 50}\n // and then the set is set to width 600 - on the first pass the grid tries to set each column\n // to 200. it checks A and sees 200 > 100 and so sets the width to 100. col A is then marked\n // as 'finished' and the calculation is done again with the remaining cols B and C, which end up\n // splitting the remaining 500 pixels.\n var finishedColsGrew = true;\n var loopCount = 0;\n var _loop_2 = function () {\n loopCount++;\n if (loopCount > 1000) {\n // this should never happen, but in the future, someone might introduce a bug here,\n // so we stop the browser from hanging and report bug properly\n console.error('AG Grid: infinite loop in resizeColumnSets');\n return \"break\";\n }\n finishedColsGrew = false;\n var subsetCols = [];\n var subsetRatioTotal = 0;\n var pixelsToDistribute = width;\n columns.forEach(function (col, index) {\n var thisColFinished = finishedCols[col.getId()];\n if (thisColFinished) {\n pixelsToDistribute -= newWidths[col.getId()];\n }\n else {\n subsetCols.push(col);\n var ratioThisCol = ratios[index];\n subsetRatioTotal += ratioThisCol;\n }\n });\n // because we are not using all of the ratios (cols can be missing),\n // we scale the ratio. if all columns are included, then subsetRatioTotal=1,\n // and so the ratioScale will be 1.\n var ratioScale = 1 / subsetRatioTotal;\n subsetCols.forEach(function (col, index) {\n var lastCol = index === (subsetCols.length - 1);\n var colNewWidth;\n if (lastCol) {\n colNewWidth = pixelsToDistribute;\n }\n else {\n colNewWidth = Math.round(ratios[index] * width * ratioScale);\n pixelsToDistribute -= colNewWidth;\n }\n var minWidth = col.getMinWidth();\n var maxWidth = col.getMaxWidth();\n if (exists(minWidth) && colNewWidth < minWidth) {\n colNewWidth = minWidth;\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n else if (exists(maxWidth) && maxWidth > 0 && colNewWidth > maxWidth) {\n colNewWidth = maxWidth;\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n newWidths[col.getId()] = colNewWidth;\n });\n };\n while (finishedColsGrew) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n columns.forEach(function (col) {\n var newWidth = newWidths[col.getId()];\n var actualWidth = col.getActualWidth();\n if (actualWidth !== newWidth) {\n col.setActualWidth(newWidth, source);\n changedCols.push(col);\n }\n });\n });\n // if no cols changed, then no need to update more or send event.\n var atLeastOneColChanged = changedCols.length > 0;\n var flexedCols = [];\n if (atLeastOneColChanged) {\n flexedCols = this.refreshFlexedColumns({ resizingCols: allResizedCols, skipSetLeft: true });\n this.setLeftValues(source);\n this.updateBodyWidths();\n this.checkViewportColumns();\n }\n // check for change first, to avoid unnecessary firing of events\n // however we always fire 'finished' events. this is important\n // when groups are resized, as if the group is changing slowly,\n // eg 1 pixel at a time, then each change will fire change events\n // in all the columns in the group, but only one with get the pixel.\n var colsForEvent = allResizedCols.concat(flexedCols);\n if (atLeastOneColChanged || finished) {\n this.fireColumnResizedEvent(colsForEvent, finished, source, flexedCols);\n }\n };\n ColumnModel.prototype.setColumnAggFunc = function (key, aggFunc, source) {\n if (source === void 0) { source = \"api\"; }\n if (!key) {\n return;\n }\n var column = this.getPrimaryColumn(key);\n if (!column) {\n return;\n }\n column.setAggFunc(aggFunc);\n this.fireColumnEvent(Events.EVENT_COLUMN_VALUE_CHANGED, [column], source);\n };\n ColumnModel.prototype.fireColumnEvent = function (type, columns, source) {\n var event = {\n type: type,\n columns: columns,\n column: (columns && columns.length == 1) ? columns[0] : null,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.moveRowGroupColumn = function (fromIndex, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n var column = this.rowGroupColumns[fromIndex];\n this.rowGroupColumns.splice(fromIndex, 1);\n this.rowGroupColumns.splice(toIndex, 0, column);\n var event = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n columns: this.rowGroupColumns,\n column: this.rowGroupColumns.length === 1 ? this.rowGroupColumns[0] : null,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.moveColumns = function (columnsToMoveKeys, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n if (toIndex > this.gridColumns.length - columnsToMoveKeys.length) {\n console.warn('AG Grid: tried to insert columns in invalid location, toIndex = ' + toIndex);\n console.warn('AG Grid: remember that you should not count the moving columns when calculating the new index');\n return;\n }\n // we want to pull all the columns out first and put them into an ordered list\n var columnsToMove = this.getGridColumns(columnsToMoveKeys);\n var failedRules = !this.doesMovePassRules(columnsToMove, toIndex);\n if (failedRules) {\n return;\n }\n moveInArray(this.gridColumns, columnsToMove, toIndex);\n this.updateDisplayedColumns(source);\n var event = {\n type: Events.EVENT_COLUMN_MOVED,\n columns: columnsToMove,\n column: columnsToMove.length === 1 ? columnsToMove[0] : null,\n toIndex: toIndex,\n source: source\n };\n this.eventService.dispatchEvent(event);\n this.columnAnimationService.finish();\n };\n ColumnModel.prototype.doesMovePassRules = function (columnsToMove, toIndex) {\n // make a copy of what the grid columns would look like after the move\n var proposedColumnOrder = this.getProposedColumnOrder(columnsToMove, toIndex);\n return this.doesOrderPassRules(proposedColumnOrder);\n };\n ColumnModel.prototype.doesOrderPassRules = function (gridOrder) {\n if (!this.doesMovePassMarryChildren(gridOrder)) {\n return false;\n }\n if (!this.doesMovePassLockedPositions(gridOrder)) {\n return false;\n }\n return true;\n };\n ColumnModel.prototype.getProposedColumnOrder = function (columnsToMove, toIndex) {\n var proposedColumnOrder = this.gridColumns.slice();\n moveInArray(proposedColumnOrder, columnsToMove, toIndex);\n return proposedColumnOrder;\n };\n // returns the provided cols sorted in same order as they appear in grid columns. eg if grid columns\n // contains [a,b,c,d,e] and col passed is [e,a] then the passed cols are sorted into [a,e]\n ColumnModel.prototype.sortColumnsLikeGridColumns = function (cols) {\n var _this = this;\n if (!cols || cols.length <= 1) {\n return;\n }\n var notAllColsInGridColumns = cols.filter(function (c) { return _this.gridColumns.indexOf(c) < 0; }).length > 0;\n if (notAllColsInGridColumns) {\n return;\n }\n cols.sort(function (a, b) {\n var indexA = _this.gridColumns.indexOf(a);\n var indexB = _this.gridColumns.indexOf(b);\n return indexA - indexB;\n });\n };\n ColumnModel.prototype.doesMovePassLockedPositions = function (proposedColumnOrder) {\n // Placement is a number indicating 'left' 'center' or 'right' as 0 1 2\n var lastPlacement = 0;\n var rulePassed = true;\n var lockPositionToPlacement = function (position) {\n if (!position) { // false or undefined\n return 1;\n }\n if (position === true) {\n return 0;\n }\n return position === 'left' ? 0 : 2; // Otherwise 'right'\n };\n proposedColumnOrder.forEach(function (col) {\n var placement = lockPositionToPlacement(col.getColDef().lockPosition);\n if (placement < lastPlacement) { // If placement goes down, we're not in the correct order\n rulePassed = false;\n }\n lastPlacement = placement;\n });\n return rulePassed;\n };\n ColumnModel.prototype.doesMovePassMarryChildren = function (allColumnsCopy) {\n var rulePassed = true;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (child) {\n if (!(child instanceof ProvidedColumnGroup)) {\n return;\n }\n var columnGroup = child;\n var colGroupDef = columnGroup.getColGroupDef();\n var marryChildren = colGroupDef && colGroupDef.marryChildren;\n if (!marryChildren) {\n return;\n }\n var newIndexes = [];\n columnGroup.getLeafColumns().forEach(function (col) {\n var newColIndex = allColumnsCopy.indexOf(col);\n newIndexes.push(newColIndex);\n });\n var maxIndex = Math.max.apply(Math, newIndexes);\n var minIndex = Math.min.apply(Math, newIndexes);\n // spread is how far the first column in this group is away from the last column\n var spread = maxIndex - minIndex;\n var maxSpread = columnGroup.getLeafColumns().length - 1;\n // if the columns\n if (spread > maxSpread) {\n rulePassed = false;\n }\n // console.log(`maxIndex = ${maxIndex}, minIndex = ${minIndex}, spread = ${spread}, maxSpread = ${maxSpread}, fail = ${spread > (count-1)}`)\n // console.log(allColumnsCopy.map( col => col.getColDef().field).join(','));\n });\n return rulePassed;\n };\n ColumnModel.prototype.moveColumn = function (key, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n this.moveColumns([key], toIndex, source);\n };\n ColumnModel.prototype.moveColumnByIndex = function (fromIndex, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n var column = this.gridColumns[fromIndex];\n this.moveColumn(column, toIndex, source);\n };\n ColumnModel.prototype.getColumnDefs = function () {\n var _this = this;\n if (!this.primaryColumns) {\n return;\n }\n var cols = this.primaryColumns.slice();\n if (this.gridColsArePrimary) {\n cols.sort(function (a, b) { return _this.gridColumns.indexOf(a) - _this.gridColumns.indexOf(b); });\n }\n else if (this.lastPrimaryOrder) {\n cols.sort(function (a, b) { return _this.lastPrimaryOrder.indexOf(a) - _this.lastPrimaryOrder.indexOf(b); });\n }\n return this.columnDefFactory.buildColumnDefs(cols, this.rowGroupColumns, this.pivotColumns);\n };\n // used by:\n // + angularGrid -> for setting body width\n // + rowController -> setting main row widths (when inserting and resizing)\n // need to cache this\n ColumnModel.prototype.getBodyContainerWidth = function () {\n return this.bodyWidth;\n };\n ColumnModel.prototype.getContainerWidth = function (pinned) {\n switch (pinned) {\n case Constants.PINNED_LEFT:\n return this.leftWidth;\n case Constants.PINNED_RIGHT:\n return this.rightWidth;\n default:\n return this.bodyWidth;\n }\n };\n // after setColumnWidth or updateGroupsAndDisplayedColumns\n ColumnModel.prototype.updateBodyWidths = function () {\n var newBodyWidth = this.getWidthOfColsInList(this.displayedColumnsCenter);\n var newLeftWidth = this.getWidthOfColsInList(this.displayedColumnsLeft);\n var newRightWidth = this.getWidthOfColsInList(this.displayedColumnsRight);\n // this is used by virtual col calculation, for RTL only, as a change to body width can impact displayed\n // columns, due to RTL inverting the y coordinates\n this.bodyWidthDirty = this.bodyWidth !== newBodyWidth;\n var atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;\n if (atLeastOneChanged) {\n this.bodyWidth = newBodyWidth;\n this.leftWidth = newLeftWidth;\n this.rightWidth = newRightWidth;\n // when this fires, it is picked up by the gridPanel, which ends up in\n // gridPanel calling setWidthAndScrollPosition(), which in turn calls setViewportPosition()\n var event_2 = {\n type: Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n };\n this.eventService.dispatchEvent(event_2);\n }\n };\n // + rowController\n ColumnModel.prototype.getValueColumns = function () {\n return this.valueColumns ? this.valueColumns : [];\n };\n // + rowController\n ColumnModel.prototype.getPivotColumns = function () {\n return this.pivotColumns ? this.pivotColumns : [];\n };\n // + clientSideRowModel\n ColumnModel.prototype.isPivotActive = function () {\n return this.pivotColumns && this.pivotColumns.length > 0 && this.pivotMode;\n };\n // + toolPanel\n ColumnModel.prototype.getRowGroupColumns = function () {\n return this.rowGroupColumns ? this.rowGroupColumns : [];\n };\n // + rowController -> while inserting rows\n ColumnModel.prototype.getDisplayedCenterColumns = function () {\n return this.displayedColumnsCenter;\n };\n // + rowController -> while inserting rows\n ColumnModel.prototype.getDisplayedLeftColumns = function () {\n return this.displayedColumnsLeft;\n };\n ColumnModel.prototype.getDisplayedRightColumns = function () {\n return this.displayedColumnsRight;\n };\n ColumnModel.prototype.getDisplayedColumns = function (type) {\n switch (type) {\n case Constants.PINNED_LEFT:\n return this.getDisplayedLeftColumns();\n case Constants.PINNED_RIGHT:\n return this.getDisplayedRightColumns();\n default:\n return this.getDisplayedCenterColumns();\n }\n };\n // used by:\n // + clientSideRowController -> sorting, building quick filter text\n // + headerRenderer -> sorting (clearing icon)\n ColumnModel.prototype.getAllPrimaryColumns = function () {\n return this.primaryColumns ? this.primaryColumns.slice() : null;\n };\n ColumnModel.prototype.getSecondaryColumns = function () {\n return this.secondaryColumns ? this.secondaryColumns.slice() : null;\n };\n ColumnModel.prototype.getAllColumnsForQuickFilter = function () {\n return this.columnsForQuickFilter;\n };\n // + moveColumnController\n ColumnModel.prototype.getAllGridColumns = function () {\n return this.gridColumns;\n };\n ColumnModel.prototype.isEmpty = function () {\n return missingOrEmpty(this.gridColumns);\n };\n ColumnModel.prototype.isRowGroupEmpty = function () {\n return missingOrEmpty(this.rowGroupColumns);\n };\n ColumnModel.prototype.setColumnVisible = function (key, visible, source) {\n if (source === void 0) { source = \"api\"; }\n this.setColumnsVisible([key], visible, source);\n };\n ColumnModel.prototype.setColumnsVisible = function (keys, visible, source) {\n if (visible === void 0) { visible = false; }\n if (source === void 0) { source = \"api\"; }\n this.applyColumnState({\n state: keys.map(function (key) { return ({\n colId: typeof key === 'string' ? key : key.getColId(),\n hide: !visible,\n }); }),\n }, source);\n };\n ColumnModel.prototype.setColumnPinned = function (key, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.setColumnsPinned([key], pinned, source);\n }\n };\n ColumnModel.prototype.setColumnsPinned = function (keys, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.gridOptionsWrapper.getDomLayout() === 'print') {\n console.warn(\"Changing the column pinning status is not allowed with domLayout='print'\");\n return;\n }\n this.columnAnimationService.start();\n var actualPinned;\n if (pinned === true || pinned === Constants.PINNED_LEFT) {\n actualPinned = Constants.PINNED_LEFT;\n }\n else if (pinned === Constants.PINNED_RIGHT) {\n actualPinned = Constants.PINNED_RIGHT;\n }\n else {\n actualPinned = null;\n }\n this.actionOnGridColumns(keys, function (col) {\n if (col.getPinned() !== actualPinned) {\n col.setPinned(actualPinned);\n return true;\n }\n return false;\n }, source, function () {\n var event = {\n type: Events.EVENT_COLUMN_PINNED,\n pinned: actualPinned,\n column: null,\n columns: null,\n source: source\n };\n return event;\n });\n this.columnAnimationService.finish();\n };\n // does an action on a set of columns. provides common functionality for looking up the\n // columns based on key, getting a list of effected columns, and then updated the event\n // with either one column (if it was just one col) or a list of columns\n // used by: autoResize, setVisible, setPinned\n ColumnModel.prototype.actionOnGridColumns = function (// the column keys this action will be on\n keys, \n // the action to do - if this returns false, the column was skipped\n // and won't be included in the event\n action, \n // should return back a column event of the right type\n source, createEvent) {\n var _this = this;\n if (missingOrEmpty(keys)) {\n return;\n }\n var updatedColumns = [];\n keys.forEach(function (key) {\n var column = _this.getGridColumn(key);\n if (!column) {\n return;\n }\n // need to check for false with type (ie !== instead of !=)\n // as not returning anything (undefined) would also be false\n var resultOfAction = action(column);\n if (resultOfAction !== false) {\n updatedColumns.push(column);\n }\n });\n if (!updatedColumns.length) {\n return;\n }\n this.updateDisplayedColumns(source);\n if (exists(createEvent) && createEvent) {\n var event_3 = createEvent();\n event_3.columns = updatedColumns;\n event_3.column = updatedColumns.length === 1 ? updatedColumns[0] : null;\n this.eventService.dispatchEvent(event_3);\n }\n };\n ColumnModel.prototype.getDisplayedColBefore = function (col) {\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex > 0) {\n return allDisplayedColumns[oldIndex - 1];\n }\n return null;\n };\n // used by:\n // + rowRenderer -> for navigation\n ColumnModel.prototype.getDisplayedColAfter = function (col) {\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex < (allDisplayedColumns.length - 1)) {\n return allDisplayedColumns[oldIndex + 1];\n }\n return null;\n };\n ColumnModel.prototype.getDisplayedGroupAfter = function (columnGroup) {\n return this.getDisplayedGroupAtDirection(columnGroup, 'After');\n };\n ColumnModel.prototype.getDisplayedGroupBefore = function (columnGroup) {\n return this.getDisplayedGroupAtDirection(columnGroup, 'Before');\n };\n ColumnModel.prototype.getDisplayedGroupAtDirection = function (columnGroup, direction) {\n // pick the last displayed column in this group\n var requiredLevel = columnGroup.getProvidedColumnGroup().getLevel() + columnGroup.getPaddingLevel();\n var colGroupLeafColumns = columnGroup.getDisplayedLeafColumns();\n var col = direction === 'After' ? last(colGroupLeafColumns) : colGroupLeafColumns[0];\n var getDisplayColMethod = \"getDisplayedCol\" + direction;\n while (true) {\n // keep moving to the next col, until we get to another group\n var column = this[getDisplayColMethod](col);\n if (!column) {\n return null;\n }\n var groupPointer = this.getColumnGroupAtLevel(column, requiredLevel);\n if (groupPointer !== columnGroup) {\n return groupPointer;\n }\n }\n };\n ColumnModel.prototype.getColumnGroupAtLevel = function (column, level) {\n // get group at same level as the one we are looking for\n var groupPointer = column.getParent();\n var originalGroupLevel;\n var groupPointerLevel;\n while (true) {\n var groupPointerProvidedColumnGroup = groupPointer.getProvidedColumnGroup();\n originalGroupLevel = groupPointerProvidedColumnGroup.getLevel();\n groupPointerLevel = groupPointer.getPaddingLevel();\n if (originalGroupLevel + groupPointerLevel <= level) {\n break;\n }\n groupPointer = groupPointer.getParent();\n }\n return groupPointer;\n };\n ColumnModel.prototype.isPinningLeft = function () {\n return this.displayedColumnsLeft.length > 0;\n };\n ColumnModel.prototype.isPinningRight = function () {\n return this.displayedColumnsRight.length > 0;\n };\n ColumnModel.prototype.getPrimaryAndSecondaryAndAutoColumns = function () {\n var _a;\n return (_a = []).concat.apply(_a, __spread$f([\n this.primaryColumns || [],\n this.groupAutoColumns || [],\n this.secondaryColumns || [],\n ]));\n };\n ColumnModel.prototype.getPrimaryAndAutoGroupCols = function () {\n var _a;\n return (_a = []).concat.apply(_a, __spread$f([\n this.primaryColumns || [],\n this.groupAutoColumns || [],\n ]));\n };\n ColumnModel.prototype.getPrimaryAndSecondaryColumns = function () {\n var _a;\n return (_a = []).concat.apply(_a, __spread$f([\n this.primaryColumns || [],\n this.secondaryColumns || [],\n ]));\n };\n ColumnModel.prototype.createStateItemFromColumn = function (column) {\n var rowGroupIndex = column.isRowGroupActive() ? this.rowGroupColumns.indexOf(column) : null;\n var pivotIndex = column.isPivotActive() ? this.pivotColumns.indexOf(column) : null;\n var aggFunc = column.isValueActive() ? column.getAggFunc() : null;\n var sort = column.getSort() != null ? column.getSort() : null;\n var sortIndex = column.getSortIndex() != null ? column.getSortIndex() : null;\n var flex = column.getFlex() != null && column.getFlex() > 0 ? column.getFlex() : null;\n var res = {\n colId: column.getColId(),\n width: column.getActualWidth(),\n hide: !column.isVisible(),\n pinned: column.getPinned(),\n sort: sort,\n sortIndex: sortIndex,\n aggFunc: aggFunc,\n rowGroup: column.isRowGroupActive(),\n rowGroupIndex: rowGroupIndex,\n pivot: column.isPivotActive(),\n pivotIndex: pivotIndex,\n flex: flex\n };\n return res;\n };\n ColumnModel.prototype.getColumnState = function () {\n if (missing(this.primaryColumns) || !this.isAlive()) {\n return [];\n }\n var colsForState = this.getPrimaryAndSecondaryAndAutoColumns();\n var res = colsForState.map(this.createStateItemFromColumn.bind(this));\n this.orderColumnStateList(res);\n return res;\n };\n ColumnModel.prototype.orderColumnStateList = function (columnStateList) {\n // for fast looking, store the index of each column\n var colIdToGridIndexMap = convertToMap(this.gridColumns.map(function (col, index) { return [col.getColId(), index]; }));\n columnStateList.sort(function (itemA, itemB) {\n var posA = colIdToGridIndexMap.has(itemA.colId) ? colIdToGridIndexMap.get(itemA.colId) : -1;\n var posB = colIdToGridIndexMap.has(itemB.colId) ? colIdToGridIndexMap.get(itemB.colId) : -1;\n return posA - posB;\n });\n };\n ColumnModel.prototype.resetColumnState = function (source) {\n // NOTE = there is one bug here that no customer has noticed - if a column has colDef.lockPosition,\n // this is ignored below when ordering the cols. to work, we should always put lockPosition cols first.\n // As a work around, developers should just put lockPosition columns first in their colDef list.\n if (source === void 0) { source = \"api\"; }\n // we can't use 'allColumns' as the order might of messed up, so get the primary ordered list\n var primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n var columnStates = [];\n // we start at 1000, so if user has mix of rowGroup and group specified, it will work with both.\n // eg IF user has ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=true,\n // THEN result will be ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=1000\n var letRowGroupIndex = 1000;\n var letPivotIndex = 1000;\n var colsToProcess = [];\n if (this.groupAutoColumns) {\n colsToProcess = colsToProcess.concat(this.groupAutoColumns);\n }\n if (primaryColumns) {\n colsToProcess = colsToProcess.concat(primaryColumns);\n }\n colsToProcess.forEach(function (column) {\n var getValueOrNull = function (a, b) { return a != null ? a : b != null ? b : null; };\n var colDef = column.getColDef();\n var sort = getValueOrNull(colDef.sort, colDef.initialSort);\n var sortIndex = getValueOrNull(colDef.sortIndex, colDef.initialSortIndex);\n var hide = getValueOrNull(colDef.hide, colDef.initialHide);\n var pinned = getValueOrNull(colDef.pinned, colDef.initialPinned);\n var width = getValueOrNull(colDef.width, colDef.initialWidth);\n var flex = getValueOrNull(colDef.flex, colDef.initialFlex);\n var rowGroupIndex = getValueOrNull(colDef.rowGroupIndex, colDef.initialRowGroupIndex);\n var rowGroup = getValueOrNull(colDef.rowGroup, colDef.initialRowGroup);\n if (rowGroupIndex == null && (rowGroup == null || rowGroup == false)) {\n rowGroupIndex = null;\n rowGroup = null;\n }\n var pivotIndex = getValueOrNull(colDef.pivotIndex, colDef.initialPivotIndex);\n var pivot = getValueOrNull(colDef.pivot, colDef.initialPivot);\n if (pivotIndex == null && (pivot == null || pivot == false)) {\n pivotIndex = null;\n pivot = null;\n }\n var aggFunc = getValueOrNull(colDef.aggFunc, colDef.initialAggFunc);\n var stateItem = {\n colId: column.getColId(),\n sort: sort,\n sortIndex: sortIndex,\n hide: hide,\n pinned: pinned,\n width: width,\n flex: flex,\n rowGroup: rowGroup,\n rowGroupIndex: rowGroupIndex,\n pivot: pivot,\n pivotIndex: pivotIndex,\n aggFunc: aggFunc,\n };\n if (missing(rowGroupIndex) && rowGroup) {\n stateItem.rowGroupIndex = letRowGroupIndex++;\n }\n if (missing(pivotIndex) && pivot) {\n stateItem.pivotIndex = letPivotIndex++;\n }\n columnStates.push(stateItem);\n });\n this.applyColumnState({ state: columnStates, applyOrder: true }, source);\n };\n ColumnModel.prototype.applyColumnState = function (params, source) {\n var _this = this;\n if (missingOrEmpty(this.primaryColumns)) {\n return false;\n }\n if (params && params.state && !params.state.forEach) {\n console.warn('AG Grid: applyColumnState() - the state attribute should be an array, however an array was not found. Please provide an array of items (one for each col you want to change) for state.');\n return false;\n }\n var applyStates = function (states, existingColumns, getById) {\n var raiseEventsFunc = _this.compareColumnStatesAndRaiseEvents(source);\n _this.autoGroupsNeedBuilding = true;\n // at the end below, this list will have all columns we got no state for\n var columnsWithNoState = existingColumns.slice();\n var rowGroupIndexes = {};\n var pivotIndexes = {};\n var autoGroupColumnStates = [];\n // If pivoting is modified, these are the states we try to reapply after\n // the secondary columns are re-generated\n var unmatchedAndAutoStates = [];\n var unmatchedCount = 0;\n var previousRowGroupCols = _this.rowGroupColumns.slice();\n var previousPivotCols = _this.pivotColumns.slice();\n states.forEach(function (state) {\n var colId = state.colId || '';\n // auto group columns are re-created so deferring syncing with ColumnState\n var isAutoGroupColumn = colId.startsWith(Constants.GROUP_AUTO_COLUMN_ID);\n if (isAutoGroupColumn) {\n autoGroupColumnStates.push(state);\n unmatchedAndAutoStates.push(state);\n return;\n }\n var column = getById(colId);\n if (!column) {\n unmatchedAndAutoStates.push(state);\n unmatchedCount += 1;\n }\n else {\n _this.syncColumnWithStateItem(column, state, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);\n removeFromArray(columnsWithNoState, column);\n }\n });\n // anything left over, we got no data for, so add in the column as non-value, non-rowGroup and hidden\n var applyDefaultsFunc = function (col) {\n return _this.syncColumnWithStateItem(col, null, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);\n };\n columnsWithNoState.forEach(applyDefaultsFunc);\n // sort the lists according to the indexes that were provided\n var comparator = function (indexes, oldList, colA, colB) {\n var indexA = indexes[colA.getId()];\n var indexB = indexes[colB.getId()];\n var aHasIndex = indexA != null;\n var bHasIndex = indexB != null;\n if (aHasIndex && bHasIndex) {\n // both a and b are new cols with index, so sort on index\n return indexA - indexB;\n }\n if (aHasIndex) {\n // a has an index, so it should be before a\n return -1;\n }\n if (bHasIndex) {\n // b has an index, so it should be before a\n return 1;\n }\n var oldIndexA = oldList.indexOf(colA);\n var oldIndexB = oldList.indexOf(colB);\n var aHasOldIndex = oldIndexA >= 0;\n var bHasOldIndex = oldIndexB >= 0;\n if (aHasOldIndex && bHasOldIndex) {\n // both a and b are old cols, so sort based on last order\n return oldIndexA - oldIndexB;\n }\n if (aHasOldIndex) {\n // a is old, b is new, so b is first\n return -1;\n }\n // this bit does matter, means both are new cols\n // but without index or that b is old and a is new\n return 1;\n };\n _this.rowGroupColumns.sort(comparator.bind(_this, rowGroupIndexes, previousRowGroupCols));\n _this.pivotColumns.sort(comparator.bind(_this, pivotIndexes, previousPivotCols));\n _this.updateGridColumns();\n // sync newly created auto group columns with ColumnState\n var autoGroupColsCopy = _this.groupAutoColumns ? _this.groupAutoColumns.slice() : [];\n autoGroupColumnStates.forEach(function (stateItem) {\n var autoCol = _this.getAutoColumn(stateItem.colId);\n removeFromArray(autoGroupColsCopy, autoCol);\n _this.syncColumnWithStateItem(autoCol, stateItem, params.defaultState, null, null, true, source);\n });\n // autogroup cols with nothing else, apply the default\n autoGroupColsCopy.forEach(applyDefaultsFunc);\n _this.applyOrderAfterApplyState(params);\n _this.updateDisplayedColumns(source);\n _this.dispatchEverythingChanged(source);\n raiseEventsFunc(); // Will trigger secondary column changes if pivoting modified\n return { unmatchedAndAutoStates: unmatchedAndAutoStates, unmatchedCount: unmatchedCount };\n };\n this.columnAnimationService.start();\n var _a = applyStates(params.state || [], this.primaryColumns || [], function (id) { return _this.getPrimaryColumn(id); }), unmatchedAndAutoStates = _a.unmatchedAndAutoStates, unmatchedCount = _a.unmatchedCount;\n // If there are still states left over, see if we can apply them to newly generated\n // secondary or auto columns. Also if defaults exist, ensure they are applied to secondary cols\n if (unmatchedAndAutoStates.length > 0 || exists(params.defaultState)) {\n unmatchedCount = applyStates(unmatchedAndAutoStates, this.secondaryColumns || [], function (id) { return _this.getSecondaryColumn(id); }).unmatchedCount;\n }\n this.columnAnimationService.finish();\n return unmatchedCount === 0; // Successful if no states unaccounted for\n };\n ColumnModel.prototype.applyOrderAfterApplyState = function (params) {\n var _this = this;\n if (!params.applyOrder || !params.state) {\n return;\n }\n var newOrder = [];\n var processedColIds = {};\n params.state.forEach(function (item) {\n if (!item.colId || processedColIds[item.colId]) {\n return;\n }\n var col = _this.gridColumnsMap[item.colId];\n if (col) {\n newOrder.push(col);\n processedColIds[item.colId] = true;\n }\n });\n // add in all other columns\n var autoGroupInsertIndex = 0;\n this.gridColumns.forEach(function (col) {\n var colId = col.getColId();\n var alreadyProcessed = processedColIds[colId] != null;\n if (alreadyProcessed) {\n return;\n }\n var isAutoGroupCol = colId.startsWith(Constants.GROUP_AUTO_COLUMN_ID);\n if (isAutoGroupCol) {\n // auto group columns, if missing from state list, are added to the start.\n // it's common to have autoGroup missing, as grouping could be on by default\n // on a column, but the user could of since removed the grouping via the UI.\n // if we don't inc the insert index, autoGroups will be inserted in reverse order\n insertIntoArray(newOrder, col, autoGroupInsertIndex++);\n }\n else {\n // normal columns, if missing from state list, are added at the end\n newOrder.push(col);\n }\n });\n // this is already done in updateGridColumns, however we changed the order above (to match the order of the state\n // columns) so we need to do it again. we could of put logic into the order above to take into account fixed\n // columns, however if we did then we would have logic for updating fixed columns twice. reusing the logic here\n // is less sexy for the code here, but it keeps consistency.\n newOrder = this.placeLockedColumns(newOrder);\n if (!this.doesMovePassMarryChildren(newOrder)) {\n console.warn('AG Grid: Applying column order broke a group where columns should be married together. Applying new order has been discarded.');\n return;\n }\n this.gridColumns = newOrder;\n };\n ColumnModel.prototype.compareColumnStatesAndRaiseEvents = function (source) {\n var _this = this;\n var startState = {\n rowGroupColumns: this.rowGroupColumns.slice(),\n pivotColumns: this.pivotColumns.slice(),\n valueColumns: this.valueColumns.slice()\n };\n var columnStateBefore = this.getColumnState();\n var columnStateBeforeMap = {};\n columnStateBefore.forEach(function (col) {\n columnStateBeforeMap[col.colId] = col;\n });\n return function () {\n if (_this.gridOptionsWrapper.isSuppressColumnStateEvents()) {\n return;\n }\n var colsForState = _this.getPrimaryAndSecondaryAndAutoColumns();\n // raises generic ColumnEvents where all columns are returned rather than what has changed\n var raiseWhenListsDifferent = function (eventType, colsBefore, colsAfter, idMapper) {\n var beforeList = colsBefore.map(idMapper);\n var afterList = colsAfter.map(idMapper);\n var unchanged = areEqual(beforeList, afterList);\n if (unchanged) {\n return;\n }\n // returning all columns rather than what has changed!\n var event = {\n type: eventType,\n columns: colsAfter,\n column: colsAfter.length === 1 ? colsAfter[0] : null,\n source: source\n };\n _this.eventService.dispatchEvent(event);\n };\n // determines which columns have changed according to supplied predicate\n var getChangedColumns = function (changedPredicate) {\n var changedColumns = [];\n colsForState.forEach(function (column) {\n var colStateBefore = columnStateBeforeMap[column.getColId()];\n if (colStateBefore && changedPredicate(colStateBefore, column)) {\n changedColumns.push(column);\n }\n });\n return changedColumns;\n };\n var columnIdMapper = function (c) { return c.getColId(); };\n raiseWhenListsDifferent(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, startState.rowGroupColumns, _this.rowGroupColumns, columnIdMapper);\n raiseWhenListsDifferent(Events.EVENT_COLUMN_PIVOT_CHANGED, startState.pivotColumns, _this.pivotColumns, columnIdMapper);\n var valueChangePredicate = function (cs, c) {\n var oldActive = cs.aggFunc != null;\n var activeChanged = oldActive != c.isValueActive();\n // we only check aggFunc if the agg is active\n var aggFuncChanged = oldActive && cs.aggFunc != c.getAggFunc();\n return activeChanged || aggFuncChanged;\n };\n var changedValues = getChangedColumns(valueChangePredicate);\n if (changedValues.length > 0) {\n // we pass all value columns, now the ones that changed. this is the same\n // as pivot and rowGroup cols, but different to all other properties below.\n // this is more for backwards compatibility, as it's always been this way.\n // really it should be the other way, as the order of the cols makes no difference\n // for valueColumns (apart from displaying them in the tool panel).\n _this.fireColumnEvent(Events.EVENT_COLUMN_VALUE_CHANGED, _this.valueColumns, source);\n }\n var resizeChangePredicate = function (cs, c) { return cs.width != c.getActualWidth(); };\n _this.fireColumnResizedEvent(getChangedColumns(resizeChangePredicate), true, source);\n var pinnedChangePredicate = function (cs, c) { return cs.pinned != c.getPinned(); };\n _this.raiseColumnPinnedEvent(getChangedColumns(pinnedChangePredicate), source);\n var visibilityChangePredicate = function (cs, c) { return cs.hide == c.isVisible(); };\n _this.raiseColumnVisibleEvent(getChangedColumns(visibilityChangePredicate), source);\n var sortChangePredicate = function (cs, c) { return cs.sort != c.getSort() || cs.sortIndex != c.getSortIndex(); };\n if (getChangedColumns(sortChangePredicate).length > 0) {\n _this.sortController.dispatchSortChangedEvents(source);\n }\n // special handling for moved column events\n _this.raiseColumnMovedEvent(columnStateBefore, source);\n };\n };\n ColumnModel.prototype.raiseColumnPinnedEvent = function (changedColumns, source) {\n if (!changedColumns.length) {\n return;\n }\n // if just one column, we use this, otherwise we don't include the col\n var column = changedColumns.length === 1 ? changedColumns[0] : null;\n // only include visible if it's common in all columns\n var pinned = this.getCommonValue(changedColumns, function (col) { return col.getPinned(); });\n var event = {\n type: Events.EVENT_COLUMN_PINNED,\n // mistake in typing, 'undefined' should be allowed, as 'null' means 'not pinned'\n pinned: pinned != null ? pinned : null,\n columns: changedColumns,\n column: column,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.getCommonValue = function (cols, valueGetter) {\n if (!cols || cols.length == 0) {\n return undefined;\n }\n // compare each value to the first value. if nothing differs, then value is common so return it.\n var firstValue = valueGetter(cols[0]);\n for (var i = 1; i < cols.length; i++) {\n if (firstValue !== valueGetter(cols[i])) {\n // values differ, no common value\n return undefined;\n }\n }\n return firstValue;\n };\n ColumnModel.prototype.raiseColumnVisibleEvent = function (changedColumns, source) {\n if (!changedColumns.length) {\n return;\n }\n // if just one column, we use this, otherwise we don't include the col\n var column = changedColumns.length === 1 ? changedColumns[0] : null;\n // only include visible if it's common in all columns\n var visible = this.getCommonValue(changedColumns, function (col) { return col.isVisible(); });\n var event = {\n type: Events.EVENT_COLUMN_VISIBLE,\n visible: visible,\n columns: changedColumns,\n column: column,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.raiseColumnMovedEvent = function (colStateBefore, source) {\n // we are only interested in columns that were both present and visible before and after\n var _this = this;\n var colStateAfter = this.getColumnState();\n var colStateAfterMapped = {};\n colStateAfter.forEach(function (s) { return colStateAfterMapped[s.colId] = s; });\n // get id's of cols in both before and after lists\n var colsIntersectIds = {};\n colStateBefore.forEach(function (s) {\n if (colStateAfterMapped[s.colId]) {\n colsIntersectIds[s.colId] = true;\n }\n });\n // filter state lists, so we only have cols that were present before and after\n var beforeFiltered = colStateBefore.filter(function (c) { return colsIntersectIds[c.colId]; });\n var afterFiltered = colStateAfter.filter(function (c) { return colsIntersectIds[c.colId]; });\n // see if any cols are in a different location\n var movedColumns = [];\n afterFiltered.forEach(function (csAfter, index) {\n var csBefore = beforeFiltered && beforeFiltered[index];\n if (csBefore && csBefore.colId !== csAfter.colId) {\n var gridCol = _this.getGridColumn(csBefore.colId);\n if (gridCol) {\n movedColumns.push(gridCol);\n }\n }\n });\n if (!movedColumns.length) {\n return;\n }\n var event = {\n type: Events.EVENT_COLUMN_MOVED,\n columns: movedColumns,\n column: null,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.syncColumnWithStateItem = function (column, stateItem, defaultState, rowGroupIndexes, pivotIndexes, autoCol, source) {\n if (!column) {\n return;\n }\n var getValue = function (key1, key2) {\n var obj = { value1: undefined, value2: undefined };\n var calculated = false;\n if (stateItem) {\n if (stateItem[key1] !== undefined) {\n obj.value1 = stateItem[key1];\n calculated = true;\n }\n if (exists(key2) && stateItem[key2] !== undefined) {\n obj.value2 = stateItem[key2];\n calculated = true;\n }\n }\n if (!calculated && defaultState) {\n if (defaultState[key1] !== undefined) {\n obj.value1 = defaultState[key1];\n }\n if (exists(key2) && defaultState[key2] !== undefined) {\n obj.value2 = defaultState[key2];\n }\n }\n return obj;\n };\n // following ensures we are left with boolean true or false, eg converts (null, undefined, 0) all to true\n var hide = getValue('hide').value1;\n if (hide !== undefined) {\n column.setVisible(!hide, source);\n }\n // sets pinned to 'left' or 'right'\n var pinned = getValue('pinned').value1;\n if (pinned !== undefined) {\n column.setPinned(pinned);\n }\n // if width provided and valid, use it, otherwise stick with the old width\n var minColWidth = this.columnUtils.calculateColMinWidth(column.getColDef());\n // flex\n var flex = getValue('flex').value1;\n if (flex !== undefined) {\n column.setFlex(flex);\n }\n // width - we only set width if column is not flexing\n var noFlexThisCol = column.getFlex() <= 0;\n if (noFlexThisCol) {\n // both null and undefined means we skip, as it's not possible to 'clear' width (a column must have a width)\n var width = getValue('width').value1;\n if (width != null) {\n if (minColWidth != null && width >= minColWidth) {\n column.setActualWidth(width, source);\n }\n }\n }\n var sort = getValue('sort').value1;\n if (sort !== undefined) {\n if (sort === Constants.SORT_DESC || sort === Constants.SORT_ASC) {\n column.setSort(sort, source);\n }\n else {\n column.setSort(undefined, source);\n }\n }\n var sortIndex = getValue('sortIndex').value1;\n if (sortIndex !== undefined) {\n column.setSortIndex(sortIndex);\n }\n // we do not do aggFunc, rowGroup or pivot for auto cols or secondary cols\n if (autoCol || !column.isPrimary()) {\n return;\n }\n var aggFunc = getValue('aggFunc').value1;\n if (aggFunc !== undefined) {\n if (typeof aggFunc === 'string') {\n column.setAggFunc(aggFunc);\n if (!column.isValueActive()) {\n column.setValueActive(true, source);\n this.valueColumns.push(column);\n }\n }\n else {\n if (exists(aggFunc)) {\n console.warn('AG Grid: stateItem.aggFunc must be a string. if using your own aggregation ' +\n 'functions, register the functions first before using them in get/set state. This is because it is ' +\n 'intended for the column state to be stored and retrieved as simple JSON.');\n }\n // Note: we do not call column.setAggFunc(null), so that next time we aggregate\n // by this column (eg drag the column to the agg section int he toolpanel) it will\n // default to the last aggregation function.\n if (column.isValueActive()) {\n column.setValueActive(false, source);\n removeFromArray(this.valueColumns, column);\n }\n }\n }\n var _a = getValue('rowGroup', 'rowGroupIndex'), rowGroup = _a.value1, rowGroupIndex = _a.value2;\n if (rowGroup !== undefined || rowGroupIndex !== undefined) {\n if (typeof rowGroupIndex === 'number' || rowGroup) {\n if (!column.isRowGroupActive()) {\n column.setRowGroupActive(true, source);\n this.rowGroupColumns.push(column);\n }\n if (rowGroupIndexes && typeof rowGroupIndex === 'number') {\n rowGroupIndexes[column.getId()] = rowGroupIndex;\n }\n }\n else {\n if (column.isRowGroupActive()) {\n column.setRowGroupActive(false, source);\n removeFromArray(this.rowGroupColumns, column);\n }\n }\n }\n var _b = getValue('pivot', 'pivotIndex'), pivot = _b.value1, pivotIndex = _b.value2;\n if (pivot !== undefined || pivotIndex !== undefined) {\n if (typeof pivotIndex === 'number' || pivot) {\n if (!column.isPivotActive()) {\n column.setPivotActive(true, source);\n this.pivotColumns.push(column);\n }\n if (pivotIndexes && typeof pivotIndex === 'number') {\n pivotIndexes[column.getId()] = pivotIndex;\n }\n }\n else {\n if (column.isPivotActive()) {\n column.setPivotActive(false, source);\n removeFromArray(this.pivotColumns, column);\n }\n }\n }\n };\n ColumnModel.prototype.getGridColumns = function (keys) {\n return this.getColumns(keys, this.getGridColumn.bind(this));\n };\n ColumnModel.prototype.getColumns = function (keys, columnLookupCallback) {\n var foundColumns = [];\n if (keys) {\n keys.forEach(function (key) {\n var column = columnLookupCallback(key);\n if (column) {\n foundColumns.push(column);\n }\n });\n }\n return foundColumns;\n };\n // used by growGroupPanel\n ColumnModel.prototype.getColumnWithValidation = function (key) {\n if (key == null) {\n return null;\n }\n var column = this.getGridColumn(key);\n if (!column) {\n console.warn('AG Grid: could not find column ' + key);\n }\n return column;\n };\n ColumnModel.prototype.getPrimaryColumn = function (key) {\n if (!this.primaryColumns) {\n return null;\n }\n return this.getColumn(key, this.primaryColumns, this.primaryColumnsMap);\n };\n ColumnModel.prototype.getGridColumn = function (key) {\n return this.getColumn(key, this.gridColumns, this.gridColumnsMap);\n };\n ColumnModel.prototype.getSecondaryColumn = function (key) {\n if (!this.secondaryColumns) {\n return null;\n }\n return this.getColumn(key, this.secondaryColumns, this.secondaryColumnsMap);\n };\n ColumnModel.prototype.getColumn = function (key, columnList, columnMap) {\n if (!key) {\n return null;\n }\n // most of the time this method gets called the key is a string, so we put this shortcut in\n // for performance reasons, to see if we can match for ID (it doesn't do auto columns, that's done below)\n if (typeof key == 'string' && columnMap[key]) {\n return columnMap[key];\n }\n for (var i = 0; i < columnList.length; i++) {\n if (this.columnsMatch(columnList[i], key)) {\n return columnList[i];\n }\n }\n return this.getAutoColumn(key);\n };\n ColumnModel.prototype.getSourceColumnsForGroupColumn = function (groupCol) {\n var sourceColumnId = groupCol.getColDef().showRowGroup;\n if (!sourceColumnId) {\n return null;\n }\n if (sourceColumnId === true) {\n return this.rowGroupColumns.slice(0);\n }\n var column = this.getPrimaryColumn(sourceColumnId);\n return column ? [column] : null;\n };\n ColumnModel.prototype.getAutoColumn = function (key) {\n var _this = this;\n if (!this.groupAutoColumns ||\n !exists(this.groupAutoColumns) ||\n missing(this.groupAutoColumns)) {\n return null;\n }\n return this.groupAutoColumns.find(function (groupCol) { return _this.columnsMatch(groupCol, key); }) || null;\n };\n ColumnModel.prototype.columnsMatch = function (column, key) {\n var columnMatches = column === key;\n var colDefMatches = column.getColDef() === key;\n var idMatches = column.getColId() == key;\n return columnMatches || colDefMatches || idMatches;\n };\n ColumnModel.prototype.getDisplayNameForColumn = function (column, location, includeAggFunc) {\n if (includeAggFunc === void 0) { includeAggFunc = false; }\n if (!column) {\n return null;\n }\n var headerName = this.getHeaderName(column.getColDef(), column, null, null, location);\n if (includeAggFunc) {\n return this.wrapHeaderNameWithAggFunc(column, headerName);\n }\n return headerName;\n };\n ColumnModel.prototype.getDisplayNameForProvidedColumnGroup = function (columnGroup, providedColumnGroup, location) {\n var colGroupDef = providedColumnGroup ? providedColumnGroup.getColGroupDef() : null;\n if (colGroupDef) {\n return this.getHeaderName(colGroupDef, null, columnGroup, providedColumnGroup, location);\n }\n return null;\n };\n ColumnModel.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) {\n return this.getDisplayNameForProvidedColumnGroup(columnGroup, columnGroup.getProvidedColumnGroup(), location);\n };\n // location is where the column is going to appear, ie who is calling us\n ColumnModel.prototype.getHeaderName = function (colDef, column, columnGroup, providedColumnGroup, location) {\n var headerValueGetter = colDef.headerValueGetter;\n if (headerValueGetter) {\n var params = {\n colDef: colDef,\n column: column,\n columnGroup: columnGroup,\n providedColumnGroup: providedColumnGroup,\n location: location,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n if (typeof headerValueGetter === 'function') {\n // valueGetter is a function, so just call it\n return headerValueGetter(params);\n }\n else if (typeof headerValueGetter === 'string') {\n // valueGetter is an expression, so execute the expression\n return this.expressionService.evaluate(headerValueGetter, params);\n }\n console.warn('ag-grid: headerValueGetter must be a function or a string');\n return '';\n }\n else if (colDef.headerName != null) {\n return colDef.headerName;\n }\n else if (colDef.field) {\n return camelCaseToHumanText(colDef.field);\n }\n return '';\n };\n ColumnModel.prototype.wrapHeaderNameWithAggFunc = function (column, headerName) {\n if (this.gridOptionsWrapper.isSuppressAggFuncInHeader()) {\n return headerName;\n }\n // only columns with aggregation active can have aggregations\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n var pivotActiveOnThisColumn = exists(pivotValueColumn);\n var aggFunc = null;\n var aggFuncFound;\n // otherwise we have a measure that is active, and we are doing aggregation on it\n if (pivotActiveOnThisColumn) {\n var isCollapsedHeaderEnabled = this.gridOptionsWrapper.isRemovePivotHeaderRowWhenSingleValueColumn() && this.valueColumns.length === 1;\n var isTotalColumn = column.getColDef().pivotTotalColumnIds !== undefined;\n if (isCollapsedHeaderEnabled && !isTotalColumn) {\n return headerName; // Skip decorating the header - in this case the label is the pivot key, not the value col\n }\n aggFunc = pivotValueColumn ? pivotValueColumn.getAggFunc() : null;\n aggFuncFound = true;\n }\n else {\n var measureActive = column.isValueActive();\n var aggregationPresent = this.pivotMode || !this.isRowGroupEmpty();\n if (measureActive && aggregationPresent) {\n aggFunc = column.getAggFunc();\n aggFuncFound = true;\n }\n else {\n aggFuncFound = false;\n }\n }\n if (aggFuncFound) {\n var aggFuncString = (typeof aggFunc === 'string') ? aggFunc : 'func';\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n return aggFuncStringTranslated + \"(\" + headerName + \")\";\n }\n return headerName;\n };\n // returns the group with matching colId and instanceId. If instanceId is missing,\n // matches only on the colId.\n ColumnModel.prototype.getColumnGroup = function (colId, instanceId) {\n if (!colId) {\n return null;\n }\n if (colId instanceof ColumnGroup) {\n return colId;\n }\n var allColumnGroups = this.getAllDisplayedTrees();\n var checkInstanceId = typeof instanceId === 'number';\n var result = null;\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n if (child instanceof ColumnGroup) {\n var columnGroup = child;\n var matched = void 0;\n if (checkInstanceId) {\n matched = colId === columnGroup.getGroupId() && instanceId === columnGroup.getInstanceId();\n }\n else {\n matched = colId === columnGroup.getGroupId();\n }\n if (matched) {\n result = columnGroup;\n }\n }\n });\n return result;\n };\n ColumnModel.prototype.isReady = function () {\n return this.ready;\n };\n ColumnModel.prototype.extractValueColumns = function (source, oldPrimaryColumns) {\n this.valueColumns = this.extractColumns(oldPrimaryColumns, this.valueColumns, function (col, flag) { return col.setValueActive(flag, source); }, \n // aggFunc doesn't have index variant, cos order of value cols doesn't matter, so always return null\n function () { return undefined; }, function () { return undefined; }, \n // aggFunc is a string, so return it's existence\n function (colDef) {\n var aggFunc = colDef.aggFunc;\n // null or empty string means clear\n if (aggFunc === null || aggFunc === '') {\n return null;\n }\n if (aggFunc === undefined) {\n return;\n }\n return !!aggFunc;\n }, function (colDef) {\n // return false if any of the following: null, undefined, empty string\n return colDef.initialAggFunc != null && colDef.initialAggFunc != '';\n });\n // all new columns added will have aggFunc missing, so set it to what is in the colDef\n this.valueColumns.forEach(function (col) {\n var colDef = col.getColDef();\n // if aggFunc provided, we always override, as reactive property\n if (colDef.aggFunc != null && colDef.aggFunc != '') {\n col.setAggFunc(colDef.aggFunc);\n }\n else {\n // otherwise we use initialAggFunc only if no agg func set - which happens when new column only\n if (!col.getAggFunc()) {\n col.setAggFunc(colDef.initialAggFunc);\n }\n }\n });\n };\n ColumnModel.prototype.extractRowGroupColumns = function (source, oldPrimaryColumns) {\n this.rowGroupColumns = this.extractColumns(oldPrimaryColumns, this.rowGroupColumns, function (col, flag) { return col.setRowGroupActive(flag, source); }, function (colDef) { return colDef.rowGroupIndex; }, function (colDef) { return colDef.initialRowGroupIndex; }, function (colDef) { return colDef.rowGroup; }, function (colDef) { return colDef.initialRowGroup; });\n };\n ColumnModel.prototype.extractColumns = function (oldPrimaryColumns, previousCols, setFlagFunc, getIndexFunc, getInitialIndexFunc, getValueFunc, getInitialValueFunc) {\n if (oldPrimaryColumns === void 0) { oldPrimaryColumns = []; }\n if (previousCols === void 0) { previousCols = []; }\n var colsWithIndex = [];\n var colsWithValue = [];\n // go though all cols.\n // if value, change\n // if default only, change only if new\n (this.primaryColumns || []).forEach(function (col) {\n var colIsNew = oldPrimaryColumns.indexOf(col) < 0;\n var colDef = col.getColDef();\n var value = attrToBoolean(getValueFunc(colDef));\n var initialValue = attrToBoolean(getInitialValueFunc(colDef));\n var index = attrToNumber(getIndexFunc(colDef));\n var initialIndex = attrToNumber(getInitialIndexFunc(colDef));\n var include;\n var valuePresent = value !== undefined;\n var indexPresent = index !== undefined;\n var initialValuePresent = initialValue !== undefined;\n var initialIndexPresent = initialIndex !== undefined;\n if (valuePresent) {\n include = value; // boolean value is guaranteed as attrToBoolean() is used above\n }\n else if (indexPresent) {\n if (index === null) {\n // if col is new we don't want to use the default / initial if index is set to null. Similarly,\n // we don't want to include the property for existing columns, i.e. we want to 'clear' it.\n include = false;\n }\n else {\n // note that 'null >= 0' evaluates to true which means 'rowGroupIndex = null' would enable row\n // grouping if the null check didn't exist above.\n include = index >= 0;\n }\n }\n else {\n if (colIsNew) {\n // as no value or index is 'present' we use the default / initial when col is new\n if (initialValuePresent) {\n include = initialValue;\n }\n else if (initialIndexPresent) {\n include = initialIndex != null && initialIndex >= 0;\n }\n else {\n include = false;\n }\n }\n else {\n // otherwise include it if included last time, e.g. if we are extracting row group cols and this col\n // is an existing row group col (i.e. it exists in 'previousCols') then we should include it.\n include = previousCols.indexOf(col) >= 0;\n }\n }\n if (include) {\n var useIndex = colIsNew ? (index != null || initialIndex != null) : index != null;\n useIndex ? colsWithIndex.push(col) : colsWithValue.push(col);\n }\n });\n var getIndexForCol = function (col) {\n var index = getIndexFunc(col.getColDef());\n var defaultIndex = getInitialIndexFunc(col.getColDef());\n return index != null ? index : defaultIndex;\n };\n // sort cols with index, and add these first\n colsWithIndex.sort(function (colA, colB) {\n var indexA = getIndexForCol(colA);\n var indexB = getIndexForCol(colB);\n if (indexA === indexB) {\n return 0;\n }\n if (indexA < indexB) {\n return -1;\n }\n return 1;\n });\n var res = [].concat(colsWithIndex);\n // second add columns that were there before and in the same order as they were before,\n // so we are preserving order of current grouping of columns that simply have rowGroup=true\n previousCols.forEach(function (col) {\n if (colsWithValue.indexOf(col) >= 0) {\n res.push(col);\n }\n });\n // lastly put in all remaining cols\n colsWithValue.forEach(function (col) {\n if (res.indexOf(col) < 0) {\n res.push(col);\n }\n });\n // set flag=false for removed cols\n previousCols.forEach(function (col) {\n if (res.indexOf(col) < 0) {\n setFlagFunc(col, false);\n }\n });\n // set flag=true for newly added cols\n res.forEach(function (col) {\n if (previousCols.indexOf(col) < 0) {\n setFlagFunc(col, true);\n }\n });\n return res;\n };\n ColumnModel.prototype.extractPivotColumns = function (source, oldPrimaryColumns) {\n this.pivotColumns = this.extractColumns(oldPrimaryColumns, this.pivotColumns, function (col, flag) { return col.setPivotActive(flag, source); }, function (colDef) { return colDef.pivotIndex; }, function (colDef) { return colDef.initialPivotIndex; }, function (colDef) { return colDef.pivot; }, function (colDef) { return colDef.initialPivot; });\n };\n ColumnModel.prototype.resetColumnGroupState = function (source) {\n if (source === void 0) { source = \"api\"; }\n var stateItems = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.primaryColumnTree, function (child) {\n if (child instanceof ProvidedColumnGroup) {\n var colGroupDef = child.getColGroupDef();\n var groupState = {\n groupId: child.getGroupId(),\n open: !colGroupDef ? undefined : colGroupDef.openByDefault\n };\n stateItems.push(groupState);\n }\n });\n this.setColumnGroupState(stateItems, source);\n };\n ColumnModel.prototype.getColumnGroupState = function () {\n var columnGroupState = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n if (node instanceof ProvidedColumnGroup) {\n columnGroupState.push({\n groupId: node.getGroupId(),\n open: node.isExpanded()\n });\n }\n });\n return columnGroupState;\n };\n ColumnModel.prototype.setColumnGroupState = function (stateItems, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n var impactedGroups = [];\n stateItems.forEach(function (stateItem) {\n var groupKey = stateItem.groupId;\n var newValue = stateItem.open;\n var providedColumnGroup = _this.getProvidedColumnGroup(groupKey);\n if (!providedColumnGroup) {\n return;\n }\n if (providedColumnGroup.isExpanded() === newValue) {\n return;\n }\n _this.logger.log('columnGroupOpened(' + providedColumnGroup.getGroupId() + ',' + newValue + ')');\n providedColumnGroup.setExpanded(newValue);\n impactedGroups.push(providedColumnGroup);\n });\n this.updateGroupsAndDisplayedColumns(source);\n this.setFirstRightAndLastLeftPinned(source);\n impactedGroups.forEach(function (providedColumnGroup) {\n var event = {\n type: Events.EVENT_COLUMN_GROUP_OPENED,\n columnGroup: providedColumnGroup\n };\n _this.eventService.dispatchEvent(event);\n });\n this.columnAnimationService.finish();\n };\n // called by headerRenderer - when a header is opened or closed\n ColumnModel.prototype.setColumnGroupOpened = function (key, newValue, source) {\n if (source === void 0) { source = \"api\"; }\n var keyAsString;\n if (key instanceof ProvidedColumnGroup) {\n keyAsString = key.getId();\n }\n else {\n keyAsString = key || '';\n }\n this.setColumnGroupState([{ groupId: keyAsString, open: newValue }], source);\n };\n ColumnModel.prototype.getProvidedColumnGroup = function (key) {\n // if (key instanceof ProvidedColumnGroup) { return key; }\n if (typeof key !== 'string') {\n console.error('AG Grid: group key must be a string');\n }\n // otherwise, search for the column group by id\n var res = null;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n if (node instanceof ProvidedColumnGroup) {\n if (node.getId() === key) {\n res = node;\n }\n }\n });\n return res;\n };\n ColumnModel.prototype.calculateColumnsForDisplay = function () {\n var _this = this;\n var columnsForDisplay;\n if (this.pivotMode && missing(this.secondaryColumns)) {\n // pivot mode is on, but we are not pivoting, so we only\n // show columns we are aggregating on\n columnsForDisplay = this.gridColumns.filter(function (column) {\n var isAutoGroupCol = _this.groupAutoColumns && includes(_this.groupAutoColumns, column);\n var isValueCol = _this.valueColumns && includes(_this.valueColumns, column);\n return isAutoGroupCol || isValueCol;\n });\n }\n else {\n // otherwise continue as normal. this can be working on the primary\n // or secondary columns, whatever the gridColumns are set to\n columnsForDisplay = this.gridColumns.filter(function (column) {\n // keep col if a) it's auto-group or b) it's visible\n var isAutoGroupCol = _this.groupAutoColumns && includes(_this.groupAutoColumns, column);\n return isAutoGroupCol || column.isVisible();\n });\n }\n return columnsForDisplay;\n };\n ColumnModel.prototype.checkColSpanActiveInCols = function (columns) {\n var result = false;\n columns.forEach(function (col) {\n if (exists(col.getColDef().colSpan)) {\n result = true;\n }\n });\n return result;\n };\n ColumnModel.prototype.calculateColumnsForGroupDisplay = function () {\n var _this = this;\n this.groupDisplayColumns = [];\n this.groupDisplayColumnsMap = {};\n var checkFunc = function (col) {\n var colDef = col.getColDef();\n var underlyingColumn = colDef.showRowGroup;\n if (colDef && exists(underlyingColumn)) {\n _this.groupDisplayColumns.push(col);\n if (typeof underlyingColumn === 'string') {\n _this.groupDisplayColumnsMap[underlyingColumn] = col;\n }\n else if (underlyingColumn === true) {\n _this.getRowGroupColumns().forEach(function (rowGroupCol) {\n _this.groupDisplayColumnsMap[rowGroupCol.getId()] = col;\n });\n }\n }\n };\n this.gridColumns.forEach(checkFunc);\n if (this.groupAutoColumns) {\n this.groupAutoColumns.forEach(checkFunc);\n }\n };\n ColumnModel.prototype.getGroupDisplayColumns = function () {\n return this.groupDisplayColumns;\n };\n ColumnModel.prototype.getGroupDisplayColumnForGroup = function (rowGroupColumnId) {\n return this.groupDisplayColumnsMap[rowGroupColumnId];\n };\n ColumnModel.prototype.updateDisplayedColumns = function (source) {\n var columnsForDisplay = this.calculateColumnsForDisplay();\n this.buildDisplayedTrees(columnsForDisplay);\n this.calculateColumnsForGroupDisplay();\n // also called when group opened/closed\n this.updateGroupsAndDisplayedColumns(source);\n // also called when group opened/closed\n this.setFirstRightAndLastLeftPinned(source);\n };\n ColumnModel.prototype.isSecondaryColumnsPresent = function () {\n return exists(this.secondaryColumns);\n };\n ColumnModel.prototype.setSecondaryColumns = function (colDefs, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n var newColsPresent = colDefs && colDefs.length > 0;\n // if not cols passed, and we had no cols anyway, then do nothing\n if (!newColsPresent && missing(this.secondaryColumns)) {\n return;\n }\n if (newColsPresent) {\n this.processSecondaryColumnDefinitions(colDefs);\n var balancedTreeResult = this.columnFactory.createColumnTree(colDefs, false, this.secondaryBalancedTree || this.previousSecondaryColumns || undefined);\n this.secondaryBalancedTree = balancedTreeResult.columnTree;\n this.secondaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n this.secondaryColumns = this.getColumnsFromTree(this.secondaryBalancedTree);\n this.secondaryColumnsMap = {};\n this.secondaryColumns.forEach(function (col) { return _this.secondaryColumnsMap[col.getId()] = col; });\n this.previousSecondaryColumns = null;\n }\n else {\n this.previousSecondaryColumns = this.secondaryBalancedTree;\n this.secondaryBalancedTree = null;\n this.secondaryHeaderRowCount = -1;\n this.secondaryColumns = null;\n this.secondaryColumnsMap = {};\n }\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n };\n ColumnModel.prototype.processSecondaryColumnDefinitions = function (colDefs) {\n var columnCallback = this.gridOptionsWrapper.getProcessPivotResultColDefFunc();\n var groupCallback = this.gridOptionsWrapper.getProcessPivotResultColGroupDefFunc();\n if (!columnCallback && !groupCallback) {\n return undefined;\n }\n var searchForColDefs = function (colDefs2) {\n colDefs2.forEach(function (abstractColDef) {\n var isGroup = exists(abstractColDef.children);\n if (isGroup) {\n var colGroupDef = abstractColDef;\n if (groupCallback) {\n groupCallback(colGroupDef);\n }\n searchForColDefs(colGroupDef.children);\n }\n else {\n var colDef = abstractColDef;\n if (columnCallback) {\n columnCallback(colDef);\n }\n }\n });\n };\n if (colDefs) {\n searchForColDefs(colDefs);\n }\n };\n // called from: setColumnState, setColumnDefs, setSecondaryColumns\n ColumnModel.prototype.updateGridColumns = function () {\n var _this = this;\n var prevGridCols = this.gridBalancedTree;\n if (this.gridColsArePrimary) {\n this.lastPrimaryOrder = this.gridColumns;\n }\n else {\n this.lastSecondaryOrder = this.gridColumns;\n }\n var sortOrderToRecover = undefined;\n if (this.secondaryColumns && this.secondaryBalancedTree) {\n var hasSameColumns = this.secondaryColumns.every(function (col) {\n return _this.gridColumnsMap[col.getColId()] !== undefined;\n });\n this.gridBalancedTree = this.secondaryBalancedTree.slice();\n this.gridHeaderRowCount = this.secondaryHeaderRowCount;\n this.gridColumns = this.secondaryColumns.slice();\n this.gridColsArePrimary = false;\n // If the current columns are the same or a subset of the previous\n // we keep the previous order, otherwise we go back to the order the pivot\n // cols are generated in\n if (hasSameColumns) {\n sortOrderToRecover = this.lastSecondaryOrder;\n }\n }\n else if (this.primaryColumns) {\n this.gridBalancedTree = this.primaryColumnTree.slice();\n this.gridHeaderRowCount = this.primaryHeaderRowCount;\n this.gridColumns = this.primaryColumns.slice();\n this.gridColsArePrimary = true;\n // updateGridColumns gets called after user adds a row group. we want to maintain the order of the columns\n // when this happens (eg if user moved a column) rather than revert back to the original column order.\n // likewise if changing in/out of pivot mode, we want to maintain the order of the cols\n sortOrderToRecover = this.lastPrimaryOrder;\n }\n // create the new auto columns\n var areAutoColsChanged = this.createGroupAutoColumnsIfNeeded();\n // if auto group cols have changed, and we have a sort order, we need to move auto cols to the start\n if (areAutoColsChanged && sortOrderToRecover) {\n var groupAutoColsMap_1 = convertToMap(this.groupAutoColumns.map(function (col) { return [col, true]; }));\n // if group columns has changed, we don't preserve the group column order, so remove them from the old order\n sortOrderToRecover = sortOrderToRecover.filter(function (col) { return !groupAutoColsMap_1.has(col); });\n // and add them to the start of the order\n sortOrderToRecover = __spread$f(this.groupAutoColumns, sortOrderToRecover);\n }\n this.addAutoGroupToGridColumns();\n this.orderGridColsLike(sortOrderToRecover);\n this.gridColumns = this.placeLockedColumns(this.gridColumns);\n this.setupQuickFilterColumns();\n this.clearDisplayedAndViewportColumns();\n this.colSpanActive = this.checkColSpanActiveInCols(this.gridColumns);\n this.gridColumnsMap = {};\n this.gridColumns.forEach(function (col) { return _this.gridColumnsMap[col.getId()] = col; });\n this.setAutoHeightActive();\n if (!areEqual(prevGridCols, this.gridBalancedTree)) {\n var event_4 = {\n type: Events.EVENT_GRID_COLUMNS_CHANGED\n };\n this.eventService.dispatchEvent(event_4);\n }\n };\n ColumnModel.prototype.setAutoHeightActive = function () {\n this.autoHeightActive = this.gridColumns.filter(function (col) { return col.isAutoHeight(); }).length > 0;\n if (this.autoHeightActive) {\n this.autoHeightActiveAtLeastOnce = true;\n var rowModelType = this.rowModel.getType();\n var supportedRowModel = rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE || rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n if (!supportedRowModel) {\n var message_1 = 'AG Grid - autoHeight columns only work with Client Side Row Model and Server Side Row Model.';\n doOnce(function () { return console.warn(message_1); }, 'autoHeightActive.wrongRowModel');\n }\n }\n };\n ColumnModel.prototype.orderGridColsLike = function (colsOrder) {\n if (missing(colsOrder)) {\n return;\n }\n var lastOrderMapped = convertToMap(colsOrder.map(function (col, index) { return [col, index]; }));\n // only do the sort if at least one column is accounted for. columns will be not accounted for\n // if changing from secondary to primary columns\n var noColsFound = true;\n this.gridColumns.forEach(function (col) {\n if (lastOrderMapped.has(col)) {\n noColsFound = false;\n }\n });\n if (noColsFound) {\n return;\n }\n // order cols in the same order as before. we need to make sure that all\n // cols still exists, so filter out any that no longer exist.\n var gridColsMap = convertToMap(this.gridColumns.map(function (col) { return [col, true]; }));\n var oldColsOrdered = colsOrder.filter(function (col) { return gridColsMap.has(col); });\n var oldColsMap = convertToMap(oldColsOrdered.map(function (col) { return [col, true]; }));\n var newColsOrdered = this.gridColumns.filter(function (col) { return !oldColsMap.has(col); });\n // add in the new columns, at the end (if no group), or at the end of the group (if a group)\n var newGridColumns = oldColsOrdered.slice();\n newColsOrdered.forEach(function (newCol) {\n var parent = newCol.getOriginalParent();\n // if no parent, means we are not grouping, so just add the column to the end\n if (!parent) {\n newGridColumns.push(newCol);\n return;\n }\n // find the group the column belongs to. if no siblings at the current level (eg col in group on it's\n // own) then go up one level and look for siblings there.\n var siblings = [];\n while (!siblings.length && parent) {\n var leafCols = parent.getLeafColumns();\n leafCols.forEach(function (leafCol) {\n var presentInNewGriColumns = newGridColumns.indexOf(leafCol) >= 0;\n var noYetInSiblings = siblings.indexOf(leafCol) < 0;\n if (presentInNewGriColumns && noYetInSiblings) {\n siblings.push(leafCol);\n }\n });\n parent = parent.getOriginalParent();\n }\n // if no siblings exist at any level, this means the col is in a group (or parent groups) on it's own\n if (!siblings.length) {\n newGridColumns.push(newCol);\n return;\n }\n // find index of last column in the group\n var indexes = siblings.map(function (col) { return newGridColumns.indexOf(col); });\n var lastIndex = Math.max.apply(Math, __spread$f(indexes));\n insertIntoArray(newGridColumns, newCol, lastIndex + 1);\n });\n this.gridColumns = newGridColumns;\n };\n ColumnModel.prototype.isPrimaryColumnGroupsPresent = function () {\n return this.primaryHeaderRowCount > 1;\n };\n // if we are using autoGroupCols, then they should be included for quick filter. this covers the\n // following scenarios:\n // a) user provides 'field' into autoGroupCol of normal grid, so now because a valid col to filter leafs on\n // b) using tree data and user depends on autoGroupCol for first col, and we also want to filter on this\n // (tree data is a bit different, as parent rows can be filtered on, unlike row grouping)\n ColumnModel.prototype.setupQuickFilterColumns = function () {\n if (this.groupAutoColumns) {\n this.columnsForQuickFilter = (this.primaryColumns || []).concat(this.groupAutoColumns);\n }\n else if (this.primaryColumns) {\n this.columnsForQuickFilter = this.primaryColumns;\n }\n };\n ColumnModel.prototype.placeLockedColumns = function (cols) {\n var left = [];\n var normal = [];\n var right = [];\n cols.forEach(function (col) {\n var position = col.getColDef().lockPosition;\n if (position === 'right') {\n right.push(col);\n }\n else if (position === 'left' || position === true) {\n left.push(col);\n }\n else {\n normal.push(col);\n }\n });\n return __spread$f(left, normal, right);\n };\n ColumnModel.prototype.addAutoGroupToGridColumns = function () {\n if (missing(this.groupAutoColumns)) {\n return;\n }\n this.gridColumns = this.groupAutoColumns ? this.groupAutoColumns.concat(this.gridColumns) : this.gridColumns;\n var autoColBalancedTree = this.columnFactory.createForAutoGroups(this.groupAutoColumns, this.gridBalancedTree);\n this.gridBalancedTree = autoColBalancedTree.concat(this.gridBalancedTree);\n };\n // gets called after we copy down grid columns, to make sure any part of the gui\n // that tries to draw, eg the header, it will get empty lists of columns rather\n // than stale columns. for example, the header will received gridColumnsChanged\n // event, so will try and draw, but it will draw successfully when it acts on the\n // virtualColumnsChanged event\n ColumnModel.prototype.clearDisplayedAndViewportColumns = function () {\n this.viewportRowLeft = {};\n this.viewportRowRight = {};\n this.viewportRowCenter = {};\n this.displayedColumnsLeft = [];\n this.displayedColumnsRight = [];\n this.displayedColumnsCenter = [];\n this.displayedColumns = [];\n this.viewportColumns = [];\n this.headerViewportColumns = [];\n this.viewportColumnsHash = '';\n };\n ColumnModel.prototype.updateGroupsAndDisplayedColumns = function (source) {\n this.updateOpenClosedVisibilityInColumnGroups();\n this.deriveDisplayedColumns(source);\n this.refreshFlexedColumns();\n this.extractViewport();\n this.updateBodyWidths();\n // this event is picked up by the gui, headerRenderer and rowRenderer, to recalculate what columns to display\n var event = {\n type: Events.EVENT_DISPLAYED_COLUMNS_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.deriveDisplayedColumns = function (source) {\n this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeLeft, this.displayedColumnsLeft);\n this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeCentre, this.displayedColumnsCenter);\n this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeRight, this.displayedColumnsRight);\n this.joinDisplayedColumns();\n this.setLeftValues(source);\n this.displayedAutoHeightCols = this.displayedColumns.filter(function (col) { return col.isAutoHeight(); });\n };\n ColumnModel.prototype.isAutoRowHeightActive = function () {\n return this.autoHeightActive;\n };\n ColumnModel.prototype.wasAutoRowHeightEverActive = function () {\n return this.autoHeightActiveAtLeastOnce;\n };\n ColumnModel.prototype.joinDisplayedColumns = function () {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.displayedColumns = this.displayedColumnsRight\n .concat(this.displayedColumnsCenter)\n .concat(this.displayedColumnsLeft);\n }\n else {\n this.displayedColumns = this.displayedColumnsLeft\n .concat(this.displayedColumnsCenter)\n .concat(this.displayedColumnsRight);\n }\n };\n // sets the left pixel position of each column\n ColumnModel.prototype.setLeftValues = function (source) {\n this.setLeftValuesOfColumns(source);\n this.setLeftValuesOfGroups();\n };\n ColumnModel.prototype.setLeftValuesOfColumns = function (source) {\n var _this = this;\n if (!this.primaryColumns) {\n return;\n }\n // go through each list of displayed columns\n var allColumns = this.primaryColumns.slice(0);\n // let totalColumnWidth = this.getWidthOfColsInList()\n var doingRtl = this.gridOptionsWrapper.isEnableRtl();\n [\n this.displayedColumnsLeft,\n this.displayedColumnsRight,\n this.displayedColumnsCenter\n ].forEach(function (columns) {\n if (doingRtl) {\n // when doing RTL, we start at the top most pixel (ie RHS) and work backwards\n var left_1 = _this.getWidthOfColsInList(columns);\n columns.forEach(function (column) {\n left_1 -= column.getActualWidth();\n column.setLeft(left_1, source);\n });\n }\n else {\n // otherwise normal LTR, we start at zero\n var left_2 = 0;\n columns.forEach(function (column) {\n column.setLeft(left_2, source);\n left_2 += column.getActualWidth();\n });\n }\n removeAllFromArray(allColumns, columns);\n });\n // items left in allColumns are columns not displayed, so remove the left position. this is\n // important for the rows, as if a col is made visible, then taken out, then made visible again,\n // we don't want the animation of the cell floating in from the old position, whatever that was.\n allColumns.forEach(function (column) {\n column.setLeft(null, source);\n });\n };\n ColumnModel.prototype.setLeftValuesOfGroups = function () {\n // a groups left value is the lest left value of it's children\n [\n this.displayedTreeLeft,\n this.displayedTreeRight,\n this.displayedTreeCentre\n ].forEach(function (columns) {\n columns.forEach(function (column) {\n if (column instanceof ColumnGroup) {\n var columnGroup = column;\n columnGroup.checkLeft();\n }\n });\n });\n };\n ColumnModel.prototype.derivedDisplayedColumnsFromDisplayedTree = function (tree, columns) {\n columns.length = 0;\n this.columnUtils.depthFirstDisplayedColumnTreeSearch(tree, function (child) {\n if (child instanceof Column) {\n columns.push(child);\n }\n });\n };\n ColumnModel.prototype.extractViewportColumns = function () {\n if (this.suppressColumnVirtualisation) {\n // no virtualisation, so don't filter\n this.viewportColumnsCenter = this.displayedColumnsCenter;\n this.headerViewportColumnsCenter = this.displayedColumnsCenter;\n }\n else {\n // filter out what should be visible\n this.viewportColumnsCenter = this.displayedColumnsCenter.filter(this.isColumnInRowViewport.bind(this));\n this.headerViewportColumnsCenter = this.displayedColumnsCenter.filter(this.isColumnInHeaderViewport.bind(this));\n }\n this.viewportColumns = this.viewportColumnsCenter\n .concat(this.displayedColumnsLeft)\n .concat(this.displayedColumnsRight);\n this.headerViewportColumns = this.headerViewportColumnsCenter\n .concat(this.displayedColumnsLeft)\n .concat(this.displayedColumnsRight);\n };\n ColumnModel.prototype.getVirtualHeaderGroupRow = function (type, dept) {\n var result;\n switch (type) {\n case Constants.PINNED_LEFT:\n result = this.viewportRowLeft[dept];\n break;\n case Constants.PINNED_RIGHT:\n result = this.viewportRowRight[dept];\n break;\n default:\n result = this.viewportRowCenter[dept];\n break;\n }\n if (missing(result)) {\n result = [];\n }\n return result;\n };\n ColumnModel.prototype.calculateHeaderRows = function () {\n // go through each group, see if any of it's cols are displayed, and if yes,\n // then this group is included\n this.viewportRowLeft = {};\n this.viewportRowRight = {};\n this.viewportRowCenter = {};\n // for easy lookup when building the groups.\n var virtualColIds = {};\n this.headerViewportColumns.forEach(function (col) { return virtualColIds[col.getId()] = true; });\n var testGroup = function (children, result, dept) {\n var returnValue = false;\n for (var i = 0; i < children.length; i++) {\n // see if this item is within viewport\n var child = children[i];\n var addThisItem = false;\n if (child instanceof Column) {\n // for column, test if column is included\n addThisItem = virtualColIds[child.getId()] === true;\n }\n else {\n // if group, base decision on children\n var columnGroup = child;\n var displayedChildren = columnGroup.getDisplayedChildren();\n if (displayedChildren) {\n addThisItem = testGroup(displayedChildren, result, dept + 1);\n }\n }\n if (addThisItem) {\n returnValue = true;\n if (!result[dept]) {\n result[dept] = [];\n }\n result[dept].push(child);\n }\n }\n return returnValue;\n };\n testGroup(this.displayedTreeLeft, this.viewportRowLeft, 0);\n testGroup(this.displayedTreeRight, this.viewportRowRight, 0);\n testGroup(this.displayedTreeCentre, this.viewportRowCenter, 0);\n };\n ColumnModel.prototype.extractViewport = function () {\n var hashColumn = function (c) { return c.getId() + \"-\" + (c.getPinned() || 'normal'); };\n this.extractViewportColumns();\n var newHash = this.viewportColumns.map(hashColumn).join('#');\n var changed = this.viewportColumnsHash !== newHash;\n if (changed) {\n this.viewportColumnsHash = newHash;\n this.calculateHeaderRows();\n }\n return changed;\n };\n ColumnModel.prototype.refreshFlexedColumns = function (params) {\n var _this = this;\n if (params === void 0) { params = {}; }\n var source = params.source ? params.source : 'flex';\n if (params.viewportWidth != null) {\n this.flexViewportWidth = params.viewportWidth;\n }\n if (!this.flexViewportWidth) {\n return [];\n }\n // If the grid has left-over space, divide it between flexing columns in proportion to their flex value.\n // A \"flexing column\" is one that has a 'flex' value set and is not currently being constrained by its\n // minWidth or maxWidth rules.\n var flexAfterDisplayIndex = -1;\n if (params.resizingCols) {\n params.resizingCols.forEach(function (col) {\n var indexOfCol = _this.displayedColumnsCenter.indexOf(col);\n if (flexAfterDisplayIndex < indexOfCol) {\n flexAfterDisplayIndex = indexOfCol;\n }\n });\n }\n var isColFlex = function (col) {\n var afterResizingCols = _this.displayedColumnsCenter.indexOf(col) > flexAfterDisplayIndex;\n return col.getFlex() && afterResizingCols;\n };\n var knownWidthColumns = this.displayedColumnsCenter.filter(function (col) { return !isColFlex(col); });\n var flexingColumns = this.displayedColumnsCenter.filter(function (col) { return isColFlex(col); });\n var changedColumns = [];\n if (!flexingColumns.length) {\n return [];\n }\n var flexingColumnSizes = [];\n var spaceForFlexingColumns;\n outer: while (true) {\n var totalFlex = flexingColumns.reduce(function (count, col) { return count + col.getFlex(); }, 0);\n spaceForFlexingColumns = this.flexViewportWidth - this.getWidthOfColsInList(knownWidthColumns);\n for (var i = 0; i < flexingColumns.length; i++) {\n var col = flexingColumns[i];\n var widthByFlexRule = spaceForFlexingColumns * col.getFlex() / totalFlex;\n var constrainedWidth = 0;\n var minWidth = col.getMinWidth();\n var maxWidth = col.getMaxWidth();\n if (exists(minWidth) && widthByFlexRule < minWidth) {\n constrainedWidth = minWidth;\n }\n else if (exists(maxWidth) && widthByFlexRule > maxWidth) {\n constrainedWidth = maxWidth;\n }\n if (constrainedWidth) {\n // This column is not in fact flexing as it is being constrained to a specific size\n // so remove it from the list of flexing columns and start again\n col.setActualWidth(constrainedWidth, source);\n removeFromArray(flexingColumns, col);\n changedColumns.push(col);\n knownWidthColumns.push(col);\n continue outer;\n }\n flexingColumnSizes[i] = Math.round(widthByFlexRule);\n }\n break;\n }\n var remainingSpace = spaceForFlexingColumns;\n flexingColumns.forEach(function (col, i) {\n col.setActualWidth(Math.min(flexingColumnSizes[i], remainingSpace), source);\n changedColumns.push(col);\n remainingSpace -= flexingColumnSizes[i];\n });\n if (!params.skipSetLeft) {\n this.setLeftValues(source);\n }\n if (params.updateBodyWidths) {\n this.updateBodyWidths();\n }\n if (params.fireResizedEvent) {\n this.fireColumnResizedEvent(changedColumns, true, source, flexingColumns);\n }\n // if the user sets rowData directly into GridOptions, then the row data is set before\n // grid is attached to the DOM. this means the columns are not flexed, and then the rows\n // have the wrong height (as they depend on column widths). so once the columns have\n // been flexed for the first time (only happens once grid is attached to DOM, as dependency\n // on getting the grid width, which only happens after attached after ResizeObserver fires)\n // we get get rows to re-calc their heights.\n if (!this.flexColsCalculatedAtLestOnce) {\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.rowModel.resetRowHeights();\n }\n this.flexColsCalculatedAtLestOnce = true;\n }\n return flexingColumns;\n };\n // called from api\n ColumnModel.prototype.sizeColumnsToFit = function (gridWidth, source, silent, params) {\n if (source === void 0) { source = \"sizeColumnsToFit\"; }\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n var limitsMap = {};\n if (params) {\n (_b = (_a = params) === null || _a === void 0 ? void 0 : _a.columnLimits) === null || _b === void 0 ? void 0 : _b.forEach(function (_a) {\n var key = _a.key, dimensions = __rest(_a, [\"key\"]);\n limitsMap[typeof key === 'string' ? key : key.getColId()] = dimensions;\n });\n }\n // avoid divide by zero\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var doColumnsAlreadyFit = gridWidth === this.getWidthOfColsInList(allDisplayedColumns);\n if (gridWidth <= 0 || !allDisplayedColumns.length || doColumnsAlreadyFit) {\n return;\n }\n var colsToSpread = [];\n var colsToNotSpread = [];\n allDisplayedColumns.forEach(function (column) {\n if (column.getColDef().suppressSizeToFit === true) {\n colsToNotSpread.push(column);\n }\n else {\n colsToSpread.push(column);\n }\n });\n // make a copy of the cols that are going to be resized\n var colsToFireEventFor = colsToSpread.slice(0);\n var finishedResizing = false;\n var moveToNotSpread = function (column) {\n removeFromArray(colsToSpread, column);\n colsToNotSpread.push(column);\n };\n // resetting cols to their original width makes the sizeColumnsToFit more deterministic,\n // rather than depending on the current size of the columns. most users call sizeColumnsToFit\n // immediately after grid is created, so will make no difference. however if application is calling\n // sizeColumnsToFit repeatedly (eg after column group is opened / closed repeatedly) we don't want\n // the columns to start shrinking / growing over time.\n //\n // NOTE: the process below will assign values to `this.actualWidth` of each column without firing events\n // for this reason we need to manually fire resize events after the resize has been done for each column.\n colsToSpread.forEach(function (column) { return column.resetActualWidth(source); });\n while (!finishedResizing) {\n finishedResizing = true;\n var availablePixels = gridWidth - this.getWidthOfColsInList(colsToNotSpread);\n if (availablePixels <= 0) {\n // no width, set everything to minimum\n colsToSpread.forEach(function (column) {\n var _a, _b, _c, _d;\n var widthOverride = (_c = (_b = (_a = limitsMap) === null || _a === void 0 ? void 0 : _a[column.getId()]) === null || _b === void 0 ? void 0 : _b.minWidth, (_c !== null && _c !== void 0 ? _c : (_d = params) === null || _d === void 0 ? void 0 : _d.defaultMinWidth));\n if (typeof widthOverride === 'number') {\n column.setActualWidth(widthOverride);\n return;\n }\n column.setMinimum(source);\n });\n }\n else {\n var scale = availablePixels / this.getWidthOfColsInList(colsToSpread);\n // we set the pixels for the last col based on what's left, as otherwise\n // we could be a pixel or two short or extra because of rounding errors.\n var pixelsForLastCol = availablePixels;\n // backwards through loop, as we are removing items as we go\n for (var i = colsToSpread.length - 1; i >= 0; i--) {\n var column = colsToSpread[i];\n var widthOverride = (_c = limitsMap) === null || _c === void 0 ? void 0 : _c[column.getId()];\n var minOverride = (_e = (_d = widthOverride) === null || _d === void 0 ? void 0 : _d.minWidth, (_e !== null && _e !== void 0 ? _e : (_f = params) === null || _f === void 0 ? void 0 : _f.defaultMinWidth));\n var maxOverride = (_h = (_g = widthOverride) === null || _g === void 0 ? void 0 : _g.maxWidth, (_h !== null && _h !== void 0 ? _h : (_j = params) === null || _j === void 0 ? void 0 : _j.defaultMaxWidth));\n var colMinWidth = (_k = column.getMinWidth(), (_k !== null && _k !== void 0 ? _k : 0));\n var colMaxWidth = (_l = column.getMaxWidth(), (_l !== null && _l !== void 0 ? _l : Number.MAX_VALUE));\n var minWidth = typeof minOverride === 'number' && minOverride > colMinWidth ? minOverride : column.getMinWidth();\n var maxWidth = typeof maxOverride === 'number' && maxOverride < colMaxWidth ? maxOverride : column.getMaxWidth();\n var newWidth = Math.round(column.getActualWidth() * scale);\n if (exists(minWidth) && newWidth < minWidth) {\n newWidth = minWidth;\n moveToNotSpread(column);\n finishedResizing = false;\n }\n else if (exists(maxWidth) && newWidth > maxWidth) {\n newWidth = maxWidth;\n moveToNotSpread(column);\n finishedResizing = false;\n }\n else if (i === 0) { // if this is the last column\n newWidth = pixelsForLastCol;\n }\n column.setActualWidth(newWidth, source, true);\n pixelsForLastCol -= newWidth;\n }\n }\n }\n // see notes above\n colsToFireEventFor.forEach(function (col) {\n col.fireColumnWidthChangedEvent(source);\n });\n this.setLeftValues(source);\n this.updateBodyWidths();\n if (silent) {\n return;\n }\n this.fireColumnResizedEvent(colsToFireEventFor, true, source);\n };\n ColumnModel.prototype.buildDisplayedTrees = function (visibleColumns) {\n var leftVisibleColumns = [];\n var rightVisibleColumns = [];\n var centerVisibleColumns = [];\n visibleColumns.forEach(function (column) {\n switch (column.getPinned()) {\n case \"left\":\n leftVisibleColumns.push(column);\n break;\n case \"right\":\n rightVisibleColumns.push(column);\n break;\n default:\n centerVisibleColumns.push(column);\n break;\n }\n });\n var groupInstanceIdCreator = new GroupInstanceIdCreator();\n this.displayedTreeLeft = this.displayedGroupCreator.createDisplayedGroups(leftVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, Constants.PINNED_LEFT, this.displayedTreeLeft);\n this.displayedTreeRight = this.displayedGroupCreator.createDisplayedGroups(rightVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, Constants.PINNED_RIGHT, this.displayedTreeRight);\n this.displayedTreeCentre = this.displayedGroupCreator.createDisplayedGroups(centerVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, null, this.displayedTreeCentre);\n this.updateDisplayedMap();\n };\n ColumnModel.prototype.updateDisplayedMap = function () {\n var _this = this;\n this.displayedColumnsAndGroupsMap = {};\n var func = function (child) {\n _this.displayedColumnsAndGroupsMap[child.getUniqueId()] = child;\n };\n this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeCentre, func);\n this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeLeft, func);\n this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeRight, func);\n };\n ColumnModel.prototype.isDisplayed = function (item) {\n var fromMap = this.displayedColumnsAndGroupsMap[item.getUniqueId()];\n // check for reference, in case new column / group with same id is now present\n return fromMap === item;\n };\n ColumnModel.prototype.updateOpenClosedVisibilityInColumnGroups = function () {\n var allColumnGroups = this.getAllDisplayedTrees();\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n if (child instanceof ColumnGroup) {\n var columnGroup = child;\n columnGroup.calculateDisplayedColumns();\n }\n });\n };\n ColumnModel.prototype.getGroupAutoColumns = function () {\n return this.groupAutoColumns;\n };\n /**\n * Creates new auto group columns if required\n * @returns whether auto cols have changed\n */\n ColumnModel.prototype.createGroupAutoColumnsIfNeeded = function () {\n if (!this.autoGroupsNeedBuilding) {\n return false;\n }\n this.autoGroupsNeedBuilding = false;\n var groupFullWidthRow = this.gridOptionsWrapper.isGroupUseEntireRow(this.pivotMode);\n // we need to allow suppressing auto-column separately for group and pivot as the normal situation\n // is CSRM and user provides group column themselves for normal view, but when they go into pivot the\n // columns are generated by the grid so no opportunity for user to provide group column. so need a way\n // to suppress auto-col for grouping only, and not pivot.\n // however if using Viewport RM or SSRM and user is providing the columns, the user may wish full control\n // of the group column in this instance.\n var suppressAutoColumn = this.pivotMode ?\n this.gridOptionsWrapper.isPivotSuppressAutoColumn() : this.gridOptionsWrapper.isGroupSuppressAutoColumn();\n var groupingActive = this.rowGroupColumns.length > 0 || this.usingTreeData;\n var needAutoColumns = groupingActive && !suppressAutoColumn && !groupFullWidthRow;\n if (needAutoColumns) {\n var existingCols = this.groupAutoColumns || [];\n var newAutoGroupCols = this.autoGroupColService.createAutoGroupColumns(existingCols, this.rowGroupColumns);\n var autoColsDifferent = !this.autoColsEqual(newAutoGroupCols, this.groupAutoColumns);\n // we force recreate when suppressColumnStateEvents changes, so new group cols pick up the new\n // definitions. otherwise we could ignore the new cols because they appear to be the same.\n if (autoColsDifferent || this.forceRecreateAutoGroups) {\n this.groupAutoColumns = newAutoGroupCols;\n return true;\n }\n }\n else {\n this.groupAutoColumns = null;\n }\n return false;\n };\n ColumnModel.prototype.autoColsEqual = function (colsA, colsB) {\n return areEqual(colsA, colsB, function (a, b) { return a.getColId() === b.getColId(); });\n };\n ColumnModel.prototype.getWidthOfColsInList = function (columnList) {\n return columnList.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);\n };\n ColumnModel.prototype.getGridBalancedTree = function () {\n return this.gridBalancedTree;\n };\n ColumnModel.prototype.hasFloatingFilters = function () {\n if (!this.gridColumns) {\n return false;\n }\n var res = this.gridColumns.some(function (col) { return col.getColDef().floatingFilter; });\n return res;\n };\n ColumnModel.prototype.getFirstDisplayedColumn = function () {\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n var queryOrder = [\n 'getDisplayedLeftColumns',\n 'getDisplayedCenterColumns',\n 'getDisplayedRightColumns'\n ];\n if (isRtl) {\n queryOrder.reverse();\n }\n for (var i = 0; i < queryOrder.length; i++) {\n var container = this[queryOrder[i]]();\n if (container.length) {\n return isRtl ? last(container) : container[0];\n }\n }\n return null;\n };\n ColumnModel.prototype.setColumnHeaderHeight = function (col, height) {\n var changed = col.setAutoHeaderHeight(height);\n if (changed) {\n var event_5 = {\n type: Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED,\n column: col,\n columns: [col],\n source: 'autosizeColumnHeaderHeight',\n };\n this.eventService.dispatchEvent(event_5);\n }\n };\n ColumnModel.prototype.getColumnGroupHeaderRowHeight = function () {\n if (this.isPivotMode()) {\n return this.gridOptionsWrapper.getPivotGroupHeaderHeight();\n }\n else {\n return this.gridOptionsWrapper.getGroupHeaderHeight();\n }\n };\n ColumnModel.prototype.getColumnHeaderRowHeight = function () {\n var defaultHeight = (this.isPivotMode() ?\n this.gridOptionsWrapper.getPivotHeaderHeight() :\n this.gridOptionsWrapper.getHeaderHeight());\n var displayedHeights = this.getAllDisplayedColumns()\n .filter(function (col) { return col.isAutoHeaderHeight(); })\n .map(function (col) { return col.getAutoHeaderHeight() || 0; });\n return Math.max.apply(Math, __spread$f([defaultHeight], displayedHeights));\n };\n __decorate$2u([\n Autowired('expressionService')\n ], ColumnModel.prototype, \"expressionService\", void 0);\n __decorate$2u([\n Autowired('columnFactory')\n ], ColumnModel.prototype, \"columnFactory\", void 0);\n __decorate$2u([\n Autowired('displayedGroupCreator')\n ], ColumnModel.prototype, \"displayedGroupCreator\", void 0);\n __decorate$2u([\n Autowired('ctrlsService')\n ], ColumnModel.prototype, \"ctrlsService\", void 0);\n __decorate$2u([\n Autowired('autoWidthCalculator')\n ], ColumnModel.prototype, \"autoWidthCalculator\", void 0);\n __decorate$2u([\n Autowired('columnUtils')\n ], ColumnModel.prototype, \"columnUtils\", void 0);\n __decorate$2u([\n Autowired('columnAnimationService')\n ], ColumnModel.prototype, \"columnAnimationService\", void 0);\n __decorate$2u([\n Autowired('autoGroupColService')\n ], ColumnModel.prototype, \"autoGroupColService\", void 0);\n __decorate$2u([\n Optional('aggFuncService')\n ], ColumnModel.prototype, \"aggFuncService\", void 0);\n __decorate$2u([\n Optional('valueCache')\n ], ColumnModel.prototype, \"valueCache\", void 0);\n __decorate$2u([\n Optional('animationFrameService')\n ], ColumnModel.prototype, \"animationFrameService\", void 0);\n __decorate$2u([\n Autowired('rowModel')\n ], ColumnModel.prototype, \"rowModel\", void 0);\n __decorate$2u([\n Autowired('sortController')\n ], ColumnModel.prototype, \"sortController\", void 0);\n __decorate$2u([\n Autowired('columnDefFactory')\n ], ColumnModel.prototype, \"columnDefFactory\", void 0);\n __decorate$2u([\n PostConstruct\n ], ColumnModel.prototype, \"init\", null);\n __decorate$2u([\n __param$7(0, Qualifier('loggerFactory'))\n ], ColumnModel.prototype, \"setBeans\", null);\n ColumnModel = __decorate$2u([\n Bean('columnModel')\n ], ColumnModel);\n return ColumnModel;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2S = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar ColumnUtils = /** @class */ (function (_super) {\n __extends$2S(ColumnUtils, _super);\n function ColumnUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnUtils.prototype.calculateColMinWidth = function (colDef) {\n return colDef.minWidth != null ? colDef.minWidth : this.gridOptionsWrapper.getMinColWidth();\n };\n ColumnUtils.prototype.calculateColMaxWidth = function (colDef) {\n return colDef.maxWidth != null ? colDef.maxWidth : (this.gridOptionsWrapper.getMaxColWidth() || Number.MAX_SAFE_INTEGER);\n };\n ColumnUtils.prototype.calculateColInitialWidth = function (colDef) {\n var minColWidth = this.calculateColMinWidth(colDef);\n var maxColWidth = this.calculateColMaxWidth(colDef);\n var width;\n var colDefWidth = attrToNumber(colDef.width);\n var colDefInitialWidth = attrToNumber(colDef.initialWidth);\n if (colDefWidth != null) {\n width = colDefWidth;\n }\n else if (colDefInitialWidth != null) {\n width = colDefInitialWidth;\n }\n else {\n width = this.gridOptionsWrapper.getColWidth();\n }\n return Math.max(Math.min(width, maxColWidth), minColWidth);\n };\n ColumnUtils.prototype.getOriginalPathForColumn = function (column, originalBalancedTree) {\n var result = [];\n var found = false;\n var recursePath = function (balancedColumnTree, dept) {\n for (var i = 0; i < balancedColumnTree.length; i++) {\n if (found) {\n return;\n }\n // quit the search, so 'result' is kept with the found result\n var node = balancedColumnTree[i];\n if (node instanceof ProvidedColumnGroup) {\n var nextNode = node;\n recursePath(nextNode.getChildren(), dept + 1);\n result[dept] = node;\n }\n else if (node === column) {\n found = true;\n }\n }\n };\n recursePath(originalBalancedTree, 0);\n // we should always find the path, but in case there is a bug somewhere, returning null\n // will make it fail rather than provide a 'hard to track down' bug\n return found ? result : null;\n };\n ColumnUtils.prototype.depthFirstOriginalTreeSearch = function (parent, tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof ProvidedColumnGroup) {\n _this.depthFirstOriginalTreeSearch(child, child.getChildren(), callback);\n }\n callback(child, parent);\n });\n };\n ColumnUtils.prototype.depthFirstAllColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n _this.depthFirstAllColumnTreeSearch(child.getChildren(), callback);\n }\n callback(child);\n });\n };\n ColumnUtils.prototype.depthFirstDisplayedColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n _this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);\n }\n callback(child);\n });\n };\n ColumnUtils = __decorate$2t([\n Bean('columnUtils')\n ], ColumnUtils);\n return ColumnUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2R = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar DisplayedGroupCreator = /** @class */ (function (_super) {\n __extends$2R(DisplayedGroupCreator, _super);\n function DisplayedGroupCreator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DisplayedGroupCreator.prototype.createDisplayedGroups = function (\n // all displayed columns sorted - this is the columns the grid should show\n sortedVisibleColumns, \n // the tree of columns, as provided by the users, used to know what groups columns roll up into\n balancedColumnTree, \n // creates unique id's for the group\n groupInstanceIdCreator, \n // whether it's left, right or center col\n pinned, \n // we try to reuse old groups if we can, to allow gui to do animation\n oldDisplayedGroups) {\n var _this = this;\n var result = [];\n var previousRealPath;\n var previousOriginalPath;\n var oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);\n // go through each column, then do a bottom up comparison to the previous column, and start\n // to share groups if they converge at any point.\n sortedVisibleColumns.forEach(function (currentColumn) {\n var currentOriginalPath = _this.getOriginalPathForColumn(balancedColumnTree, currentColumn);\n var currentRealPath = [];\n var firstColumn = !previousOriginalPath;\n for (var i = 0; i < currentOriginalPath.length; i++) {\n if (firstColumn || currentOriginalPath[i] !== previousOriginalPath[i]) {\n // new group needed\n var newGroup = _this.createColumnGroup(currentOriginalPath[i], groupInstanceIdCreator, oldColumnsMapped, pinned);\n currentRealPath[i] = newGroup;\n // if top level, add to result, otherwise add to parent\n if (i == 0) {\n result.push(newGroup);\n }\n else {\n currentRealPath[i - 1].addChild(newGroup);\n }\n }\n else {\n // reuse old group\n currentRealPath[i] = previousRealPath[i];\n }\n }\n var noColumnGroups = currentRealPath.length === 0;\n if (noColumnGroups) {\n // if we are not grouping, then the result of the above is an empty\n // path (no groups), and we just add the column to the root list.\n result.push(currentColumn);\n }\n else {\n var leafGroup = last(currentRealPath);\n leafGroup.addChild(currentColumn);\n }\n previousRealPath = currentRealPath;\n previousOriginalPath = currentOriginalPath;\n });\n this.setupParentsIntoColumns(result, null);\n return result;\n };\n DisplayedGroupCreator.prototype.createColumnGroup = function (providedGroup, groupInstanceIdCreator, oldColumnsMapped, pinned) {\n var groupId = providedGroup.getGroupId();\n var instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);\n var uniqueId = ColumnGroup.createUniqueId(groupId, instanceId);\n var columnGroup = oldColumnsMapped[uniqueId];\n // if the user is setting new colDefs, it is possible that the id's overlap, and we\n // would have a false match from above. so we double check we are talking about the\n // same original column group.\n if (columnGroup && columnGroup.getProvidedColumnGroup() !== providedGroup) {\n columnGroup = null;\n }\n if (exists(columnGroup)) {\n // clean out the old column group here, as we will be adding children into it again\n columnGroup.reset();\n }\n else {\n columnGroup = new ColumnGroup(providedGroup, groupId, instanceId, pinned);\n this.context.createBean(columnGroup);\n }\n return columnGroup;\n };\n // returns back a 2d map of ColumnGroup as follows: groupId -> instanceId -> ColumnGroup\n DisplayedGroupCreator.prototype.mapOldGroupsById = function (displayedGroups) {\n var result = {};\n var recursive = function (columnsOrGroups) {\n columnsOrGroups.forEach(function (columnOrGroup) {\n if (columnOrGroup instanceof ColumnGroup) {\n var columnGroup = columnOrGroup;\n result[columnOrGroup.getUniqueId()] = columnGroup;\n recursive(columnGroup.getChildren());\n }\n });\n };\n if (displayedGroups) {\n recursive(displayedGroups);\n }\n return result;\n };\n DisplayedGroupCreator.prototype.setupParentsIntoColumns = function (columnsOrGroups, parent) {\n var _this = this;\n columnsOrGroups.forEach(function (columnsOrGroup) {\n columnsOrGroup.setParent(parent);\n if (columnsOrGroup instanceof ColumnGroup) {\n var columnGroup = columnsOrGroup;\n _this.setupParentsIntoColumns(columnGroup.getChildren(), columnGroup);\n }\n });\n };\n DisplayedGroupCreator.prototype.getOriginalPathForColumn = function (balancedColumnTree, column) {\n var result = [];\n var found = false;\n var recursePath = function (columnTree, dept) {\n for (var i = 0; i < columnTree.length; i++) {\n // quit the search, so 'result' is kept with the found result\n if (found) {\n return;\n }\n var node = columnTree[i];\n if (node instanceof ProvidedColumnGroup) {\n recursePath(node.getChildren(), dept + 1);\n result[dept] = node;\n }\n else if (node === column) {\n found = true;\n }\n }\n };\n recursePath(balancedColumnTree, 0);\n // it's possible we didn't find a path. this happens if the column is generated\n // by the grid (auto-group), in that the definition didn't come from the client. in this case,\n // we create a fake original path.\n if (found) {\n return result;\n }\n console.warn('AG Grid: could not get path');\n return null;\n };\n DisplayedGroupCreator = __decorate$2s([\n Bean('displayedGroupCreator')\n ], DisplayedGroupCreator);\n return DisplayedGroupCreator;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2Q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgStackComponentsRegistry = /** @class */ (function (_super) {\n __extends$2Q(AgStackComponentsRegistry, _super);\n function AgStackComponentsRegistry() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.componentsMappedByName = {};\n return _this;\n }\n AgStackComponentsRegistry.prototype.setupComponents = function (components) {\n var _this = this;\n if (components) {\n components.forEach(function (componentMeta) { return _this.addComponent(componentMeta); });\n }\n };\n AgStackComponentsRegistry.prototype.addComponent = function (componentMeta) {\n // get name of the class as a string\n // let className = getNameOfClass(ComponentClass);\n // insert a dash after every capital letter\n // let classEscaped = className.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n var classEscaped = componentMeta.componentName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n // put all to upper case\n var classUpperCase = classEscaped.toUpperCase();\n // finally store\n this.componentsMappedByName[classUpperCase] = componentMeta.componentClass;\n };\n AgStackComponentsRegistry.prototype.getComponentClass = function (htmlTag) {\n return this.componentsMappedByName[htmlTag];\n };\n AgStackComponentsRegistry = __decorate$2r([\n Bean('agStackComponentsRegistry')\n ], AgStackComponentsRegistry);\n return AgStackComponentsRegistry;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$k = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar Color = /** @class */ (function () {\n /**\n * Every color component should be in the [0, 1] range.\n * Some easing functions (such as elastic easing) can overshoot the target value by some amount.\n * So, when animating colors, if the source or target color components are already near\n * or at the edge of the allowed [0, 1] range, it is possible for the intermediate color\n * component value to end up outside of that range mid-animation. For this reason the constructor\n * performs range checking/constraining.\n * @param r Red component.\n * @param g Green component.\n * @param b Blue component.\n * @param a Alpha (opacity) component.\n */\n function Color(r, g, b, a) {\n if (a === void 0) { a = 1; }\n // NaN is treated as 0.\n this.r = Math.min(1, Math.max(0, r || 0));\n this.g = Math.min(1, Math.max(0, g || 0));\n this.b = Math.min(1, Math.max(0, b || 0));\n this.a = Math.min(1, Math.max(0, a || 0));\n }\n /**\n * The given string can be in one of the following formats:\n * - #rgb\n * - #rrggbb\n * - rgb(r, g, b)\n * - rgba(r, g, b, a)\n * - CSS color name such as 'white', 'orange', 'cyan', etc.\n * @param str\n */\n Color.fromString = function (str) {\n // hexadecimal notation\n if (str.indexOf('#') >= 0) { // there can be some leading whitespace\n return Color.fromHexString(str);\n }\n // color name\n var hex = Color.nameToHex[str];\n if (hex) {\n return Color.fromHexString(hex);\n }\n // rgb(a) notation\n if (str.indexOf('rgb') >= 0) {\n return Color.fromRgbaString(str);\n }\n throw new Error(\"Invalid color string: '\" + str + \"'\");\n };\n // See https://drafts.csswg.org/css-color/#hex-notation\n Color.parseHex = function (input) {\n input = input.replace(/ /g, '').slice(1);\n var parts;\n switch (input.length) {\n case 6:\n case 8:\n parts = [];\n for (var i = 0; i < input.length; i += 2) {\n parts.push(parseInt(\"\" + input[i] + input[i + 1], 16));\n }\n break;\n case 3:\n case 4:\n parts = input.split('').map(function (p) { return parseInt(p, 16); }).map(function (p) { return p + p * 16; });\n break;\n }\n if (parts.length >= 3) {\n if (parts.every(function (p) { return p >= 0; })) {\n if (parts.length === 3) {\n parts.push(255);\n }\n return parts;\n }\n }\n };\n Color.fromHexString = function (str) {\n var values = Color.parseHex(str);\n if (values) {\n var _a = __read$k(values, 4), r = _a[0], g = _a[1], b = _a[2], a = _a[3];\n return new Color(r / 255, g / 255, b / 255, a / 255);\n }\n throw new Error(\"Malformed hexadecimal color string: '\" + str + \"'\");\n };\n Color.stringToRgba = function (str) {\n // Find positions of opening and closing parentheses.\n var _a = __read$k([NaN, NaN], 2), po = _a[0], pc = _a[1];\n for (var i = 0; i < str.length; i++) {\n var c = str[i];\n if (!po && c === '(') {\n po = i;\n }\n else if (c === ')') {\n pc = i;\n break;\n }\n }\n var contents = po && pc && str.substring(po + 1, pc);\n if (!contents) {\n return;\n }\n var parts = contents.split(',');\n var rgba = [];\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n var value = parseFloat(part);\n if (isNaN(value)) {\n return;\n }\n if (part.indexOf('%') >= 0) { // percentage r, g, or b value\n value = Math.max(0, Math.min(100, value));\n value /= 100;\n }\n else {\n if (i === 3) { // alpha component\n value = Math.max(0, Math.min(1, value));\n }\n else { // absolute r, g, or b value\n value = Math.max(0, Math.min(255, value));\n value /= 255;\n }\n }\n rgba.push(value);\n }\n return rgba;\n };\n Color.fromRgbaString = function (str) {\n var rgba = Color.stringToRgba(str);\n if (rgba) {\n if (rgba.length === 3) {\n return new Color(rgba[0], rgba[1], rgba[2]);\n }\n else if (rgba.length === 4) {\n return new Color(rgba[0], rgba[1], rgba[2], rgba[3]);\n }\n }\n throw new Error(\"Malformed rgb/rgba color string: '\" + str + \"'\");\n };\n Color.fromArray = function (arr) {\n if (arr.length === 4) {\n return new Color(arr[0], arr[1], arr[2], arr[3]);\n }\n if (arr.length === 3) {\n return new Color(arr[0], arr[1], arr[2]);\n }\n throw new Error('The given array should contain 3 or 4 color components (numbers).');\n };\n Color.fromHSB = function (h, s, b, alpha) {\n if (alpha === void 0) { alpha = 1; }\n var rgb = Color.HSBtoRGB(h, s, b);\n return new Color(rgb[0], rgb[1], rgb[2], alpha);\n };\n Color.padHex = function (str) {\n // Can't use `padStart(2, '0')` here because of IE.\n return str.length === 1 ? '0' + str : str;\n };\n Color.prototype.toHexString = function () {\n var hex = '#'\n + Color.padHex(Math.round(this.r * 255).toString(16))\n + Color.padHex(Math.round(this.g * 255).toString(16))\n + Color.padHex(Math.round(this.b * 255).toString(16));\n if (this.a < 1) {\n hex += Color.padHex(Math.round(this.a * 255).toString(16));\n }\n return hex;\n };\n Color.prototype.toRgbaString = function (fractionDigits) {\n if (fractionDigits === void 0) { fractionDigits = 3; }\n var components = [\n Math.round(this.r * 255),\n Math.round(this.g * 255),\n Math.round(this.b * 255)\n ];\n var k = Math.pow(10, fractionDigits);\n if (this.a !== 1) {\n components.push(Math.round(this.a * k) / k);\n return \"rgba(\" + components.join(', ') + \")\";\n }\n return \"rgb(\" + components.join(', ') + \")\";\n };\n Color.prototype.toString = function () {\n if (this.a === 1) {\n return this.toHexString();\n }\n return this.toRgbaString();\n };\n Color.prototype.toHSB = function () {\n return Color.RGBtoHSB(this.r, this.g, this.b);\n };\n /**\n * Converts the given RGB triple to an array of HSB (HSV) components.\n * The hue component will be `NaN` for achromatic colors.\n */\n Color.RGBtoHSB = function (r, g, b) {\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var S = max !== 0 ? (max - min) / max : 0;\n var H = NaN;\n // min == max, means all components are the same\n // and the color is a shade of gray with no hue (H is NaN)\n if (min !== max) {\n var delta = max - min;\n var rc = (max - r) / delta;\n var gc = (max - g) / delta;\n var bc = (max - b) / delta;\n if (r === max) {\n H = bc - gc;\n }\n else if (g === max) {\n H = 2.0 + rc - bc;\n }\n else {\n H = 4.0 + gc - rc;\n }\n H /= 6.0;\n if (H < 0) {\n H = H + 1.0;\n }\n }\n return [H * 360, S, max];\n };\n /**\n * Converts the given HSB (HSV) triple to an array of RGB components.\n */\n Color.HSBtoRGB = function (H, S, B) {\n if (isNaN(H)) {\n H = 0;\n }\n H = (((H % 360) + 360) % 360) / 360; // normalize hue to [0, 360] interval, then scale to [0, 1]\n var r = 0;\n var g = 0;\n var b = 0;\n if (S === 0) {\n r = g = b = B;\n }\n else {\n var h = (H - Math.floor(H)) * 6;\n var f = h - Math.floor(h);\n var p = B * (1 - S);\n var q = B * (1 - S * f);\n var t = B * (1 - (S * (1 - f)));\n switch (h >> 0) { // discard the floating point part of the number\n case 0:\n r = B;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = B;\n b = p;\n break;\n case 2:\n r = p;\n g = B;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = B;\n break;\n case 4:\n r = t;\n g = p;\n b = B;\n break;\n case 5:\n r = B;\n g = p;\n b = q;\n break;\n }\n }\n return [r, g, b];\n };\n Color.prototype.derive = function (hueShift, saturationFactor, brightnessFactor, opacityFactor) {\n var hsb = Color.RGBtoHSB(this.r, this.g, this.b);\n var b = hsb[2];\n if (b == 0 && brightnessFactor > 1.0) {\n b = 0.05;\n }\n var h = (((hsb[0] + hueShift) % 360) + 360) % 360;\n var s = Math.max(Math.min(hsb[1] * saturationFactor, 1.0), 0.0);\n b = Math.max(Math.min(b * brightnessFactor, 1.0), 0.0);\n var a = Math.max(Math.min(this.a * opacityFactor, 1.0), 0.0);\n var rgba = Color.HSBtoRGB(h, s, b);\n rgba.push(a);\n return Color.fromArray(rgba);\n };\n Color.prototype.brighter = function () {\n return this.derive(0, 1.0, 1.0 / 0.7, 1.0);\n };\n Color.prototype.darker = function () {\n return this.derive(0, 1.0, 0.7, 1.0);\n };\n /**\n * CSS Color Module Level 4:\n * https://drafts.csswg.org/css-color/#named-colors\n */\n Color.nameToHex = Object.freeze({\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgreen: '#006400',\n darkgrey: '#A9A9A9',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n grey: '#808080',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgreen: '#90EE90',\n lightgrey: '#D3D3D3',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32'\n });\n return Color;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n// Based on https://stackoverflow.com/a/14991797\n// This will parse a delimited string into an array of arrays.\nfunction stringToArray(strData, delimiter) {\n if (delimiter === void 0) { delimiter = ','; }\n var data = [];\n var isNewline = function (char) { return char === '\\r' || char === '\\n'; };\n var insideQuotedField = false;\n if (strData === '') {\n return [['']];\n }\n var _loop_1 = function (row, column, position) {\n var previousChar = strData[position - 1];\n var currentChar = strData[position];\n var nextChar = strData[position + 1];\n var ensureDataExists = function () {\n if (!data[row]) {\n // create row if it doesn't exist\n data[row] = [];\n }\n if (!data[row][column]) {\n // create column if it doesn't exist\n data[row][column] = '';\n }\n };\n ensureDataExists();\n if (currentChar === '\"') {\n if (insideQuotedField) {\n if (nextChar === '\"') {\n // unescape double quote\n data[row][column] += '\"';\n position++;\n }\n else {\n // exit quoted field\n insideQuotedField = false;\n }\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n else if (previousChar === undefined || previousChar === delimiter || isNewline(previousChar)) {\n // enter quoted field\n insideQuotedField = true;\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n }\n if (!insideQuotedField) {\n if (currentChar === delimiter) {\n // move to next column\n column++;\n ensureDataExists();\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n else if (isNewline(currentChar)) {\n // move to next row\n column = 0;\n row++;\n ensureDataExists();\n if (currentChar === '\\r' && nextChar === '\\n') {\n // skip over second newline character if it exists\n position++;\n }\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n }\n // add current character to current column\n data[row][column] += currentChar;\n out_row_1 = row;\n out_column_1 = column;\n out_position_1 = position;\n };\n var out_row_1, out_column_1, out_position_1;\n // iterate over each character, keep track of current row and column (of the returned array)\n for (var row = 0, column = 0, position = 0; position < strData.length; position++) {\n _loop_1(row, column, position);\n row = out_row_1;\n column = out_column_1;\n position = out_position_1;\n }\n return data;\n}\n\nvar CsvUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n stringToArray: stringToArray\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar rtlNegativeScroll;\n/**\n * This method adds a class to an element and remove that class from all siblings.\n * Useful for toggling state.\n * @param {HTMLElement} element The element to receive the class\n * @param {string} elementClass The class to be assigned to the element\n * @param {boolean} otherElementClass The class to be assigned to siblings of the element, but not the element itself\n */\nfunction radioCssClass(element, elementClass, otherElementClass) {\n var parent = element.parentElement;\n var sibling = parent && parent.firstChild;\n while (sibling) {\n if (elementClass) {\n sibling.classList.toggle(elementClass, sibling === element);\n }\n if (otherElementClass) {\n sibling.classList.toggle(otherElementClass, sibling !== element);\n }\n sibling = sibling.nextSibling;\n }\n}\nfunction isFocusableFormField(element) {\n var matches = Element.prototype.matches || Element.prototype.msMatchesSelector;\n var isFocusable = matches.call(element, Constants.INPUT_SELECTOR);\n var isNotFocusable = matches.call(element, Constants.FOCUSABLE_EXCLUDE);\n var isElementVisible = isVisible(element);\n var focusable = isFocusable && !isNotFocusable && isElementVisible;\n return focusable;\n}\nfunction setDisplayed(element, displayed) {\n element.classList.toggle('ag-hidden', !displayed);\n}\nfunction setVisible(element, visible) {\n element.classList.toggle('ag-invisible', !visible);\n}\nfunction setDisabled(element, disabled) {\n var attributeName = 'disabled';\n var addOrRemoveDisabledAttribute = disabled ?\n function (e) { return e.setAttribute(attributeName, ''); } :\n function (e) { return e.removeAttribute(attributeName); };\n addOrRemoveDisabledAttribute(element);\n nodeListForEach(element.querySelectorAll('input'), function (input) { return addOrRemoveDisabledAttribute(input); });\n}\nfunction isElementChildOfClass(element, cls, maxNest) {\n var counter = 0;\n while (element) {\n if (element.classList.contains(cls)) {\n return true;\n }\n element = element.parentElement;\n if (typeof maxNest == 'number') {\n if (++counter > maxNest) {\n break;\n }\n }\n else if (element === maxNest) {\n break;\n }\n }\n return false;\n}\n// returns back sizes as doubles instead of strings. similar to\n// getBoundingClientRect, however getBoundingClientRect does not:\n// a) work with fractions (eg browser is zooming)\n// b) has CSS transitions applied (eg CSS scale, browser zoom), which we don't want, we want the un-transitioned values\nfunction getElementSize(el) {\n var _a = window.getComputedStyle(el), height = _a.height, width = _a.width, paddingTop = _a.paddingTop, paddingRight = _a.paddingRight, paddingBottom = _a.paddingBottom, paddingLeft = _a.paddingLeft, marginTop = _a.marginTop, marginRight = _a.marginRight, marginBottom = _a.marginBottom, marginLeft = _a.marginLeft, boxSizing = _a.boxSizing;\n return {\n height: parseFloat(height),\n width: parseFloat(width),\n paddingTop: parseFloat(paddingTop),\n paddingRight: parseFloat(paddingRight),\n paddingBottom: parseFloat(paddingBottom),\n paddingLeft: parseFloat(paddingLeft),\n marginTop: parseFloat(marginTop),\n marginRight: parseFloat(marginRight),\n marginBottom: parseFloat(marginBottom),\n marginLeft: parseFloat(marginLeft),\n boxSizing: boxSizing\n };\n}\nfunction getInnerHeight(el) {\n var size = getElementSize(el);\n if (size.boxSizing === 'border-box') {\n return size.height - size.paddingTop - size.paddingBottom;\n }\n return size.height;\n}\nfunction getInnerWidth(el) {\n var size = getElementSize(el);\n if (size.boxSizing === 'border-box') {\n return size.width - size.paddingLeft - size.paddingRight;\n }\n return size.width;\n}\nfunction getAbsoluteHeight(el) {\n var size = getElementSize(el);\n var marginRight = size.marginBottom + size.marginTop;\n return Math.ceil(el.offsetHeight + marginRight);\n}\nfunction getAbsoluteWidth(el) {\n var size = getElementSize(el);\n var marginWidth = size.marginLeft + size.marginRight;\n return Math.ceil(el.offsetWidth + marginWidth);\n}\nfunction isRtlNegativeScroll() {\n if (typeof rtlNegativeScroll === \"boolean\") {\n return rtlNegativeScroll;\n }\n var template = document.createElement('div');\n template.style.direction = 'rtl';\n template.style.width = '1px';\n template.style.height = '1px';\n template.style.position = 'fixed';\n template.style.top = '0px';\n template.style.overflow = 'hidden';\n template.dir = 'rtl';\n template.innerHTML = /* html */\n \"
\\n \\n \\n
\";\n document.body.appendChild(template);\n template.scrollLeft = 1;\n rtlNegativeScroll = Math.floor(template.scrollLeft) === 0;\n document.body.removeChild(template);\n return rtlNegativeScroll;\n}\nfunction getScrollLeft(element, rtl) {\n var scrollLeft = element.scrollLeft;\n if (rtl) {\n // Absolute value - for FF that reports RTL scrolls in negative numbers\n scrollLeft = Math.abs(scrollLeft);\n if (isBrowserChrome() && !isRtlNegativeScroll()) {\n scrollLeft = element.scrollWidth - element.clientWidth - scrollLeft;\n }\n }\n return scrollLeft;\n}\nfunction setScrollLeft(element, value, rtl) {\n if (rtl) {\n // Chrome and Safari when doing RTL have the END position of the scroll as zero, not the start\n if (isRtlNegativeScroll()) {\n value *= -1;\n }\n else if (isBrowserSafari() || isBrowserChrome()) {\n value = element.scrollWidth - element.clientWidth - value;\n }\n }\n element.scrollLeft = value;\n}\nfunction clearElement(el) {\n while (el && el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\n/** @deprecated */\nfunction removeElement(parent, cssSelector) {\n removeFromParent(parent.querySelector(cssSelector));\n}\nfunction removeFromParent(node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nfunction isVisible(element) {\n return element.offsetParent !== null;\n}\n/**\n * Loads the template and returns it as an element. makes up for no simple way in\n * the dom api to load html directly, eg we cannot do this: document.createElement(template)\n * @param {string} template\n * @returns {HTMLElement}\n */\nfunction loadTemplate(template) {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = (template || '').trim();\n return tempDiv.firstChild;\n}\nfunction appendHtml(eContainer, htmlTemplate) {\n if (eContainer.lastChild) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML\n // we put the items at the start, so new items appear underneath old items,\n // so when expanding/collapsing groups, the new rows don't go on top of the\n // rows below that are moving our of the way\n eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n }\n else {\n eContainer.innerHTML = htmlTemplate;\n }\n}\n/** @deprecated */\nfunction getElementAttribute(element, attributeName) {\n if (element.attributes && element.attributes[attributeName]) {\n var attribute = element.attributes[attributeName];\n return attribute.value;\n }\n return null;\n}\nfunction offsetHeight(element) {\n return element && element.clientHeight ? element.clientHeight : 0;\n}\nfunction offsetWidth(element) {\n return element && element.clientWidth ? element.clientWidth : 0;\n}\nfunction ensureDomOrder(eContainer, eChild, eChildBefore) {\n // if already in right order, do nothing\n if (eChildBefore && eChildBefore.nextSibling === eChild) {\n return;\n }\n var focusedEl = document.activeElement;\n var eChildHasFocus = eChild.contains(focusedEl);\n if (eChildBefore) {\n if (eChildBefore.nextSibling) {\n // insert between the eRowBefore and the row after it\n eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n }\n else {\n // if nextSibling is missing, means other row is at end, so just append new row at the end\n eContainer.appendChild(eChild);\n }\n }\n else {\n // otherwise put at start\n if (eContainer.firstChild && eContainer.firstChild !== eChild) {\n // insert it at the first location\n eContainer.insertAdjacentElement('afterbegin', eChild);\n }\n }\n if (eChildHasFocus && focusedEl && browserSupportsPreventScroll()) {\n focusedEl.focus({ preventScroll: true });\n }\n}\nfunction setDomChildOrder(eContainer, orderedChildren) {\n for (var i = 0; i < orderedChildren.length; i++) {\n var correctCellAtIndex = orderedChildren[i];\n var actualCellAtIndex = eContainer.children[i];\n if (actualCellAtIndex !== correctCellAtIndex) {\n eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex);\n }\n }\n}\nfunction insertWithDomOrder(eContainer, eToInsert, eChildBefore) {\n if (eChildBefore) {\n // if previous element exists, just slot in after the previous element\n eChildBefore.insertAdjacentElement('afterend', eToInsert);\n }\n else {\n if (eContainer.firstChild) {\n // insert it at the first location\n eContainer.insertAdjacentElement('afterbegin', eToInsert);\n }\n else {\n // otherwise eContainer is empty, so just append it\n eContainer.appendChild(eToInsert);\n }\n }\n}\n/** @deprecated */\nfunction prependDC(parent, documentFragment) {\n if (exists(parent.firstChild)) {\n parent.insertBefore(documentFragment, parent.firstChild);\n }\n else {\n parent.appendChild(documentFragment);\n }\n}\nfunction addStylesToElement(eElement, styles) {\n if (!styles) {\n return;\n }\n Object.keys(styles).forEach(function (key) {\n var keyCamelCase = hyphenToCamelCase(key);\n if (keyCamelCase) {\n eElement.style[keyCamelCase] = styles[key];\n }\n });\n}\nfunction isHorizontalScrollShowing(element) {\n return element.clientWidth < element.scrollWidth;\n}\nfunction isVerticalScrollShowing(element) {\n return element.clientHeight < element.scrollHeight;\n}\nfunction setElementWidth(element, width) {\n if (width === 'flex') {\n element.style.removeProperty('width');\n element.style.removeProperty('minWidth');\n element.style.removeProperty('maxWidth');\n element.style.flex = '1 1 auto';\n }\n else {\n setFixedWidth(element, width);\n }\n}\nfunction setFixedWidth(element, width) {\n width = formatSize(width);\n element.style.width = width.toString();\n element.style.maxWidth = width.toString();\n element.style.minWidth = width.toString();\n}\nfunction setElementHeight(element, height) {\n if (height === 'flex') {\n element.style.removeProperty('height');\n element.style.removeProperty('minHeight');\n element.style.removeProperty('maxHeight');\n element.style.flex = '1 1 auto';\n }\n else {\n setFixedHeight(element, height);\n }\n}\nfunction setFixedHeight(element, height) {\n height = formatSize(height);\n element.style.height = height.toString();\n element.style.maxHeight = height.toString();\n element.style.minHeight = height.toString();\n}\nfunction formatSize(size) {\n if (typeof size === 'number') {\n return size + \"px\";\n }\n return size;\n}\n/**\n * Returns true if it is a DOM node\n * taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n * @param {any} o\n * @return {boolean}\n */\nfunction isNode(o) {\n return (typeof Node === 'function'\n ? o instanceof Node\n : o && typeof o === 'object' && typeof o.nodeType === 'number' && typeof o.nodeName === 'string');\n}\n//\n/**\n * Returns true if it is a DOM element\n * taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n * @param {any} o\n * @returns {boolean}\n */\nfunction isElement(o) {\n return (typeof HTMLElement === 'function'\n ? o instanceof HTMLElement //DOM2\n : o && isNonNullObject(o) && o.nodeType === 1 && typeof o.nodeName === 'string');\n}\nfunction isNodeOrElement(o) {\n return isNode(o) || isElement(o);\n}\n/**\n * Makes a copy of a node list into a list\n * @param {NodeList} nodeList\n * @returns {Node[]}\n */\nfunction copyNodeList(nodeList) {\n if (nodeList == null) {\n return [];\n }\n var result = [];\n nodeListForEach(nodeList, function (node) { return result.push(node); });\n return result;\n}\nfunction iterateNamedNodeMap(map, callback) {\n if (!map) {\n return;\n }\n for (var i = 0; i < map.length; i++) {\n var attr = map[i];\n callback(attr.name, attr.value);\n }\n}\n/** @deprecated */\nfunction setCheckboxState(eCheckbox, state) {\n if (typeof state === 'boolean') {\n eCheckbox.checked = state;\n eCheckbox.indeterminate = false;\n }\n else {\n // isNodeSelected returns back undefined if it's a group and the children\n // are a mix of selected and unselected\n eCheckbox.indeterminate = true;\n }\n}\nfunction addOrRemoveAttribute(element, name, value) {\n if (value == null) {\n element.removeAttribute(name);\n }\n else {\n element.setAttribute(name, value.toString());\n }\n}\nfunction nodeListForEach(nodeList, action) {\n if (nodeList == null) {\n return;\n }\n for (var i = 0; i < nodeList.length; i++) {\n action(nodeList[i]);\n }\n}\n\nvar DomUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n radioCssClass: radioCssClass,\n isFocusableFormField: isFocusableFormField,\n setDisplayed: setDisplayed,\n setVisible: setVisible,\n setDisabled: setDisabled,\n isElementChildOfClass: isElementChildOfClass,\n getElementSize: getElementSize,\n getInnerHeight: getInnerHeight,\n getInnerWidth: getInnerWidth,\n getAbsoluteHeight: getAbsoluteHeight,\n getAbsoluteWidth: getAbsoluteWidth,\n isRtlNegativeScroll: isRtlNegativeScroll,\n getScrollLeft: getScrollLeft,\n setScrollLeft: setScrollLeft,\n clearElement: clearElement,\n removeElement: removeElement,\n removeFromParent: removeFromParent,\n isVisible: isVisible,\n loadTemplate: loadTemplate,\n appendHtml: appendHtml,\n getElementAttribute: getElementAttribute,\n offsetHeight: offsetHeight,\n offsetWidth: offsetWidth,\n ensureDomOrder: ensureDomOrder,\n setDomChildOrder: setDomChildOrder,\n insertWithDomOrder: insertWithDomOrder,\n prependDC: prependDC,\n addStylesToElement: addStylesToElement,\n isHorizontalScrollShowing: isHorizontalScrollShowing,\n isVerticalScrollShowing: isVerticalScrollShowing,\n setElementWidth: setElementWidth,\n setFixedWidth: setFixedWidth,\n setElementHeight: setElementHeight,\n setFixedHeight: setFixedHeight,\n formatSize: formatSize,\n isNode: isNode,\n isElement: isElement,\n isNodeOrElement: isNodeOrElement,\n copyNodeList: copyNodeList,\n iterateNamedNodeMap: iterateNamedNodeMap,\n setCheckboxState: setCheckboxState,\n addOrRemoveAttribute: addOrRemoveAttribute,\n nodeListForEach: nodeListForEach\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/** @deprecated */\nfunction getNameOfClass(theClass) {\n var funcNameRegex = /function (.{1,})\\(/;\n var funcAsString = theClass.toString();\n var results = funcNameRegex.exec(funcAsString);\n return results && results.length > 1 ? results[1] : \"\";\n}\nfunction findLineByLeastSquares(values) {\n var len = values.length;\n var maxDecimals = 0;\n if (len <= 1) {\n return values;\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var splitExponent = value.toString().split('e-');\n if (splitExponent.length > 1) {\n maxDecimals = Math.max(maxDecimals, parseInt(splitExponent[1], 10));\n continue;\n }\n if (Math.floor(value) === value) {\n continue;\n }\n maxDecimals = Math.max(maxDecimals, value.toString().split('.')[1].length);\n }\n var sum_x = 0;\n var sum_y = 0;\n var sum_xy = 0;\n var sum_xx = 0;\n var y = 0;\n for (var x = 0; x < len; x++) {\n y = values[x];\n sum_x += x;\n sum_y += y;\n sum_xx += x * x;\n sum_xy += x * y;\n }\n var m = (len * sum_xy - sum_x * sum_y) / (len * sum_xx - sum_x * sum_x);\n var b = (sum_y / len) - (m * sum_x) / len;\n var result = [];\n for (var x = 0; x <= len; x++) {\n result.push(parseFloat((x * m + b).toFixed(maxDecimals)));\n }\n return result;\n}\n/**\n * Converts a CSS object into string\n * @param {Object} stylesToUse an object eg: {color: 'black', top: '25px'}\n * @return {string} A string like \"color: black; top: 25px;\" for html\n */\nfunction cssStyleObjectToMarkup(stylesToUse) {\n if (!stylesToUse) {\n return '';\n }\n var resParts = [];\n iterateObject(stylesToUse, function (styleKey, styleValue) {\n var styleKeyDashed = camelCaseToHyphen(styleKey);\n resParts.push(styleKeyDashed + \": \" + styleValue + \";\");\n });\n return resParts.join(' ');\n}\n/**\n * Displays a message to the browser. this is useful in iPad, where you can't easily see the console.\n * so the javascript code can use this to give feedback. this is NOT intended to be called in production.\n * it is intended the AG Grid developer calls this to troubleshoot, but then takes out the calls before\n * checking in.\n * @param {string} msg\n */\nfunction message(msg) {\n var eMessage = document.createElement('div');\n var eBox = document.querySelector('#__ag__message');\n eMessage.innerHTML = msg;\n if (!eBox) {\n var template = \"
\";\n eBox = loadTemplate(template);\n if (document.body) {\n document.body.appendChild(eBox);\n }\n }\n eBox.insertBefore(eMessage, eBox.children[0]);\n}\n/**\n * cell renderers are used in a few places. they bind to dom slightly differently to other cell renderes as they\n * can return back strings (instead of html elemnt) in the getGui() method. common code placed here to handle that.\n * @param {AgPromise} cellRendererPromise\n * @param {HTMLElement} eTarget\n */\nfunction bindCellRendererToHtmlElement(cellRendererPromise, eTarget) {\n cellRendererPromise.then(function (cellRenderer) {\n var gui = cellRenderer.getGui();\n if (gui != null) {\n if (typeof gui === 'object') {\n eTarget.appendChild(gui);\n }\n else {\n eTarget.innerHTML = gui;\n }\n }\n });\n}\n\nvar GeneralUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n getNameOfClass: getNameOfClass,\n findLineByLeastSquares: findLineByLeastSquares,\n cssStyleObjectToMarkup: cssStyleObjectToMarkup,\n message: message,\n bindCellRendererToHtmlElement: bindCellRendererToHtmlElement\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n// ARIA HELPER FUNCTIONS\nfunction setAriaAttribute(element, attribute, value) {\n element.setAttribute(ariaAttributeName(attribute), value.toString());\n}\nfunction removeAriaAttribute(element, attribute) {\n element.removeAttribute(ariaAttributeName(attribute));\n}\nfunction ariaAttributeName(attribute) {\n return \"aria-\" + attribute;\n}\nfunction setAriaRole(element, role) {\n if (role) {\n element.setAttribute('role', role);\n }\n else {\n element.removeAttribute('role');\n }\n}\nfunction getAriaSortState(column) {\n var sort;\n if (column.isSortAscending()) {\n sort = 'ascending';\n }\n else if (column.isSortDescending()) {\n sort = 'descending';\n }\n else {\n sort = 'none';\n }\n return sort;\n}\n// ARIA ATTRIBUTE GETTERS\nfunction getAriaLevel(element) {\n return parseInt(element.getAttribute('aria-level'), 10);\n}\nfunction getAriaPosInSet(element) {\n return parseInt(element.getAttribute('aria-posinset'), 10);\n}\nfunction getAriaDescribedBy(element) {\n return element.getAttribute('aria-describedby') || '';\n}\n// ARIA ATTRIBUTE SETTERS\nfunction setAriaLabel(element, label) {\n var key = 'label';\n if (label != null && label !== '') {\n setAriaAttribute(element, key, label);\n }\n else {\n removeAriaAttribute(element, key);\n }\n}\nfunction setAriaLabelledBy(element, labelledBy) {\n var key = 'labelledby';\n if (labelledBy) {\n setAriaAttribute(element, key, labelledBy);\n }\n else {\n removeAriaAttribute(element, key);\n }\n}\nfunction setAriaDescription(element, description) {\n var key = 'description';\n if (description) {\n setAriaAttribute(element, key, description);\n }\n else {\n removeAriaAttribute(element, key);\n }\n}\nfunction setAriaDescribedBy(element, describedby) {\n var key = 'describedby';\n if (describedby) {\n setAriaAttribute(element, key, describedby);\n }\n else {\n removeAriaAttribute(element, key);\n }\n}\nfunction setAriaLevel(element, level) {\n setAriaAttribute(element, 'level', level);\n}\nfunction setAriaDisabled(element, disabled) {\n setAriaAttribute(element, 'disabled', disabled);\n}\nfunction setAriaHidden(element, hidden) {\n if (hidden) {\n setAriaAttribute(element, 'hidden', true);\n }\n else {\n removeAriaAttribute(element, 'hidden');\n }\n}\nfunction setAriaExpanded(element, expanded) {\n setAriaAttribute(element, 'expanded', expanded);\n}\nfunction removeAriaExpanded(element) {\n removeAriaAttribute(element, 'expanded');\n}\nfunction setAriaSetSize(element, setsize) {\n setAriaAttribute(element, 'setsize', setsize);\n}\nfunction setAriaPosInSet(element, position) {\n setAriaAttribute(element, 'posinset', position);\n}\nfunction setAriaMultiSelectable(element, multiSelectable) {\n setAriaAttribute(element, 'multiselectable', multiSelectable);\n}\nfunction setAriaRowCount(element, rowCount) {\n setAriaAttribute(element, 'rowcount', rowCount);\n}\nfunction setAriaRowIndex(element, rowIndex) {\n setAriaAttribute(element, 'rowindex', rowIndex);\n}\nfunction setAriaColCount(element, colCount) {\n setAriaAttribute(element, 'colcount', colCount);\n}\nfunction setAriaColIndex(element, colIndex) {\n setAriaAttribute(element, 'colindex', colIndex);\n}\nfunction setAriaColSpan(element, colSpan) {\n setAriaAttribute(element, 'colspan', colSpan);\n}\nfunction setAriaSort(element, sort) {\n setAriaAttribute(element, 'sort', sort);\n}\nfunction removeAriaSort(element) {\n removeAriaAttribute(element, 'sort');\n}\nfunction setAriaSelected(element, selected) {\n var attributeName = 'selected';\n if (selected) {\n setAriaAttribute(element, attributeName, selected);\n }\n else {\n removeAriaAttribute(element, attributeName);\n }\n}\nfunction setAriaChecked(element, checked) {\n setAriaAttribute(element, 'checked', checked === undefined ? 'mixed' : checked);\n}\n\nvar AriaUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n setAriaRole: setAriaRole,\n getAriaSortState: getAriaSortState,\n getAriaLevel: getAriaLevel,\n getAriaPosInSet: getAriaPosInSet,\n getAriaDescribedBy: getAriaDescribedBy,\n setAriaLabel: setAriaLabel,\n setAriaLabelledBy: setAriaLabelledBy,\n setAriaDescription: setAriaDescription,\n setAriaDescribedBy: setAriaDescribedBy,\n setAriaLevel: setAriaLevel,\n setAriaDisabled: setAriaDisabled,\n setAriaHidden: setAriaHidden,\n setAriaExpanded: setAriaExpanded,\n removeAriaExpanded: removeAriaExpanded,\n setAriaSetSize: setAriaSetSize,\n setAriaPosInSet: setAriaPosInSet,\n setAriaMultiSelectable: setAriaMultiSelectable,\n setAriaRowCount: setAriaRowCount,\n setAriaRowIndex: setAriaRowIndex,\n setAriaColCount: setAriaColCount,\n setAriaColIndex: setAriaColIndex,\n setAriaColSpan: setAriaColSpan,\n setAriaSort: setAriaSort,\n removeAriaSort: removeAriaSort,\n setAriaSelected: setAriaSelected,\n setAriaChecked: setAriaChecked\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$j = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/**\n * Serialises a Date to a string of format `yyyy-MM-dd HH:mm:ss`.\n * An alternative separator can be provided to be used instead of hyphens.\n * @param date The date to serialise\n * @param includeTime Whether to include the time in the serialised string\n * @param separator The separator to use between date parts\n */\nfunction serialiseDate(date, includeTime, separator) {\n if (includeTime === void 0) { includeTime = true; }\n if (separator === void 0) { separator = '-'; }\n if (!date) {\n return null;\n }\n var serialised = [date.getFullYear(), date.getMonth() + 1, date.getDate()].map(function (part) { return padStartWidthZeros(part, 2); }).join(separator);\n if (includeTime) {\n serialised += ' ' + [date.getHours(), date.getMinutes(), date.getSeconds()].map(function (part) { return padStartWidthZeros(part, 2); }).join(':');\n }\n return serialised;\n}\nvar calculateOrdinal = function (value) {\n if (value > 3 && value < 21) {\n return 'th';\n }\n var remainder = value % 10;\n switch (remainder) {\n case 1: return \"st\";\n case 2: return \"nd\";\n case 3: return \"rd\";\n }\n return 'th';\n};\n/**\n * Serialises a Date to a string of format the defined format, does not include time.\n * @param date The date to serialise\n * @param format The string to format the date to, defaults to YYYY-MM-DD\n */\nfunction dateToFormattedString(date, format) {\n if (format === void 0) { format = 'YYYY-MM-DD'; }\n var fullYear = padStartWidthZeros(date.getFullYear(), 4);\n var months = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n ];\n var days = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday',\n ];\n var replace = {\n YYYY: function () { return fullYear.slice(fullYear.length - 4, fullYear.length); },\n YY: function () { return fullYear.slice(fullYear.length - 2, fullYear.length); },\n Y: function () { return \"\" + date.getFullYear(); },\n MMMM: function () { return months[date.getMonth()]; },\n MMM: function () { return months[date.getMonth()].slice(0, 3); },\n MM: function () { return padStartWidthZeros(date.getMonth() + 1, 2); },\n Mo: function () { return \"\" + (date.getMonth() + 1) + calculateOrdinal(date.getMonth() + 1); },\n M: function () { return \"\" + (date.getMonth() + 1); },\n Do: function () { return \"\" + date.getDate() + calculateOrdinal(date.getDate()); },\n DD: function () { return padStartWidthZeros(date.getDate(), 2); },\n D: function () { return \"\" + date.getDate(); },\n dddd: function () { return days[date.getDay()]; },\n ddd: function () { return days[date.getDay()].slice(0, 3); },\n dd: function () { return days[date.getDay()].slice(0, 2); },\n do: function () { return \"\" + date.getDay() + calculateOrdinal(date.getDay()); },\n d: function () { return \"\" + date.getDay(); },\n };\n var regexp = new RegExp(Object.keys(replace).join('|'), 'g');\n return format.replace(regexp, function (match) {\n if (match in replace) {\n return replace[match]();\n }\n return match;\n });\n}\n/**\n * Parses a date and time from a string in the format `yyyy-MM-dd HH:mm:ss`\n */\nfunction parseDateTimeFromString(value) {\n if (!value) {\n return null;\n }\n var _a = __read$j(value.split(' '), 2), dateStr = _a[0], timeStr = _a[1];\n if (!dateStr) {\n return null;\n }\n var fields = dateStr.split('-').map(function (f) { return parseInt(f, 10); });\n if (fields.filter(function (f) { return !isNaN(f); }).length !== 3) {\n return null;\n }\n var _b = __read$j(fields, 3), year = _b[0], month = _b[1], day = _b[2];\n var date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day) {\n // date was not parsed as expected so must have been invalid\n return null;\n }\n if (!timeStr || timeStr === '00:00:00') {\n return date;\n }\n var _c = __read$j(timeStr.split(':').map(function (part) { return parseInt(part, 10); }), 3), hours = _c[0], minutes = _c[1], seconds = _c[2];\n if (hours >= 0 && hours < 24) {\n date.setHours(hours);\n }\n if (minutes >= 0 && minutes < 60) {\n date.setMinutes(minutes);\n }\n if (seconds >= 0 && seconds < 60) {\n date.setSeconds(seconds);\n }\n return date;\n}\n\nvar DateUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n serialiseDate: serialiseDate,\n dateToFormattedString: dateToFormattedString,\n parseDateTimeFromString: parseDateTimeFromString\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n//\n// IMPORTANT NOTE!\n//\n// If you change the list below, copy/paste the new content into the docs page javascript-grid-icons\n//\nvar iconNameClassMap = {\n // header column group shown when expanded (click to contract)\n columnGroupOpened: 'expanded',\n // header column group shown when contracted (click to expand)\n columnGroupClosed: 'contracted',\n // tool panel column group contracted (click to expand)\n columnSelectClosed: 'tree-closed',\n // tool panel column group expanded (click to contract)\n columnSelectOpen: 'tree-open',\n // column tool panel header expand/collapse all button, shown when some children are expanded and\n // others are collapsed\n columnSelectIndeterminate: 'tree-indeterminate',\n // shown on ghost icon while dragging column to the side of the grid to pin\n columnMovePin: 'pin',\n // shown on ghost icon while dragging over part of the page that is not a drop zone\n columnMoveHide: 'eye-slash',\n // shown on ghost icon while dragging columns to reorder\n columnMoveMove: 'arrows',\n // animating icon shown when dragging a column to the right of the grid causes horizontal scrolling\n columnMoveLeft: 'left',\n // animating icon shown when dragging a column to the left of the grid causes horizontal scrolling\n columnMoveRight: 'right',\n // shown on ghost icon while dragging over Row Groups drop zone\n columnMoveGroup: 'group',\n // shown on ghost icon while dragging over Values drop zone\n columnMoveValue: 'aggregation',\n // shown on ghost icon while dragging over pivot drop zone\n columnMovePivot: 'pivot',\n // shown on ghost icon while dragging over drop zone that doesn't support it, e.g.\n // string column over aggregation drop zone\n dropNotAllowed: 'not-allowed',\n // shown on row group when contracted (click to expand)\n groupContracted: 'tree-closed',\n // shown on row group when expanded (click to contract)\n groupExpanded: 'tree-open',\n // context menu chart item\n chart: 'chart',\n // chart window title bar\n close: 'cross',\n // X (remove) on column 'pill' after adding it to a drop zone list\n cancel: 'cancel',\n // indicates the currently active pin state in the \"Pin column\" sub-menu of the column menu\n check: 'tick',\n // \"go to first\" button in pagination controls\n first: 'first',\n // \"go to previous\" button in pagination controls\n previous: 'previous',\n // \"go to next\" button in pagination controls\n next: 'next',\n // \"go to last\" button in pagination controls\n last: 'last',\n // shown on top right of chart when chart is linked to range data (click to unlink)\n linked: 'linked',\n // shown on top right of chart when chart is not linked to range data (click to link)\n unlinked: 'unlinked',\n // \"Choose colour\" button on chart settings tab\n colorPicker: 'color-picker',\n // rotating spinner shown by the loading cell renderer\n groupLoading: 'loading',\n // button to launch enterprise column menu\n menu: 'menu',\n // filter tool panel tab\n filter: 'filter',\n // column tool panel tab\n columns: 'columns',\n // button in chart regular size window title bar (click to maximise)\n maximize: 'maximize',\n // button in chart maximised window title bar (click to make regular size)\n minimize: 'minimize',\n // \"Pin column\" item in column header menu\n menuPin: 'pin',\n // \"Value aggregation\" column menu item (shown on numeric columns when grouping is active)\"\n menuValue: 'aggregation',\n // \"Group by {column-name}\" item in column header menu\n menuAddRowGroup: 'group',\n // \"Un-Group by {column-name}\" item in column header menu\n menuRemoveRowGroup: 'group',\n // context menu copy item\n clipboardCopy: 'copy',\n // context menu paste item\n clipboardPaste: 'paste',\n // identifies the pivot drop zone\n pivotPanel: 'pivot',\n // \"Row groups\" drop zone in column tool panel\n rowGroupPanel: 'group',\n // columns tool panel Values drop zone\n valuePanel: 'aggregation',\n // drag handle used to pick up draggable columns\n columnDrag: 'grip',\n // drag handle used to pick up draggable rows\n rowDrag: 'grip',\n // context menu export item\n save: 'save',\n // csv export\n csvExport: 'csv',\n // excel export,\n excelExport: 'excel',\n // icon on dropdown editors\n smallDown: 'small-down',\n // version of small-right used in RTL mode\n smallLeft: 'small-left',\n // separater between column 'pills' when you add multiple columns to the header drop zone\n smallRight: 'small-right',\n smallUp: 'small-up',\n // show on column header when column is sorted ascending\n sortAscending: 'asc',\n // show on column header when column is sorted descending\n sortDescending: 'desc',\n // show on column header when column has no sort, only when enabled with gridOptions.unSortIcon=true\n sortUnSort: 'none'\n};\n/**\n * If icon provided, use this (either a string, or a function callback).\n * if not, then use the default icon from the theme\n * @param {string} iconName\n * @param {GridOptionsWrapper} gridOptionsWrapper\n * @param {Column | null} [column]\n * @returns {HTMLElement}\n */\nfunction createIcon(iconName, gridOptionsWrapper, column) {\n var iconContents = createIconNoSpan(iconName, gridOptionsWrapper, column);\n if (iconContents && iconContents.className.indexOf('ag-icon') > -1) {\n return iconContents;\n }\n var eResult = document.createElement('span');\n eResult.appendChild(iconContents);\n return eResult;\n}\nfunction createIconNoSpan(iconName, gridOptionsWrapper, column, forceCreate) {\n var userProvidedIcon = null;\n // check col for icon first\n var icons = column && column.getColDef().icons;\n if (icons) {\n userProvidedIcon = icons[iconName];\n }\n // if not in col, try grid options\n if (gridOptionsWrapper && !userProvidedIcon) {\n var optionsIcons = gridOptionsWrapper.getIcons();\n if (optionsIcons) {\n userProvidedIcon = optionsIcons[iconName];\n }\n }\n // now if user provided, use it\n if (userProvidedIcon) {\n var rendererResult = void 0;\n if (typeof userProvidedIcon === 'function') {\n rendererResult = userProvidedIcon();\n }\n else if (typeof userProvidedIcon === 'string') {\n rendererResult = userProvidedIcon;\n }\n else {\n throw new Error('icon from grid options needs to be a string or a function');\n }\n if (typeof rendererResult === 'string') {\n return loadTemplate(rendererResult);\n }\n if (isNodeOrElement(rendererResult)) {\n return rendererResult;\n }\n console.warn('AG Grid: iconRenderer should return back a string or a dom object');\n }\n else {\n var span = document.createElement('span');\n var cssClass = iconNameClassMap[iconName];\n if (!cssClass) {\n if (!forceCreate) {\n console.warn(\"AG Grid: Did not find icon \" + iconName);\n cssClass = '';\n }\n else {\n cssClass = iconName;\n }\n }\n span.setAttribute('class', \"ag-icon ag-icon-\" + cssClass);\n span.setAttribute('unselectable', 'on');\n setAriaRole(span, 'presentation');\n return span;\n }\n}\n\nvar IconUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n iconNameClassMap: iconNameClassMap,\n createIcon: createIcon,\n createIconNoSpan: createIconNoSpan\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar KeyCode = /** @class */ (function () {\n function KeyCode() {\n }\n KeyCode.BACKSPACE = 'Backspace';\n KeyCode.TAB = 'Tab';\n KeyCode.ENTER = 'Enter';\n KeyCode.ESCAPE = 'Escape';\n KeyCode.SPACE = ' ';\n KeyCode.LEFT = 'ArrowLeft';\n KeyCode.UP = 'ArrowUp';\n KeyCode.RIGHT = 'ArrowRight';\n KeyCode.DOWN = 'ArrowDown';\n KeyCode.DELETE = 'Delete';\n KeyCode.F2 = 'F2';\n KeyCode.PAGE_UP = 'PageUp';\n KeyCode.PAGE_DOWN = 'PageDown';\n KeyCode.PAGE_HOME = 'Home';\n KeyCode.PAGE_END = 'End';\n // these should be used with `event.code` instead of `event.key`\n // as `event.key` changes when non-latin keyboards are used\n KeyCode.A = 'KeyA';\n KeyCode.C = 'KeyC';\n KeyCode.V = 'KeyV';\n KeyCode.D = 'KeyD';\n KeyCode.Z = 'KeyZ';\n KeyCode.Y = 'KeyY';\n return KeyCode;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar NUMPAD_DEL_NUMLOCK_ON_KEY = 'Del';\n// Using legacy values to match AZERTY keyboards\nvar NUMPAD_DEL_NUMLOCK_ON_KEYCODE = 46;\nvar A_KEYCODE = 65;\nvar C_KEYCODE = 67;\nvar V_KEYCODE = 86;\nvar D_KEYCODE = 68;\nvar Z_KEYCODE = 90;\nvar Y_KEYCODE = 89;\nfunction isEventFromPrintableCharacter(event) {\n // no allowed printable chars have alt or ctrl key combinations\n if (event.altKey || event.ctrlKey || event.metaKey) {\n return false;\n }\n // if key is length 1, eg if it is 'a' for the a key, or '2' for the '2' key.\n // non-printable characters have names, eg 'Enter' or 'Backspace'.\n var printableCharacter = event.key.length === 1;\n // IE11 & Edge treat the numpad del key differently - with numlock on we get \"Del\" for key,\n // so this addition checks if its IE11/Edge and handles that specific case the same was as all other browsers\n var numpadDelWithNumlockOnForEdgeOrIe = isNumpadDelWithNumLockOnForEdge(event);\n return printableCharacter || numpadDelWithNumlockOnForEdgeOrIe;\n}\n/**\n * Allows user to tell the grid to skip specific keyboard events\n * @param {GridOptionsWrapper} gridOptionsWrapper\n * @param {KeyboardEvent} keyboardEvent\n * @param {RowNode} rowNode\n * @param {Column} column\n * @param {boolean} editing\n * @returns {boolean}\n */\nfunction isUserSuppressingKeyboardEvent(gridOptionsWrapper, keyboardEvent, rowNode, column, editing) {\n var gridOptionsFunc = gridOptionsWrapper.getSuppressKeyboardEventFunc();\n var colDefFunc = column ? column.getColDef().suppressKeyboardEvent : undefined;\n // if no callbacks provided by user, then do nothing\n if (!gridOptionsFunc && !colDefFunc) {\n return false;\n }\n var params = {\n event: keyboardEvent,\n editing: editing,\n column: column,\n api: gridOptionsWrapper.getApi(),\n node: rowNode,\n data: rowNode.data,\n colDef: column.getColDef(),\n context: gridOptionsWrapper.getContext(),\n columnApi: gridOptionsWrapper.getColumnApi()\n };\n // colDef get first preference on suppressing events\n if (colDefFunc) {\n var colDefFuncResult = colDefFunc(params);\n // if colDef func suppressed, then return now, no need to call gridOption func\n if (colDefFuncResult) {\n return true;\n }\n }\n if (gridOptionsFunc) {\n // if gridOption func, return the result\n return gridOptionsFunc(params);\n }\n // otherwise return false, don't suppress, as colDef didn't suppress and no func on gridOptions\n return false;\n}\nfunction isUserSuppressingHeaderKeyboardEvent(gridOptionsWrapper, keyboardEvent, headerRowIndex, column) {\n var colDef = column.getDefinition();\n var colDefFunc = colDef && colDef.suppressHeaderKeyboardEvent;\n if (!exists(colDefFunc)) {\n return false;\n }\n var params = {\n api: gridOptionsWrapper.getApi(),\n columnApi: gridOptionsWrapper.getColumnApi(),\n context: gridOptionsWrapper.getContext(),\n colDef: colDef,\n column: column,\n headerRowIndex: headerRowIndex,\n event: keyboardEvent\n };\n return !!colDefFunc(params);\n}\nfunction isNumpadDelWithNumLockOnForEdge(event) {\n return (isBrowserEdge()) &&\n event.key === NUMPAD_DEL_NUMLOCK_ON_KEY &&\n event.charCode === NUMPAD_DEL_NUMLOCK_ON_KEYCODE;\n}\nfunction normaliseQwertyAzerty(keyboardEvent) {\n var keyCode = keyboardEvent.keyCode;\n var code;\n switch (keyCode) {\n case A_KEYCODE:\n code = KeyCode.A;\n break;\n case C_KEYCODE:\n code = KeyCode.C;\n break;\n case V_KEYCODE:\n code = KeyCode.V;\n break;\n case D_KEYCODE:\n code = KeyCode.D;\n break;\n case Z_KEYCODE:\n code = KeyCode.Z;\n break;\n case Y_KEYCODE:\n code = KeyCode.Y;\n break;\n default:\n code = keyboardEvent.code;\n }\n return code;\n}\nfunction isDeleteKey(key, alwaysReturnFalseOnBackspace) {\n if (alwaysReturnFalseOnBackspace === void 0) { alwaysReturnFalseOnBackspace = false; }\n if (key === KeyCode.DELETE) {\n return true;\n }\n if (!alwaysReturnFalseOnBackspace && key === KeyCode.BACKSPACE) {\n return isMacOsUserAgent();\n }\n return false;\n}\n\nvar KeyboardUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isEventFromPrintableCharacter: isEventFromPrintableCharacter,\n isUserSuppressingKeyboardEvent: isUserSuppressingKeyboardEvent,\n isUserSuppressingHeaderKeyboardEvent: isUserSuppressingHeaderKeyboardEvent,\n normaliseQwertyAzerty: normaliseQwertyAzerty,\n isDeleteKey: isDeleteKey\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * `True` if the event is close to the original event by X pixels either vertically or horizontally.\n * we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n * @param {MouseEvent | TouchEvent} e1\n * @param {MouseEvent | TouchEvent} e2\n * @param {number} pixelCount\n * @returns {boolean}\n */\nfunction areEventsNear(e1, e2, pixelCount) {\n // by default, we wait 4 pixels before starting the drag\n if (pixelCount === 0) {\n return false;\n }\n var diffX = Math.abs(e1.clientX - e2.clientX);\n var diffY = Math.abs(e1.clientY - e2.clientY);\n return Math.max(diffX, diffY) <= pixelCount;\n}\n\nvar MouseUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n areEventsNear: areEventsNear\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * Gets called by: a) ClientSideNodeManager and b) GroupStage to do sorting.\n * when in ClientSideNodeManager we always have indexes (as this sorts the items the\n * user provided) but when in GroupStage, the nodes can contain filler nodes that\n * don't have order id's\n * @param {RowNode[]} rowNodes\n * @param {Object} rowNodeOrder\n *\n * @returns a boolean representing whether nodes were reordered\n */\nfunction sortRowNodesByOrder(rowNodes, rowNodeOrder) {\n if (!rowNodes) {\n return false;\n }\n var comparator = function (nodeA, nodeB) {\n var positionA = rowNodeOrder[nodeA.id];\n var positionB = rowNodeOrder[nodeB.id];\n var aHasIndex = positionA !== undefined;\n var bHasIndex = positionB !== undefined;\n var bothNodesAreUserNodes = aHasIndex && bHasIndex;\n var bothNodesAreFillerNodes = !aHasIndex && !bHasIndex;\n if (bothNodesAreUserNodes) {\n // when comparing two nodes the user has provided, they always\n // have indexes\n return positionA - positionB;\n }\n if (bothNodesAreFillerNodes) {\n // when comparing two filler nodes, we have no index to compare them\n // against, however we want this sorting to be deterministic, so that\n // the rows don't jump around as the user does delta updates. so we\n // want the same sort result. so we use the __objectId - which doesn't make sense\n // from a sorting point of view, but does give consistent behaviour between\n // calls. otherwise groups jump around as delta updates are done.\n // note: previously here we used nodeId, however this gave a strange order\n // as string ordering of numbers is wrong, so using id based on creation order\n // as least gives better looking order.\n return nodeA.__objectId - nodeB.__objectId;\n }\n if (aHasIndex) {\n return 1;\n }\n return -1;\n };\n // check if the list first needs sorting\n var rowNodeA;\n var rowNodeB;\n var atLeastOneOutOfOrder = false;\n for (var i = 0; i < rowNodes.length - 1; i++) {\n rowNodeA = rowNodes[i];\n rowNodeB = rowNodes[i + 1];\n if (comparator(rowNodeA, rowNodeB) > 0) {\n atLeastOneOutOfOrder = true;\n break;\n }\n }\n if (atLeastOneOutOfOrder) {\n rowNodes.sort(comparator);\n return true;\n }\n return false;\n}\nfunction traverseNodesWithKey(nodes, callback) {\n var keyParts = [];\n recursiveSearchNodes(nodes);\n function recursiveSearchNodes(currentNodes) {\n if (!currentNodes) {\n return;\n }\n currentNodes.forEach(function (node) {\n // also checking for children for tree data\n if (node.group || node.hasChildren()) {\n keyParts.push(node.key);\n var key = keyParts.join('|');\n callback(node, key);\n recursiveSearchNodes(node.childrenAfterGroup);\n keyParts.pop();\n }\n });\n }\n}\n\nvar RowNodeUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n sortRowNodesByOrder: sortRowNodesByOrder,\n traverseNodesWithKey: traverseNodesWithKey\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction convertToSet(list) {\n var set = new Set();\n list.forEach(function (x) { return set.add(x); });\n return set;\n}\n\nvar SetUtils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n convertToSet: convertToSet\n});\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$f = (undefined && undefined.__assign) || function () {\n __assign$f = 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$f.apply(this, arguments);\n};\nvar utils = __assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f(__assign$f({}, GeneralUtils), AriaUtils), ArrayUtils), BrowserUtils), CsvUtils), DateUtils), DomUtils), EventUtils), FunctionUtils), FuzzyMatchUtils), GenericUtils), IconUtils), KeyboardUtils), MapUtils), MouseUtils), NumberUtils), ObjectUtils), RowNodeUtils), SetUtils), StringUtils);\nvar _ = utils;\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar NumberSequence = /** @class */ (function () {\n function NumberSequence(initValue, step) {\n if (initValue === void 0) { initValue = 0; }\n if (step === void 0) { step = 1; }\n this.nextValue = initValue;\n this.step = step;\n }\n NumberSequence.prototype.next = function () {\n var valToReturn = this.nextValue;\n this.nextValue += this.step;\n return valToReturn;\n };\n NumberSequence.prototype.peek = function () {\n return this.nextValue;\n };\n NumberSequence.prototype.skip = function (count) {\n this.nextValue += count;\n };\n return NumberSequence;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar AgPromiseStatus;\n(function (AgPromiseStatus) {\n AgPromiseStatus[AgPromiseStatus[\"IN_PROGRESS\"] = 0] = \"IN_PROGRESS\";\n AgPromiseStatus[AgPromiseStatus[\"RESOLVED\"] = 1] = \"RESOLVED\";\n})(AgPromiseStatus || (AgPromiseStatus = {}));\nvar AgPromise = /** @class */ (function () {\n function AgPromise(callback) {\n var _this = this;\n this.status = AgPromiseStatus.IN_PROGRESS;\n this.resolution = null;\n this.waiters = [];\n callback(function (value) { return _this.onDone(value); }, function (params) { return _this.onReject(params); });\n }\n AgPromise.all = function (promises) {\n return new AgPromise(function (resolve) {\n var remainingToResolve = promises.length;\n var combinedValues = new Array(remainingToResolve);\n promises.forEach(function (promise, index) {\n promise.then(function (value) {\n combinedValues[index] = value;\n remainingToResolve--;\n if (remainingToResolve === 0) {\n resolve(combinedValues);\n }\n });\n });\n });\n };\n AgPromise.resolve = function (value) {\n if (value === void 0) { value = null; }\n return new AgPromise(function (resolve) { return resolve(value); });\n };\n AgPromise.prototype.then = function (func) {\n var _this = this;\n return new AgPromise(function (resolve) {\n if (_this.status === AgPromiseStatus.RESOLVED) {\n resolve(func(_this.resolution));\n }\n else {\n _this.waiters.push(function (value) { return resolve(func(value)); });\n }\n });\n };\n AgPromise.prototype.resolveNow = function (ifNotResolvedValue, ifResolved) {\n return this.status === AgPromiseStatus.RESOLVED ? ifResolved(this.resolution) : ifNotResolvedValue;\n };\n AgPromise.prototype.onDone = function (value) {\n this.status = AgPromiseStatus.RESOLVED;\n this.resolution = value;\n this.waiters.forEach(function (waiter) { return waiter(value); });\n };\n AgPromise.prototype.onReject = function (params) {\n console.warn('TBI');\n };\n return AgPromise;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * A Util Class only used when debugging for printing time to console\n */\nvar Timer = /** @class */ (function () {\n function Timer() {\n this.timestamp = new Date().getTime();\n }\n Timer.prototype.print = function (msg) {\n var duration = (new Date().getTime()) - this.timestamp;\n console.info(msg + \" = \" + duration);\n this.timestamp = new Date().getTime();\n };\n return Timer;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2P = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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$e = (undefined && undefined.__assign) || function () {\n __assign$e = 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$e.apply(this, arguments);\n};\nvar __decorate$2q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TooltipStates;\n(function (TooltipStates) {\n TooltipStates[TooltipStates[\"NOTHING\"] = 0] = \"NOTHING\";\n TooltipStates[TooltipStates[\"WAITING_TO_SHOW\"] = 1] = \"WAITING_TO_SHOW\";\n TooltipStates[TooltipStates[\"SHOWING\"] = 2] = \"SHOWING\";\n})(TooltipStates || (TooltipStates = {}));\nvar CustomTooltipFeature = /** @class */ (function (_super) {\n __extends$2P(CustomTooltipFeature, _super);\n function CustomTooltipFeature(parentComp) {\n var _this = _super.call(this) || this;\n _this.DEFAULT_SHOW_TOOLTIP_DELAY = 2000;\n _this.DEFAULT_HIDE_TOOLTIP_DELAY = 10000;\n _this.SHOW_QUICK_TOOLTIP_DIFF = 1000;\n _this.FADE_OUT_TOOLTIP_TIMEOUT = 1000;\n _this.state = TooltipStates.NOTHING;\n // when showing the tooltip, we need to make sure it's the most recent instance we request, as due to\n // async we could request two tooltips before the first instance returns, in which case we should\n // disregard the second instance.\n _this.tooltipInstanceCount = 0;\n _this.tooltipMouseTrack = false;\n _this.parentComp = parentComp;\n return _this;\n }\n CustomTooltipFeature.prototype.postConstruct = function () {\n this.tooltipShowDelay = this.gridOptionsWrapper.getTooltipDelay('show') || this.DEFAULT_SHOW_TOOLTIP_DELAY;\n this.tooltipHideDelay = this.gridOptionsWrapper.getTooltipDelay('hide') || this.DEFAULT_HIDE_TOOLTIP_DELAY;\n this.tooltipMouseTrack = this.gridOptionsWrapper.isTooltipMouseTrack();\n var el = this.parentComp.getGui();\n this.addManagedListener(el, 'mouseenter', this.onMouseEnter.bind(this));\n this.addManagedListener(el, 'mouseleave', this.onMouseLeave.bind(this));\n this.addManagedListener(el, 'mousemove', this.onMouseMove.bind(this));\n this.addManagedListener(el, 'mousedown', this.onMouseDown.bind(this));\n this.addManagedListener(el, 'keydown', this.onKeyDown.bind(this));\n };\n CustomTooltipFeature.prototype.destroy = function () {\n // if this component gets destroyed while tooltip is showing, need to make sure\n // we don't end with no mouseLeave event resulting in zombie tooltip\n this.setToDoNothing();\n _super.prototype.destroy.call(this);\n };\n CustomTooltipFeature.prototype.onMouseEnter = function (e) {\n if (isIOSUserAgent()) {\n return;\n }\n // every mouseenter should be following by a mouseleave, however for some unkonwn, it's possible for\n // mouseenter to be called twice in a row, which can happen if editing the cell. this was reported\n // in https://ag-grid.atlassian.net/browse/AG-4422. to get around this, we check the state, and if\n // state is !=nothing, then we know mouseenter was already received.\n if (this.state != TooltipStates.NOTHING) {\n return;\n }\n // if another tooltip was hidden very recently, we only wait 200ms to show, not the normal waiting time\n var delay = this.isLastTooltipHiddenRecently() ? 200 : this.tooltipShowDelay;\n this.showTooltipTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay);\n this.lastMouseEvent = e;\n this.state = TooltipStates.WAITING_TO_SHOW;\n };\n CustomTooltipFeature.prototype.onMouseLeave = function () {\n this.setToDoNothing();\n };\n CustomTooltipFeature.prototype.onKeyDown = function () {\n this.setToDoNothing();\n };\n CustomTooltipFeature.prototype.setToDoNothing = function () {\n if (this.state === TooltipStates.SHOWING) {\n this.hideTooltip();\n }\n this.clearTimeouts();\n this.state = TooltipStates.NOTHING;\n };\n CustomTooltipFeature.prototype.onMouseMove = function (e) {\n // there is a delay from the time we mouseOver a component and the time the\n // tooltip is displayed, so we need to track mousemove to be able to correctly\n // position the tooltip when showTooltip is called.\n this.lastMouseEvent = e;\n if (this.tooltipMouseTrack &&\n this.state === TooltipStates.SHOWING &&\n this.tooltipComp) {\n this.positionTooltipUnderLastMouseEvent();\n }\n };\n CustomTooltipFeature.prototype.onMouseDown = function () {\n this.setToDoNothing();\n };\n CustomTooltipFeature.prototype.hideTooltip = function () {\n // check if comp exists - due to async, although we asked for\n // one, the instance may not be back yet\n if (this.tooltipComp) {\n this.destroyTooltipComp();\n CustomTooltipFeature.lastTooltipHideTime = new Date().getTime();\n }\n this.state = TooltipStates.NOTHING;\n };\n CustomTooltipFeature.prototype.destroyTooltipComp = function () {\n var _this = this;\n // add class to fade out the tooltip\n this.tooltipComp.getGui().classList.add('ag-tooltip-hiding');\n // make local copies of these variables, as we use them in the async function below,\n // and we clear then to 'undefined' later, so need to take a copy before they are undefined.\n var tooltipPopupDestroyFunc = this.tooltipPopupDestroyFunc;\n var tooltipComp = this.tooltipComp;\n window.setTimeout(function () {\n tooltipPopupDestroyFunc();\n _this.getContext().destroyBean(tooltipComp);\n }, this.FADE_OUT_TOOLTIP_TIMEOUT);\n this.tooltipPopupDestroyFunc = undefined;\n this.tooltipComp = undefined;\n };\n CustomTooltipFeature.prototype.isLastTooltipHiddenRecently = function () {\n // return true if <1000ms since last time we hid a tooltip\n var now = new Date().getTime();\n var then = CustomTooltipFeature.lastTooltipHideTime;\n return (now - then) < this.SHOW_QUICK_TOOLTIP_DIFF;\n };\n CustomTooltipFeature.prototype.showTooltip = function () {\n var params = __assign$e({}, this.parentComp.getTooltipParams());\n if (!exists(params.value)) {\n this.setToDoNothing();\n return;\n }\n this.state = TooltipStates.SHOWING;\n this.tooltipInstanceCount++;\n // we pass in tooltipInstanceCount so the callback knows what the count was when\n // we requested the tooltip, so if another tooltip was requested in the mean time\n // we disregard it\n var callback = this.newTooltipComponentCallback.bind(this, this.tooltipInstanceCount);\n var userDetails = this.userComponentFactory.getTooltipCompDetails(params);\n userDetails.newAgStackInstance().then(callback);\n };\n CustomTooltipFeature.prototype.newTooltipComponentCallback = function (tooltipInstanceCopy, tooltipComp) {\n var compNoLongerNeeded = this.state !== TooltipStates.SHOWING || this.tooltipInstanceCount !== tooltipInstanceCopy;\n if (compNoLongerNeeded) {\n this.getContext().destroyBean(tooltipComp);\n return;\n }\n var eGui = tooltipComp.getGui();\n this.tooltipComp = tooltipComp;\n if (!eGui.classList.contains('ag-tooltip')) {\n eGui.classList.add('ag-tooltip-custom');\n }\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n eChild: eGui,\n ariaLabel: translate('ariaLabelTooltip', 'Tooltip')\n });\n if (addPopupRes) {\n this.tooltipPopupDestroyFunc = addPopupRes.hideFunc;\n }\n // this.tooltipPopupDestroyFunc = this.popupService.addPopup(false, eGui, false);\n this.positionTooltipUnderLastMouseEvent();\n this.hideTooltipTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.tooltipHideDelay);\n };\n CustomTooltipFeature.prototype.positionTooltipUnderLastMouseEvent = function () {\n this.popupService.positionPopupUnderMouseEvent({\n type: 'tooltip',\n mouseEvent: this.lastMouseEvent,\n ePopup: this.tooltipComp.getGui(),\n nudgeY: 18,\n skipObserver: this.tooltipMouseTrack\n });\n };\n CustomTooltipFeature.prototype.clearTimeouts = function () {\n if (this.showTooltipTimeoutId) {\n window.clearTimeout(this.showTooltipTimeoutId);\n this.showTooltipTimeoutId = undefined;\n }\n if (this.hideTooltipTimeoutId) {\n window.clearTimeout(this.hideTooltipTimeoutId);\n this.hideTooltipTimeoutId = undefined;\n }\n };\n __decorate$2q([\n Autowired('popupService')\n ], CustomTooltipFeature.prototype, \"popupService\", void 0);\n __decorate$2q([\n Autowired('userComponentFactory')\n ], CustomTooltipFeature.prototype, \"userComponentFactory\", void 0);\n __decorate$2q([\n Autowired('columnApi')\n ], CustomTooltipFeature.prototype, \"columnApi\", void 0);\n __decorate$2q([\n Autowired('gridApi')\n ], CustomTooltipFeature.prototype, \"gridApi\", void 0);\n __decorate$2q([\n PostConstruct\n ], CustomTooltipFeature.prototype, \"postConstruct\", null);\n return CustomTooltipFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar CssClassManager = /** @class */ (function () {\n function CssClassManager(getGui) {\n // to minimise DOM hits, we only apply CSS classes if they have changed. as adding a CSS class that is already\n // there, or removing one that wasn't present, all takes CPU.\n this.cssClassStates = {};\n this.getGui = getGui;\n }\n CssClassManager.prototype.addCssClass = function (className) {\n var _this = this;\n var list = (className || '').split(' ');\n if (list.length > 1) {\n list.forEach(function (cls) { return _this.addCssClass(cls); });\n return;\n }\n var updateNeeded = this.cssClassStates[className] !== true;\n if (updateNeeded && className.length) {\n var eGui = this.getGui();\n if (eGui) {\n eGui.classList.add(className);\n }\n this.cssClassStates[className] = true;\n }\n };\n CssClassManager.prototype.removeCssClass = function (className) {\n var _this = this;\n var list = (className || '').split(' ');\n if (list.length > 1) {\n list.forEach(function (cls) { return _this.removeCssClass(cls); });\n return;\n }\n var updateNeeded = this.cssClassStates[className] !== false;\n if (updateNeeded && className.length) {\n var eGui = this.getGui();\n if (eGui) {\n eGui.classList.remove(className);\n }\n this.cssClassStates[className] = false;\n }\n };\n CssClassManager.prototype.containsCssClass = function (className) {\n var eGui = this.getGui();\n if (!eGui) {\n return false;\n }\n return eGui.classList.contains(className);\n };\n CssClassManager.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n var _this = this;\n if (!className) {\n return;\n }\n // we check for spaces before doing the split, as doing the split\n // created a performance problem (on windows only, see AG-6765)\n if (className.indexOf(' ') >= 0) {\n var list = (className || '').split(' ');\n if (list.length > 1) {\n list.forEach(function (cls) { return _this.addOrRemoveCssClass(cls, addOrRemove); });\n return;\n }\n }\n var updateNeeded = this.cssClassStates[className] !== addOrRemove;\n if (updateNeeded && className.length) {\n var eGui = this.getGui();\n if (eGui) {\n eGui.classList.toggle(className, addOrRemove);\n }\n this.cssClassStates[className] = addOrRemove;\n }\n };\n return CssClassManager;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2O = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar compIdSequence = new NumberSequence();\nvar Component = /** @class */ (function (_super) {\n __extends$2O(Component, _super);\n function Component(template) {\n var _this = _super.call(this) || this;\n // if false, then CSS class \"ag-hidden\" is applied, which sets \"display: none\"\n _this.displayed = true;\n // if false, then CSS class \"ag-invisible\" is applied, which sets \"visibility: hidden\"\n _this.visible = true;\n // unique id for this row component. this is used for getting a reference to the HTML dom.\n // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying\n // around as we create a new rowComp instance for the same row node).\n _this.compId = compIdSequence.next();\n _this.cssClassManager = new CssClassManager(function () { return _this.eGui; });\n if (template) {\n _this.setTemplate(template);\n }\n return _this;\n }\n Component.prototype.preConstructOnComponent = function () {\n this.usingBrowserTooltips = this.gridOptionsWrapper.isEnableBrowserTooltips();\n };\n Component.prototype.getCompId = function () {\n return this.compId;\n };\n Component.prototype.getTooltipParams = function () {\n return {\n value: this.tooltipText,\n location: 'UNKNOWN'\n };\n };\n Component.prototype.setTooltip = function (newTooltipText) {\n var _this = this;\n var removeTooltip = function () {\n if (_this.usingBrowserTooltips) {\n _this.getGui().removeAttribute('title');\n }\n else {\n _this.tooltipFeature = _this.destroyBean(_this.tooltipFeature);\n }\n };\n var addTooltip = function () {\n if (_this.usingBrowserTooltips) {\n _this.getGui().setAttribute('title', _this.tooltipText);\n }\n else {\n _this.tooltipFeature = _this.createBean(new CustomTooltipFeature(_this));\n }\n };\n if (this.tooltipText != newTooltipText) {\n if (this.tooltipText) {\n removeTooltip();\n }\n if (newTooltipText != null) {\n this.tooltipText = newTooltipText;\n if (this.tooltipText) {\n addTooltip();\n }\n }\n }\n };\n // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag\n Component.prototype.createChildComponentsFromTags = function (parentNode, paramsMap) {\n var _this = this;\n // we MUST take a copy of the list first, as the 'swapComponentForNode' adds comments into the DOM\n // which messes up the traversal order of the children.\n var childNodeList = copyNodeList(parentNode.childNodes);\n childNodeList.forEach(function (childNode) {\n if (!(childNode instanceof HTMLElement)) {\n return;\n }\n var childComp = _this.createComponentFromElement(childNode, function (childComp) {\n // copy over all attributes, including css classes, so any attributes user put on the tag\n // wll be carried across\n var childGui = childComp.getGui();\n if (childGui) {\n _this.copyAttributesFromNode(childNode, childComp.getGui());\n }\n }, paramsMap);\n if (childComp) {\n if (childComp.addItems && childNode.children.length) {\n _this.createChildComponentsFromTags(childNode, paramsMap);\n // converting from HTMLCollection to Array\n var items = Array.prototype.slice.call(childNode.children);\n childComp.addItems(items);\n }\n // replace the tag (eg ag-checkbox) with the proper HTMLElement (eg 'div') in the dom\n _this.swapComponentForNode(childComp, parentNode, childNode);\n }\n else if (childNode.childNodes) {\n _this.createChildComponentsFromTags(childNode, paramsMap);\n }\n });\n };\n Component.prototype.createComponentFromElement = function (element, afterPreCreateCallback, paramsMap) {\n var key = element.nodeName;\n var componentParams = paramsMap ? paramsMap[element.getAttribute('ref')] : undefined;\n var ComponentClass = this.agStackComponentsRegistry.getComponentClass(key);\n if (ComponentClass) {\n Component.elementGettingCreated = element;\n var newComponent = new ComponentClass(componentParams);\n newComponent.setParentComponent(this);\n this.createBean(newComponent, null, afterPreCreateCallback);\n return newComponent;\n }\n return null;\n };\n Component.prototype.copyAttributesFromNode = function (source, dest) {\n iterateNamedNodeMap(source.attributes, function (name, value) { return dest.setAttribute(name, value); });\n };\n Component.prototype.swapComponentForNode = function (newComponent, parentNode, childNode) {\n var eComponent = newComponent.getGui();\n parentNode.replaceChild(eComponent, childNode);\n parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);\n this.addDestroyFunc(this.destroyBean.bind(this, newComponent));\n this.swapInComponentForQuerySelectors(newComponent, childNode);\n };\n Component.prototype.swapInComponentForQuerySelectors = function (newComponent, childNode) {\n var thisNoType = this;\n this.iterateOverQuerySelectors(function (querySelector) {\n if (thisNoType[querySelector.attributeName] === childNode) {\n thisNoType[querySelector.attributeName] = newComponent;\n }\n });\n };\n Component.prototype.iterateOverQuerySelectors = function (action) {\n var thisPrototype = Object.getPrototypeOf(this);\n while (thisPrototype != null) {\n var metaData = thisPrototype.__agComponentMetaData;\n var currentProtoName = getFunctionName(thisPrototype.constructor);\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n metaData[currentProtoName].querySelectors.forEach(function (querySelector) { return action(querySelector); });\n }\n thisPrototype = Object.getPrototypeOf(thisPrototype);\n }\n };\n Component.prototype.setTemplate = function (template, paramsMap) {\n var eGui = loadTemplate(template);\n this.setTemplateFromElement(eGui, paramsMap);\n };\n Component.prototype.setTemplateFromElement = function (element, paramsMap) {\n this.eGui = element;\n this.eGui.__agComponent = this;\n this.wireQuerySelectors();\n // context will not be available when user sets template in constructor\n if (!!this.getContext()) {\n this.createChildComponentsFromTags(this.getGui(), paramsMap);\n }\n };\n Component.prototype.createChildComponentsPreConstruct = function () {\n // ui exists if user sets template in constructor. when this happens, we have to wait for the context\n // to be autoWired first before we can create child components.\n if (!!this.getGui()) {\n this.createChildComponentsFromTags(this.getGui());\n }\n };\n Component.prototype.wireQuerySelectors = function () {\n var _this = this;\n if (!this.eGui) {\n return;\n }\n var thisNoType = this;\n this.iterateOverQuerySelectors(function (querySelector) {\n var setResult = function (result) { return thisNoType[querySelector.attributeName] = result; };\n // if it's a ref selector, and match is on top level component, we return\n // the element. otherwise no way of components putting ref=xxx on the top\n // level element as querySelector only looks at children.\n var topLevelRefMatch = querySelector.refSelector\n && _this.eGui.getAttribute('ref') === querySelector.refSelector;\n if (topLevelRefMatch) {\n setResult(_this.eGui);\n }\n else {\n // otherwise use querySelector, which looks at children\n var resultOfQuery = _this.eGui.querySelector(querySelector.querySelector);\n if (resultOfQuery) {\n setResult(resultOfQuery.__agComponent || resultOfQuery);\n }\n }\n });\n };\n Component.prototype.getGui = function () {\n return this.eGui;\n };\n Component.prototype.getFocusableElement = function () {\n return this.eGui;\n };\n Component.prototype.setParentComponent = function (component) {\n this.parentComponent = component;\n };\n Component.prototype.getParentComponent = function () {\n return this.parentComponent;\n };\n // this method is for older code, that wants to provide the gui element,\n // it is not intended for this to be in ag-Stack\n Component.prototype.setGui = function (eGui) {\n this.eGui = eGui;\n };\n Component.prototype.queryForHtmlElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.queryForHtmlInputElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.appendChild = function (newChild, container) {\n if (newChild == null) {\n return;\n }\n if (!container) {\n container = this.eGui;\n }\n if (isNodeOrElement(newChild)) {\n container.appendChild(newChild);\n }\n else {\n var childComponent = newChild;\n container.appendChild(childComponent.getGui());\n }\n };\n Component.prototype.isDisplayed = function () {\n return this.displayed;\n };\n Component.prototype.setVisible = function (visible) {\n if (visible !== this.visible) {\n this.visible = visible;\n setVisible(this.eGui, visible);\n }\n };\n Component.prototype.setDisplayed = function (displayed) {\n if (displayed !== this.displayed) {\n this.displayed = displayed;\n setDisplayed(this.eGui, displayed);\n var event_1 = {\n type: Component.EVENT_DISPLAYED_CHANGED,\n visible: this.displayed\n };\n this.dispatchEvent(event_1);\n }\n };\n Component.prototype.destroy = function () {\n if (this.tooltipFeature) {\n this.tooltipFeature = this.destroyBean(this.tooltipFeature);\n }\n _super.prototype.destroy.call(this);\n };\n Component.prototype.addGuiEventListener = function (event, listener) {\n var _this = this;\n this.eGui.addEventListener(event, listener);\n this.addDestroyFunc(function () { return _this.eGui.removeEventListener(event, listener); });\n };\n Component.prototype.addCssClass = function (className) {\n this.cssClassManager.addCssClass(className);\n };\n Component.prototype.removeCssClass = function (className) {\n this.cssClassManager.removeCssClass(className);\n };\n Component.prototype.containsCssClass = function (className) {\n return this.cssClassManager.containsCssClass(className);\n };\n Component.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n this.cssClassManager.addOrRemoveCssClass(className, addOrRemove);\n };\n Component.prototype.getAttribute = function (key) {\n var eGui = this.eGui;\n return eGui ? eGui.getAttribute(key) : null;\n };\n Component.prototype.getRefElement = function (refName) {\n return this.queryForHtmlElement(\"[ref=\\\"\" + refName + \"\\\"]\");\n };\n Component.EVENT_DISPLAYED_CHANGED = 'displayedChanged';\n __decorate$2p([\n Autowired('agStackComponentsRegistry')\n ], Component.prototype, \"agStackComponentsRegistry\", void 0);\n __decorate$2p([\n PreConstruct\n ], Component.prototype, \"preConstructOnComponent\", null);\n __decorate$2p([\n PreConstruct\n ], Component.prototype, \"createChildComponentsPreConstruct\", null);\n return Component;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction QuerySelector(selector) {\n return querySelectorFunc.bind(this, selector, undefined);\n}\nfunction RefSelector(ref) {\n return querySelectorFunc.bind(this, \"[ref=\" + ref + \"]\", ref);\n}\nfunction querySelectorFunc(selector, refSelector, classPrototype, methodOrAttributeName, index) {\n if (selector === null) {\n console.error('AG Grid: QuerySelector selector should not be null');\n return;\n }\n if (typeof index === 'number') {\n console.error('AG Grid: QuerySelector should be on an attribute');\n return;\n }\n addToObjectProps(classPrototype, 'querySelectors', {\n attributeName: methodOrAttributeName,\n querySelector: selector,\n refSelector: refSelector\n });\n}\n// // think we should take this out, put property bindings on the\n// export function Method(eventName?: string): Function {\n// return methodFunc.bind(this, eventName);\n// }\n//\n// function methodFunc(alias: string, target: Object, methodName: string) {\n// if (alias === null) {\n// console.error(\"AG Grid: EventListener eventName should not be null\");\n// return;\n// }\n//\n// addToObjectProps(target, 'methods', {\n// methodName: methodName,\n// alias: alias\n// });\n// }\nfunction addToObjectProps(target, key, value) {\n // it's an attribute on the class\n var props = getOrCreateProps(target, getFunctionName(target.constructor));\n if (!props[key]) {\n props[key] = [];\n }\n props[key].push(value);\n}\nfunction getOrCreateProps(target, instanceName) {\n if (!target.__agComponentMetaData) {\n target.__agComponentMetaData = {};\n }\n if (!target.__agComponentMetaData[instanceName]) {\n target.__agComponentMetaData[instanceName] = {};\n }\n return target.__agComponentMetaData[instanceName];\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2N = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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// optional floating filter for user provided filters - instead of providing a floating filter,\n// they can provide a getModelAsString() method on the filter instead. this class just displays\n// the string returned from getModelAsString()\nvar ReadOnlyFloatingFilter = /** @class */ (function (_super) {\n __extends$2N(ReadOnlyFloatingFilter, _super);\n function ReadOnlyFloatingFilter() {\n return _super.call(this, /* html */ \"\\n
\\n \\n
\") || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n ReadOnlyFloatingFilter.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n ReadOnlyFloatingFilter.prototype.init = function (params) {\n this.params = params;\n var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eFloatingFilterText\n .setDisabled(true)\n .setInputAriaLabel(displayName + \" \" + translate('ariaFilterInput', 'Filter Input'));\n };\n ReadOnlyFloatingFilter.prototype.onParentModelChanged = function (parentModel) {\n var _this = this;\n if (!parentModel) {\n this.eFloatingFilterText.setValue('');\n return;\n }\n this.params.parentFilterInstance(function (filterInstance) {\n // it would be nice to check if getModelAsString was present before creating this component,\n // however that is not possible, as React Hooks and VueJS don't attached the methods to the Filter until\n // AFTER the filter is created, not allowing inspection before this (we create floating filters as columns\n // are drawn, but the parent filters are only created when needed).\n if (filterInstance.getModelAsString) {\n var modelAsString = filterInstance.getModelAsString(parentModel);\n _this.eFloatingFilterText.setValue(modelAsString);\n }\n });\n };\n __decorate$2o([\n RefSelector('eFloatingFilterText')\n ], ReadOnlyFloatingFilter.prototype, \"eFloatingFilterText\", void 0);\n __decorate$2o([\n Autowired('columnModel')\n ], ReadOnlyFloatingFilter.prototype, \"columnModel\", void 0);\n return ReadOnlyFloatingFilter;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/** Provides sync access to async component. Date component can be lazy created - this class encapsulates\n * this by keeping value locally until DateComp has loaded, then passing DateComp the value. */\nvar DateCompWrapper = /** @class */ (function () {\n function DateCompWrapper(context, userComponentFactory, dateComponentParams, eParent) {\n var _this = this;\n this.alive = true;\n this.context = context;\n this.eParent = eParent;\n var compDetails = userComponentFactory.getDateCompDetails(dateComponentParams);\n var promise = compDetails.newAgStackInstance();\n promise.then(function (dateComp) {\n // because async, check the filter still exists after component comes back\n if (!_this.alive) {\n context.destroyBean(dateComp);\n return;\n }\n _this.dateComp = dateComp;\n if (!dateComp) {\n return;\n }\n eParent.appendChild(dateComp.getGui());\n if (dateComp.afterGuiAttached) {\n dateComp.afterGuiAttached();\n }\n if (_this.tempValue) {\n dateComp.setDate(_this.tempValue);\n }\n if (_this.disabled != null) {\n _this.setDateCompDisabled(_this.disabled);\n }\n });\n }\n DateCompWrapper.prototype.destroy = function () {\n this.alive = false;\n this.dateComp = this.context.destroyBean(this.dateComp);\n };\n DateCompWrapper.prototype.getDate = function () {\n return this.dateComp ? this.dateComp.getDate() : this.tempValue;\n };\n DateCompWrapper.prototype.setDate = function (value) {\n if (this.dateComp) {\n this.dateComp.setDate(value);\n }\n else {\n this.tempValue = value;\n }\n };\n DateCompWrapper.prototype.setDisabled = function (disabled) {\n if (this.dateComp) {\n this.setDateCompDisabled(disabled);\n }\n else {\n this.disabled = disabled;\n }\n };\n DateCompWrapper.prototype.setDisplayed = function (displayed) {\n setDisplayed(this.eParent, displayed);\n };\n DateCompWrapper.prototype.setInputPlaceholder = function (placeholder) {\n if (this.dateComp && this.dateComp.setInputPlaceholder) {\n this.dateComp.setInputPlaceholder(placeholder);\n }\n };\n DateCompWrapper.prototype.setInputAriaLabel = function (label) {\n if (this.dateComp && this.dateComp.setInputAriaLabel) {\n this.dateComp.setInputAriaLabel(label);\n }\n };\n DateCompWrapper.prototype.afterGuiAttached = function (params) {\n if (this.dateComp && typeof this.dateComp.afterGuiAttached === 'function') {\n this.dateComp.afterGuiAttached(params);\n }\n };\n DateCompWrapper.prototype.setDateCompDisabled = function (disabled) {\n if (this.dateComp == null) {\n return;\n }\n if (this.dateComp.setDisabled == null) {\n return;\n }\n this.dateComp.setDisabled(disabled);\n };\n return DateCompWrapper;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __assign$d = (undefined && undefined.__assign) || function () {\n __assign$d = 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$d.apply(this, arguments);\n};\n/* Common logic for options, used by both filters and floating filters. */\nvar OptionsFactory = /** @class */ (function () {\n function OptionsFactory() {\n this.customFilterOptions = {};\n }\n OptionsFactory.prototype.init = function (params, defaultOptions) {\n this.filterOptions = params.filterOptions || defaultOptions;\n this.mapCustomOptions();\n this.selectDefaultItem(params);\n this.checkForDeprecatedParams();\n };\n OptionsFactory.prototype.checkForDeprecatedParams = function () {\n if (this.filterOptions.some(function (opt) { return typeof opt != 'string' && opt.test != null; })) {\n console.warn(\"AG Grid: [IFilterOptionDef] since v26.2.0, test() has been replaced with predicate().\");\n }\n if (this.filterOptions.some(function (opt) { return typeof opt != 'string' && opt.hideFilterInput != null; })) {\n console.warn(\"AG Grid: [IFilterOptionDef] since v26.2.0, useOfHideFilterInput has been replaced with numberOfInputs.\");\n }\n };\n OptionsFactory.prototype.getFilterOptions = function () {\n return this.filterOptions;\n };\n OptionsFactory.prototype.mapCustomOptions = function () {\n var _this = this;\n if (!this.filterOptions) {\n return;\n }\n this.filterOptions.forEach(function (filterOption) {\n if (typeof filterOption === 'string') {\n return;\n }\n var requiredProperties = [['displayKey'], ['displayName'], ['predicate', 'test']];\n var propertyCheck = function (keys) {\n if (!keys.some(function (key) { return filterOption[key] != null; })) {\n console.warn(\"AG Grid: ignoring FilterOptionDef as it doesn't contain one of '\" + keys + \"'\");\n return false;\n }\n return true;\n };\n if (!requiredProperties.every(propertyCheck)) {\n _this.filterOptions = _this.filterOptions.filter(function (v) { return v === filterOption; }) || [];\n return;\n }\n var test = filterOption.test;\n var mutatedFilterOptions = __assign$d({}, filterOption);\n if (test != null && filterOption.predicate == null) {\n mutatedFilterOptions.predicate = function (v, cv) { return test(v[0], cv); };\n delete mutatedFilterOptions.test;\n }\n if (mutatedFilterOptions.hideFilterInput && mutatedFilterOptions.numberOfInputs == null) {\n mutatedFilterOptions.numberOfInputs = 0;\n delete mutatedFilterOptions.hideFilterInput;\n }\n _this.customFilterOptions[filterOption.displayKey] = mutatedFilterOptions;\n });\n };\n OptionsFactory.prototype.selectDefaultItem = function (params) {\n if (params.defaultOption) {\n this.defaultOption = params.defaultOption;\n }\n else if (this.filterOptions.length >= 1) {\n var firstFilterOption = this.filterOptions[0];\n if (typeof firstFilterOption === 'string') {\n this.defaultOption = firstFilterOption;\n }\n else if (firstFilterOption.displayKey) {\n this.defaultOption = firstFilterOption.displayKey;\n }\n else {\n console.warn(\"AG Grid: invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'\");\n }\n }\n else {\n console.warn('AG Grid: no filter options for filter');\n }\n };\n OptionsFactory.prototype.getDefaultOption = function () {\n return this.defaultOption;\n };\n OptionsFactory.prototype.getCustomOption = function (name) {\n return this.customFilterOptions[name];\n };\n return OptionsFactory;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar DEFAULT_FILTER_LOCALE_TEXT = {\n applyFilter: 'Apply',\n clearFilter: 'Clear',\n resetFilter: 'Reset',\n cancelFilter: 'Cancel',\n textFilter: 'Text Filter',\n numberFilter: 'Number Filter',\n dateFilter: 'Date Filter',\n setFilter: 'Set Filter',\n filterOoo: 'Filter...',\n empty: 'Choose One',\n equals: 'Equals',\n notEqual: 'Not equal',\n lessThan: 'Less than',\n greaterThan: 'Greater than',\n inRange: 'In range',\n inRangeStart: 'From',\n inRangeEnd: 'To',\n lessThanOrEqual: 'Less than or equals',\n greaterThanOrEqual: 'Greater than or equals',\n contains: 'Contains',\n notContains: 'Not contains',\n startsWith: 'Starts with',\n endsWith: 'Ends with',\n blank: 'Blank',\n notBlank: 'Not blank',\n andCondition: 'AND',\n orCondition: 'OR',\n dateFormatOoo: 'yyyy-mm-dd',\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2M = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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$c = (undefined && undefined.__assign) || function () {\n __assign$c = 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$c.apply(this, arguments);\n};\nvar __decorate$2n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ManagedFocusFeature = /** @class */ (function (_super) {\n __extends$2M(ManagedFocusFeature, _super);\n function ManagedFocusFeature(eFocusableElement, callbacks) {\n if (callbacks === void 0) { callbacks = {}; }\n var _this = _super.call(this) || this;\n _this.eFocusableElement = eFocusableElement;\n _this.callbacks = callbacks;\n _this.callbacks = __assign$c({ shouldStopEventPropagation: function () { return false; }, onTabKeyDown: function (e) {\n if (e.defaultPrevented) {\n return;\n }\n var nextRoot = _this.focusService.findNextFocusableElement(_this.eFocusableElement, false, e.shiftKey);\n if (!nextRoot) {\n return;\n }\n nextRoot.focus();\n e.preventDefault();\n } }, callbacks);\n return _this;\n }\n ManagedFocusFeature.prototype.postConstruct = function () {\n this.eFocusableElement.classList.add(ManagedFocusFeature.FOCUS_MANAGED_CLASS);\n this.addKeyDownListeners(this.eFocusableElement);\n if (this.callbacks.onFocusIn) {\n this.addManagedListener(this.eFocusableElement, 'focusin', this.callbacks.onFocusIn);\n }\n if (this.callbacks.onFocusOut) {\n this.addManagedListener(this.eFocusableElement, 'focusout', this.callbacks.onFocusOut);\n }\n };\n ManagedFocusFeature.prototype.addKeyDownListeners = function (eGui) {\n var _this = this;\n this.addManagedListener(eGui, 'keydown', function (e) {\n if (e.defaultPrevented || isStopPropagationForAgGrid(e)) {\n return;\n }\n if (_this.callbacks.shouldStopEventPropagation(e)) {\n stopPropagationForAgGrid(e);\n return;\n }\n if (e.key === KeyCode.TAB) {\n _this.callbacks.onTabKeyDown(e);\n }\n else if (_this.callbacks.handleKeyDown) {\n _this.callbacks.handleKeyDown(e);\n }\n });\n };\n ManagedFocusFeature.FOCUS_MANAGED_CLASS = 'ag-focus-managed';\n __decorate$2n([\n Autowired('focusService')\n ], ManagedFocusFeature.prototype, \"focusService\", void 0);\n __decorate$2n([\n PostConstruct\n ], ManagedFocusFeature.prototype, \"postConstruct\", null);\n return ManagedFocusFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2L = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * Contains common logic to all provided filters (apply button, clear button, etc).\n * All the filters that come with AG Grid extend this class. User filters do not\n * extend this class.\n *\n * @param M type of filter-model managed by the concrete sub-class that extends this type\n * @param V type of value managed by the concrete sub-class that extends this type\n */\nvar ProvidedFilter = /** @class */ (function (_super) {\n __extends$2L(ProvidedFilter, _super);\n function ProvidedFilter(filterNameKey) {\n var _this = _super.call(this) || this;\n _this.filterNameKey = filterNameKey;\n _this.applyActive = false;\n _this.hidePopup = null;\n // after the user hits 'apply' the model gets copied to here. this is then the model that we use for\n // all filtering. so if user changes UI but doesn't hit apply, then the UI will be out of sync with this model.\n // this is what we want, as the UI should only become the 'active' filter once it's applied. when apply is\n // inactive, this model will be in sync (following the debounce ms). if the UI is not a valid filter\n // (eg the value is missing so nothing to filter on, or for set filter all checkboxes are checked so filter\n // not active) then this appliedModel will be null/undefined.\n _this.appliedModel = null;\n return _this;\n }\n ProvidedFilter.prototype.postConstruct = function () {\n this.resetTemplate(); // do this first to create the DOM\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n };\n // override\n ProvidedFilter.prototype.handleKeyDown = function (e) { };\n ProvidedFilter.prototype.getFilterTitle = function () {\n return this.translate(this.filterNameKey);\n };\n ProvidedFilter.prototype.isFilterActive = function () {\n // filter is active if we have a valid applied model\n return !!this.appliedModel;\n };\n ProvidedFilter.prototype.resetTemplate = function (paramsMap) {\n var eGui = this.getGui();\n if (eGui) {\n eGui.removeEventListener('submit', this.onFormSubmit);\n }\n var templateString = /* html */ \"\\n
\\n
\\n \" + this.createBodyTemplate() + \"\\n
\\n
\";\n this.setTemplate(templateString, paramsMap);\n eGui = this.getGui();\n if (eGui) {\n eGui.addEventListener('submit', this.onFormSubmit);\n }\n };\n ProvidedFilter.prototype.isReadOnly = function () {\n return !!this.providedFilterParams.readOnly;\n };\n ProvidedFilter.prototype.init = function (params) {\n var _this = this;\n this.setParams(params);\n this.resetUiToDefaults(true).then(function () {\n _this.updateUiVisibility();\n _this.setupOnBtApplyDebounce();\n });\n };\n ProvidedFilter.prototype.setParams = function (params) {\n this.providedFilterParams = params;\n this.applyActive = ProvidedFilter.isUseApplyButton(params);\n this.createButtonPanel();\n };\n ProvidedFilter.prototype.createButtonPanel = function () {\n var _this = this;\n var buttons = this.providedFilterParams.buttons;\n if (!buttons || buttons.length < 1 || this.isReadOnly()) {\n return;\n }\n var eButtonsPanel = document.createElement('div');\n eButtonsPanel.classList.add('ag-filter-apply-panel');\n var addButton = function (type) {\n var text;\n var clickListener;\n switch (type) {\n case 'apply':\n text = _this.translate('applyFilter');\n clickListener = function (e) { return _this.onBtApply(false, false, e); };\n break;\n case 'clear':\n text = _this.translate('clearFilter');\n clickListener = function () { return _this.onBtClear(); };\n break;\n case 'reset':\n text = _this.translate('resetFilter');\n clickListener = function () { return _this.onBtReset(); };\n break;\n case 'cancel':\n text = _this.translate('cancelFilter');\n clickListener = function (e) { _this.onBtCancel(e); };\n break;\n default:\n console.warn('AG Grid: Unknown button type specified');\n return;\n }\n var buttonType = type === 'apply' ? 'submit' : 'button';\n var button = loadTemplate(\n /* html */\n \"\" + text + \"\\n \");\n eButtonsPanel.appendChild(button);\n _this.addManagedListener(button, 'click', clickListener);\n };\n convertToSet(buttons).forEach(function (type) { return addButton(type); });\n this.getGui().appendChild(eButtonsPanel);\n };\n // subclasses can override this to provide alternative debounce defaults\n ProvidedFilter.prototype.getDefaultDebounceMs = function () {\n return 0;\n };\n ProvidedFilter.prototype.setupOnBtApplyDebounce = function () {\n var debounceMs = ProvidedFilter.getDebounceMs(this.providedFilterParams, this.getDefaultDebounceMs());\n this.onBtApplyDebounce = debounce(this.onBtApply.bind(this), debounceMs);\n };\n ProvidedFilter.prototype.getModel = function () {\n return this.appliedModel ? this.appliedModel : null;\n };\n ProvidedFilter.prototype.setModel = function (model) {\n var _this = this;\n var promise = model != null ? this.setModelIntoUi(model) : this.resetUiToDefaults();\n return promise.then(function () {\n _this.updateUiVisibility();\n // we set the model from the GUI, rather than the provided model,\n // so the model is consistent, e.g. handling of null/undefined will be the same,\n // or if model is case insensitive, then casing is removed.\n _this.applyModel();\n });\n };\n ProvidedFilter.prototype.onBtCancel = function (e) {\n var _this = this;\n var currentModel = this.getModel();\n var afterAppliedFunc = function () {\n _this.onUiChanged(false, 'prevent');\n if (_this.providedFilterParams.closeOnApply) {\n _this.close(e);\n }\n };\n if (currentModel != null) {\n this.setModelIntoUi(currentModel).then(afterAppliedFunc);\n }\n else {\n this.resetUiToDefaults().then(afterAppliedFunc);\n }\n };\n ProvidedFilter.prototype.onBtClear = function () {\n var _this = this;\n this.resetUiToDefaults().then(function () { return _this.onUiChanged(); });\n };\n ProvidedFilter.prototype.onBtReset = function () {\n this.onBtClear();\n this.onBtApply();\n };\n /**\n * Applies changes made in the UI to the filter, and returns true if the model has changed.\n */\n ProvidedFilter.prototype.applyModel = function () {\n var newModel = this.getModelFromUi();\n if (!this.isModelValid(newModel)) {\n return false;\n }\n var previousModel = this.appliedModel;\n this.appliedModel = newModel;\n // models can be same if user pasted same content into text field, or maybe just changed the case\n // and it's a case insensitive filter\n return !this.areModelsEqual(previousModel, newModel);\n };\n ProvidedFilter.prototype.isModelValid = function (model) {\n return true;\n };\n ProvidedFilter.prototype.onFormSubmit = function (e) {\n e.preventDefault();\n };\n ProvidedFilter.prototype.onBtApply = function (afterFloatingFilter, afterDataChange, e) {\n if (afterFloatingFilter === void 0) { afterFloatingFilter = false; }\n if (afterDataChange === void 0) { afterDataChange = false; }\n // Prevent form submission\n if (e) {\n e.preventDefault();\n }\n if (this.applyModel()) {\n // the floating filter uses 'afterFloatingFilter' info, so it doesn't refresh after filter changed if change\n // came from floating filter\n this.providedFilterParams.filterChangedCallback({ afterFloatingFilter: afterFloatingFilter, afterDataChange: afterDataChange });\n }\n var closeOnApply = this.providedFilterParams.closeOnApply;\n // only close if an apply button is visible, otherwise we'd be closing every time a change was made!\n if (closeOnApply && this.applyActive && !afterFloatingFilter && !afterDataChange) {\n this.close(e);\n }\n };\n ProvidedFilter.prototype.onNewRowsLoaded = function () {\n };\n ProvidedFilter.prototype.close = function (e) {\n if (!this.hidePopup) {\n return;\n }\n var keyboardEvent = e;\n var key = keyboardEvent && keyboardEvent.key;\n var params;\n if (key === 'Enter' || key === 'Space') {\n params = { keyboardEvent: keyboardEvent };\n }\n this.hidePopup(params);\n this.hidePopup = null;\n };\n /**\n * By default, if the change came from a floating filter it will be applied immediately, otherwise if there is no\n * apply button it will be applied after a debounce, otherwise it will not be applied at all. This behaviour can\n * be adjusted by using the apply parameter.\n */\n ProvidedFilter.prototype.onUiChanged = function (fromFloatingFilter, apply) {\n if (fromFloatingFilter === void 0) { fromFloatingFilter = false; }\n this.updateUiVisibility();\n this.providedFilterParams.filterModifiedCallback();\n if (this.applyActive && !this.isReadOnly) {\n var isValid = this.isModelValid(this.getModelFromUi());\n setDisabled(this.getRefElement('applyFilterButton'), !isValid);\n }\n if ((fromFloatingFilter && !apply) || apply === 'immediately') {\n this.onBtApply(fromFloatingFilter);\n }\n else if ((!this.applyActive && !apply) || apply === 'debounce') {\n this.onBtApplyDebounce();\n }\n };\n ProvidedFilter.prototype.afterGuiAttached = function (params) {\n if (params == null) {\n return;\n }\n this.hidePopup = params.hidePopup;\n };\n // static, as used by floating filter also\n ProvidedFilter.getDebounceMs = function (params, debounceDefault) {\n if (ProvidedFilter.isUseApplyButton(params)) {\n if (params.debounceMs != null) {\n console.warn('AG Grid: debounceMs is ignored when apply button is present');\n }\n return 0;\n }\n return params.debounceMs != null ? params.debounceMs : debounceDefault;\n };\n // static, as used by floating filter also\n ProvidedFilter.isUseApplyButton = function (params) {\n return !!params.buttons && params.buttons.indexOf('apply') >= 0;\n };\n ProvidedFilter.prototype.destroy = function () {\n var eGui = this.getGui();\n if (eGui) {\n eGui.removeEventListener('submit', this.onFormSubmit);\n }\n this.hidePopup = null;\n _super.prototype.destroy.call(this);\n };\n ProvidedFilter.prototype.translate = function (key) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n return translate(key, DEFAULT_FILTER_LOCALE_TEXT[key]);\n };\n ProvidedFilter.prototype.getCellValue = function (rowNode) {\n var _a = this.providedFilterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context;\n return this.providedFilterParams.valueGetter({\n api: api,\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n context: context,\n data: rowNode.data,\n getValue: function (field) { return rowNode.data[field]; },\n node: rowNode,\n });\n };\n __decorate$2m([\n Autowired('rowModel')\n ], ProvidedFilter.prototype, \"rowModel\", void 0);\n __decorate$2m([\n PostConstruct\n ], ProvidedFilter.prototype, \"postConstruct\", null);\n return ProvidedFilter;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2K = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgAbstractLabel = /** @class */ (function (_super) {\n __extends$2K(AgAbstractLabel, _super);\n function AgAbstractLabel(config, template) {\n var _this = _super.call(this, template) || this;\n _this.labelSeparator = '';\n _this.labelAlignment = 'left';\n _this.disabled = false;\n _this.label = '';\n _this.config = config || {};\n return _this;\n }\n AgAbstractLabel.prototype.postConstruct = function () {\n this.addCssClass('ag-labeled');\n this.eLabel.classList.add('ag-label');\n var _a = this.config, labelSeparator = _a.labelSeparator, label = _a.label, labelWidth = _a.labelWidth, labelAlignment = _a.labelAlignment;\n if (labelSeparator != null) {\n this.setLabelSeparator(labelSeparator);\n }\n if (label != null) {\n this.setLabel(label);\n }\n if (labelWidth != null) {\n this.setLabelWidth(labelWidth);\n }\n this.setLabelAlignment(labelAlignment || this.labelAlignment);\n this.refreshLabel();\n };\n AgAbstractLabel.prototype.refreshLabel = function () {\n clearElement(this.eLabel);\n if (typeof this.label === 'string') {\n this.eLabel.innerText = this.label + this.labelSeparator;\n }\n else if (this.label) {\n this.eLabel.appendChild(this.label);\n }\n if (this.label === '') {\n this.eLabel.classList.add('ag-hidden');\n setAriaRole(this.eLabel, 'presentation');\n }\n else {\n this.eLabel.classList.remove('ag-hidden');\n setAriaRole(this.eLabel, null);\n }\n };\n AgAbstractLabel.prototype.setLabelSeparator = function (labelSeparator) {\n if (this.labelSeparator === labelSeparator) {\n return this;\n }\n this.labelSeparator = labelSeparator;\n if (this.label != null) {\n this.refreshLabel();\n }\n return this;\n };\n AgAbstractLabel.prototype.getLabelId = function () {\n this.eLabel.id = this.eLabel.id || \"ag-\" + this.getCompId() + \"-label\";\n return this.eLabel.id;\n };\n AgAbstractLabel.prototype.getLabel = function () {\n return this.label;\n };\n AgAbstractLabel.prototype.setLabel = function (label) {\n if (this.label === label) {\n return this;\n }\n this.label = label;\n this.refreshLabel();\n return this;\n };\n AgAbstractLabel.prototype.setLabelAlignment = function (alignment) {\n var eGui = this.getGui();\n var eGuiClassList = eGui.classList;\n eGuiClassList.toggle('ag-label-align-left', alignment === 'left');\n eGuiClassList.toggle('ag-label-align-right', alignment === 'right');\n eGuiClassList.toggle('ag-label-align-top', alignment === 'top');\n return this;\n };\n AgAbstractLabel.prototype.setLabelWidth = function (width) {\n if (this.label == null) {\n return this;\n }\n setElementWidth(this.eLabel, width);\n return this;\n };\n AgAbstractLabel.prototype.setDisabled = function (disabled) {\n disabled = !!disabled;\n var element = this.getGui();\n setDisabled(element, disabled);\n element.classList.toggle('ag-disabled', disabled);\n this.disabled = disabled;\n return this;\n };\n AgAbstractLabel.prototype.isDisabled = function () {\n return !!this.disabled;\n };\n __decorate$2l([\n PostConstruct\n ], AgAbstractLabel.prototype, \"postConstruct\", null);\n return AgAbstractLabel;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2J = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgAbstractField = /** @class */ (function (_super) {\n __extends$2J(AgAbstractField, _super);\n function AgAbstractField(config, template, className) {\n var _this = _super.call(this, config, template) || this;\n _this.className = className;\n return _this;\n }\n AgAbstractField.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n if (this.className) {\n this.addCssClass(this.className);\n }\n };\n AgAbstractField.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () { return callbackFn(_this.getValue()); });\n return this;\n };\n AgAbstractField.prototype.getWidth = function () {\n return this.getGui().clientWidth;\n };\n AgAbstractField.prototype.setWidth = function (width) {\n setFixedWidth(this.getGui(), width);\n return this;\n };\n AgAbstractField.prototype.getPreviousValue = function () {\n return this.previousValue;\n };\n AgAbstractField.prototype.getValue = function () {\n return this.value;\n };\n AgAbstractField.prototype.setValue = function (value, silent) {\n if (this.value === value) {\n return this;\n }\n this.previousValue = this.value;\n this.value = value;\n if (!silent) {\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n }\n return this;\n };\n AgAbstractField.EVENT_CHANGED = 'valueChange';\n return AgAbstractField;\n}(AgAbstractLabel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2I = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgPickerField = /** @class */ (function (_super) {\n __extends$2I(AgPickerField, _super);\n function AgPickerField(config, className, pickerIcon, ariaRole) {\n var _this = _super.call(this, config, \n /* html */ \"
\\n
\\n
\\n
\\n
\\n
\\n
\", className) || this;\n _this.pickerIcon = pickerIcon;\n _this.isPickerDisplayed = false;\n _this.isDestroyingPicker = false;\n _this.skipClick = false;\n return _this;\n }\n AgPickerField.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n var displayId = this.getCompId() + \"-display\";\n this.eDisplayField.setAttribute('id', displayId);\n setAriaDescribedBy(this.eWrapper, displayId);\n var clickHandler = function () {\n if (_this.skipClick) {\n _this.skipClick = false;\n return;\n }\n if (_this.isDisabled()) {\n return;\n }\n _this.pickerComponent = _this.showPicker();\n };\n var eGui = this.getGui();\n this.addManagedListener(eGui, 'mousedown', function (e) {\n if (!_this.skipClick &&\n _this.pickerComponent &&\n _this.pickerComponent.isAlive() &&\n isVisible(_this.pickerComponent.getGui()) &&\n eGui.contains(e.target)) {\n _this.skipClick = true;\n }\n });\n this.addManagedListener(eGui, 'keydown', function (e) {\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n case KeyCode.ENTER:\n case KeyCode.SPACE:\n clickHandler();\n case KeyCode.ESCAPE:\n if (_this.isPickerDisplayed) {\n e.preventDefault();\n }\n break;\n }\n });\n this.addManagedListener(this.eWrapper, 'click', clickHandler);\n this.addManagedListener(this.eLabel, 'click', clickHandler);\n if (this.pickerIcon) {\n var icon = createIconNoSpan(this.pickerIcon, this.gridOptionsWrapper);\n if (icon) {\n this.eIcon.appendChild(icon);\n }\n }\n };\n AgPickerField.prototype.refreshLabel = function () {\n if (exists(this.getLabel())) {\n setAriaLabelledBy(this.eWrapper, this.getLabelId());\n }\n else {\n this.eWrapper.removeAttribute('aria-labelledby');\n }\n _super.prototype.refreshLabel.call(this);\n };\n AgPickerField.prototype.setAriaLabel = function (label) {\n setAriaLabel(this.eWrapper, label);\n return this;\n };\n AgPickerField.prototype.setInputWidth = function (width) {\n setElementWidth(this.eWrapper, width);\n return this;\n };\n AgPickerField.prototype.getFocusableElement = function () {\n return this.eWrapper;\n };\n __decorate$2k([\n RefSelector('eLabel')\n ], AgPickerField.prototype, \"eLabel\", void 0);\n __decorate$2k([\n RefSelector('eWrapper')\n ], AgPickerField.prototype, \"eWrapper\", void 0);\n __decorate$2k([\n RefSelector('eDisplayField')\n ], AgPickerField.prototype, \"eDisplayField\", void 0);\n __decorate$2k([\n RefSelector('eIcon')\n ], AgPickerField.prototype, \"eIcon\", void 0);\n return AgPickerField;\n}(AgAbstractField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2H = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgList = /** @class */ (function (_super) {\n __extends$2H(AgList, _super);\n function AgList(cssIdentifier) {\n if (cssIdentifier === void 0) { cssIdentifier = 'default'; }\n var _this = _super.call(this, /* html */ \"
\") || this;\n _this.cssIdentifier = cssIdentifier;\n _this.options = [];\n _this.itemEls = [];\n return _this;\n }\n AgList.prototype.init = function () {\n this.addManagedListener(this.getGui(), 'keydown', this.handleKeyDown.bind(this));\n };\n AgList.prototype.handleKeyDown = function (e) {\n var key = e.key;\n switch (key) {\n case KeyCode.ENTER:\n if (!this.highlightedEl) {\n this.setValue(this.getValue());\n }\n else {\n var pos = this.itemEls.indexOf(this.highlightedEl);\n this.setValueByIndex(pos);\n }\n break;\n case KeyCode.DOWN:\n case KeyCode.UP:\n var isDown = key === KeyCode.DOWN;\n var itemToHighlight = void 0;\n e.preventDefault();\n if (!this.highlightedEl) {\n itemToHighlight = this.itemEls[isDown ? 0 : this.itemEls.length - 1];\n }\n else {\n var currentIdx = this.itemEls.indexOf(this.highlightedEl);\n var nextPos = currentIdx + (isDown ? 1 : -1);\n nextPos = Math.min(Math.max(nextPos, 0), this.itemEls.length - 1);\n itemToHighlight = this.itemEls[nextPos];\n }\n this.highlightItem(itemToHighlight);\n break;\n }\n };\n AgList.prototype.addOptions = function (listOptions) {\n var _this = this;\n listOptions.forEach(function (listOption) { return _this.addOption(listOption); });\n return this;\n };\n AgList.prototype.addOption = function (listOption) {\n var value = listOption.value, text = listOption.text;\n var sanitisedText = escapeString(text || value);\n this.options.push({ value: value, text: sanitisedText });\n this.renderOption(value, sanitisedText);\n this.updateIndices();\n return this;\n };\n AgList.prototype.updateIndices = function () {\n var options = this.getGui().querySelectorAll('.ag-list-item');\n options.forEach(function (option, idx) {\n setAriaPosInSet(option, idx + 1);\n setAriaSetSize(option, options.length);\n });\n };\n AgList.prototype.renderOption = function (value, text) {\n var _this = this;\n var itemEl = document.createElement('div');\n setAriaRole(itemEl, 'option');\n itemEl.classList.add('ag-list-item', \"ag-\" + this.cssIdentifier + \"-list-item\");\n itemEl.innerHTML = \"\" + text + \"\";\n itemEl.tabIndex = -1;\n this.itemEls.push(itemEl);\n this.addManagedListener(itemEl, 'mouseover', function () { return _this.highlightItem(itemEl); });\n this.addManagedListener(itemEl, 'mouseleave', function () { return _this.clearHighlighted(); });\n this.addManagedListener(itemEl, 'click', function () { return _this.setValue(value); });\n this.getGui().appendChild(itemEl);\n };\n AgList.prototype.setValue = function (value, silent) {\n if (this.value === value) {\n this.fireItemSelected();\n return this;\n }\n if (value == null) {\n this.reset();\n return this;\n }\n var idx = this.options.findIndex(function (option) { return option.value === value; });\n if (idx !== -1) {\n var option = this.options[idx];\n this.value = option.value;\n this.displayValue = option.text != null ? option.text : option.value;\n this.highlightItem(this.itemEls[idx]);\n if (!silent) {\n this.fireChangeEvent();\n }\n }\n return this;\n };\n AgList.prototype.setValueByIndex = function (idx) {\n return this.setValue(this.options[idx].value);\n };\n AgList.prototype.getValue = function () {\n return this.value;\n };\n AgList.prototype.getDisplayValue = function () {\n return this.displayValue;\n };\n AgList.prototype.refreshHighlighted = function () {\n var _this = this;\n this.clearHighlighted();\n var idx = this.options.findIndex(function (option) { return option.value === _this.value; });\n if (idx !== -1) {\n this.highlightItem(this.itemEls[idx]);\n }\n };\n AgList.prototype.reset = function () {\n this.value = null;\n this.displayValue = null;\n this.clearHighlighted();\n this.fireChangeEvent();\n };\n AgList.prototype.highlightItem = function (el) {\n if (!el.offsetParent) {\n return;\n }\n this.clearHighlighted();\n this.highlightedEl = el;\n this.highlightedEl.classList.add(AgList.ACTIVE_CLASS);\n setAriaSelected(this.highlightedEl, true);\n this.highlightedEl.focus();\n };\n AgList.prototype.clearHighlighted = function () {\n if (!this.highlightedEl || !this.highlightedEl.offsetParent) {\n return;\n }\n this.highlightedEl.classList.remove(AgList.ACTIVE_CLASS);\n setAriaSelected(this.highlightedEl, false);\n this.highlightedEl = null;\n };\n AgList.prototype.fireChangeEvent = function () {\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n this.fireItemSelected();\n };\n AgList.prototype.fireItemSelected = function () {\n this.dispatchEvent({ type: AgList.EVENT_ITEM_SELECTED });\n };\n AgList.EVENT_ITEM_SELECTED = 'selectedItem';\n AgList.ACTIVE_CLASS = 'ag-active-item';\n __decorate$2j([\n PostConstruct\n ], AgList.prototype, \"init\", null);\n return AgList;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2G = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgSelect = /** @class */ (function (_super) {\n __extends$2G(AgSelect, _super);\n function AgSelect(config) {\n return _super.call(this, config, 'ag-select', 'smallDown', 'listbox') || this;\n }\n AgSelect.prototype.init = function () {\n var _this = this;\n this.listComponent = this.createBean(new AgList('select'));\n this.listComponent.setParentComponent(this);\n this.eWrapper.tabIndex = 0;\n this.listComponent.addManagedListener(this.listComponent, AgList.EVENT_ITEM_SELECTED, function () { if (_this.hideList) {\n _this.hideList();\n } });\n this.listComponent.addManagedListener(this.listComponent, AgAbstractField.EVENT_CHANGED, function () {\n _this.setValue(_this.listComponent.getValue(), false, true);\n if (_this.hideList) {\n _this.hideList();\n }\n });\n };\n AgSelect.prototype.showPicker = function () {\n var _this = this;\n var listGui = this.listComponent.getGui();\n var eDocument = this.gridOptionsWrapper.getDocument();\n var destroyMouseWheelFunc = this.addManagedListener(eDocument.body, 'wheel', function (e) {\n if (!listGui.contains(e.target) && _this.hideList) {\n _this.hideList();\n }\n });\n var destroyFocusOutFunc = this.addManagedListener(listGui, 'focusout', function (e) {\n if (!listGui.contains(e.relatedTarget) && _this.hideList) {\n _this.hideList();\n }\n });\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: listGui,\n closeOnEsc: true,\n closedCallback: function () {\n _this.hideList = null;\n _this.isPickerDisplayed = false;\n destroyFocusOutFunc();\n destroyMouseWheelFunc();\n if (_this.isAlive()) {\n setAriaExpanded(_this.eWrapper, false);\n _this.getFocusableElement().focus();\n }\n },\n ariaLabel: translate('ariaLabelSelectField', 'Select Field')\n });\n if (addPopupRes) {\n this.hideList = addPopupRes.hideFunc;\n }\n this.isPickerDisplayed = true;\n setElementWidth(listGui, getAbsoluteWidth(this.eWrapper));\n setAriaExpanded(this.eWrapper, true);\n listGui.style.maxHeight = getInnerHeight(this.popupService.getPopupParent()) + 'px';\n listGui.style.position = 'absolute';\n this.popupService.positionPopupUnderComponent({\n type: 'ag-list',\n eventSource: this.eWrapper,\n ePopup: listGui,\n keepWithinBounds: true\n });\n this.listComponent.refreshHighlighted();\n return this.listComponent;\n };\n AgSelect.prototype.addOptions = function (options) {\n var _this = this;\n options.forEach(function (option) { return _this.addOption(option); });\n return this;\n };\n AgSelect.prototype.addOption = function (option) {\n this.listComponent.addOption(option);\n return this;\n };\n AgSelect.prototype.setValue = function (value, silent, fromPicker) {\n if (this.value === value) {\n return this;\n }\n if (!fromPicker) {\n this.listComponent.setValue(value, true);\n }\n var newValue = this.listComponent.getValue();\n if (newValue === this.getValue()) {\n return this;\n }\n this.eDisplayField.innerHTML = this.listComponent.getDisplayValue();\n return _super.prototype.setValue.call(this, value, silent);\n };\n AgSelect.prototype.destroy = function () {\n if (this.hideList) {\n this.hideList();\n }\n this.destroyBean(this.listComponent);\n _super.prototype.destroy.call(this);\n };\n __decorate$2i([\n Autowired('popupService')\n ], AgSelect.prototype, \"popupService\", void 0);\n __decorate$2i([\n PostConstruct\n ], AgSelect.prototype, \"init\", null);\n return AgSelect;\n}(AgPickerField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2F = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgAbstractInputField = /** @class */ (function (_super) {\n __extends$2F(AgAbstractInputField, _super);\n function AgAbstractInputField(config, className, inputType, displayFieldTag) {\n if (inputType === void 0) { inputType = 'text'; }\n if (displayFieldTag === void 0) { displayFieldTag = 'input'; }\n var _this = _super.call(this, config, /* html */ \"\\n
\\n
\\n
\\n <\" + displayFieldTag + \" ref=\\\"eInput\\\" class=\\\"ag-input-field-input\\\">\\n
\\n
\", className) || this;\n _this.inputType = inputType;\n _this.displayFieldTag = displayFieldTag;\n return _this;\n }\n AgAbstractInputField.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n this.setInputType();\n this.eLabel.classList.add(this.className + \"-label\");\n this.eWrapper.classList.add(this.className + \"-input-wrapper\");\n this.eInput.classList.add(this.className + \"-input\");\n this.addCssClass('ag-input-field');\n this.eInput.id = this.eInput.id || \"ag-\" + this.getCompId() + \"-input\";\n var _a = this.config, width = _a.width, value = _a.value;\n if (width != null) {\n this.setWidth(width);\n }\n if (value != null) {\n this.setValue(value);\n }\n this.addInputListeners();\n };\n AgAbstractInputField.prototype.refreshLabel = function () {\n if (exists(this.getLabel())) {\n setAriaLabelledBy(this.eInput, this.getLabelId());\n }\n else {\n this.eInput.removeAttribute('aria-labelledby');\n }\n _super.prototype.refreshLabel.call(this);\n };\n AgAbstractInputField.prototype.addInputListeners = function () {\n var _this = this;\n this.addManagedListener(this.eInput, 'input', function (e) { return _this.setValue(e.target.value); });\n };\n AgAbstractInputField.prototype.setInputType = function () {\n if (this.displayFieldTag === 'input') {\n this.eInput.setAttribute('type', this.inputType);\n }\n };\n AgAbstractInputField.prototype.getInputElement = function () {\n return this.eInput;\n };\n AgAbstractInputField.prototype.setInputWidth = function (width) {\n setElementWidth(this.eWrapper, width);\n return this;\n };\n AgAbstractInputField.prototype.setInputName = function (name) {\n this.getInputElement().setAttribute('name', name);\n return this;\n };\n AgAbstractInputField.prototype.getFocusableElement = function () {\n return this.eInput;\n };\n AgAbstractInputField.prototype.setMaxLength = function (length) {\n var eInput = this.eInput;\n eInput.maxLength = length;\n return this;\n };\n AgAbstractInputField.prototype.setInputPlaceholder = function (placeholder) {\n addOrRemoveAttribute(this.eInput, 'placeholder', placeholder);\n return this;\n };\n AgAbstractInputField.prototype.setInputAriaLabel = function (label) {\n setAriaLabel(this.eInput, label);\n return this;\n };\n AgAbstractInputField.prototype.setDisabled = function (disabled) {\n setDisabled(this.eInput, disabled);\n return _super.prototype.setDisabled.call(this, disabled);\n };\n __decorate$2h([\n RefSelector('eLabel')\n ], AgAbstractInputField.prototype, \"eLabel\", void 0);\n __decorate$2h([\n RefSelector('eWrapper')\n ], AgAbstractInputField.prototype, \"eWrapper\", void 0);\n __decorate$2h([\n RefSelector('eInput')\n ], AgAbstractInputField.prototype, \"eInput\", void 0);\n return AgAbstractInputField;\n}(AgAbstractField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2E = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ConditionPosition;\n(function (ConditionPosition) {\n ConditionPosition[ConditionPosition[\"One\"] = 0] = \"One\";\n ConditionPosition[ConditionPosition[\"Two\"] = 1] = \"Two\";\n})(ConditionPosition || (ConditionPosition = {}));\n/**\n * Every filter with a dropdown where the user can specify a comparing type against the filter values.\n *\n * @param M type of filter-model managed by the concrete sub-class that extends this type\n * @param V type of value managed by the concrete sub-class that extends this type\n * @param E type of UI element used for collecting user-input\n */\nvar SimpleFilter = /** @class */ (function (_super) {\n __extends$2E(SimpleFilter, _super);\n function SimpleFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SimpleFilter.prototype.getNumberOfInputs = function (type) {\n var customOpts = this.optionsFactory.getCustomOption(type);\n if (customOpts) {\n var numberOfInputs = customOpts.numberOfInputs;\n return numberOfInputs != null ? numberOfInputs : 1;\n }\n var zeroInputTypes = [\n SimpleFilter.EMPTY, SimpleFilter.NOT_BLANK, SimpleFilter.BLANK,\n ];\n if (type && zeroInputTypes.indexOf(type) >= 0) {\n return 0;\n }\n else if (type === SimpleFilter.IN_RANGE) {\n return 2;\n }\n return 1;\n };\n // floating filter calls this when user applies filter from floating filter\n SimpleFilter.prototype.onFloatingFilterChanged = function (type, value) {\n this.setTypeFromFloatingFilter(type);\n this.setValueFromFloatingFilter(value);\n this.onUiChanged(true);\n };\n SimpleFilter.prototype.setTypeFromFloatingFilter = function (type) {\n this.eType1.setValue(type);\n this.eType2.setValue(this.optionsFactory.getDefaultOption());\n (this.isDefaultOperator('AND') ? this.eJoinOperatorAnd : this.eJoinOperatorOr).setValue(true);\n };\n SimpleFilter.prototype.getModelFromUi = function () {\n if (!this.isConditionUiComplete(ConditionPosition.One)) {\n return null;\n }\n if (this.isAllowTwoConditions() && this.isConditionUiComplete(ConditionPosition.Two)) {\n return {\n filterType: this.getFilterType(),\n operator: this.getJoinOperator(),\n condition1: this.createCondition(ConditionPosition.One),\n condition2: this.createCondition(ConditionPosition.Two)\n };\n }\n return this.createCondition(ConditionPosition.One);\n };\n SimpleFilter.prototype.getConditionTypes = function () {\n return [\n this.eType1.getValue(),\n this.eType2.getValue(),\n ];\n };\n SimpleFilter.prototype.getJoinOperator = function () {\n return this.eJoinOperatorOr.getValue() === true ? 'OR' : 'AND';\n };\n SimpleFilter.prototype.areModelsEqual = function (a, b) {\n // both are missing\n if (!a && !b) {\n return true;\n }\n // one is missing, other present\n if ((!a && b) || (a && !b)) {\n return false;\n }\n // one is combined, the other is not\n var aIsSimple = !a.operator;\n var bIsSimple = !b.operator;\n var oneSimpleOneCombined = (!aIsSimple && bIsSimple) || (aIsSimple && !bIsSimple);\n if (oneSimpleOneCombined) {\n return false;\n }\n var res;\n // otherwise both present, so compare\n if (aIsSimple) {\n var aSimple = a;\n var bSimple = b;\n res = this.areSimpleModelsEqual(aSimple, bSimple);\n }\n else {\n var aCombined = a;\n var bCombined = b;\n res = aCombined.operator === bCombined.operator\n && this.areSimpleModelsEqual(aCombined.condition1, bCombined.condition1)\n && this.areSimpleModelsEqual(aCombined.condition2, bCombined.condition2);\n }\n return res;\n };\n SimpleFilter.prototype.setModelIntoUi = function (model) {\n var isCombined = model.operator;\n if (isCombined) {\n var combinedModel = model;\n var orChecked = combinedModel.operator === 'OR';\n this.eJoinOperatorAnd.setValue(!orChecked);\n this.eJoinOperatorOr.setValue(orChecked);\n this.eType1.setValue(combinedModel.condition1.type);\n this.eType2.setValue(combinedModel.condition2.type);\n this.setConditionIntoUi(combinedModel.condition1, ConditionPosition.One);\n this.setConditionIntoUi(combinedModel.condition2, ConditionPosition.Two);\n }\n else {\n var simpleModel = model;\n this.eJoinOperatorAnd.setValue(this.isDefaultOperator('AND'));\n this.eJoinOperatorOr.setValue(this.isDefaultOperator('OR'));\n this.eType1.setValue(simpleModel.type);\n this.eType2.setValue(this.optionsFactory.getDefaultOption());\n this.setConditionIntoUi(simpleModel, ConditionPosition.One);\n this.setConditionIntoUi(null, ConditionPosition.Two);\n }\n return AgPromise.resolve();\n };\n SimpleFilter.prototype.doesFilterPass = function (params) {\n var _this = this;\n var model = this.getModel();\n if (model == null) {\n return true;\n }\n var operator = model.operator;\n var models = [];\n if (operator) {\n var combinedModel = model;\n models.push(combinedModel.condition1, combinedModel.condition2);\n }\n else {\n models.push(model);\n }\n var combineFunction = operator && operator === 'OR' ? 'some' : 'every';\n return models[combineFunction](function (m) { return _this.individualConditionPasses(params, m); });\n };\n SimpleFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params, this.getDefaultFilterOptions());\n this.allowTwoConditions = !params.suppressAndOrCondition;\n this.alwaysShowBothConditions = !!params.alwaysShowBothConditions;\n this.defaultJoinOperator = this.getDefaultJoinOperator(params.defaultJoinOperator);\n this.filterPlaceholder = params.filterPlaceholder;\n this.putOptionsIntoDropdown();\n this.addChangedListeners();\n };\n SimpleFilter.prototype.getDefaultJoinOperator = function (defaultJoinOperator) {\n return includes(['AND', 'OR'], defaultJoinOperator) ? defaultJoinOperator : 'AND';\n };\n SimpleFilter.prototype.putOptionsIntoDropdown = function () {\n var _this = this;\n var filterOptions = this.optionsFactory.getFilterOptions();\n var eTypes = [this.eType1, this.eType2];\n // Add specified options to all condition drop-downs.\n filterOptions.forEach(function (option) {\n var listOption = typeof option === 'string' ?\n _this.createBoilerplateListOption(option) :\n _this.createCustomListOption(option);\n eTypes.forEach(function (eType) { return eType.addOption(listOption); });\n });\n // Make drop-downs read-only if there is only one option.\n eTypes.forEach(function (eType) { return eType.setDisabled(filterOptions.length <= 1); });\n };\n SimpleFilter.prototype.createBoilerplateListOption = function (option) {\n return { value: option, text: this.translate(option) };\n };\n SimpleFilter.prototype.createCustomListOption = function (option) {\n var displayKey = option.displayKey;\n var customOption = this.optionsFactory.getCustomOption(option.displayKey);\n return {\n value: displayKey,\n text: customOption ?\n this.gridOptionsWrapper.getLocaleTextFunc()(customOption.displayKey, customOption.displayName) :\n this.translate(displayKey),\n };\n };\n SimpleFilter.prototype.isAllowTwoConditions = function () {\n return this.allowTwoConditions;\n };\n SimpleFilter.prototype.createBodyTemplate = function () {\n return /* html */ \"\\n \\n \" + this.createValueTemplate(ConditionPosition.One) + \"\\n
\\n \\n \\n
\\n \\n \" + this.createValueTemplate(ConditionPosition.Two);\n };\n SimpleFilter.prototype.getCssIdentifier = function () {\n return 'simple-filter';\n };\n SimpleFilter.prototype.updateUiVisibility = function () {\n var _this = this;\n var elementConditionGroups = [\n [this.eType1],\n [this.eType2, this.eJoinOperatorPanel, this.eJoinOperatorAnd, this.eJoinOperatorOr],\n ];\n var elementBodies = [this.eCondition1Body, this.eCondition2Body];\n elementConditionGroups.forEach(function (group, position) {\n var visible = _this.isConditionVisible(position);\n var disabled = _this.isConditionDisabled(position);\n group.forEach(function (element) {\n if (element instanceof AgAbstractInputField || element instanceof AgSelect) {\n element.setDisabled(disabled);\n element.setDisplayed(visible);\n }\n else {\n setDisabled(element, disabled);\n setDisplayed(element, visible);\n }\n });\n });\n elementBodies.forEach(function (element, index) {\n setDisplayed(element, _this.isConditionBodyVisible(index));\n });\n this.forEachInput(function (element, index, position, numberOfInputs) {\n _this.setElementDisplayed(element, index < numberOfInputs);\n _this.setElementDisabled(element, _this.isConditionDisabled(position));\n });\n this.resetPlaceholder();\n };\n SimpleFilter.prototype.afterGuiAttached = function (params) {\n _super.prototype.afterGuiAttached.call(this, params);\n this.resetPlaceholder();\n if (!params || (!params.suppressFocus && !this.isReadOnly())) {\n var firstInput = this.getInputs()[0][0];\n if (!firstInput) {\n return;\n }\n if (firstInput instanceof AgAbstractInputField) {\n firstInput.getInputElement().focus();\n }\n }\n };\n SimpleFilter.prototype.getPlaceholderText = function (defaultPlaceholder, position) {\n var placeholder = this.translate(defaultPlaceholder);\n if (isFunction(this.filterPlaceholder)) {\n var filterPlaceholderFn = this.filterPlaceholder;\n var filterOptionKey = (position === 0 ? this.eType1.getValue() : this.eType2.getValue());\n var filterOption = this.translate(filterOptionKey);\n placeholder = filterPlaceholderFn({\n filterOptionKey: filterOptionKey,\n filterOption: filterOption,\n placeholder: placeholder\n });\n }\n else if (typeof this.filterPlaceholder === 'string') {\n placeholder = this.filterPlaceholder;\n }\n return placeholder;\n };\n // allow sub-classes to reset HTML placeholders after UI update.\n SimpleFilter.prototype.resetPlaceholder = function () {\n var _this = this;\n var globalTranslate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.forEachInput(function (element, index, position, numberOfInputs) {\n if (!(element instanceof AgAbstractInputField)) {\n return;\n }\n var placeholder = index === 0 && numberOfInputs > 1 ? 'inRangeStart' :\n index === 0 ? 'filterOoo' :\n 'inRangeEnd';\n var ariaLabel = index === 0 && numberOfInputs > 1 ? globalTranslate('ariaFilterFromValue', 'Filter from value') :\n index === 0 ? globalTranslate('ariaFilterValue', 'Filter Value') :\n globalTranslate('ariaFilterToValue', 'Filter to Value');\n element.setInputPlaceholder(_this.getPlaceholderText(placeholder, position));\n element.setInputAriaLabel(ariaLabel);\n });\n };\n SimpleFilter.prototype.setElementValue = function (element, value, silent) {\n if (element instanceof AgAbstractInputField) {\n element.setValue(value != null ? String(value) : null, silent);\n }\n };\n SimpleFilter.prototype.setElementDisplayed = function (element, displayed) {\n if (element instanceof Component) {\n setDisplayed(element.getGui(), displayed);\n }\n };\n SimpleFilter.prototype.setElementDisabled = function (element, disabled) {\n if (element instanceof Component) {\n setDisabled(element.getGui(), disabled);\n }\n };\n SimpleFilter.prototype.attachElementOnChange = function (element, listener) {\n if (element instanceof AgAbstractInputField) {\n element.onValueChange(listener);\n }\n };\n SimpleFilter.prototype.forEachInput = function (cb) {\n var _this = this;\n var inputs = this.getInputs();\n this.getConditionTypes().forEach(function (type, position) {\n var numberOfInputs = _this.getNumberOfInputs(type);\n for (var index = 0; index < inputs[position].length; index++) {\n var input = inputs[position][index];\n if (input != null) {\n cb(input, index, position, numberOfInputs);\n }\n }\n });\n };\n SimpleFilter.prototype.isConditionVisible = function (position) {\n if (position === 0) {\n return true;\n } // Position 0 should always be visible.\n if (!this.allowTwoConditions) {\n return false;\n } // Short-circuit if no tail conditions.\n if (this.isReadOnly()) {\n // Only display a condition when read-only if the condition is complete.\n return this.isConditionUiComplete(position);\n }\n if (this.alwaysShowBothConditions) {\n return true;\n }\n // Only display a 2nd or later condition when the previous condition is complete.\n return this.isConditionUiComplete(position - 1);\n };\n SimpleFilter.prototype.isConditionDisabled = function (position) {\n if (this.isReadOnly()) {\n return true;\n } // Read-only mode trumps everything.\n if (!this.isConditionVisible(position)) {\n return true;\n } // Invisible implies disabled.\n if (position === 0) {\n return false;\n } // Position 0 should typically be editable.\n // Only allow editing of a 2nd or later condition if the previous condition is complete.\n return !this.isConditionUiComplete(position - 1);\n };\n SimpleFilter.prototype.isConditionBodyVisible = function (position) {\n if (!this.isConditionVisible(position)) {\n return false;\n }\n // Check that the condition needs inputs.\n var type = this.getConditionTypes()[position];\n var numberOfInputs = this.getNumberOfInputs(type);\n return numberOfInputs > 0;\n };\n // returns true if the UI represents a working filter, eg all parts are filled out.\n // eg if text filter and textfield blank then returns false.\n SimpleFilter.prototype.isConditionUiComplete = function (position) {\n var type = this.getConditionTypes()[position];\n if (type === SimpleFilter.EMPTY) {\n return false;\n }\n if (this.getValues(position).some(function (v) { return v == null; })) {\n return false;\n }\n return true;\n };\n SimpleFilter.prototype.resetUiToDefaults = function (silent) {\n var _this = this;\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var filteringLabel = translate('ariaFilteringOperator', 'Filtering operator');\n var uniqueGroupId = 'ag-simple-filter-and-or-' + this.getCompId();\n var defaultOption = this.optionsFactory.getDefaultOption();\n this.eType1\n .setValue(defaultOption, silent)\n .setAriaLabel(filteringLabel)\n .setDisabled(this.isReadOnly());\n this.eType2\n .setValue(this.optionsFactory.getDefaultOption(), silent)\n .setAriaLabel(filteringLabel)\n .setDisabled(this.isReadOnly());\n this.eJoinOperatorAnd\n .setValue(this.isDefaultOperator('AND'), silent)\n .setName(uniqueGroupId)\n .setLabel(this.translate('andCondition'))\n .setDisabled(this.isReadOnly());\n this.eJoinOperatorOr\n .setValue(this.isDefaultOperator('OR'), silent)\n .setName(uniqueGroupId)\n .setLabel(this.translate('orCondition'))\n .setDisabled(this.isReadOnly());\n this.forEachInput(function (element) {\n _this.setElementValue(element, null, silent);\n _this.setElementDisabled(element, _this.isReadOnly());\n });\n this.resetPlaceholder();\n return AgPromise.resolve();\n };\n // puts model values into the UI\n SimpleFilter.prototype.setConditionIntoUi = function (model, position) {\n var _this = this;\n var values = this.mapValuesFromModel(model);\n this.forEachInput(function (element, index, elPosition, _) {\n if (elPosition !== position) {\n return;\n }\n _this.setElementValue(element, values[index] != null ? values[index] : null);\n });\n };\n // after floating filter changes, this sets the 'value' section. this is implemented by the base class\n // (as that's where value is controlled), the 'type' part from the floating filter is dealt with in this class.\n SimpleFilter.prototype.setValueFromFloatingFilter = function (value) {\n var _this = this;\n this.forEachInput(function (element, index, position, _) {\n _this.setElementValue(element, index === 0 && position === 0 ? value : null);\n });\n };\n SimpleFilter.prototype.isDefaultOperator = function (operator) {\n return operator === this.defaultJoinOperator;\n };\n SimpleFilter.prototype.addChangedListeners = function () {\n var _this = this;\n if (this.isReadOnly()) {\n return;\n }\n var listener = function () { return _this.onUiChanged(); };\n this.eType1.onValueChange(listener);\n this.eType2.onValueChange(listener);\n this.eJoinOperatorOr.onValueChange(listener);\n this.eJoinOperatorAnd.onValueChange(listener);\n this.forEachInput(function (element) {\n _this.attachElementOnChange(element, listener);\n });\n };\n /** returns true if the row passes the said condition */\n SimpleFilter.prototype.individualConditionPasses = function (params, filterModel) {\n var cellValue = this.getCellValue(params.node);\n var values = this.mapValuesFromModel(filterModel);\n var customFilterOption = this.optionsFactory.getCustomOption(filterModel.type);\n var customFilterResult = this.evaluateCustomFilter(customFilterOption, values, cellValue);\n if (customFilterResult != null) {\n return customFilterResult;\n }\n if (cellValue == null) {\n return this.evaluateNullValue(filterModel.type);\n }\n return this.evaluateNonNullValue(values, cellValue, filterModel, params);\n };\n SimpleFilter.prototype.evaluateCustomFilter = function (customFilterOption, values, cellValue) {\n if (customFilterOption == null) {\n return;\n }\n var predicate = customFilterOption.predicate;\n // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n if (predicate != null && !values.some(function (v) { return v == null; })) {\n return predicate(values, cellValue);\n }\n // No custom filter invocation, indicate that to the caller.\n return;\n };\n SimpleFilter.prototype.isBlank = function (cellValue) {\n return cellValue == null ||\n (typeof cellValue === 'string' && cellValue.trim().length === 0);\n };\n SimpleFilter.EMPTY = 'empty';\n SimpleFilter.BLANK = 'blank';\n SimpleFilter.NOT_BLANK = 'notBlank';\n SimpleFilter.EQUALS = 'equals';\n SimpleFilter.NOT_EQUAL = 'notEqual';\n SimpleFilter.LESS_THAN = 'lessThan';\n SimpleFilter.LESS_THAN_OR_EQUAL = 'lessThanOrEqual';\n SimpleFilter.GREATER_THAN = 'greaterThan';\n SimpleFilter.GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';\n SimpleFilter.IN_RANGE = 'inRange';\n SimpleFilter.CONTAINS = 'contains';\n SimpleFilter.NOT_CONTAINS = 'notContains';\n SimpleFilter.STARTS_WITH = 'startsWith';\n SimpleFilter.ENDS_WITH = 'endsWith';\n __decorate$2g([\n RefSelector('eOptions1')\n ], SimpleFilter.prototype, \"eType1\", void 0);\n __decorate$2g([\n RefSelector('eOptions2')\n ], SimpleFilter.prototype, \"eType2\", void 0);\n __decorate$2g([\n RefSelector('eJoinOperatorPanel')\n ], SimpleFilter.prototype, \"eJoinOperatorPanel\", void 0);\n __decorate$2g([\n RefSelector('eJoinOperatorAnd')\n ], SimpleFilter.prototype, \"eJoinOperatorAnd\", void 0);\n __decorate$2g([\n RefSelector('eJoinOperatorOr')\n ], SimpleFilter.prototype, \"eJoinOperatorOr\", void 0);\n __decorate$2g([\n RefSelector('eCondition1Body')\n ], SimpleFilter.prototype, \"eCondition1Body\", void 0);\n __decorate$2g([\n RefSelector('eCondition2Body')\n ], SimpleFilter.prototype, \"eCondition2Body\", void 0);\n return SimpleFilter;\n}(ProvidedFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2D = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar ScalarFilter = /** @class */ (function (_super) {\n __extends$2D(ScalarFilter, _super);\n function ScalarFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ScalarFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.scalarFilterParams = params;\n };\n ScalarFilter.prototype.evaluateNullValue = function (filterType) {\n switch (filterType) {\n case ScalarFilter.EQUALS:\n case ScalarFilter.NOT_EQUAL:\n if (this.scalarFilterParams.includeBlanksInEquals) {\n return true;\n }\n break;\n case ScalarFilter.GREATER_THAN:\n case ScalarFilter.GREATER_THAN_OR_EQUAL:\n if (this.scalarFilterParams.includeBlanksInGreaterThan) {\n return true;\n }\n break;\n case ScalarFilter.LESS_THAN:\n case ScalarFilter.LESS_THAN_OR_EQUAL:\n if (this.scalarFilterParams.includeBlanksInLessThan) {\n return true;\n }\n break;\n case ScalarFilter.IN_RANGE:\n if (this.scalarFilterParams.includeBlanksInRange) {\n return true;\n }\n break;\n case ScalarFilter.BLANK:\n return true;\n case ScalarFilter.NOT_BLANK:\n return false;\n }\n return false;\n };\n ScalarFilter.prototype.evaluateNonNullValue = function (values, cellValue, filterModel) {\n var comparator = this.comparator();\n var compareResult = values[0] != null ? comparator(values[0], cellValue) : 0;\n switch (filterModel.type) {\n case ScalarFilter.EQUALS:\n return compareResult === 0;\n case ScalarFilter.NOT_EQUAL:\n return compareResult !== 0;\n case ScalarFilter.GREATER_THAN:\n return compareResult > 0;\n case ScalarFilter.GREATER_THAN_OR_EQUAL:\n return compareResult >= 0;\n case ScalarFilter.LESS_THAN:\n return compareResult < 0;\n case ScalarFilter.LESS_THAN_OR_EQUAL:\n return compareResult <= 0;\n case ScalarFilter.IN_RANGE: {\n var compareToResult = comparator(values[1], cellValue);\n return this.scalarFilterParams.inRangeInclusive ?\n compareResult >= 0 && compareToResult <= 0 :\n compareResult > 0 && compareToResult < 0;\n }\n case ScalarFilter.BLANK:\n return this.isBlank(cellValue);\n case ScalarFilter.NOT_BLANK:\n return !this.isBlank(cellValue);\n default:\n console.warn('AG Grid: Unexpected type of filter \"' + filterModel.type + '\", it looks like the filter was configured with incorrect Filter Options');\n return true;\n }\n };\n return ScalarFilter;\n}(SimpleFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2C = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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$b = (undefined && undefined.__assign) || function () {\n __assign$b = 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$b.apply(this, arguments);\n};\nvar __decorate$2f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DEFAULT_MIN_YEAR = 1000;\nvar DEFAULT_MAX_YEAR = Infinity;\nvar DateFilter = /** @class */ (function (_super) {\n __extends$2C(DateFilter, _super);\n function DateFilter() {\n var _this = _super.call(this, 'dateFilter') || this;\n _this.minValidYear = DEFAULT_MIN_YEAR;\n _this.maxValidYear = DEFAULT_MAX_YEAR;\n return _this;\n }\n DateFilter.prototype.afterGuiAttached = function (params) {\n _super.prototype.afterGuiAttached.call(this, params);\n this.dateCondition1FromComp.afterGuiAttached(params);\n };\n DateFilter.prototype.mapValuesFromModel = function (filterModel) {\n // unlike the other filters, we do two things here:\n // 1) allow for different attribute names (same as done for other filters) (eg the 'from' and 'to'\n // are in different locations in Date and Number filter models)\n // 2) convert the type (because Date filter uses Dates, however model is 'string')\n //\n // NOTE: The conversion of string to date also removes the timezone - i.e. when user picks\n // a date from the UI, it will have timezone info in it. This is lost when creating\n // the model. When we recreate the date again here, it's without a timezone.\n var _a = filterModel || {}, dateFrom = _a.dateFrom, dateTo = _a.dateTo, type = _a.type;\n return [\n dateFrom && parseDateTimeFromString(dateFrom) || null,\n dateTo && parseDateTimeFromString(dateTo) || null,\n ].slice(0, this.getNumberOfInputs(type));\n };\n DateFilter.prototype.comparator = function () {\n return this.dateFilterParams.comparator ? this.dateFilterParams.comparator : this.defaultComparator.bind(this);\n };\n DateFilter.prototype.defaultComparator = function (filterDate, cellValue) {\n // The default comparator assumes that the cellValue is a date\n var cellAsDate = cellValue;\n if (cellValue == null || cellAsDate < filterDate) {\n return -1;\n }\n if (cellAsDate > filterDate) {\n return 1;\n }\n return 0;\n };\n DateFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.dateFilterParams = params;\n var yearParser = function (param, fallback) {\n if (params[param] != null) {\n if (!isNaN(params[param])) {\n return params[param] == null ? fallback : Number(params[param]);\n }\n else {\n console.warn(\"AG Grid: DateFilter \" + param + \" is not a number\");\n }\n }\n return fallback;\n };\n this.minValidYear = yearParser('minValidYear', DEFAULT_MIN_YEAR);\n this.maxValidYear = yearParser('maxValidYear', DEFAULT_MAX_YEAR);\n if (this.minValidYear > this.maxValidYear) {\n console.warn(\"AG Grid: DateFilter minValidYear should be <= maxValidYear\");\n }\n this.createDateComponents();\n };\n DateFilter.prototype.createDateComponents = function () {\n var _this = this;\n var createDateCompWrapper = function (element) {\n return new DateCompWrapper(_this.getContext(), _this.userComponentFactory, {\n onDateChanged: function () { return _this.onUiChanged(); },\n filterParams: _this.dateFilterParams\n }, element);\n };\n this.dateCondition1FromComp = createDateCompWrapper(this.eCondition1PanelFrom);\n this.dateCondition1ToComp = createDateCompWrapper(this.eCondition1PanelTo);\n this.dateCondition2FromComp = createDateCompWrapper(this.eCondition2PanelFrom);\n this.dateCondition2ToComp = createDateCompWrapper(this.eCondition2PanelTo);\n this.addDestroyFunc(function () {\n _this.forEachInput(function (element) { return element.destroy(); });\n });\n };\n DateFilter.prototype.setElementValue = function (element, value, silent) {\n element.setDate(value);\n };\n DateFilter.prototype.setElementDisplayed = function (element, displayed) {\n element.setDisplayed(displayed);\n };\n DateFilter.prototype.setElementDisabled = function (element, disabled) {\n element.setDisabled(disabled);\n };\n DateFilter.prototype.getDefaultFilterOptions = function () {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n };\n DateFilter.prototype.createValueTemplate = function (position) {\n var pos = position === ConditionPosition.One ? '1' : '2';\n return /* html */ \"\\n
\\n
\\n
\\n
\";\n };\n DateFilter.prototype.isConditionUiComplete = function (position) {\n var _this = this;\n if (!_super.prototype.isConditionUiComplete.call(this, position)) {\n return false;\n }\n var isValidDate = function (value) { return value != null\n && value.getUTCFullYear() >= _this.minValidYear\n && value.getUTCFullYear() <= _this.maxValidYear; };\n var valid = true;\n this.forEachInput(function (element, index, elPosition, numberOfInputs) {\n if (elPosition !== position || !valid || index >= numberOfInputs) {\n return;\n }\n valid = valid && isValidDate(element.getDate());\n });\n return valid;\n };\n DateFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.dateFrom === bSimple.dateFrom\n && aSimple.dateTo === bSimple.dateTo\n && aSimple.type === bSimple.type;\n };\n DateFilter.prototype.getFilterType = function () {\n return 'date';\n };\n DateFilter.prototype.createCondition = function (position) {\n var type = this.getConditionTypes()[position];\n var model = {};\n var values = this.getValues(position);\n if (values.length > 0) {\n model.dateFrom = serialiseDate(values[0]);\n }\n if (values.length > 1) {\n model.dateTo = serialiseDate(values[1]);\n }\n return __assign$b({ dateFrom: null, dateTo: null, filterType: this.getFilterType(), type: type }, model);\n };\n DateFilter.prototype.resetPlaceholder = function () {\n var globalTranslate = this.gridOptionsWrapper.getLocaleTextFunc();\n var placeholder = this.translate('dateFormatOoo');\n var ariaLabel = globalTranslate('ariaFilterValue', 'Filter Value');\n this.forEachInput(function (element) {\n element.setInputPlaceholder(placeholder);\n element.setInputAriaLabel(ariaLabel);\n });\n };\n DateFilter.prototype.getInputs = function () {\n return [\n [this.dateCondition1FromComp, this.dateCondition1ToComp],\n [this.dateCondition2FromComp, this.dateCondition2ToComp],\n ];\n };\n DateFilter.prototype.getValues = function (position) {\n var result = [];\n this.forEachInput(function (element, index, elPosition, numberOfInputs) {\n if (position === elPosition && index < numberOfInputs) {\n result.push(element.getDate());\n }\n });\n return result;\n };\n DateFilter.DEFAULT_FILTER_OPTIONS = [\n ScalarFilter.EQUALS,\n ScalarFilter.GREATER_THAN,\n ScalarFilter.LESS_THAN,\n ScalarFilter.NOT_EQUAL,\n ScalarFilter.IN_RANGE,\n ScalarFilter.BLANK,\n ScalarFilter.NOT_BLANK,\n ];\n __decorate$2f([\n RefSelector('eCondition1PanelFrom')\n ], DateFilter.prototype, \"eCondition1PanelFrom\", void 0);\n __decorate$2f([\n RefSelector('eCondition1PanelTo')\n ], DateFilter.prototype, \"eCondition1PanelTo\", void 0);\n __decorate$2f([\n RefSelector('eCondition2PanelFrom')\n ], DateFilter.prototype, \"eCondition2PanelFrom\", void 0);\n __decorate$2f([\n RefSelector('eCondition2PanelTo')\n ], DateFilter.prototype, \"eCondition2PanelTo\", void 0);\n __decorate$2f([\n Autowired('userComponentFactory')\n ], DateFilter.prototype, \"userComponentFactory\", void 0);\n return DateFilter;\n}(ScalarFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2B = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar SimpleFloatingFilter = /** @class */ (function (_super) {\n __extends$2B(SimpleFloatingFilter, _super);\n function SimpleFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SimpleFloatingFilter.prototype.getDefaultDebounceMs = function () {\n return 0;\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n SimpleFloatingFilter.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n // used by:\n // 1) NumberFloatingFilter & TextFloatingFilter: Always, for both when editable and read only.\n // 2) DateFloatingFilter: Only when read only (as we show text rather than a date picker when read only)\n SimpleFloatingFilter.prototype.getTextFromModel = function (model) {\n if (!model) {\n return null;\n }\n var isCombined = model.operator != null;\n if (isCombined) {\n var combinedModel = model;\n var _a = combinedModel || {}, condition1 = _a.condition1, condition2 = _a.condition2;\n var customOption1 = this.getTextFromModel(condition1);\n var customOption2 = this.getTextFromModel(condition2);\n return [\n customOption1,\n combinedModel.operator,\n customOption2,\n ].join(' ');\n }\n else if (model.type === SimpleFilter.BLANK || model.type === SimpleFilter.NOT_BLANK) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n return translate(model.type, model.type);\n }\n else {\n var condition = model;\n var customOption = this.optionsFactory.getCustomOption(condition.type);\n // For custom filter options we display the Name of the filter instead\n // of displaying the `from` value, as it wouldn't be relevant\n var _b = customOption || {}, displayKey = _b.displayKey, displayName = _b.displayName, numberOfInputs = _b.numberOfInputs;\n if (displayKey && displayName && numberOfInputs === 0) {\n this.gridOptionsWrapper.getLocaleTextFunc()(displayKey, displayName);\n return displayName;\n }\n return this.conditionToString(condition, customOption);\n }\n };\n SimpleFloatingFilter.prototype.isEventFromFloatingFilter = function (event) {\n return event && event.afterFloatingFilter;\n };\n SimpleFloatingFilter.prototype.getLastType = function () {\n return this.lastType;\n };\n SimpleFloatingFilter.prototype.isReadOnly = function () {\n return this.readOnly;\n };\n SimpleFloatingFilter.prototype.setLastTypeFromModel = function (model) {\n // if no model provided by the parent filter use default\n if (!model) {\n this.lastType = this.optionsFactory.getDefaultOption();\n return;\n }\n var isCombined = model.operator;\n var condition;\n if (isCombined) {\n var combinedModel = model;\n condition = combinedModel.condition1;\n }\n else {\n condition = model;\n }\n this.lastType = condition.type;\n };\n SimpleFloatingFilter.prototype.canWeEditAfterModelFromParentFilter = function (model) {\n if (!model) {\n // if no model, then we can edit as long as the lastType is something we can edit, as this\n // is the type we will provide to the parent filter if the user decides to use the floating filter.\n return this.isTypeEditable(this.lastType);\n }\n // never allow editing if the filter is combined (ie has two parts)\n var isCombined = model.operator;\n if (isCombined) {\n return false;\n }\n var simpleModel = model;\n return this.isTypeEditable(simpleModel.type);\n };\n SimpleFloatingFilter.prototype.init = function (params) {\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params.filterParams, this.getDefaultFilterOptions());\n this.lastType = this.optionsFactory.getDefaultOption();\n // readOnly is a property of IProvidedFilterParams - we need to find a better (type-safe)\n // way to support reading this in the future.\n this.readOnly = !!params.filterParams.readOnly;\n // we are editable if:\n // 1) there is a type (user has configured filter wrong if not type)\n // AND\n // 2) the default type is not 'in range'\n var editable = this.isTypeEditable(this.lastType);\n this.setEditable(editable);\n };\n SimpleFloatingFilter.prototype.doesFilterHaveSingleInput = function (filterType) {\n var customFilterOption = this.optionsFactory.getCustomOption(filterType);\n var numberOfInputs = (customFilterOption || {}).numberOfInputs;\n return numberOfInputs == null || numberOfInputs == 1;\n };\n SimpleFloatingFilter.prototype.isTypeEditable = function (type) {\n var uneditableTypes = [\n SimpleFilter.IN_RANGE, SimpleFilter.EMPTY, SimpleFilter.BLANK, SimpleFilter.NOT_BLANK,\n ];\n return !!type &&\n !this.isReadOnly() &&\n this.doesFilterHaveSingleInput(type) &&\n uneditableTypes.indexOf(type) < 0;\n };\n return SimpleFloatingFilter;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2A = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DateFloatingFilter = /** @class */ (function (_super) {\n __extends$2A(DateFloatingFilter, _super);\n function DateFloatingFilter() {\n return _super.call(this, /* html */ \"\\n
\\n \\n
\\n
\") || this;\n }\n DateFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n };\n DateFloatingFilter.prototype.conditionToString = function (condition, options) {\n var type = condition.type;\n var numberOfInputs = (options || {}).numberOfInputs;\n var isRange = type == SimpleFilter.IN_RANGE || numberOfInputs === 2;\n var dateFrom = parseDateTimeFromString(condition.dateFrom);\n var dateTo = parseDateTimeFromString(condition.dateTo);\n var format = this.filterParams.inRangeFloatingFilterDateFormat;\n if (isRange) {\n var formattedFrom = dateFrom !== null ? dateToFormattedString(dateFrom, format) : 'null';\n var formattedTo = dateTo !== null ? dateToFormattedString(dateTo, format) : 'null';\n return formattedFrom + \"-\" + formattedTo;\n }\n if (dateFrom != null) {\n return dateToFormattedString(dateFrom, format);\n }\n // cater for when the type doesn't need a value\n return \"\" + type;\n };\n DateFloatingFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.params = params;\n this.filterParams = params.filterParams;\n this.createDateComponent();\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eReadOnlyText\n .setDisabled(true)\n .setInputAriaLabel(translate('ariaDateFilterInput', 'Date Filter Input'));\n };\n DateFloatingFilter.prototype.setEditable = function (editable) {\n setDisplayed(this.eDateWrapper, editable);\n setDisplayed(this.eReadOnlyText.getGui(), !editable);\n };\n DateFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n // We don't want to update the floating filter if the floating filter caused the change,\n // because the UI is already in sync. if we didn't do this, the UI would behave strangely\n // as it would be updating as the user is typing\n if (this.isEventFromFloatingFilter(event)) {\n return;\n }\n _super.prototype.setLastTypeFromModel.call(this, model);\n var allowEditing = !this.isReadOnly() &&\n this.canWeEditAfterModelFromParentFilter(model);\n this.setEditable(allowEditing);\n if (allowEditing) {\n if (model) {\n var dateModel = model;\n this.dateComp.setDate(parseDateTimeFromString(dateModel.dateFrom));\n }\n else {\n this.dateComp.setDate(null);\n }\n this.eReadOnlyText.setValue('');\n }\n else {\n this.eReadOnlyText.setValue(this.getTextFromModel(model));\n this.dateComp.setDate(null);\n }\n };\n DateFloatingFilter.prototype.onDateChanged = function () {\n var _this = this;\n var filterValueDate = this.dateComp.getDate();\n var filterValueText = serialiseDate(filterValueDate);\n this.params.parentFilterInstance(function (filterInstance) {\n if (filterInstance) {\n var date = parseDateTimeFromString(filterValueText);\n filterInstance.onFloatingFilterChanged(_this.getLastType() || null, date);\n }\n });\n };\n DateFloatingFilter.prototype.createDateComponent = function () {\n var _this = this;\n var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n var dateComponentParams = {\n onDateChanged: debounce(this.onDateChanged.bind(this), debounceMs),\n filterParams: this.params.column.getColDef().filterParams\n };\n this.dateComp = new DateCompWrapper(this.getContext(), this.userComponentFactory, dateComponentParams, this.eDateWrapper);\n this.addDestroyFunc(function () { return _this.dateComp.destroy(); });\n };\n __decorate$2e([\n Autowired('userComponentFactory')\n ], DateFloatingFilter.prototype, \"userComponentFactory\", void 0);\n __decorate$2e([\n RefSelector('eReadOnlyText')\n ], DateFloatingFilter.prototype, \"eReadOnlyText\", void 0);\n __decorate$2e([\n RefSelector('eDateWrapper')\n ], DateFloatingFilter.prototype, \"eDateWrapper\", void 0);\n return DateFloatingFilter;\n}(SimpleFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DefaultDateComponent = /** @class */ (function (_super) {\n __extends$2z(DefaultDateComponent, _super);\n function DefaultDateComponent() {\n return _super.call(this, /* html */ \"\\n
\\n \\n
\") || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n DefaultDateComponent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n DefaultDateComponent.prototype.init = function (params) {\n var _this = this;\n var eDocument = this.gridOptionsWrapper.getDocument();\n var inputElement = this.eDateInput.getInputElement();\n if (this.shouldUseBrowserDatePicker(params)) {\n inputElement.type = 'date';\n }\n // ensures that the input element is focussed when a clear button is clicked\n this.addManagedListener(inputElement, 'mousedown', function () {\n if (_this.eDateInput.isDisabled()) {\n return;\n }\n inputElement.focus();\n });\n this.addManagedListener(inputElement, 'input', function (e) {\n if (e.target !== eDocument.activeElement) {\n return;\n }\n if (_this.eDateInput.isDisabled()) {\n return;\n }\n params.onDateChanged();\n });\n var _a = params.filterParams || {}, minValidYear = _a.minValidYear, maxValidYear = _a.maxValidYear;\n if (minValidYear) {\n inputElement.min = minValidYear + \"-01-01\";\n }\n if (maxValidYear) {\n inputElement.max = maxValidYear + \"-12-31\";\n }\n };\n DefaultDateComponent.prototype.getDate = function () {\n return parseDateTimeFromString(this.eDateInput.getValue());\n };\n DefaultDateComponent.prototype.setDate = function (date) {\n this.eDateInput.setValue(serialiseDate(date, false));\n };\n DefaultDateComponent.prototype.setInputPlaceholder = function (placeholder) {\n this.eDateInput.setInputPlaceholder(placeholder);\n };\n DefaultDateComponent.prototype.setDisabled = function (disabled) {\n this.eDateInput.setDisabled(disabled);\n };\n DefaultDateComponent.prototype.afterGuiAttached = function (params) {\n if (!params || !params.suppressFocus) {\n this.eDateInput.getInputElement().focus();\n }\n };\n DefaultDateComponent.prototype.shouldUseBrowserDatePicker = function (params) {\n if (params.filterParams && params.filterParams.browserDatePicker != null) {\n return params.filterParams.browserDatePicker;\n }\n return isBrowserChrome() || isBrowserFirefox();\n };\n __decorate$2d([\n RefSelector('eDateInput')\n ], DefaultDateComponent.prototype, \"eDateInput\", void 0);\n return DefaultDateComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar NumberFilter = /** @class */ (function (_super) {\n __extends$2y(NumberFilter, _super);\n function NumberFilter() {\n return _super.call(this, 'numberFilter') || this;\n }\n NumberFilter.prototype.mapValuesFromModel = function (filterModel) {\n var _a = filterModel || {}, filter = _a.filter, filterTo = _a.filterTo, type = _a.type;\n return [\n filter == null ? null : filter,\n filterTo == null ? null : filterTo,\n ].slice(0, this.getNumberOfInputs(type));\n };\n NumberFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n NumberFilter.prototype.comparator = function () {\n return function (left, right) {\n if (left === right) {\n return 0;\n }\n return left < right ? 1 : -1;\n };\n };\n NumberFilter.prototype.setParams = function (params) {\n this.numberFilterParams = params;\n var allowedCharPattern = this.getAllowedCharPattern();\n if (allowedCharPattern) {\n var config = { allowedCharPattern: allowedCharPattern };\n this.resetTemplate({\n 'eValue-index0-1': config,\n 'eValue-index1-1': config,\n 'eValue-index0-2': config,\n 'eValue-index1-2': config,\n });\n }\n _super.prototype.setParams.call(this, params);\n };\n NumberFilter.prototype.getDefaultFilterOptions = function () {\n return NumberFilter.DEFAULT_FILTER_OPTIONS;\n };\n NumberFilter.prototype.createValueTemplate = function (position) {\n var pos = position === ConditionPosition.One ? '1' : '2';\n var allowedCharPattern = this.getAllowedCharPattern();\n var agElementTag = allowedCharPattern ? 'ag-input-text-field' : 'ag-input-number-field';\n return /* html */ \"\\n
\\n <\" + agElementTag + \" class=\\\"ag-filter-from ag-filter-filter\\\" ref=\\\"eValue-index0-\" + pos + \"\\\">\\n <\" + agElementTag + \" class=\\\"ag-filter-to ag-filter-filter\\\" ref=\\\"eValue-index1-\" + pos + \"\\\">\\n
\";\n };\n NumberFilter.prototype.getValues = function (position) {\n var _this = this;\n var result = [];\n this.forEachInput(function (element, index, elPosition, numberOfInputs) {\n if (position === elPosition && index < numberOfInputs) {\n result.push(_this.stringToFloat(element.getValue()));\n }\n });\n return result;\n };\n NumberFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.filter === bSimple.filter\n && aSimple.filterTo === bSimple.filterTo\n && aSimple.type === bSimple.type;\n };\n NumberFilter.prototype.getFilterType = function () {\n return 'number';\n };\n NumberFilter.prototype.stringToFloat = function (value) {\n if (typeof value === 'number') {\n return value;\n }\n var filterText = makeNull(value);\n if (filterText != null && filterText.trim() === '') {\n filterText = null;\n }\n if (this.numberFilterParams.numberParser) {\n return this.numberFilterParams.numberParser(filterText);\n }\n return filterText == null || filterText.trim() === '-' ? null : parseFloat(filterText);\n };\n NumberFilter.prototype.createCondition = function (position) {\n var type = this.getConditionTypes()[position];\n var model = {\n filterType: this.getFilterType(),\n type: type\n };\n var values = this.getValues(position);\n if (values.length > 0) {\n model.filter = values[0];\n }\n if (values.length > 1) {\n model.filterTo = values[1];\n }\n return model;\n };\n NumberFilter.prototype.getInputs = function () {\n return [\n [this.eValueFrom1, this.eValueTo1],\n [this.eValueFrom2, this.eValueTo2],\n ];\n };\n NumberFilter.prototype.getAllowedCharPattern = function () {\n var allowedCharPattern = (this.numberFilterParams || {}).allowedCharPattern;\n if (allowedCharPattern) {\n return allowedCharPattern;\n }\n if (!isBrowserChrome() && !isBrowserEdge()) {\n // only Chrome and Edge support the HTML5 number field, so for other browsers we provide an equivalent\n // constraint instead\n return '\\\\d\\\\-\\\\.';\n }\n return null;\n };\n NumberFilter.DEFAULT_FILTER_OPTIONS = [\n ScalarFilter.EQUALS,\n ScalarFilter.NOT_EQUAL,\n ScalarFilter.LESS_THAN,\n ScalarFilter.LESS_THAN_OR_EQUAL,\n ScalarFilter.GREATER_THAN,\n ScalarFilter.GREATER_THAN_OR_EQUAL,\n ScalarFilter.IN_RANGE,\n ScalarFilter.BLANK,\n ScalarFilter.NOT_BLANK,\n ];\n __decorate$2c([\n RefSelector('eValue-index0-1')\n ], NumberFilter.prototype, \"eValueFrom1\", void 0);\n __decorate$2c([\n RefSelector('eValue-index1-1')\n ], NumberFilter.prototype, \"eValueTo1\", void 0);\n __decorate$2c([\n RefSelector('eValue-index0-2')\n ], NumberFilter.prototype, \"eValueFrom2\", void 0);\n __decorate$2c([\n RefSelector('eValue-index1-2')\n ], NumberFilter.prototype, \"eValueTo2\", void 0);\n return NumberFilter;\n}(ScalarFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2x = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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$a = (undefined && undefined.__assign) || function () {\n __assign$a = 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$a.apply(this, arguments);\n};\nvar __decorate$2b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TextFilter = /** @class */ (function (_super) {\n __extends$2x(TextFilter, _super);\n function TextFilter() {\n return _super.call(this, 'textFilter') || this;\n }\n TextFilter.trimInput = function (value) {\n var trimmedInput = value && value.trim();\n // trim the input, unless it is all whitespace (this is consistent with Excel behaviour)\n return trimmedInput === '' ? value : trimmedInput;\n };\n TextFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n TextFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.textFilterParams = params;\n this.matcher = this.getTextMatcher();\n this.formatter = this.textFilterParams.textFormatter ||\n (this.textFilterParams.caseSensitive ? TextFilter.DEFAULT_FORMATTER : TextFilter.DEFAULT_LOWERCASE_FORMATTER);\n };\n TextFilter.prototype.getTextMatcher = function () {\n var legacyComparator = this.textFilterParams.textCustomComparator;\n if (legacyComparator) {\n _.doOnce(function () { return console.warn('AG Grid - textCustomComparator is deprecated, use textMatcher instead.'); }, 'textCustomComparator.deprecated');\n return function (_a) {\n var filterOption = _a.filterOption, value = _a.value, filterText = _a.filterText;\n return legacyComparator(filterOption, value, filterText);\n };\n }\n return this.textFilterParams.textMatcher || TextFilter.DEFAULT_MATCHER;\n };\n TextFilter.prototype.createCondition = function (position) {\n var type = this.getConditionTypes()[position];\n var model = {\n filterType: this.getFilterType(),\n type: type,\n };\n var values = this.getValues(position);\n if (values.length > 0) {\n model.filter = values[0];\n }\n if (values.length > 1) {\n model.filterTo = values[1];\n }\n return model;\n };\n TextFilter.prototype.getFilterType = function () {\n return 'text';\n };\n TextFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.filter === bSimple.filter &&\n aSimple.filterTo === bSimple.filterTo &&\n aSimple.type === bSimple.type;\n };\n TextFilter.prototype.getInputs = function () {\n return [\n [this.eValueFrom1, this.eValueTo1],\n [this.eValueFrom2, this.eValueTo2],\n ];\n };\n TextFilter.prototype.getValues = function (position) {\n var _this = this;\n var result = [];\n this.forEachInput(function (element, index, elPosition, numberOfInputs) {\n if (position === elPosition && index < numberOfInputs) {\n var value = makeNull(element.getValue());\n var cleanValue = (_this.textFilterParams.trimInput ? TextFilter.trimInput(value) : value) || null;\n result.push(cleanValue);\n element.setValue(cleanValue, true); // ensure clean value is visible\n }\n });\n return result;\n };\n TextFilter.prototype.getDefaultFilterOptions = function () {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n };\n TextFilter.prototype.createValueTemplate = function (position) {\n var pos = position === ConditionPosition.One ? '1' : '2';\n return /* html */ \"\\n
\\n \\n \\n
\";\n };\n TextFilter.prototype.mapValuesFromModel = function (filterModel) {\n var _a = filterModel || {}, filter = _a.filter, filterTo = _a.filterTo, type = _a.type;\n return [\n filter || null,\n filterTo || null,\n ].slice(0, this.getNumberOfInputs(type));\n };\n TextFilter.prototype.evaluateNullValue = function (filterType) {\n var filterTypesAllowNulls = [\n SimpleFilter.NOT_EQUAL, SimpleFilter.NOT_CONTAINS, SimpleFilter.BLANK,\n ];\n return filterType ? filterTypesAllowNulls.indexOf(filterType) >= 0 : false;\n };\n TextFilter.prototype.evaluateNonNullValue = function (values, cellValue, filterModel, params) {\n var _this = this;\n var formattedValues = values.map(function (v) { return _this.formatter(v); }) || [];\n var cellValueFormatted = this.formatter(cellValue);\n var _a = this.textFilterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context, textFormatter = _a.textFormatter;\n if (filterModel.type === SimpleFilter.BLANK) {\n return this.isBlank(cellValue);\n }\n else if (filterModel.type === SimpleFilter.NOT_BLANK) {\n return !this.isBlank(cellValue);\n }\n var matcherParams = {\n api: api,\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n context: context,\n node: params.node,\n data: params.data,\n filterOption: filterModel.type,\n value: cellValueFormatted,\n textFormatter: textFormatter,\n };\n return formattedValues.some(function (v) { return _this.matcher(__assign$a(__assign$a({}, matcherParams), { filterText: v })); });\n };\n TextFilter.DEFAULT_FILTER_OPTIONS = [\n SimpleFilter.CONTAINS,\n SimpleFilter.NOT_CONTAINS,\n SimpleFilter.EQUALS,\n SimpleFilter.NOT_EQUAL,\n SimpleFilter.STARTS_WITH,\n SimpleFilter.ENDS_WITH,\n SimpleFilter.BLANK,\n SimpleFilter.NOT_BLANK,\n ];\n TextFilter.DEFAULT_FORMATTER = function (from) { return from; };\n TextFilter.DEFAULT_LOWERCASE_FORMATTER = function (from) { return from == null ? null : from.toString().toLowerCase(); };\n TextFilter.DEFAULT_MATCHER = function (_a) {\n var filterOption = _a.filterOption, value = _a.value, filterText = _a.filterText;\n if (filterText == null) {\n return false;\n }\n switch (filterOption) {\n case TextFilter.CONTAINS:\n return value.indexOf(filterText) >= 0;\n case TextFilter.NOT_CONTAINS:\n return value.indexOf(filterText) < 0;\n case TextFilter.EQUALS:\n return value === filterText;\n case TextFilter.NOT_EQUAL:\n return value != filterText;\n case TextFilter.STARTS_WITH:\n return value.indexOf(filterText) === 0;\n case TextFilter.ENDS_WITH:\n var index = value.lastIndexOf(filterText);\n return index >= 0 && index === (value.length - filterText.length);\n default:\n return false;\n }\n };\n __decorate$2b([\n RefSelector('eValue-index0-1')\n ], TextFilter.prototype, \"eValueFrom1\", void 0);\n __decorate$2b([\n RefSelector('eValue-index1-1')\n ], TextFilter.prototype, \"eValueTo1\", void 0);\n __decorate$2b([\n RefSelector('eValue-index0-2')\n ], TextFilter.prototype, \"eValueFrom2\", void 0);\n __decorate$2b([\n RefSelector('eValue-index1-2')\n ], TextFilter.prototype, \"eValueTo2\", void 0);\n return TextFilter;\n}(SimpleFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2w = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TextInputFloatingFilter = /** @class */ (function (_super) {\n __extends$2w(TextInputFloatingFilter, _super);\n function TextInputFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextInputFloatingFilter.prototype.postConstruct = function () {\n this.resetTemplate();\n };\n TextInputFloatingFilter.prototype.resetTemplate = function (paramsMap) {\n this.setTemplate(/* html */ \"\\n
\\n \\n
\\n \", paramsMap);\n };\n TextInputFloatingFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n TextInputFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n if (this.isEventFromFloatingFilter(event)) {\n // if the floating filter triggered the change, it is already in sync\n return;\n }\n this.setLastTypeFromModel(model);\n this.eFloatingFilterInput.setValue(this.getTextFromModel(model));\n this.setEditable(this.canWeEditAfterModelFromParentFilter(model));\n };\n TextInputFloatingFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.params = params;\n this.applyActive = ProvidedFilter.isUseApplyButton(this.params.filterParams);\n var allowedCharPattern = this.params.filterParams.allowedCharPattern;\n if (allowedCharPattern != null) {\n this.resetTemplate({ eFloatingFilterInput: { allowedCharPattern: allowedCharPattern } });\n }\n if (!this.isReadOnly()) {\n var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n var toDebounce = debounce(this.syncUpWithParentFilter.bind(this), debounceMs);\n var filterGui = this.eFloatingFilterInput.getGui();\n this.addManagedListener(filterGui, 'input', toDebounce);\n this.addManagedListener(filterGui, 'keypress', toDebounce);\n this.addManagedListener(filterGui, 'keydown', toDebounce);\n }\n var columnDef = params.column.getDefinition();\n if (this.isReadOnly() || (columnDef.filterParams &&\n columnDef.filterParams.filterOptions &&\n columnDef.filterParams.filterOptions.length === 1 &&\n columnDef.filterParams.filterOptions[0] === 'inRange')) {\n this.eFloatingFilterInput.setDisabled(true);\n }\n var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eFloatingFilterInput.setInputAriaLabel(displayName + \" \" + translate('ariaFilterInput', 'Filter Input'));\n };\n TextInputFloatingFilter.prototype.syncUpWithParentFilter = function (e) {\n var _this = this;\n var enterKeyPressed = e.key === KeyCode.ENTER;\n if (this.applyActive && !enterKeyPressed) {\n return;\n }\n var value = this.eFloatingFilterInput.getValue();\n if (this.params.filterParams.trimInput) {\n value = TextFilter.trimInput(value);\n this.eFloatingFilterInput.setValue(value, true); // ensure visible value is trimmed\n }\n this.params.parentFilterInstance(function (filterInstance) {\n if (filterInstance) {\n filterInstance.onFloatingFilterChanged(_this.getLastType() || null, value || null);\n }\n });\n };\n TextInputFloatingFilter.prototype.conditionToString = function (condition, options) {\n var numberOfInputs = (options || {}).numberOfInputs;\n var isRange = condition.type == SimpleFilter.IN_RANGE || numberOfInputs === 2;\n if (isRange) {\n return condition.filter + \"-\" + condition.filterTo;\n }\n // cater for when the type doesn't need a value\n if (condition.filter != null) {\n return \"\" + condition.filter;\n }\n return \"\" + condition.type;\n };\n TextInputFloatingFilter.prototype.setEditable = function (editable) {\n this.eFloatingFilterInput.setDisabled(!editable);\n };\n __decorate$2a([\n Autowired('columnModel')\n ], TextInputFloatingFilter.prototype, \"columnModel\", void 0);\n __decorate$2a([\n RefSelector('eFloatingFilterInput')\n ], TextInputFloatingFilter.prototype, \"eFloatingFilterInput\", void 0);\n __decorate$2a([\n PostConstruct\n ], TextInputFloatingFilter.prototype, \"postConstruct\", null);\n return TextInputFloatingFilter;\n}(SimpleFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2v = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar NumberFloatingFilter = /** @class */ (function (_super) {\n __extends$2v(NumberFloatingFilter, _super);\n function NumberFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumberFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return NumberFilter.DEFAULT_FILTER_OPTIONS;\n };\n return NumberFloatingFilter;\n}(TextInputFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2u = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TextFloatingFilter = /** @class */ (function (_super) {\n __extends$2u(TextFloatingFilter, _super);\n function TextFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n };\n return TextFloatingFilter;\n}(TextInputFloatingFilter));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar TouchListener = /** @class */ (function () {\n function TouchListener(eElement, preventMouseClick) {\n var _this = this;\n if (preventMouseClick === void 0) { preventMouseClick = false; }\n this.destroyFuncs = [];\n this.touching = false;\n this.eventService = new EventService();\n this.eElement = eElement;\n this.preventMouseClick = preventMouseClick;\n var startListener = this.onTouchStart.bind(this);\n var moveListener = this.onTouchMove.bind(this);\n var endListener = this.onTouchEnd.bind(this);\n this.eElement.addEventListener(\"touchstart\", startListener, { passive: true });\n this.eElement.addEventListener(\"touchmove\", moveListener, { passive: true });\n // we set passive=false, as we want to prevent default on this event\n this.eElement.addEventListener(\"touchend\", endListener, { passive: false });\n this.destroyFuncs.push(function () {\n _this.eElement.removeEventListener(\"touchstart\", startListener, { passive: true });\n _this.eElement.removeEventListener(\"touchmove\", moveListener, { passive: true });\n _this.eElement.removeEventListener(\"touchend\", endListener, { passive: false });\n });\n }\n TouchListener.prototype.getActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n var matches = touchList[i].identifier === this.touchStart.identifier;\n if (matches) {\n return touchList[i];\n }\n }\n return null;\n };\n TouchListener.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n TouchListener.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n TouchListener.prototype.onTouchStart = function (touchEvent) {\n var _this = this;\n // only looking at one touch point at any time\n if (this.touching) {\n return;\n }\n this.touchStart = touchEvent.touches[0];\n this.touching = true;\n this.moved = false;\n var touchStartCopy = this.touchStart;\n window.setTimeout(function () {\n var touchesMatch = _this.touchStart === touchStartCopy;\n if (_this.touching && touchesMatch && !_this.moved) {\n _this.moved = true;\n var event_1 = {\n type: TouchListener.EVENT_LONG_TAP,\n touchStart: _this.touchStart,\n touchEvent: touchEvent\n };\n _this.eventService.dispatchEvent(event_1);\n }\n }, 500);\n };\n TouchListener.prototype.onTouchMove = function (touchEvent) {\n if (!this.touching) {\n return;\n }\n var touch = this.getActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n var eventIsFarAway = !areEventsNear(touch, this.touchStart, 4);\n if (eventIsFarAway) {\n this.moved = true;\n }\n };\n TouchListener.prototype.onTouchEnd = function (touchEvent) {\n if (!this.touching) {\n return;\n }\n if (!this.moved) {\n var event_2 = {\n type: TouchListener.EVENT_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event_2);\n this.checkForDoubleTap();\n }\n // stops the tap from also been processed as a mouse click\n if (this.preventMouseClick && touchEvent.cancelable) {\n touchEvent.preventDefault();\n }\n this.touching = false;\n };\n TouchListener.prototype.checkForDoubleTap = function () {\n var now = new Date().getTime();\n if (this.lastTapTime && this.lastTapTime > 0) {\n // if previous tap, see if duration is short enough to be considered double tap\n var interval = now - this.lastTapTime;\n if (interval > TouchListener.DOUBLE_TAP_MILLIS) {\n // dispatch double tap event\n var event_3 = {\n type: TouchListener.EVENT_DOUBLE_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event_3);\n // this stops a tripple tap ending up as two double taps\n this.lastTapTime = null;\n }\n else {\n this.lastTapTime = now;\n }\n }\n else {\n this.lastTapTime = now;\n }\n };\n TouchListener.prototype.destroy = function () {\n this.destroyFuncs.forEach(function (func) { return func(); });\n };\n TouchListener.EVENT_TAP = \"tap\";\n TouchListener.EVENT_DOUBLE_TAP = \"doubleTap\";\n TouchListener.EVENT_LONG_TAP = \"longTap\";\n TouchListener.DOUBLE_TAP_MILLIS = 500;\n return TouchListener;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2t = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$29 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortIndicatorComp = /** @class */ (function (_super) {\n __extends$2t(SortIndicatorComp, _super);\n function SortIndicatorComp(skipTemplate) {\n var _this = _super.call(this) || this;\n if (!skipTemplate) {\n _this.setTemplate(SortIndicatorComp.TEMPLATE);\n }\n return _this;\n }\n SortIndicatorComp.prototype.attachCustomElements = function (eSortOrder, eSortAsc, eSortDesc, eSortMixed, eSortNone) {\n this.eSortOrder = eSortOrder;\n this.eSortAsc = eSortAsc;\n this.eSortDesc = eSortDesc;\n this.eSortMixed = eSortMixed;\n this.eSortNone = eSortNone;\n };\n SortIndicatorComp.prototype.setupSort = function (column, suppressOrder) {\n var _this = this;\n if (suppressOrder === void 0) { suppressOrder = false; }\n this.column = column;\n this.suppressOrder = suppressOrder;\n this.setupMultiSortIndicator();\n var canSort = !!this.column.getColDef().sortable;\n if (!canSort) {\n return;\n }\n this.addInIcon('sortAscending', this.eSortAsc, column);\n this.addInIcon('sortDescending', this.eSortDesc, column);\n this.addInIcon('sortUnSort', this.eSortNone, column);\n // Watch global events, as row group columns can effect their display column.\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, function () { return _this.onSortChanged(); });\n // when grouping changes so can sort indexes and icons\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.onSortChanged(); });\n this.onSortChanged();\n };\n SortIndicatorComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n if (eIcon) {\n eParent.appendChild(eIcon);\n }\n };\n SortIndicatorComp.prototype.onSortChanged = function () {\n this.updateIcons();\n if (!this.suppressOrder) {\n this.updateSortOrder();\n }\n };\n SortIndicatorComp.prototype.updateIcons = function () {\n var sortDirection = this.sortController.getDisplaySortForColumn(this.column);\n if (this.eSortAsc) {\n var isAscending = sortDirection === 'asc';\n this.eSortAsc.classList.toggle('ag-hidden', !isAscending);\n }\n if (this.eSortDesc) {\n var isDescending = sortDirection === 'desc';\n this.eSortDesc.classList.toggle('ag-hidden', !isDescending);\n }\n if (this.eSortNone) {\n var alwaysHideNoSort = !this.column.getColDef().unSortIcon && !this.gridOptionsWrapper.isUnSortIcon();\n var isNone = sortDirection === null || sortDirection === undefined;\n this.eSortNone.classList.toggle('ag-hidden', (alwaysHideNoSort || !isNone));\n }\n };\n SortIndicatorComp.prototype.setupMultiSortIndicator = function () {\n var _this = this;\n this.addInIcon('sortUnSort', this.eSortMixed, this.column);\n var isColumnShowingRowGroup = this.column.getColDef().showRowGroup;\n var areGroupsCoupled = this.gridOptionsWrapper.isColumnsSortingCoupledToGroup();\n if (areGroupsCoupled && isColumnShowingRowGroup) {\n // Watch global events, as row group columns can effect their display column.\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, function () { return _this.updateMultiSortIndicator(); });\n // when grouping changes so can sort indexes and icons\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.updateMultiSortIndicator(); });\n this.updateMultiSortIndicator();\n }\n };\n SortIndicatorComp.prototype.updateMultiSortIndicator = function () {\n if (this.eSortMixed) {\n var isMixedSort = this.sortController.getDisplaySortForColumn(this.column) === 'mixed';\n this.eSortMixed.classList.toggle('ag-hidden', !isMixedSort);\n }\n };\n // we listen here for global sort events, NOT column sort events, as we want to do this\n // when sorting has been set on all column (if we listened just for our col (where we\n // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.\n SortIndicatorComp.prototype.updateSortOrder = function () {\n var _this = this;\n var _a;\n if (!this.eSortOrder) {\n return;\n }\n var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();\n var indexThisCol = (_a = this.sortController.getDisplaySortIndexForColumn(this.column), (_a !== null && _a !== void 0 ? _a : -1));\n var moreThanOneColSorting = allColumnsWithSorting.some(function (col) { var _a; return _a = _this.sortController.getDisplaySortIndexForColumn(col), (_a !== null && _a !== void 0 ? _a : -1 >= 1); });\n var showIndex = indexThisCol >= 0 && moreThanOneColSorting;\n setDisplayed(this.eSortOrder, showIndex);\n if (indexThisCol >= 0) {\n this.eSortOrder.innerHTML = (indexThisCol + 1).toString();\n }\n else {\n clearElement(this.eSortOrder);\n }\n };\n SortIndicatorComp.TEMPLATE = \"\\n \\n \\n \\n \\n \\n \";\n __decorate$29([\n RefSelector('eSortOrder')\n ], SortIndicatorComp.prototype, \"eSortOrder\", void 0);\n __decorate$29([\n RefSelector('eSortAsc')\n ], SortIndicatorComp.prototype, \"eSortAsc\", void 0);\n __decorate$29([\n RefSelector('eSortDesc')\n ], SortIndicatorComp.prototype, \"eSortDesc\", void 0);\n __decorate$29([\n RefSelector('eSortMixed')\n ], SortIndicatorComp.prototype, \"eSortMixed\", void 0);\n __decorate$29([\n RefSelector('eSortNone')\n ], SortIndicatorComp.prototype, \"eSortNone\", void 0);\n __decorate$29([\n Autowired('columnModel')\n ], SortIndicatorComp.prototype, \"columnModel\", void 0);\n __decorate$29([\n Autowired('sortController')\n ], SortIndicatorComp.prototype, \"sortController\", void 0);\n return SortIndicatorComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2s = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$28 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderComp = /** @class */ (function (_super) {\n __extends$2s(HeaderComp, _super);\n function HeaderComp() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastMovingChanged = 0;\n return _this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n HeaderComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n HeaderComp.prototype.refresh = function (params) {\n this.params = params;\n // if template changed, then recreate the whole comp, the code required to manage\n // a changing template is to difficult for what it's worth.\n if (this.workOutTemplate() != this.currentTemplate) {\n return false;\n }\n if (this.workOutShowMenu() != this.currentShowMenu) {\n return false;\n }\n if (this.workOutSort() != this.currentSort) {\n return false;\n }\n this.setDisplayName(params);\n return true;\n };\n HeaderComp.prototype.workOutTemplate = function () {\n var template = firstExistingValue(this.params.template, HeaderComp.TEMPLATE);\n // take account of any newlines & whitespace before/after the actual template\n template = template && template.trim ? template.trim() : template;\n return template;\n };\n HeaderComp.prototype.init = function (params) {\n this.params = params;\n this.currentTemplate = this.workOutTemplate();\n this.setTemplate(this.currentTemplate);\n this.setupTap();\n this.setupIcons(params.column);\n this.setMenu();\n this.setupSort();\n this.setupFilterIcon();\n this.setDisplayName(params);\n };\n HeaderComp.prototype.setDisplayName = function (params) {\n if (this.currentDisplayName != params.displayName) {\n this.currentDisplayName = params.displayName;\n var displayNameSanitised = escapeString(this.currentDisplayName);\n if (this.eText) {\n this.eText.innerHTML = displayNameSanitised;\n }\n }\n };\n HeaderComp.prototype.setupIcons = function (column) {\n this.addInIcon('menu', this.eMenu, column);\n this.addInIcon('filter', this.eFilter, column);\n };\n HeaderComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n if (eIcon) {\n eParent.appendChild(eIcon);\n }\n };\n HeaderComp.prototype.setupTap = function () {\n var _this = this;\n var options = this.gridOptionsWrapper;\n if (options.isSuppressTouch()) {\n return;\n }\n var touchListener = new TouchListener(this.getGui(), true);\n var suppressMenuHide = options.isSuppressMenuHide();\n var tapMenuButton = suppressMenuHide && exists(this.eMenu);\n var menuTouchListener = tapMenuButton ? new TouchListener(this.eMenu, true) : touchListener;\n if (this.params.enableMenu) {\n var eventType = tapMenuButton ? 'EVENT_TAP' : 'EVENT_LONG_TAP';\n var showMenuFn = function (event) {\n options.getApi().showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);\n };\n this.addManagedListener(menuTouchListener, TouchListener[eventType], showMenuFn);\n }\n if (this.params.enableSorting) {\n var tapListener = function (event) {\n var target = event.touchStart.target;\n // When suppressMenuHide is true, a tap on the menu icon will bubble up\n // to the header container, in that case we should not sort\n if (suppressMenuHide && _this.eMenu.contains(target)) {\n return;\n }\n _this.sortController.progressSort(_this.params.column, false, \"uiColumnSorted\");\n };\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, tapListener);\n }\n // if tapMenuButton is true `touchListener` and `menuTouchListener` are different\n // so we need to make sure to destroy both listeners here\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n if (tapMenuButton) {\n this.addDestroyFunc(function () { return menuTouchListener.destroy(); });\n }\n };\n HeaderComp.prototype.workOutShowMenu = function () {\n // we don't show the menu if on an iPad/iPhone, as the user cannot have a pointer device/\n // However if suppressMenuHide is set to true the menu will be displayed alwasys, so it's ok\n // to show it on iPad in this case (as hover isn't needed). If suppressMenuHide\n // is false (default) user will need to use longpress to display the menu.\n var menuHides = !this.gridOptionsWrapper.isSuppressMenuHide();\n var onIpadAndMenuHides = isIOSUserAgent() && menuHides;\n var showMenu = this.params.enableMenu && !onIpadAndMenuHides;\n return showMenu;\n };\n HeaderComp.prototype.setMenu = function () {\n var _this = this;\n // if no menu provided in template, do nothing\n if (!this.eMenu) {\n return;\n }\n this.currentShowMenu = this.workOutShowMenu();\n if (!this.currentShowMenu) {\n removeFromParent(this.eMenu);\n return;\n }\n var suppressMenuHide = this.gridOptionsWrapper.isSuppressMenuHide();\n this.addManagedListener(this.eMenu, 'click', function () { return _this.showMenu(_this.eMenu); });\n this.eMenu.classList.toggle('ag-header-menu-always-show', suppressMenuHide);\n };\n HeaderComp.prototype.showMenu = function (eventSource) {\n if (!eventSource) {\n eventSource = this.eMenu;\n }\n this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource, 'columnMenu');\n };\n HeaderComp.prototype.workOutSort = function () {\n return this.params.enableSorting;\n };\n HeaderComp.prototype.setupSort = function () {\n var _this = this;\n this.currentSort = this.params.enableSorting;\n // eSortIndicator will not be present when customers provided custom header\n // templates, in that case, we need to look for provided sort elements and\n // manually create eSortIndicator.\n if (!this.eSortIndicator) {\n this.eSortIndicator = this.context.createBean(new SortIndicatorComp(true));\n this.eSortIndicator.attachCustomElements(this.eSortOrder, this.eSortAsc, this.eSortDesc, this.eSortMixed, this.eSortNone);\n }\n this.eSortIndicator.setupSort(this.params.column);\n // we set up the indicator prior to the check for whether this column is sortable, as it allows the indicator to\n // set up the multi sort indicator which can appear irrelevant of whether this column can itself be sorted.\n // this can occur in the case of a non-sortable group display column.\n if (!this.currentSort) {\n return;\n }\n var sortUsingCtrl = this.gridOptionsWrapper.isMultiSortKeyCtrl();\n // keep track of last time the moving changed flag was set\n this.addManagedListener(this.params.column, Column.EVENT_MOVING_CHANGED, function () {\n _this.lastMovingChanged = new Date().getTime();\n });\n // add the event on the header, so when clicked, we do sorting\n if (this.eLabel) {\n this.addManagedListener(this.eLabel, 'click', function (event) {\n // sometimes when moving a column via dragging, this was also firing a clicked event.\n // here is issue raised by user: https://ag-grid.zendesk.com/agent/tickets/1076\n // this check stops sort if a) column is moving or b) column moved less than 200ms ago (so caters for race condition)\n var moving = _this.params.column.isMoving();\n var nowTime = new Date().getTime();\n // typically there is <2ms if moving flag was set recently, as it would be done in same VM turn\n var movedRecently = (nowTime - _this.lastMovingChanged) < 50;\n var columnMoving = moving || movedRecently;\n if (!columnMoving) {\n var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n _this.params.progressSort(multiSort);\n }\n });\n }\n var onSortingChanged = function () {\n var _a;\n _this.addOrRemoveCssClass('ag-header-cell-sorted-asc', _this.params.column.isSortAscending());\n _this.addOrRemoveCssClass('ag-header-cell-sorted-desc', _this.params.column.isSortDescending());\n _this.addOrRemoveCssClass('ag-header-cell-sorted-none', _this.params.column.isSortNone());\n if (_this.params.column.getColDef().showRowGroup) {\n var sourceColumns = _this.columnModel.getSourceColumnsForGroupColumn(_this.params.column);\n // this == is intentional, as it allows null and undefined to match, which are both unsorted states\n var sortDirectionsMatch = (_a = sourceColumns) === null || _a === void 0 ? void 0 : _a.every(function (sourceCol) { return _this.params.column.getSort() == sourceCol.getSort(); });\n var isMultiSorting = !sortDirectionsMatch;\n _this.addOrRemoveCssClass('ag-header-cell-sorted-mixed', isMultiSorting);\n }\n };\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, onSortingChanged);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, onSortingChanged);\n };\n HeaderComp.prototype.setupFilterIcon = function () {\n if (!this.eFilter) {\n return;\n }\n this.addManagedListener(this.params.column, Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.onFilterChanged();\n };\n HeaderComp.prototype.onFilterChanged = function () {\n var filterPresent = this.params.column.isFilterActive();\n this.eFilter.classList.toggle('ag-hidden', !filterPresent);\n };\n HeaderComp.TEMPLATE = \"
\\n \\n
\\n \\n \\n \\n
\\n
\";\n __decorate$28([\n Autowired('sortController')\n ], HeaderComp.prototype, \"sortController\", void 0);\n __decorate$28([\n Autowired('menuFactory')\n ], HeaderComp.prototype, \"menuFactory\", void 0);\n __decorate$28([\n Autowired('columnModel')\n ], HeaderComp.prototype, \"columnModel\", void 0);\n __decorate$28([\n RefSelector('eFilter')\n ], HeaderComp.prototype, \"eFilter\", void 0);\n __decorate$28([\n RefSelector('eSortIndicator')\n ], HeaderComp.prototype, \"eSortIndicator\", void 0);\n __decorate$28([\n RefSelector('eMenu')\n ], HeaderComp.prototype, \"eMenu\", void 0);\n __decorate$28([\n RefSelector('eLabel')\n ], HeaderComp.prototype, \"eLabel\", void 0);\n __decorate$28([\n RefSelector('eText')\n ], HeaderComp.prototype, \"eText\", void 0);\n __decorate$28([\n RefSelector('eSortOrder')\n ], HeaderComp.prototype, \"eSortOrder\", void 0);\n __decorate$28([\n RefSelector('eSortAsc')\n ], HeaderComp.prototype, \"eSortAsc\", void 0);\n __decorate$28([\n RefSelector('eSortDesc')\n ], HeaderComp.prototype, \"eSortDesc\", void 0);\n __decorate$28([\n RefSelector('eSortMixed')\n ], HeaderComp.prototype, \"eSortMixed\", void 0);\n __decorate$28([\n RefSelector('eSortNone')\n ], HeaderComp.prototype, \"eSortNone\", void 0);\n return HeaderComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2r = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$27 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderGroupComp = /** @class */ (function (_super) {\n __extends$2r(HeaderGroupComp, _super);\n function HeaderGroupComp() {\n return _super.call(this, HeaderGroupComp.TEMPLATE) || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n HeaderGroupComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n HeaderGroupComp.prototype.init = function (params) {\n this.params = params;\n this.checkWarnings();\n this.setupLabel();\n this.addGroupExpandIcon();\n this.setupExpandIcons();\n };\n HeaderGroupComp.prototype.checkWarnings = function () {\n var paramsAny = this.params;\n if (paramsAny.template) {\n var message_1 = \"AG Grid: A template was provided for Header Group Comp - templates are only supported for Header Comps (not groups)\";\n doOnce(function () { return console.warn(message_1); }, 'HeaderGroupComp.templateNotSupported');\n }\n };\n HeaderGroupComp.prototype.setupExpandIcons = function () {\n var _this = this;\n this.addInIcon(\"columnGroupOpened\", \"agOpened\");\n this.addInIcon(\"columnGroupClosed\", \"agClosed\");\n var expandAction = function (event) {\n if (isStopPropagationForAgGrid(event)) {\n return;\n }\n var newExpandedValue = !_this.params.columnGroup.isExpanded();\n _this.columnModel.setColumnGroupOpened(_this.params.columnGroup.getProvidedColumnGroup(), newExpandedValue, \"uiColumnExpanded\");\n };\n this.addTouchAndClickListeners(this.eCloseIcon, expandAction);\n this.addTouchAndClickListeners(this.eOpenIcon, expandAction);\n var stopPropagationAction = function (event) {\n stopPropagationForAgGrid(event);\n };\n // adding stopPropagation to the double click for the icons prevents double click action happening\n // when the icons are clicked. if the icons are double clicked, then the groups should open and\n // then close again straight away. if we also listened to double click, then the group would open,\n // close, then open, which is not what we want. double click should only action if the user double\n // clicks outside of the icons.\n this.addManagedListener(this.eCloseIcon, \"dblclick\", stopPropagationAction);\n this.addManagedListener(this.eOpenIcon, \"dblclick\", stopPropagationAction);\n this.addManagedListener(this.getGui(), \"dblclick\", expandAction);\n this.updateIconVisibility();\n var providedColumnGroup = this.params.columnGroup.getProvidedColumnGroup();\n this.addManagedListener(providedColumnGroup, ProvidedColumnGroup.EVENT_EXPANDED_CHANGED, this.updateIconVisibility.bind(this));\n this.addManagedListener(providedColumnGroup, ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED, this.updateIconVisibility.bind(this));\n };\n HeaderGroupComp.prototype.addTouchAndClickListeners = function (eElement, action) {\n var touchListener = new TouchListener(eElement, true);\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, action);\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n this.addManagedListener(eElement, \"click\", action);\n };\n HeaderGroupComp.prototype.updateIconVisibility = function () {\n var columnGroup = this.params.columnGroup;\n if (columnGroup.isExpandable()) {\n var expanded = this.params.columnGroup.isExpanded();\n setDisplayed(this.eOpenIcon, expanded);\n setDisplayed(this.eCloseIcon, !expanded);\n }\n else {\n setDisplayed(this.eOpenIcon, false);\n setDisplayed(this.eCloseIcon, false);\n }\n };\n HeaderGroupComp.prototype.addInIcon = function (iconName, refName) {\n var eIcon = createIconNoSpan(iconName, this.gridOptionsWrapper, null);\n if (eIcon) {\n this.getRefElement(refName).appendChild(eIcon);\n }\n };\n HeaderGroupComp.prototype.addGroupExpandIcon = function () {\n if (!this.params.columnGroup.isExpandable()) {\n setDisplayed(this.eOpenIcon, false);\n setDisplayed(this.eCloseIcon, false);\n return;\n }\n };\n HeaderGroupComp.prototype.setupLabel = function () {\n // no renderer, default text render\n var displayName = this.params.displayName;\n if (exists(displayName)) {\n var displayNameSanitised = escapeString(displayName);\n this.getRefElement('agLabel').innerHTML = displayNameSanitised;\n }\n };\n HeaderGroupComp.TEMPLATE = \"
\\n \\n \\n \\n
\";\n __decorate$27([\n Autowired(\"columnModel\")\n ], HeaderGroupComp.prototype, \"columnModel\", void 0);\n __decorate$27([\n RefSelector(\"agOpened\")\n ], HeaderGroupComp.prototype, \"eOpenIcon\", void 0);\n __decorate$27([\n RefSelector(\"agClosed\")\n ], HeaderGroupComp.prototype, \"eCloseIcon\", void 0);\n return HeaderGroupComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar PopupComponent = /** @class */ (function (_super) {\n __extends$2q(PopupComponent, _super);\n function PopupComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupComponent.prototype.isPopup = function () {\n return true;\n };\n PopupComponent.prototype.setParentComponent = function (container) {\n container.addCssClass('ag-has-popup');\n _super.prototype.setParentComponent.call(this, container);\n };\n PopupComponent.prototype.destroy = function () {\n var parentComp = this.parentComponent;\n var hasParent = parentComp && parentComp.isAlive();\n if (hasParent) {\n parentComp.getGui().classList.remove('ag-has-popup');\n }\n _super.prototype.destroy.call(this);\n };\n return PopupComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2p = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$26 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LargeTextCellEditor = /** @class */ (function (_super) {\n __extends$2p(LargeTextCellEditor, _super);\n function LargeTextCellEditor() {\n return _super.call(this, LargeTextCellEditor.TEMPLATE) || this;\n }\n LargeTextCellEditor.prototype.init = function (params) {\n this.params = params;\n this.focusAfterAttached = params.cellStartedEdit;\n this.eTextArea\n .setMaxLength(params.maxLength || 200)\n .setCols(params.cols || 60)\n .setRows(params.rows || 10);\n if (exists(params.value)) {\n this.eTextArea.setValue(params.value.toString(), true);\n }\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n };\n LargeTextCellEditor.prototype.onKeyDown = function (event) {\n var key = event.key;\n if (key === KeyCode.LEFT ||\n key === KeyCode.UP ||\n key === KeyCode.RIGHT ||\n key === KeyCode.DOWN ||\n (event.shiftKey && key === KeyCode.ENTER)) { // shift+enter allows for newlines\n event.stopPropagation();\n }\n };\n LargeTextCellEditor.prototype.afterGuiAttached = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eTextArea.setInputAriaLabel(translate('ariaInputEditor', 'Input Editor'));\n if (this.focusAfterAttached) {\n this.eTextArea.getFocusableElement().focus();\n }\n };\n LargeTextCellEditor.prototype.getValue = function () {\n return this.params.parseValue(this.eTextArea.getValue());\n };\n LargeTextCellEditor.TEMPLATE = \"
\\n \\n
\";\n __decorate$26([\n RefSelector(\"eTextArea\")\n ], LargeTextCellEditor.prototype, \"eTextArea\", void 0);\n return LargeTextCellEditor;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2o = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$25 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectCellEditor = /** @class */ (function (_super) {\n __extends$2o(SelectCellEditor, _super);\n function SelectCellEditor() {\n var _this = _super.call(this, '
') || this;\n _this.startedByEnter = false;\n return _this;\n }\n SelectCellEditor.prototype.init = function (params) {\n var _this = this;\n this.focusAfterAttached = params.cellStartedEdit;\n if (missing(params.values)) {\n console.warn('AG Grid: no values found for select cellEditor');\n return;\n }\n this.startedByEnter = params.eventKey != null ? params.eventKey === KeyCode.ENTER : false;\n var hasValue = false;\n params.values.forEach(function (value) {\n var option = { value: value };\n var valueFormatted = _this.valueFormatterService.formatValue(params.column, null, value);\n var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n option.text = valueFormattedExits ? valueFormatted : value;\n _this.eSelect.addOption(option);\n hasValue = hasValue || params.value === value;\n });\n if (hasValue) {\n this.eSelect.setValue(params.value, true);\n }\n else if (params.values.length) {\n this.eSelect.setValue(params.values[0], true);\n }\n // we don't want to add this if full row editing, otherwise selecting will stop the\n // full row editing.\n if (!this.gridOptionsWrapper.isFullRowEdit()) {\n this.eSelect.onValueChange(function () { return params.stopEditing(); });\n }\n };\n SelectCellEditor.prototype.afterGuiAttached = function () {\n if (this.focusAfterAttached) {\n this.eSelect.getFocusableElement().focus();\n }\n if (this.startedByEnter) {\n this.eSelect.showPicker();\n }\n };\n SelectCellEditor.prototype.focusIn = function () {\n this.eSelect.getFocusableElement().focus();\n };\n SelectCellEditor.prototype.getValue = function () {\n return this.eSelect.getValue();\n };\n SelectCellEditor.prototype.isPopup = function () {\n return false;\n };\n __decorate$25([\n Autowired('valueFormatterService')\n ], SelectCellEditor.prototype, \"valueFormatterService\", void 0);\n __decorate$25([\n RefSelector('eSelect')\n ], SelectCellEditor.prototype, \"eSelect\", void 0);\n return SelectCellEditor;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2n = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar PopupSelectCellEditor = /** @class */ (function (_super) {\n __extends$2n(PopupSelectCellEditor, _super);\n function PopupSelectCellEditor() {\n var _this = _super.call(this) || this;\n doOnce(function () { return console.warn('AG Grid: The PopupSelectCellEditor (agPopupSelectCellEditor) is deprecated. Instead use {cellEditor: \"agSelectCellEditor\", cellEditorPopup: true} '); }, 'PopupSelectCellEditor.deprecated');\n return _this;\n }\n PopupSelectCellEditor.prototype.isPopup = function () {\n return true;\n };\n return PopupSelectCellEditor;\n}(SelectCellEditor));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2m = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$24 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TextCellEditor = /** @class */ (function (_super) {\n __extends$2m(TextCellEditor, _super);\n function TextCellEditor() {\n return _super.call(this, TextCellEditor.TEMPLATE) || this;\n }\n TextCellEditor.prototype.init = function (params) {\n this.params = params;\n var eInput = this.eInput;\n var startValue;\n // cellStartedEdit is only false if we are doing fullRow editing\n if (params.cellStartedEdit) {\n this.focusAfterAttached = true;\n if (params.eventKey === KeyCode.BACKSPACE || params.eventKey === KeyCode.DELETE) {\n startValue = '';\n }\n else if (params.charPress) {\n startValue = params.charPress;\n }\n else {\n startValue = this.getStartValue(params);\n if (params.eventKey !== KeyCode.F2) {\n this.highlightAllOnFocus = true;\n }\n }\n }\n else {\n this.focusAfterAttached = false;\n startValue = this.getStartValue(params);\n }\n if (startValue != null) {\n eInput.setValue(startValue, true);\n }\n if (params.maxLength != null) {\n eInput.setMaxLength(params.maxLength);\n }\n this.addManagedListener(eInput.getGui(), 'keydown', function (event) {\n var key = event.key;\n if (key === KeyCode.PAGE_UP || key === KeyCode.PAGE_DOWN) {\n event.preventDefault();\n }\n });\n };\n TextCellEditor.prototype.afterGuiAttached = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var eInput = this.eInput;\n eInput.setInputAriaLabel(translate('ariaInputEditor', 'Input Editor'));\n if (!this.focusAfterAttached) {\n return;\n }\n // Added for AG-3238. We can't remove this explicit focus() because Chrome requires an input\n // to be focused before setSelectionRange will work. But it triggers a bug in Safari where\n // explicitly focusing then blurring an empty field will cause the parent container to scroll.\n if (!isBrowserSafari()) {\n eInput.getFocusableElement().focus();\n }\n var inputEl = eInput.getInputElement();\n if (this.highlightAllOnFocus) {\n inputEl.select();\n }\n else {\n // when we started editing, we want the caret at the end, not the start.\n // this comes into play in two scenarios:\n // a) when user hits F2\n // b) when user hits a printable character\n var value = eInput.getValue();\n var len = (exists(value) && value.length) || 0;\n if (len) {\n inputEl.setSelectionRange(len, len);\n }\n }\n };\n // gets called when tabbing trough cells and in full row edit mode\n TextCellEditor.prototype.focusIn = function () {\n var eInput = this.eInput;\n var focusEl = eInput.getFocusableElement();\n var inputEl = eInput.getInputElement();\n focusEl.focus();\n inputEl.select();\n };\n TextCellEditor.prototype.getValue = function () {\n var eInput = this.eInput;\n return this.params.parseValue(eInput.getValue());\n };\n TextCellEditor.prototype.getStartValue = function (params) {\n var formatValue = params.useFormatter || params.column.getColDef().refData;\n return formatValue ? params.formatValue(params.value) : params.value;\n };\n TextCellEditor.prototype.isPopup = function () {\n return false;\n };\n TextCellEditor.TEMPLATE = \"
\\n \\n
\";\n __decorate$24([\n RefSelector('eInput')\n ], TextCellEditor.prototype, \"eInput\", void 0);\n return TextCellEditor;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2l = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar PopupTextCellEditor = /** @class */ (function (_super) {\n __extends$2l(PopupTextCellEditor, _super);\n function PopupTextCellEditor() {\n var _this = _super.call(this) || this;\n doOnce(function () { return console.warn('AG Grid: The PopupTextCellEditor (agPopupTextCellEditor) is deprecated. Instead use {cellEditor: \"agTextCellEditor\", cellEditorPopup: true} '); }, 'PopupTextCellEditor.deprecated');\n return _this;\n }\n PopupTextCellEditor.prototype.isPopup = function () {\n return true;\n };\n return PopupTextCellEditor;\n}(TextCellEditor));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2k = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$23 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ARROW_UP = '\\u2191';\nvar ARROW_DOWN = '\\u2193';\nvar AnimateShowChangeCellRenderer = /** @class */ (function (_super) {\n __extends$2k(AnimateShowChangeCellRenderer, _super);\n function AnimateShowChangeCellRenderer() {\n var _this = _super.call(this, AnimateShowChangeCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n return _this;\n }\n AnimateShowChangeCellRenderer.prototype.init = function (params) {\n // this.params = params;\n this.eValue = this.queryForHtmlElement('.ag-value-change-value');\n this.eDelta = this.queryForHtmlElement('.ag-value-change-delta');\n this.refresh(params);\n };\n AnimateShowChangeCellRenderer.prototype.showDelta = function (params, delta) {\n var absDelta = Math.abs(delta);\n var valueFormatted = params.formatValue(absDelta);\n var valueToUse = exists(valueFormatted) ? valueFormatted : absDelta;\n var deltaUp = (delta >= 0);\n if (deltaUp) {\n this.eDelta.innerHTML = ARROW_UP + valueToUse;\n }\n else {\n // because negative, use ABS to remove sign\n this.eDelta.innerHTML = ARROW_DOWN + valueToUse;\n }\n this.eDelta.classList.toggle('ag-value-change-delta-up', deltaUp);\n this.eDelta.classList.toggle('ag-value-change-delta-down', !deltaUp);\n };\n AnimateShowChangeCellRenderer.prototype.setTimerToRemoveDelta = function () {\n var _this = this;\n // the refreshCount makes sure that if the value updates again while\n // the below timer is waiting, then the below timer will realise it\n // is not the most recent and will not try to remove the delta value.\n this.refreshCount++;\n var refreshCountCopy = this.refreshCount;\n window.setTimeout(function () {\n if (refreshCountCopy === _this.refreshCount) {\n _this.hideDeltaValue();\n }\n }, 2000);\n };\n AnimateShowChangeCellRenderer.prototype.hideDeltaValue = function () {\n this.eValue.classList.remove('ag-value-change-value-highlight');\n clearElement(this.eDelta);\n };\n AnimateShowChangeCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (value === this.lastValue) {\n return false;\n }\n if (exists(params.valueFormatted)) {\n this.eValue.innerHTML = params.valueFormatted;\n }\n else if (exists(params.value)) {\n this.eValue.innerHTML = value;\n }\n else {\n clearElement(this.eValue);\n }\n // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n // with regards processingFilterChange\n if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n return false;\n }\n if (typeof value === 'number' && typeof this.lastValue === 'number') {\n var delta = value - this.lastValue;\n this.showDelta(params, delta);\n }\n // highlight the current value, but only if it's not new, otherwise it\n // would get highlighted first time the value is shown\n if (this.lastValue) {\n this.eValue.classList.add('ag-value-change-value-highlight');\n }\n this.setTimerToRemoveDelta();\n this.lastValue = value;\n return true;\n };\n AnimateShowChangeCellRenderer.TEMPLATE = '' +\n '' +\n '' +\n '';\n __decorate$23([\n Autowired('filterManager')\n ], AnimateShowChangeCellRenderer.prototype, \"filterManager\", void 0);\n return AnimateShowChangeCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2j = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$22 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AnimateSlideCellRenderer = /** @class */ (function (_super) {\n __extends$2j(AnimateSlideCellRenderer, _super);\n function AnimateSlideCellRenderer() {\n var _this = _super.call(this, AnimateSlideCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n _this.eCurrent = _this.queryForHtmlElement('.ag-value-slide-current');\n return _this;\n }\n AnimateSlideCellRenderer.prototype.init = function (params) {\n this.refresh(params);\n };\n AnimateSlideCellRenderer.prototype.addSlideAnimation = function () {\n var _this = this;\n this.refreshCount++;\n // below we keep checking this, and stop working on the animation\n // if it no longer matches - this means another animation has started\n // and this one is stale.\n var refreshCountCopy = this.refreshCount;\n // if old animation, remove it\n if (this.ePrevious) {\n this.getGui().removeChild(this.ePrevious);\n }\n this.ePrevious = loadTemplate('');\n this.ePrevious.innerHTML = this.eCurrent.innerHTML;\n this.getGui().insertBefore(this.ePrevious, this.eCurrent);\n // having timeout of 0 allows use to skip to the next css turn,\n // so we know the previous css classes have been applied. so the\n // complex set of setTimeout below creates the animation\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _this.ePrevious.classList.add('ag-value-slide-out-end');\n }, 50);\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _this.getGui().removeChild(_this.ePrevious);\n _this.ePrevious = null;\n }, 3000);\n };\n AnimateSlideCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (missing(value)) {\n value = '';\n }\n if (value === this.lastValue) {\n return false;\n }\n // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n // with regards processingFilterChange\n if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n return false;\n }\n this.addSlideAnimation();\n this.lastValue = value;\n if (exists(params.valueFormatted)) {\n this.eCurrent.innerHTML = params.valueFormatted;\n }\n else if (exists(params.value)) {\n this.eCurrent.innerHTML = value;\n }\n else {\n clearElement(this.eCurrent);\n }\n return true;\n };\n AnimateSlideCellRenderer.TEMPLATE = \"\\n \\n \";\n __decorate$22([\n Autowired('filterManager')\n ], AnimateSlideCellRenderer.prototype, \"filterManager\", void 0);\n return AnimateSlideCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar RowHighlightPosition;\n(function (RowHighlightPosition) {\n RowHighlightPosition[RowHighlightPosition[\"Above\"] = 0] = \"Above\";\n RowHighlightPosition[RowHighlightPosition[\"Below\"] = 1] = \"Below\";\n})(RowHighlightPosition || (RowHighlightPosition = {}));\nvar RowNode = /** @class */ (function () {\n function RowNode(beans) {\n /** The current row index. If the row is filtered out or in a collapsed group, this value will be `null`. */\n this.rowIndex = null;\n /** The key for the group eg Ireland, UK, USA */\n this.key = null;\n /** Children mapped by the pivot columns. */\n this.childrenMapped = {};\n /**\n * This will be `true` if it has a rowIndex assigned, otherwise `false`.\n */\n this.displayed = false;\n /** The row top position in pixels. */\n this.rowTop = null;\n /** The top pixel for this row last time, makes sense if data set was ordered or filtered,\n * it is used so new rows can animate in from their old position. */\n this.oldRowTop = null;\n /** `true` by default - can be overridden via gridOptions.isRowSelectable(rowNode) */\n this.selectable = true;\n /** Used by sorting service - to give deterministic sort to groups. Previously we\n * just id for this, however id is a string and had slower sorting compared to numbers. */\n this.__objectId = RowNode.OBJECT_ID_SEQUENCE++;\n /** When one or more Columns are using autoHeight, this keeps track of height of each autoHeight Cell,\n * indexed by the Column ID. */\n this.__autoHeights = {};\n /** `true` when nodes with the same id are being removed and added as part of the same batch transaction */\n this.alreadyRendered = false;\n this.highlighted = null;\n this.selected = false;\n this.beans = beans;\n }\n /** Replaces the data on the `rowNode`. When complete, the grid will refresh the the entire rendered row if it is showing. */\n RowNode.prototype.setData = function (data) {\n this.setDataCommon(data, false);\n };\n // similar to setRowData, however it is expected that the data is the same data item. this\n // is intended to be used with Redux type stores, where the whole data can be changed. we are\n // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the\n // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving\n // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).\n RowNode.prototype.updateData = function (data) {\n this.setDataCommon(data, true);\n };\n RowNode.prototype.setDataCommon = function (data, update) {\n var oldData = this.data;\n this.data = data;\n this.beans.valueCache.onDataChanged();\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, update);\n this.dispatchLocalEvent(event);\n };\n // when we are doing master / detail, the detail node is lazy created, but then kept around.\n // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data\n // in sync, otherwise expand/collapse of the detail would still show the old values.\n RowNode.prototype.updateDataOnDetailNode = function () {\n if (this.detailNode) {\n this.detailNode.data = this.data;\n }\n };\n RowNode.prototype.createDataChangedEvent = function (newData, oldData, update) {\n return {\n type: RowNode.EVENT_DATA_CHANGED,\n node: this,\n oldData: oldData,\n newData: newData,\n update: update\n };\n };\n RowNode.prototype.createLocalRowEvent = function (type) {\n return {\n type: type,\n node: this\n };\n };\n RowNode.prototype.getRowIndexString = function () {\n if (this.rowPinned === Constants.PINNED_TOP) {\n return 't-' + this.rowIndex;\n }\n if (this.rowPinned === Constants.PINNED_BOTTOM) {\n return 'b-' + this.rowIndex;\n }\n return this.rowIndex.toString();\n };\n RowNode.prototype.createDaemonNode = function () {\n var oldNode = new RowNode(this.beans);\n // just copy the id and data, this is enough for the node to be used\n // in the selection controller (the selection controller is the only\n // place where daemon nodes can live).\n oldNode.id = this.id;\n oldNode.data = this.data;\n oldNode.daemon = true;\n oldNode.selected = this.selected;\n oldNode.level = this.level;\n return oldNode;\n };\n RowNode.prototype.setDataAndId = function (data, id) {\n var oldNode = exists(this.id) ? this.createDaemonNode() : null;\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.setId(id);\n this.beans.selectionService.syncInRowNode(this, oldNode);\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.checkRowSelectable = function () {\n var isRowSelectableFunc = this.beans.gridOptionsWrapper.getIsRowSelectableFunc();\n this.setRowSelectable(isRowSelectableFunc ? isRowSelectableFunc(this) : true);\n };\n RowNode.prototype.setRowSelectable = function (newVal) {\n if (this.selectable !== newVal) {\n this.selectable = newVal;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_SELECTABLE_CHANGED));\n }\n var isGroupSelectsChildren = this.beans.gridOptionsWrapper.isGroupSelectsChildren();\n if (isGroupSelectsChildren) {\n var selected = this.calculateSelectedFromChildren();\n this.setSelected((selected !== null && selected !== void 0 ? selected : false));\n }\n }\n };\n RowNode.prototype.setId = function (id) {\n // see if user is providing the id's\n var getRowIdFunc = this.beans.gridOptionsWrapper.getRowIdFunc();\n if (getRowIdFunc) {\n // if user is providing the id's, then we set the id only after the data has been set.\n // this is important for virtual pagination and viewport, where empty rows exist.\n if (this.data) {\n // we pass 'true' as we skip this level when generating keys,\n // as we don't always have the key for this level (eg when updating\n // data via transaction on SSRM, we are getting key to look up the\n // RowNode, don't have the RowNode yet, thus no way to get the current key)\n var parentKeys = this.getGroupKeys(true);\n this.id = getRowIdFunc({\n data: this.data,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n level: this.level\n });\n // make sure id provided doesn't start with 'row-group-' as this is reserved. also check that\n // it has 'startsWith' in case the user provided a number.\n if (this.id !== null && typeof this.id === 'string' && this.id.startsWith(RowNode.ID_PREFIX_ROW_GROUP)) {\n console.error(\"AG Grid: Row IDs cannot start with \" + RowNode.ID_PREFIX_ROW_GROUP + \", this is a reserved prefix for AG Grid's row grouping feature.\");\n }\n // force id to be a string\n if (this.id !== null && typeof this.id !== 'string') {\n this.id = '' + this.id;\n }\n }\n else {\n // this can happen if user has set blank into the rowNode after the row previously\n // having data. this happens in virtual page row model, when data is delete and\n // the page is refreshed.\n this.id = undefined;\n }\n }\n else {\n this.id = id;\n }\n };\n RowNode.prototype.getGroupKeys = function (excludeSelf) {\n if (excludeSelf === void 0) { excludeSelf = false; }\n var keys = [];\n var pointer = this;\n if (excludeSelf) {\n pointer = pointer.parent;\n }\n while (pointer && pointer.level >= 0) {\n keys.push(pointer.key);\n pointer = pointer.parent;\n }\n keys.reverse();\n return keys;\n };\n RowNode.prototype.isPixelInRange = function (pixel) {\n if (!exists(this.rowTop) || !exists(this.rowHeight)) {\n return false;\n }\n return pixel >= this.rowTop && pixel < (this.rowTop + this.rowHeight);\n };\n RowNode.prototype.setFirstChild = function (firstChild) {\n if (this.firstChild === firstChild) {\n return;\n }\n this.firstChild = firstChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_FIRST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setLastChild = function (lastChild) {\n if (this.lastChild === lastChild) {\n return;\n }\n this.lastChild = lastChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_LAST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setChildIndex = function (childIndex) {\n if (this.childIndex === childIndex) {\n return;\n }\n this.childIndex = childIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_CHILD_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setRowTop = function (rowTop) {\n this.oldRowTop = this.rowTop;\n if (this.rowTop === rowTop) {\n return;\n }\n this.rowTop = rowTop;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_TOP_CHANGED));\n }\n this.setDisplayed(rowTop !== null);\n };\n RowNode.prototype.clearRowTopAndRowIndex = function () {\n this.oldRowTop = null;\n this.setRowTop(null);\n this.setRowIndex(null);\n };\n RowNode.prototype.setDisplayed = function (displayed) {\n if (this.displayed === displayed) {\n return;\n }\n this.displayed = displayed;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DISPLAYED_CHANGED));\n }\n };\n RowNode.prototype.setDragging = function (dragging) {\n if (this.dragging === dragging) {\n return;\n }\n this.dragging = dragging;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DRAGGING_CHANGED));\n }\n };\n RowNode.prototype.setHighlighted = function (highlighted) {\n if (highlighted === this.highlighted) {\n return;\n }\n this.highlighted = highlighted;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HIGHLIGHT_CHANGED));\n }\n };\n RowNode.prototype.setAllChildrenCount = function (allChildrenCount) {\n if (this.allChildrenCount === allChildrenCount) {\n return;\n }\n this.allChildrenCount = allChildrenCount;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED));\n }\n };\n RowNode.prototype.setMaster = function (master) {\n if (this.master === master) {\n return;\n }\n // if changing AWAY from master, then unexpand, otherwise\n // next time it's shown it is expanded again\n if (this.master && !master) {\n this.expanded = false;\n }\n this.master = master;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_MASTER_CHANGED));\n }\n };\n RowNode.prototype.setGroup = function (group) {\n if (this.group === group) {\n return;\n }\n // if we used to be a group, and no longer, then close the node\n if (this.group && !group) {\n this.expanded = false;\n }\n this.group = group;\n this.updateHasChildren();\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_GROUP_CHANGED));\n }\n };\n /**\n * Sets the row height.\n * Call if you want to change the height initially assigned to the row.\n * After calling, you must call `api.onRowHeightChanged()` so the grid knows it needs to work out the placement of the rows. */\n RowNode.prototype.setRowHeight = function (rowHeight, estimated) {\n if (estimated === void 0) { estimated = false; }\n this.rowHeight = rowHeight;\n this.rowHeightEstimated = estimated;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HEIGHT_CHANGED));\n }\n };\n RowNode.prototype.setRowAutoHeight = function (cellHeight, column) {\n if (!this.__autoHeights) {\n this.__autoHeights = {};\n }\n var autoHeights = this.__autoHeights;\n autoHeights[column.getId()] = cellHeight;\n if (cellHeight != null) {\n if (this.checkAutoHeightsDebounced == null) {\n this.checkAutoHeightsDebounced = debounce(this.checkAutoHeights.bind(this), 1);\n }\n this.checkAutoHeightsDebounced();\n }\n };\n RowNode.prototype.checkAutoHeights = function () {\n var notAllPresent = false;\n var nonePresent = true;\n var newRowHeight = 0;\n var autoHeights = this.__autoHeights;\n if (autoHeights == null) {\n return;\n }\n var displayedAutoHeightCols = this.beans.columnModel.getAllDisplayedAutoHeightCols();\n displayedAutoHeightCols.forEach(function (col) {\n var cellHeight = autoHeights[col.getId()];\n if (cellHeight == null) {\n notAllPresent = true;\n return;\n }\n nonePresent = false;\n if (cellHeight > newRowHeight) {\n newRowHeight = cellHeight;\n }\n });\n if (notAllPresent) {\n return;\n }\n // we take min of 10, so we don't adjust for empty rows. if <10, we put to default.\n // this prevents the row starting very small when waiting for async components,\n // which would then mean the grid squashes in far to many rows (as small heights\n // means more rows fit in) which looks crap. so best ignore small values and assume\n // we are still waiting for values to render.\n if (nonePresent || newRowHeight < 10) {\n newRowHeight = this.beans.gridOptionsWrapper.getRowHeightForNode(this).height;\n }\n if (newRowHeight == this.rowHeight) {\n return;\n }\n this.setRowHeight(newRowHeight);\n var rowModel = this.beans.rowModel;\n if (rowModel.onRowHeightChangedDebounced) {\n rowModel.onRowHeightChangedDebounced();\n }\n };\n RowNode.prototype.setRowIndex = function (rowIndex) {\n if (this.rowIndex === rowIndex) {\n return;\n }\n this.rowIndex = rowIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setUiLevel = function (uiLevel) {\n if (this.uiLevel === uiLevel) {\n return;\n }\n this.uiLevel = uiLevel;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_UI_LEVEL_CHANGED));\n }\n };\n /**\n * Set the expanded state of this rowNode. Pass `true` to expand and `false` to collapse.\n */\n RowNode.prototype.setExpanded = function (expanded, e) {\n if (this.expanded === expanded) {\n return;\n }\n this.expanded = expanded;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_EXPANDED_CHANGED));\n }\n var event = Object.assign({}, this.createGlobalRowEvent(Events.EVENT_ROW_GROUP_OPENED), {\n expanded: expanded,\n event: e || null\n });\n this.beans.rowNodeEventThrottle.dispatchExpanded(event);\n // when using footers we need to refresh the group row, as the aggregation\n // values jump between group and footer\n if (this.beans.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.beans.rowRenderer.refreshCells({ rowNodes: [this] });\n }\n };\n RowNode.prototype.createGlobalRowEvent = function (type) {\n return {\n type: type,\n node: this,\n data: this.data,\n rowIndex: this.rowIndex,\n rowPinned: this.rowPinned,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi()\n };\n };\n RowNode.prototype.dispatchLocalEvent = function (event) {\n if (this.eventService) {\n this.eventService.dispatchEvent(event);\n }\n };\n /**\n * Replaces the value on the `rowNode` for the specified column. When complete,\n * the grid will refresh the rendered cell on the required row only.\n *\n * @param colKey The column where the value should be updated\n * @param newValue The new value\n * @param eventSource The source of the event\n * @returns `True` if the value was changed, otherwise `False`.\n */\n RowNode.prototype.setDataValue = function (colKey, newValue, eventSource) {\n // When it is done via the editors, no 'cell changed' event gets fired, as it's assumed that\n // the cell knows about the change given it's in charge of the editing.\n // this method is for the client to call, so the cell listens for the change\n // event, and also flashes the cell when the change occurs.\n var column = this.beans.columnModel.getPrimaryColumn(colKey);\n var oldValue = this.beans.valueService.getValue(column, this);\n var valueChanged = this.beans.valueService.setValue(this, column, newValue, eventSource);\n this.dispatchCellChangedEvent(column, newValue, oldValue);\n this.checkRowSelectable();\n return valueChanged;\n };\n RowNode.prototype.setGroupValue = function (colKey, newValue) {\n var column = this.beans.columnModel.getGridColumn(colKey);\n if (missing(this.groupData)) {\n this.groupData = {};\n }\n var columnId = column.getColId();\n var oldValue = this.groupData[columnId];\n if (oldValue === newValue) {\n return;\n }\n this.groupData[columnId] = newValue;\n this.dispatchCellChangedEvent(column, newValue, oldValue);\n };\n // sets the data for an aggregation\n RowNode.prototype.setAggData = function (newAggData) {\n var _this = this;\n // find out all keys that could potentially change\n var colIds = getAllKeysInObjects([this.aggData, newAggData]);\n var oldAggData = this.aggData;\n this.aggData = newAggData;\n // if no event service, nobody has registered for events, so no need fire event\n if (this.eventService) {\n colIds.forEach(function (colId) {\n var column = _this.beans.columnModel.getGridColumn(colId);\n var value = _this.aggData ? _this.aggData[colId] : undefined;\n var oldValue = oldAggData ? oldAggData[colId] : undefined;\n _this.dispatchCellChangedEvent(column, value, oldValue);\n });\n }\n };\n RowNode.prototype.updateHasChildren = function () {\n // we need to return true when this.group=true, as this is used by server side row model\n // (as children are lazy loaded and stored in a cache anyway). otherwise we return true\n // if children exist.\n var newValue = (this.group && !this.footer) || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);\n if (newValue !== this.__hasChildren) {\n this.__hasChildren = !!newValue;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HAS_CHILDREN_CHANGED));\n }\n }\n };\n RowNode.prototype.hasChildren = function () {\n if (this.__hasChildren == null) {\n this.updateHasChildren();\n }\n return this.__hasChildren;\n };\n RowNode.prototype.isEmptyRowGroupNode = function () {\n return this.group && missingOrEmpty(this.childrenAfterGroup);\n };\n RowNode.prototype.dispatchCellChangedEvent = function (column, newValue, oldValue) {\n var cellChangedEvent = {\n type: RowNode.EVENT_CELL_CHANGED,\n node: this,\n column: column,\n newValue: newValue,\n oldValue: oldValue\n };\n this.dispatchLocalEvent(cellChangedEvent);\n };\n /**\n * The first time `quickFilter` runs, the grid creates a one-off string representation of the row.\n * This string is then used for the quick filter instead of hitting each column separately.\n * When you edit, using grid editing, this string gets cleared down.\n * However if you edit without using grid editing, you will need to clear this string down for the row to be updated with the new values.\n * Otherwise new values will not work with the `quickFilter`. */\n RowNode.prototype.resetQuickFilterAggregateText = function () {\n this.quickFilterAggregateText = null;\n };\n RowNode.prototype.isExpandable = function () {\n return (this.hasChildren() && !this.footer) || this.master ? true : false;\n };\n /** Returns:\n * - `true` if node is selected,\n * - `false` if the node isn't selected\n * - `undefined` if it's partially selected (group where not all children are selected). */\n RowNode.prototype.isSelected = function () {\n // for footers, we just return what our sibling selected state is, as cannot select a footer\n if (this.footer) {\n return this.sibling.isSelected();\n }\n return this.selected;\n };\n /** Perform a depth-first search of this node and its children. */\n RowNode.prototype.depthFirstSearch = function (callback) {\n if (this.childrenAfterGroup) {\n this.childrenAfterGroup.forEach(function (child) { return child.depthFirstSearch(callback); });\n }\n callback(this);\n };\n // + selectionController.calculatedSelectedForAllGroupNodes()\n RowNode.prototype.calculateSelectedFromChildren = function () {\n var _a;\n var atLeastOneSelected = false;\n var atLeastOneDeSelected = false;\n var atLeastOneMixed = false;\n if (!((_a = this.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {\n return this.selectable ? this.selected : null;\n }\n for (var i = 0; i < this.childrenAfterGroup.length; i++) {\n var child = this.childrenAfterGroup[i];\n var childState = child.isSelected();\n // non-selectable nodes must be calculated from their children, or ignored if no value results.\n if (!child.selectable) {\n var selectable = child.calculateSelectedFromChildren();\n if (selectable === null) {\n continue;\n }\n childState = selectable;\n }\n switch (childState) {\n case true:\n atLeastOneSelected = true;\n break;\n case false:\n atLeastOneDeSelected = true;\n break;\n default:\n atLeastOneMixed = true;\n break;\n }\n }\n if (atLeastOneMixed || (atLeastOneSelected && atLeastOneDeSelected)) {\n return undefined;\n }\n else if (atLeastOneSelected) {\n return true;\n }\n else if (atLeastOneDeSelected) {\n return false;\n }\n else if (!this.selectable) {\n return null;\n }\n else {\n return this.selected;\n }\n };\n RowNode.prototype.setSelectedInitialValue = function (selected) {\n this.selected = selected;\n };\n /**\n * Select (or deselect) the node.\n * @param newValue -`true` for selection, `false` for deselection.\n * @param clearSelection - If selecting, then passing `true` will select the node exclusively (i.e. NOT do multi select). If doing deselection, `clearSelection` has no impact.\n * @param suppressFinishActions - Pass `true` to prevent the `selectionChanged` from being fired. Note that the `rowSelected` event will still be fired.\n */\n RowNode.prototype.setSelected = function (newValue, clearSelection, suppressFinishActions) {\n if (clearSelection === void 0) { clearSelection = false; }\n if (suppressFinishActions === void 0) { suppressFinishActions = false; }\n this.setSelectedParams({\n newValue: newValue,\n clearSelection: clearSelection,\n suppressFinishActions: suppressFinishActions,\n rangeSelect: false\n });\n };\n RowNode.prototype.isRowPinned = function () {\n return this.rowPinned === Constants.PINNED_TOP || this.rowPinned === Constants.PINNED_BOTTOM;\n };\n // to make calling code more readable, this is the same method as setSelected except it takes names parameters\n RowNode.prototype.setSelectedParams = function (params) {\n var _a;\n var groupSelectsChildren = this.beans.gridOptionsWrapper.isGroupSelectsChildren();\n var newValue = params.newValue === true;\n var clearSelection = params.clearSelection === true;\n var suppressFinishActions = params.suppressFinishActions === true;\n var rangeSelect = params.rangeSelect === true;\n // groupSelectsFiltered only makes sense when group selects children\n var groupSelectsFiltered = groupSelectsChildren && (params.groupSelectsFiltered === true);\n if (this.id === undefined) {\n console.warn('AG Grid: cannot select node until id for node is known');\n return 0;\n }\n if (this.rowPinned) {\n console.warn('AG Grid: cannot select pinned rows');\n return 0;\n }\n // if we are a footer, we don't do selection, just pass the info\n // to the sibling (the parent of the group)\n if (this.footer) {\n return this.sibling.setSelectedParams(params);\n }\n if (rangeSelect && this.beans.selectionService.getLastSelectedNode()) {\n var newRowClicked = this.beans.selectionService.getLastSelectedNode() !== this;\n var allowMultiSelect = this.beans.gridOptionsWrapper.isRowSelectionMulti();\n if (newRowClicked && allowMultiSelect) {\n var nodesChanged = this.doRowRangeSelection(params.newValue);\n this.beans.selectionService.setLastSelectedNode(this);\n return nodesChanged;\n }\n }\n var updatedCount = 0;\n // when groupSelectsFiltered, then this node may end up intermediate despite\n // trying to set it to true / false. this group will be calculated further on\n // down when we call calculatedSelectedForAllGroupNodes(). we need to skip it\n // here, otherwise the updatedCount would include it.\n var skipThisNode = groupSelectsFiltered && this.group;\n if (!skipThisNode) {\n var thisNodeWasSelected = this.selectThisNode(newValue, params.event);\n if (thisNodeWasSelected) {\n updatedCount++;\n }\n }\n if (groupSelectsChildren && ((_a = this.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {\n updatedCount += this.selectChildNodes(newValue, groupSelectsFiltered);\n }\n // clear other nodes if not doing multi select\n if (!suppressFinishActions) {\n var clearOtherNodes = newValue && (clearSelection || !this.beans.gridOptionsWrapper.isRowSelectionMulti());\n if (clearOtherNodes) {\n updatedCount += this.beans.selectionService.clearOtherNodes(this);\n }\n // only if we selected something, then update groups and fire events\n if (updatedCount > 0) {\n this.beans.selectionService.updateGroupsFromChildrenSelections();\n // this is the very end of the 'action node', so we are finished all the updates,\n // include any parent / child changes that this method caused\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED\n };\n this.beans.eventService.dispatchEvent(event_1);\n }\n // so if user next does shift-select, we know where to start the selection from\n if (newValue) {\n this.beans.selectionService.setLastSelectedNode(this);\n }\n }\n return updatedCount;\n };\n // selects all rows between this node and the last selected node (or the top if this is the first selection).\n // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by\n // holding down 'shift'.\n RowNode.prototype.doRowRangeSelection = function (value) {\n var _this = this;\n if (value === void 0) { value = true; }\n var groupsSelectChildren = this.beans.gridOptionsWrapper.isGroupSelectsChildren();\n var lastSelectedNode = this.beans.selectionService.getLastSelectedNode();\n var nodesToSelect = this.beans.rowModel.getNodesInRangeForSelection(this, lastSelectedNode);\n var updatedCount = 0;\n nodesToSelect.forEach(function (rowNode) {\n if (rowNode.group && groupsSelectChildren || (value === false && _this === rowNode)) {\n return;\n }\n var nodeWasSelected = rowNode.selectThisNode(value);\n if (nodeWasSelected) {\n updatedCount++;\n }\n });\n this.beans.selectionService.updateGroupsFromChildrenSelections();\n var event = {\n type: Events.EVENT_SELECTION_CHANGED\n };\n this.beans.eventService.dispatchEvent(event);\n return updatedCount;\n };\n RowNode.prototype.isParentOfNode = function (potentialParent) {\n var parentNode = this.parent;\n while (parentNode) {\n if (parentNode === potentialParent) {\n return true;\n }\n parentNode = parentNode.parent;\n }\n return false;\n };\n RowNode.prototype.selectThisNode = function (newValue, e) {\n // we only check selectable when newValue=true (ie selecting) to allow unselecting values,\n // as selectable is dynamic, need a way to unselect rows when selectable becomes false.\n var selectionNotAllowed = !this.selectable && newValue;\n var selectionNotChanged = this.selected === newValue;\n if (selectionNotAllowed || selectionNotChanged) {\n return false;\n }\n this.selected = newValue;\n if (this.eventService) {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_SELECTED));\n }\n var event = Object.assign({}, this.createGlobalRowEvent(Events.EVENT_ROW_SELECTED), {\n event: e || null\n });\n this.beans.eventService.dispatchEvent(event);\n return true;\n };\n RowNode.prototype.selectChildNodes = function (newValue, groupSelectsFiltered) {\n var children = groupSelectsFiltered ? this.childrenAfterAggFilter : this.childrenAfterGroup;\n if (missing(children)) {\n return 0;\n }\n var updatedCount = 0;\n for (var i = 0; i < children.length; i++) {\n updatedCount += children[i].setSelectedParams({\n newValue: newValue,\n clearSelection: false,\n suppressFinishActions: true,\n groupSelectsFiltered: groupSelectsFiltered\n });\n }\n return updatedCount;\n };\n /** Add an event listener. */\n RowNode.prototype.addEventListener = function (eventType, listener) {\n if (!this.eventService) {\n this.eventService = new EventService();\n }\n this.eventService.addEventListener(eventType, listener);\n };\n /** Remove event listener. */\n RowNode.prototype.removeEventListener = function (eventType, listener) {\n if (!this.eventService) {\n return;\n }\n this.eventService.removeEventListener(eventType, listener);\n if (this.eventService.noRegisteredListenersExist()) {\n this.eventService = null;\n }\n };\n RowNode.prototype.onMouseEnter = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));\n };\n RowNode.prototype.onMouseLeave = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));\n };\n RowNode.prototype.getFirstChildOfFirstChild = function (rowGroupColumn) {\n var currentRowNode = this;\n var isCandidate = true;\n var foundFirstChildPath = false;\n var nodeToSwapIn = null;\n // if we are hiding groups, then if we are the first child, of the first child,\n // all the way up to the column we are interested in, then we show the group cell.\n while (isCandidate && !foundFirstChildPath) {\n var parentRowNode = currentRowNode.parent;\n var firstChild = exists(parentRowNode) && currentRowNode.firstChild;\n if (firstChild) {\n if (parentRowNode.rowGroupColumn === rowGroupColumn) {\n foundFirstChildPath = true;\n nodeToSwapIn = parentRowNode;\n }\n }\n else {\n isCandidate = false;\n }\n currentRowNode = parentRowNode;\n }\n return foundFirstChildPath ? nodeToSwapIn : null;\n };\n RowNode.prototype.isFullWidthCell = function () {\n var isFullWidthCellFunc = this.beans.gridOptionsWrapper.getIsFullWidthCellFunc();\n return isFullWidthCellFunc ? isFullWidthCellFunc({ rowNode: this }) : false;\n };\n /**\n * Returns the route of the row node. If the Row Node is a group, it returns the route to that Row Node.\n * If the Row Node is not a group, it returns `undefined`.\n */\n RowNode.prototype.getRoute = function () {\n if (this.key == null) {\n return;\n }\n var res = [];\n var pointer = this;\n while (pointer.key != null) {\n res.push(pointer.key);\n pointer = pointer.parent;\n }\n return res.reverse();\n };\n RowNode.ID_PREFIX_ROW_GROUP = 'row-group-';\n RowNode.ID_PREFIX_TOP_PINNED = 't-';\n RowNode.ID_PREFIX_BOTTOM_PINNED = 'b-';\n RowNode.OBJECT_ID_SEQUENCE = 0;\n RowNode.EVENT_ROW_SELECTED = 'rowSelected';\n RowNode.EVENT_DATA_CHANGED = 'dataChanged';\n RowNode.EVENT_CELL_CHANGED = 'cellChanged';\n RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';\n RowNode.EVENT_MASTER_CHANGED = 'masterChanged';\n RowNode.EVENT_GROUP_CHANGED = 'groupChanged';\n RowNode.EVENT_MOUSE_ENTER = 'mouseEnter';\n RowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';\n RowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';\n RowNode.EVENT_TOP_CHANGED = 'topChanged';\n RowNode.EVENT_DISPLAYED_CHANGED = 'displayedChanged';\n RowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';\n RowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';\n RowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';\n RowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';\n RowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n RowNode.EVENT_HAS_CHILDREN_CHANGED = 'hasChildrenChanged';\n RowNode.EVENT_SELECTABLE_CHANGED = 'selectableChanged';\n RowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';\n RowNode.EVENT_HIGHLIGHT_CHANGED = 'rowHighlightChanged';\n RowNode.EVENT_DRAGGING_CHANGED = 'draggingChanged';\n return RowNode;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2i = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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$9 = (undefined && undefined.__assign) || function () {\n __assign$9 = 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$9.apply(this, arguments);\n};\nvar __decorate$21 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CheckboxSelectionComponent = /** @class */ (function (_super) {\n __extends$2i(CheckboxSelectionComponent, _super);\n function CheckboxSelectionComponent() {\n return _super.call(this, /* html*/ \"\\n
\\n \\n
\") || this;\n }\n CheckboxSelectionComponent.prototype.postConstruct = function () {\n this.eCheckbox.setPassive(true);\n };\n CheckboxSelectionComponent.prototype.getCheckboxId = function () {\n return this.eCheckbox.getInputElement().id;\n };\n CheckboxSelectionComponent.prototype.onDataChanged = function () {\n // when rows are loaded for the second time, this can impact the selection, as a row\n // could be loaded as already selected (if user scrolls down, and then up again).\n this.onSelectionChanged();\n };\n CheckboxSelectionComponent.prototype.onSelectableChanged = function () {\n this.showOrHideSelect();\n };\n CheckboxSelectionComponent.prototype.onSelectionChanged = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var state = this.rowNode.isSelected();\n var stateName = state === undefined\n ? translate('ariaIndeterminate', 'indeterminate')\n : (state === true\n ? translate('ariaChecked', 'checked')\n : translate('ariaUnchecked', 'unchecked'));\n var ariaLabel = translate('ariaRowToggleSelection', 'Press Space to toggle row selection');\n this.eCheckbox.setValue(state, true);\n this.eCheckbox.setInputAriaLabel(ariaLabel + \" (\" + stateName + \")\");\n };\n CheckboxSelectionComponent.prototype.onCheckedClicked = function (event) {\n var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();\n var updatedCount = this.rowNode.setSelectedParams({ newValue: false, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered });\n return updatedCount;\n };\n CheckboxSelectionComponent.prototype.onUncheckedClicked = function (event) {\n var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();\n var updatedCount = this.rowNode.setSelectedParams({ newValue: true, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered });\n return updatedCount;\n };\n CheckboxSelectionComponent.prototype.init = function (params) {\n var _this = this;\n this.rowNode = params.rowNode;\n this.column = params.column;\n this.overrides = params.overrides;\n this.onSelectionChanged();\n // we don't want double click on this icon to open a group\n this.addManagedListener(this.eCheckbox.getInputElement(), 'dblclick', function (event) {\n stopPropagationForAgGrid(event);\n });\n this.addManagedListener(this.eCheckbox.getInputElement(), 'click', function (event) {\n // we don't want the row clicked event to fire when selecting the checkbox, otherwise the row\n // would possibly get selected twice\n stopPropagationForAgGrid(event);\n var isSelected = _this.eCheckbox.getValue();\n var previousValue = _this.eCheckbox.getPreviousValue();\n if (previousValue === undefined || isSelected === undefined) {\n // Indeterminate state - try toggling children to determine action.\n var result = _this.onUncheckedClicked(event || {});\n if (result === 0) {\n _this.onCheckedClicked(event);\n }\n }\n else if (isSelected) {\n _this.onCheckedClicked(event);\n }\n else {\n _this.onUncheckedClicked(event || {});\n }\n });\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, this.onSelectionChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onDataChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_SELECTABLE_CHANGED, this.onSelectableChanged.bind(this));\n var isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n var checkboxVisibleIsDynamic = isRowSelectableFunc || typeof this.getIsVisible() === 'function';\n if (checkboxVisibleIsDynamic) {\n var showOrHideSelectListener = this.showOrHideSelect.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, showOrHideSelectListener);\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, showOrHideSelectListener);\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, showOrHideSelectListener);\n this.showOrHideSelect();\n }\n this.eCheckbox.getInputElement().setAttribute('tabindex', '-1');\n };\n CheckboxSelectionComponent.prototype.showOrHideSelect = function () {\n var _a, _b, _c, _d;\n // if the isRowSelectable() is not provided the row node is selectable by default\n var selectable = this.rowNode.selectable;\n // checkboxSelection callback is deemed a legacy solution however we will still consider it's result.\n // If selectable, then also check the colDef callback. if not selectable, this it short circuits - no need\n // to call the colDef callback.\n var isVisible = this.getIsVisible();\n if (selectable) {\n if (typeof isVisible === 'function') {\n var extraParams = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.callbackParams;\n var params = (_b = this.column) === null || _b === void 0 ? void 0 : _b.createColumnFunctionCallbackParams(this.rowNode);\n selectable = params ? isVisible(__assign$9(__assign$9({}, extraParams), params)) : false;\n }\n else {\n selectable = (isVisible !== null && isVisible !== void 0 ? isVisible : false);\n }\n }\n var disableInsteadOfHide = (_c = this.column) === null || _c === void 0 ? void 0 : _c.getColDef().showDisabledCheckboxes;\n if (disableInsteadOfHide) {\n this.eCheckbox.setDisabled(!selectable);\n this.setVisible(true);\n this.setDisplayed(true);\n return;\n }\n if ((_d = this.overrides) === null || _d === void 0 ? void 0 : _d.removeHidden) {\n this.setDisplayed(selectable);\n return;\n }\n this.setVisible(selectable);\n };\n CheckboxSelectionComponent.prototype.getIsVisible = function () {\n var _a, _b;\n if (this.overrides) {\n return this.overrides.isVisible;\n }\n // column will be missing if groupUseEntireRow=true\n return (_b = (_a = this.column) === null || _a === void 0 ? void 0 : _a.getColDef()) === null || _b === void 0 ? void 0 : _b.checkboxSelection;\n };\n __decorate$21([\n RefSelector('eCheckbox')\n ], CheckboxSelectionComponent.prototype, \"eCheckbox\", void 0);\n __decorate$21([\n PostConstruct\n ], CheckboxSelectionComponent.prototype, \"postConstruct\", null);\n return CheckboxSelectionComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2h = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$20 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$3 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar DragSourceType;\n(function (DragSourceType) {\n DragSourceType[DragSourceType[\"ToolPanel\"] = 0] = \"ToolPanel\";\n DragSourceType[DragSourceType[\"HeaderCell\"] = 1] = \"HeaderCell\";\n DragSourceType[DragSourceType[\"RowDrag\"] = 2] = \"RowDrag\";\n DragSourceType[DragSourceType[\"ChartPanel\"] = 3] = \"ChartPanel\";\n})(DragSourceType || (DragSourceType = {}));\nvar VerticalDirection;\n(function (VerticalDirection) {\n VerticalDirection[VerticalDirection[\"Up\"] = 0] = \"Up\";\n VerticalDirection[VerticalDirection[\"Down\"] = 1] = \"Down\";\n})(VerticalDirection || (VerticalDirection = {}));\nvar HorizontalDirection;\n(function (HorizontalDirection) {\n HorizontalDirection[HorizontalDirection[\"Left\"] = 0] = \"Left\";\n HorizontalDirection[HorizontalDirection[\"Right\"] = 1] = \"Right\";\n})(HorizontalDirection || (HorizontalDirection = {}));\nvar DragAndDropService = /** @class */ (function (_super) {\n __extends$2h(DragAndDropService, _super);\n function DragAndDropService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.dragSourceAndParamsList = [];\n _this.dropTargets = [];\n return _this;\n }\n DragAndDropService_1 = DragAndDropService;\n DragAndDropService.prototype.init = function () {\n this.ePinnedIcon = createIcon('columnMovePin', this.gridOptionsWrapper, null);\n this.eHideIcon = createIcon('columnMoveHide', this.gridOptionsWrapper, null);\n this.eMoveIcon = createIcon('columnMoveMove', this.gridOptionsWrapper, null);\n this.eLeftIcon = createIcon('columnMoveLeft', this.gridOptionsWrapper, null);\n this.eRightIcon = createIcon('columnMoveRight', this.gridOptionsWrapper, null);\n this.eGroupIcon = createIcon('columnMoveGroup', this.gridOptionsWrapper, null);\n this.eAggregateIcon = createIcon('columnMoveValue', this.gridOptionsWrapper, null);\n this.ePivotIcon = createIcon('columnMovePivot', this.gridOptionsWrapper, null);\n this.eDropNotAllowedIcon = createIcon('dropNotAllowed', this.gridOptionsWrapper, null);\n };\n DragAndDropService.prototype.addDragSource = function (dragSource, allowTouch) {\n if (allowTouch === void 0) { allowTouch = false; }\n var params = {\n eElement: dragSource.eElement,\n dragStartPixels: dragSource.dragStartPixels,\n onDragStart: this.onDragStart.bind(this, dragSource),\n onDragStop: this.onDragStop.bind(this),\n onDragging: this.onDragging.bind(this)\n };\n this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });\n this.dragService.addDragSource(params, allowTouch);\n };\n DragAndDropService.prototype.removeDragSource = function (dragSource) {\n var sourceAndParams = this.dragSourceAndParamsList.find(function (item) { return item.dragSource === dragSource; });\n if (sourceAndParams) {\n this.dragService.removeDragSource(sourceAndParams.params);\n removeFromArray(this.dragSourceAndParamsList, sourceAndParams);\n }\n };\n DragAndDropService.prototype.clearDragSourceParamsList = function () {\n var _this = this;\n this.dragSourceAndParamsList.forEach(function (sourceAndParams) { return _this.dragService.removeDragSource(sourceAndParams.params); });\n this.dragSourceAndParamsList.length = 0;\n };\n DragAndDropService.prototype.nudge = function () {\n if (this.dragging) {\n this.onDragging(this.eventLastTime, true);\n }\n };\n DragAndDropService.prototype.onDragStart = function (dragSource, mouseEvent) {\n this.dragging = true;\n this.dragSource = dragSource;\n this.eventLastTime = mouseEvent;\n this.dragItem = this.dragSource.getDragItem();\n this.lastDropTarget = this.dragSource.dragSourceDropTarget;\n if (this.dragSource.onDragStarted) {\n this.dragSource.onDragStarted();\n }\n this.createGhost();\n };\n DragAndDropService.prototype.onDragStop = function (mouseEvent) {\n this.eventLastTime = null;\n this.dragging = false;\n if (this.dragSource.onDragStopped) {\n this.dragSource.onDragStopped();\n }\n if (this.lastDropTarget && this.lastDropTarget.onDragStop) {\n var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);\n this.lastDropTarget.onDragStop(draggingEvent);\n }\n this.lastDropTarget = null;\n this.dragItem = null;\n this.removeGhost();\n };\n DragAndDropService.prototype.onDragging = function (mouseEvent, fromNudge) {\n var _this = this;\n var _a, _b, _c, _d;\n var hDirection = this.getHorizontalDirection(mouseEvent);\n var vDirection = this.getVerticalDirection(mouseEvent);\n this.eventLastTime = mouseEvent;\n this.positionGhost(mouseEvent);\n // check if mouseEvent intersects with any of the drop targets\n var validDropTargets = this.dropTargets.filter(function (target) { return _this.isMouseOnDropTarget(mouseEvent, target); });\n var dropTarget = this.findCurrentDropTarget(mouseEvent, validDropTargets);\n if (dropTarget !== this.lastDropTarget) {\n this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n if (this.lastDropTarget !== null && dropTarget === null) {\n (_b = (_a = this.dragSource).onGridExit) === null || _b === void 0 ? void 0 : _b.call(_a, this.dragItem);\n }\n if (this.lastDropTarget === null && dropTarget !== null) {\n (_d = (_c = this.dragSource).onGridEnter) === null || _d === void 0 ? void 0 : _d.call(_c, this.dragItem);\n }\n this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget = dropTarget;\n }\n else if (dropTarget && dropTarget.onDragging) {\n var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragging(draggingEvent);\n }\n };\n DragAndDropService.prototype.getAllContainersFromDropTarget = function (dropTarget) {\n var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n var containers = [[dropTarget.getContainer()]];\n return secondaryContainers ? containers.concat(secondaryContainers) : containers;\n };\n DragAndDropService.prototype.allContainersIntersect = function (mouseEvent, containers) {\n var e_1, _a;\n try {\n for (var containers_1 = __values$3(containers), containers_1_1 = containers_1.next(); !containers_1_1.done; containers_1_1 = containers_1.next()) {\n var container = containers_1_1.value;\n var rect = container.getBoundingClientRect();\n // if element is not visible, then width and height are zero\n if (rect.width === 0 || rect.height === 0) {\n return false;\n }\n var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX < rect.right;\n var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY < rect.bottom;\n if (!horizontalFit || !verticalFit) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (containers_1_1 && !containers_1_1.done && (_a = containers_1.return)) _a.call(containers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n DragAndDropService.prototype.isMouseOnDropTarget = function (mouseEvent, dropTarget) {\n var e_2, _a;\n var allContainersFromDropTarget = this.getAllContainersFromDropTarget(dropTarget);\n var mouseOverTarget = false;\n try {\n for (var allContainersFromDropTarget_1 = __values$3(allContainersFromDropTarget), allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next(); !allContainersFromDropTarget_1_1.done; allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next()) {\n var currentContainers = allContainersFromDropTarget_1_1.value;\n if (this.allContainersIntersect(mouseEvent, currentContainers)) {\n mouseOverTarget = true;\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (allContainersFromDropTarget_1_1 && !allContainersFromDropTarget_1_1.done && (_a = allContainersFromDropTarget_1.return)) _a.call(allContainersFromDropTarget_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (dropTarget.targetContainsSource && !dropTarget.getContainer().contains(this.dragSource.eElement)) {\n return false;\n }\n return mouseOverTarget && dropTarget.isInterestedIn(this.dragSource.type, this.dragSource.eElement);\n };\n DragAndDropService.prototype.findCurrentDropTarget = function (mouseEvent, validDropTargets) {\n var e_3, _a, e_4, _b;\n var len = validDropTargets.length;\n if (len === 0) {\n return null;\n }\n if (len === 1) {\n return validDropTargets[0];\n }\n var eDocument = this.gridOptionsWrapper.getDocument();\n // elementsFromPoint return a list of elements under\n // the mouseEvent sorted from topMost to bottomMost\n var elementStack = eDocument.elementsFromPoint(mouseEvent.clientX, mouseEvent.clientY);\n try {\n // loop over the sorted elementStack to find which dropTarget comes first\n for (var elementStack_1 = __values$3(elementStack), elementStack_1_1 = elementStack_1.next(); !elementStack_1_1.done; elementStack_1_1 = elementStack_1.next()) {\n var el = elementStack_1_1.value;\n try {\n for (var validDropTargets_1 = (e_4 = void 0, __values$3(validDropTargets)), validDropTargets_1_1 = validDropTargets_1.next(); !validDropTargets_1_1.done; validDropTargets_1_1 = validDropTargets_1.next()) {\n var dropTarget = validDropTargets_1_1.value;\n var containers = flatten(this.getAllContainersFromDropTarget(dropTarget));\n if (containers.indexOf(el) !== -1) {\n return dropTarget;\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (validDropTargets_1_1 && !validDropTargets_1_1.done && (_b = validDropTargets_1.return)) _b.call(validDropTargets_1);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (elementStack_1_1 && !elementStack_1_1.done && (_a = elementStack_1.return)) _a.call(elementStack_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n // we should never hit this point of the code because only\n // valid dropTargets should be provided to this method.\n return null;\n };\n DragAndDropService.prototype.enterDragTargetIfExists = function (dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n if (!dropTarget) {\n return;\n }\n if (dropTarget.onDragEnter) {\n var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragEnter(dragEnterEvent);\n }\n this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);\n };\n DragAndDropService.prototype.leaveLastTargetIfExists = function (mouseEvent, hDirection, vDirection, fromNudge) {\n if (!this.lastDropTarget) {\n return;\n }\n if (this.lastDropTarget.onDragLeave) {\n var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget.onDragLeave(dragLeaveEvent);\n }\n this.setGhostIcon(null);\n };\n DragAndDropService.prototype.addDropTarget = function (dropTarget) {\n this.dropTargets.push(dropTarget);\n };\n DragAndDropService.prototype.removeDropTarget = function (dropTarget) {\n this.dropTargets = this.dropTargets.filter(function (target) { return target.getContainer() !== dropTarget.getContainer(); });\n };\n DragAndDropService.prototype.hasExternalDropZones = function () {\n return this.dropTargets.some(function (zones) { return zones.external; });\n };\n DragAndDropService.prototype.findExternalZone = function (params) {\n var externalTargets = this.dropTargets.filter(function (target) { return target.external; });\n return externalTargets.find(function (zone) { return zone.getContainer() === params.getContainer(); }) || null;\n };\n DragAndDropService.prototype.getHorizontalDirection = function (event) {\n var clientX = this.eventLastTime && this.eventLastTime.clientX;\n var eClientX = event.clientX;\n if (clientX === eClientX) {\n return null;\n }\n return clientX > eClientX ? HorizontalDirection.Left : HorizontalDirection.Right;\n };\n DragAndDropService.prototype.getVerticalDirection = function (event) {\n var clientY = this.eventLastTime && this.eventLastTime.clientY;\n var eClientY = event.clientY;\n if (clientY === eClientY) {\n return null;\n }\n return clientY > eClientY ? VerticalDirection.Up : VerticalDirection.Down;\n };\n DragAndDropService.prototype.createDropTargetEvent = function (dropTarget, event, hDirection, vDirection, fromNudge) {\n // localise x and y to the target\n var dropZoneTarget = dropTarget.getContainer();\n var rect = dropZoneTarget.getBoundingClientRect();\n var _a = this, api = _a.gridApi, columnApi = _a.columnApi, dragItem = _a.dragItem, dragSource = _a.dragSource;\n var x = event.clientX - rect.left;\n var y = event.clientY - rect.top;\n return { event: event, x: x, y: y, vDirection: vDirection, hDirection: hDirection, dragSource: dragSource, fromNudge: fromNudge, dragItem: dragItem, api: api, columnApi: columnApi, dropZoneTarget: dropZoneTarget };\n };\n DragAndDropService.prototype.positionGhost = function (event) {\n var ghost = this.eGhost;\n if (!ghost) {\n return;\n }\n var ghostRect = ghost.getBoundingClientRect();\n var ghostHeight = ghostRect.height;\n // for some reason, without the '-2', it still overlapped by 1 or 2 pixels, which\n // then brought in scrollbars to the browser. no idea why, but putting in -2 here\n // works around it which is good enough for me.\n var browserWidth = getBodyWidth() - 2;\n var browserHeight = getBodyHeight() - 2;\n var top = event.pageY - (ghostHeight / 2);\n var left = event.pageX - 10;\n var eDocument = this.gridOptionsWrapper.getDocument();\n var win = (eDocument.defaultView || window);\n var windowScrollY = win.pageYOffset || eDocument.documentElement.scrollTop;\n var windowScrollX = win.pageXOffset || eDocument.documentElement.scrollLeft;\n // check ghost is not positioned outside of the browser\n if (browserWidth > 0 && ((left + ghost.clientWidth) > (browserWidth + windowScrollX))) {\n left = browserWidth + windowScrollX - ghost.clientWidth;\n }\n if (left < 0) {\n left = 0;\n }\n if (browserHeight > 0 && ((top + ghost.clientHeight) > (browserHeight + windowScrollY))) {\n top = browserHeight + windowScrollY - ghost.clientHeight;\n }\n if (top < 0) {\n top = 0;\n }\n ghost.style.left = left + \"px\";\n ghost.style.top = top + \"px\";\n };\n DragAndDropService.prototype.removeGhost = function () {\n if (this.eGhost && this.eGhostParent) {\n this.eGhostParent.removeChild(this.eGhost);\n }\n this.eGhost = null;\n };\n DragAndDropService.prototype.createGhost = function () {\n this.eGhost = loadTemplate(DragAndDropService_1.GHOST_TEMPLATE);\n this.mouseEventService.stampTopLevelGridCompWithGridInstance(this.eGhost);\n var theme = this.environment.getTheme().theme;\n if (theme) {\n this.eGhost.classList.add(theme);\n }\n this.eGhostIcon = this.eGhost.querySelector('.ag-dnd-ghost-icon');\n this.setGhostIcon(null);\n var eText = this.eGhost.querySelector('.ag-dnd-ghost-label');\n var dragItemName = this.dragSource.dragItemName;\n if (isFunction(dragItemName)) {\n dragItemName = dragItemName();\n }\n eText.innerHTML = escapeString(dragItemName) || '';\n this.eGhost.style.height = '25px';\n this.eGhost.style.top = '20px';\n this.eGhost.style.left = '20px';\n var eDocument = this.gridOptionsWrapper.getDocument();\n var targetEl = null;\n try {\n targetEl = eDocument.fullscreenElement;\n }\n catch (e) {\n // some environments like SalesForce will throw errors\n // simply by trying to read the fullscreenElement property\n }\n finally {\n if (!targetEl) {\n targetEl = eDocument.querySelector('body');\n }\n }\n this.eGhostParent = targetEl;\n if (!this.eGhostParent) {\n console.warn('AG Grid: could not find document body, it is needed for dragging columns');\n }\n else {\n this.eGhostParent.appendChild(this.eGhost);\n }\n };\n DragAndDropService.prototype.setGhostIcon = function (iconName, shake) {\n if (shake === void 0) { shake = false; }\n clearElement(this.eGhostIcon);\n var eIcon = null;\n if (!iconName) {\n iconName = this.dragSource.defaultIconName || DragAndDropService_1.ICON_NOT_ALLOWED;\n }\n switch (iconName) {\n case DragAndDropService_1.ICON_PINNED:\n eIcon = this.ePinnedIcon;\n break;\n case DragAndDropService_1.ICON_MOVE:\n eIcon = this.eMoveIcon;\n break;\n case DragAndDropService_1.ICON_LEFT:\n eIcon = this.eLeftIcon;\n break;\n case DragAndDropService_1.ICON_RIGHT:\n eIcon = this.eRightIcon;\n break;\n case DragAndDropService_1.ICON_GROUP:\n eIcon = this.eGroupIcon;\n break;\n case DragAndDropService_1.ICON_AGGREGATE:\n eIcon = this.eAggregateIcon;\n break;\n case DragAndDropService_1.ICON_PIVOT:\n eIcon = this.ePivotIcon;\n break;\n case DragAndDropService_1.ICON_NOT_ALLOWED:\n eIcon = this.eDropNotAllowedIcon;\n break;\n case DragAndDropService_1.ICON_HIDE:\n eIcon = this.eHideIcon;\n break;\n }\n this.eGhostIcon.classList.toggle('ag-shake-left-to-right', shake);\n if (eIcon === this.eHideIcon && this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns()) {\n return;\n }\n if (eIcon) {\n this.eGhostIcon.appendChild(eIcon);\n }\n };\n var DragAndDropService_1;\n DragAndDropService.ICON_PINNED = 'pinned';\n DragAndDropService.ICON_MOVE = 'move';\n DragAndDropService.ICON_LEFT = 'left';\n DragAndDropService.ICON_RIGHT = 'right';\n DragAndDropService.ICON_GROUP = 'group';\n DragAndDropService.ICON_AGGREGATE = 'aggregate';\n DragAndDropService.ICON_PIVOT = 'pivot';\n DragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';\n DragAndDropService.ICON_HIDE = 'hide';\n DragAndDropService.GHOST_TEMPLATE = \"
\\n \\n
\\n
\";\n __decorate$20([\n Autowired('dragService')\n ], DragAndDropService.prototype, \"dragService\", void 0);\n __decorate$20([\n Autowired('mouseEventService')\n ], DragAndDropService.prototype, \"mouseEventService\", void 0);\n __decorate$20([\n Autowired('environment')\n ], DragAndDropService.prototype, \"environment\", void 0);\n __decorate$20([\n Autowired('columnApi')\n ], DragAndDropService.prototype, \"columnApi\", void 0);\n __decorate$20([\n Autowired('gridApi')\n ], DragAndDropService.prototype, \"gridApi\", void 0);\n __decorate$20([\n PostConstruct\n ], DragAndDropService.prototype, \"init\", null);\n __decorate$20([\n PreDestroy\n ], DragAndDropService.prototype, \"clearDragSourceParamsList\", null);\n DragAndDropService = DragAndDropService_1 = __decorate$20([\n Bean('dragAndDropService')\n ], DragAndDropService);\n return DragAndDropService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2g = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowDragComp = /** @class */ (function (_super) {\n __extends$2g(RowDragComp, _super);\n function RowDragComp(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange) {\n var _this = _super.call(this) || this;\n _this.cellValueFn = cellValueFn;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.customGui = customGui;\n _this.dragStartPixels = dragStartPixels;\n _this.suppressVisibilityChange = suppressVisibilityChange;\n _this.dragSource = null;\n return _this;\n }\n RowDragComp.prototype.isCustomGui = function () {\n return this.customGui != null;\n };\n RowDragComp.prototype.postConstruct = function () {\n if (!this.customGui) {\n this.setTemplate(/* html */ \"
\");\n this.getGui().appendChild(createIconNoSpan('rowDrag', this.beans.gridOptionsWrapper, null));\n this.addDragSource();\n }\n else {\n this.setDragElement(this.customGui, this.dragStartPixels);\n }\n this.checkCompatibility();\n if (!this.suppressVisibilityChange) {\n var strategy = this.beans.gridOptionsWrapper.isRowDragManaged() ?\n new ManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column) :\n new NonManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column);\n this.createManagedBean(strategy, this.beans.context);\n }\n };\n RowDragComp.prototype.setDragElement = function (dragElement, dragStartPixels) {\n this.setTemplateFromElement(dragElement);\n this.addDragSource(dragStartPixels);\n };\n RowDragComp.prototype.getSelectedNodes = function () {\n var isRowDragMultiRow = this.beans.gridOptionsWrapper.isRowDragMultiRow();\n if (!isRowDragMultiRow) {\n return [this.rowNode];\n }\n var selection = this.beans.selectionService.getSelectedNodes();\n return selection.indexOf(this.rowNode) !== -1 ? selection : [this.rowNode];\n };\n // returns true if all compatibility items work out\n RowDragComp.prototype.checkCompatibility = function () {\n var managed = this.beans.gridOptionsWrapper.isRowDragManaged();\n var treeData = this.beans.gridOptionsWrapper.isTreeData();\n if (treeData && managed) {\n doOnce(function () {\n return console.warn('AG Grid: If using row drag with tree data, you cannot have rowDragManaged=true');\n }, 'RowDragComp.managedAndTreeData');\n }\n };\n RowDragComp.prototype.getDragItem = function () {\n return {\n rowNode: this.rowNode,\n rowNodes: this.getSelectedNodes(),\n columns: this.column ? [this.column] : undefined,\n defaultTextValue: this.cellValueFn(),\n };\n };\n RowDragComp.prototype.addDragSource = function (dragStartPixels) {\n var _this = this;\n if (dragStartPixels === void 0) { dragStartPixels = 4; }\n // if this is changing the drag element, delete the previous dragSource\n if (this.dragSource) {\n this.removeDragSource();\n }\n var rowDragText = this.gridOptionsWrapper.getRowDragText(this.column);\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.dragSource = {\n type: DragSourceType.RowDrag,\n eElement: this.getGui(),\n dragItemName: function () {\n var _a;\n var dragItem = _this.getDragItem();\n var dragItemCount = ((_a = dragItem.rowNodes) === null || _a === void 0 ? void 0 : _a.length) || 1;\n if (rowDragText) {\n return rowDragText(dragItem, dragItemCount);\n }\n return dragItemCount === 1 ? _this.cellValueFn() : dragItemCount + \" \" + translate('rowDragRows', 'rows');\n },\n getDragItem: function () { return _this.getDragItem(); },\n dragStartPixels: dragStartPixels,\n dragSourceDomDataKey: this.beans.gridOptionsWrapper.getDomDataKey()\n };\n this.beans.dragAndDropService.addDragSource(this.dragSource, true);\n };\n RowDragComp.prototype.removeDragSource = function () {\n if (this.dragSource) {\n this.beans.dragAndDropService.removeDragSource(this.dragSource);\n }\n this.dragSource = null;\n };\n __decorate$1$([\n Autowired('beans')\n ], RowDragComp.prototype, \"beans\", void 0);\n __decorate$1$([\n PostConstruct\n ], RowDragComp.prototype, \"postConstruct\", null);\n __decorate$1$([\n PreDestroy\n ], RowDragComp.prototype, \"removeDragSource\", null);\n return RowDragComp;\n}(Component));\nvar VisibilityStrategy = /** @class */ (function (_super) {\n __extends$2g(VisibilityStrategy, _super);\n function VisibilityStrategy(parent, rowNode, column) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.rowNode = rowNode;\n _this.column = column;\n return _this;\n }\n VisibilityStrategy.prototype.setDisplayedOrVisible = function (neverDisplayed) {\n if (neverDisplayed) {\n this.parent.setDisplayed(false);\n }\n else {\n var shown = true;\n var isShownSometimes = false;\n if (this.column) {\n shown = this.column.isRowDrag(this.rowNode) || this.parent.isCustomGui();\n isShownSometimes = isFunction(this.column.getColDef().rowDrag);\n }\n // if shown sometimes, them some rows can have drag handle while other don't,\n // so we use setVisible to keep the handles horizontally aligned (as setVisible\n // keeps the empty space, whereas setDisplayed looses the space)\n if (isShownSometimes) {\n this.parent.setDisplayed(true);\n this.parent.setVisible(shown);\n }\n else {\n this.parent.setDisplayed(shown);\n this.parent.setVisible(true);\n }\n }\n };\n return VisibilityStrategy;\n}(BeanStub));\n// when non managed, the visibility depends on suppressRowDrag property only\nvar NonManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends$2g(NonManagedVisibilityStrategy, _super);\n function NonManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this, parent, rowNode, column) || this;\n _this.beans = beans;\n return _this;\n }\n NonManagedVisibilityStrategy.prototype.postConstruct = function () {\n this.addManagedListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var neverDisplayed = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n this.setDisplayedOrVisible(neverDisplayed);\n };\n __decorate$1$([\n PostConstruct\n ], NonManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return NonManagedVisibilityStrategy;\n}(VisibilityStrategy));\n// when managed, the visibility depends on sort, filter and row group, as well as suppressRowDrag property\nvar ManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends$2g(ManagedVisibilityStrategy, _super);\n function ManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this, parent, rowNode, column) || this;\n _this.beans = beans;\n return _this;\n }\n ManagedVisibilityStrategy.prototype.postConstruct = function () {\n // we do not show the component if sort, filter or grouping is active\n this.addManagedListener(this.beans.eventService, Events.EVENT_SORT_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.eventService, Events.EVENT_FILTER_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();\n var rowDragFeature = gridBodyCon.getRowDragFeature();\n var shouldPreventRowMove = rowDragFeature && rowDragFeature.shouldPreventRowMove();\n var suppressRowDrag = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n var hasExternalDropZones = this.beans.dragAndDropService.hasExternalDropZones();\n var neverDisplayed = (shouldPreventRowMove && !hasExternalDropZones) || suppressRowDrag;\n this.setDisplayedOrVisible(neverDisplayed);\n };\n __decorate$1$([\n PostConstruct\n ], ManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return ManagedVisibilityStrategy;\n}(VisibilityStrategy));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2f = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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$8 = (undefined && undefined.__assign) || function () {\n __assign$8 = 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$8.apply(this, arguments);\n};\nvar __decorate$1_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupCellRendererCtrl = /** @class */ (function (_super) {\n __extends$2f(GroupCellRendererCtrl, _super);\n function GroupCellRendererCtrl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupCellRendererCtrl.prototype.init = function (comp, eGui, eCheckbox, eExpanded, eContracted, compClass, params) {\n this.params = params;\n this.eGui = eGui;\n this.eCheckbox = eCheckbox;\n this.eExpanded = eExpanded;\n this.eContracted = eContracted;\n this.comp = comp;\n this.compClass = compClass;\n var topLevelFooter = this.isTopLevelFooter();\n var embeddedRowMismatch = this.isEmbeddedRowMismatch();\n // This allows for empty strings to appear as groups since\n // it will only return for null or undefined.\n var nullValue = params.value == null;\n var skipCell = false;\n // if the groupCellRenderer is inside of a footer and groupHideOpenParents is true\n // we should only display the groupCellRenderer if the current column is the rowGroupedColumn\n if (this.gridOptionsWrapper.isGroupIncludeFooter() && this.gridOptionsWrapper.isGroupHideOpenParents()) {\n var node = params.node;\n if (node.footer) {\n var showRowGroup = params.colDef && params.colDef.showRowGroup;\n var rowGroupColumnId = node.rowGroupColumn && node.rowGroupColumn.getColId();\n skipCell = showRowGroup !== rowGroupColumnId;\n }\n }\n this.cellIsBlank = topLevelFooter ? false : (embeddedRowMismatch || nullValue || skipCell);\n if (this.cellIsBlank) {\n return;\n }\n this.setupShowingValueForOpenedParent();\n this.findDisplayedGroupNode();\n this.addFullWidthRowDraggerIfNeeded();\n this.addExpandAndContract();\n this.addCheckboxIfNeeded();\n this.addValueElement();\n this.setupIndent();\n this.refreshAriaExpanded();\n };\n GroupCellRendererCtrl.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // property cleanup to avoid memory leaks\n this.expandListener = null;\n };\n GroupCellRendererCtrl.prototype.refreshAriaExpanded = function () {\n var _a = this.params, node = _a.node, eParentOfValue = _a.eParentOfValue;\n if (this.expandListener) {\n this.expandListener = this.expandListener();\n }\n if (!this.isExpandable()) {\n removeAriaExpanded(eParentOfValue);\n return;\n }\n var listener = function () {\n // for react, we don't use JSX, as setting attributes via jsx is slower\n setAriaExpanded(eParentOfValue, !!node.expanded);\n };\n this.expandListener = this.addManagedListener(node, RowNode.EVENT_EXPANDED_CHANGED, listener) || null;\n listener();\n };\n GroupCellRendererCtrl.prototype.isTopLevelFooter = function () {\n if (!this.gridOptionsWrapper.isGroupIncludeTotalFooter()) {\n return false;\n }\n if (this.params.value != null || this.params.node.level != -1) {\n return false;\n }\n // at this point, we know it's the root node and there is no value present, so it's a footer cell.\n // the only thing to work out is if we are displaying groups across multiple\n // columns (groupMultiAutoColumn=true), we only want 'total' to appear in the first column.\n var colDef = this.params.colDef;\n var doingFullWidth = colDef == null;\n if (doingFullWidth) {\n return true;\n }\n if (colDef.showRowGroup === true) {\n return true;\n }\n var rowGroupCols = this.columnModel.getRowGroupColumns();\n // this is a sanity check, rowGroupCols should always be present\n if (!rowGroupCols || rowGroupCols.length === 0) {\n return true;\n }\n var firstRowGroupCol = rowGroupCols[0];\n return firstRowGroupCol.getId() === colDef.showRowGroup;\n };\n // if we are doing embedded full width rows, we only show the renderer when\n // in the body, or if pinning in the pinned section, or if pinning and RTL,\n // in the right section. otherwise we would have the cell repeated in each section.\n GroupCellRendererCtrl.prototype.isEmbeddedRowMismatch = function () {\n if (!this.params.fullWidth || !this.gridOptionsWrapper.isEmbedFullWidthRows()) {\n return false;\n }\n var pinnedLeftCell = this.params.pinned === Constants.PINNED_LEFT;\n var pinnedRightCell = this.params.pinned === Constants.PINNED_RIGHT;\n var bodyCell = !pinnedLeftCell && !pinnedRightCell;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n if (this.columnModel.isPinningLeft()) {\n return !pinnedRightCell;\n }\n return !bodyCell;\n }\n if (this.columnModel.isPinningLeft()) {\n return !pinnedLeftCell;\n }\n return !bodyCell;\n };\n GroupCellRendererCtrl.prototype.findDisplayedGroupNode = function () {\n var column = this.params.column;\n var rowNode = this.params.node;\n if (this.showingValueForOpenedParent) {\n var pointer = rowNode.parent;\n while (pointer != null) {\n if (pointer.rowGroupColumn && column.isRowGroupDisplayed(pointer.rowGroupColumn.getId())) {\n this.displayedGroupNode = pointer;\n break;\n }\n pointer = pointer.parent;\n }\n }\n // if we didn't find a displayed group, set it to the row node\n if (missing(this.displayedGroupNode)) {\n this.displayedGroupNode = rowNode;\n }\n };\n GroupCellRendererCtrl.prototype.setupShowingValueForOpenedParent = function () {\n // note - this code depends on sortService.updateGroupDataForHiddenOpenParents, where group data\n // is updated to reflect the dragged down parents\n var rowNode = this.params.node;\n var column = this.params.column;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n this.showingValueForOpenedParent = false;\n return;\n }\n // hideOpenParents means rowNode.groupData can have data for the group this column is displaying, even though\n // this rowNode isn't grouping by the column we are displaying\n // if no groupData at all, we are not showing a parent value\n if (!rowNode.groupData) {\n this.showingValueForOpenedParent = false;\n return;\n }\n // this is the normal case, in that we are showing a group for which this column is configured. note that\n // this means the Row Group is closed (if it was open, we would not be displaying it)\n var showingGroupNode = rowNode.rowGroupColumn != null;\n if (showingGroupNode) {\n var keyOfGroupingColumn = rowNode.rowGroupColumn.getId();\n var configuredToShowThisGroupLevel = column.isRowGroupDisplayed(keyOfGroupingColumn);\n // if showing group as normal, we didn't take group info from parent\n if (configuredToShowThisGroupLevel) {\n this.showingValueForOpenedParent = false;\n return;\n }\n }\n // see if we are showing a Group Value for the Displayed Group. if we are showing a group value, and this Row Node\n // is not grouping by this Displayed Group, we must of gotten the value from a parent node\n var valPresent = rowNode.groupData[column.getId()] != null;\n this.showingValueForOpenedParent = valPresent;\n };\n GroupCellRendererCtrl.prototype.addValueElement = function () {\n if (this.displayedGroupNode.footer) {\n this.addFooterValue();\n }\n else {\n this.addGroupValue();\n this.addChildCount();\n }\n };\n GroupCellRendererCtrl.prototype.addGroupValue = function () {\n // we try and use the cellRenderer of the column used for the grouping if we can\n var paramsAdjusted = this.adjustParamsWithDetailsFromRelatedColumn();\n var innerCompDetails = this.getInnerCompDetails(paramsAdjusted);\n var valueFormatted = paramsAdjusted.valueFormatted, value = paramsAdjusted.value;\n var valueWhenNoRenderer = valueFormatted != null ? valueFormatted : value;\n this.comp.setInnerRenderer(innerCompDetails, valueWhenNoRenderer);\n };\n GroupCellRendererCtrl.prototype.adjustParamsWithDetailsFromRelatedColumn = function () {\n var relatedColumn = this.displayedGroupNode.rowGroupColumn;\n var column = this.params.column;\n if (!relatedColumn) {\n return this.params;\n }\n var notFullWidth = column != null;\n if (notFullWidth) {\n var showingThisRowGroup = column.isRowGroupDisplayed(relatedColumn.getId());\n if (!showingThisRowGroup) {\n return this.params;\n }\n }\n var params = this.params;\n var _a = this.params, value = _a.value, node = _a.node;\n var valueFormatted = this.valueFormatterService.formatValue(relatedColumn, node, value);\n // we don't update the original params, as they could of come through React,\n // as react has RowGroupCellRenderer, which means the params could be props which\n // would be read only\n var paramsAdjusted = __assign$8(__assign$8({}, params), { valueFormatted: valueFormatted });\n return paramsAdjusted;\n };\n GroupCellRendererCtrl.prototype.addFooterValue = function () {\n var footerValueGetter = this.params.footerValueGetter;\n var footerValue = '';\n if (footerValueGetter) {\n // params is same as we were given, except we set the value as the item to display\n var paramsClone = cloneObject(this.params);\n paramsClone.value = this.params.value;\n if (typeof footerValueGetter === 'function') {\n footerValue = footerValueGetter(paramsClone);\n }\n else if (typeof footerValueGetter === 'string') {\n footerValue = this.expressionService.evaluate(footerValueGetter, paramsClone);\n }\n else {\n console.warn('AG Grid: footerValueGetter should be either a function or a string (expression)');\n }\n }\n else {\n footerValue = 'Total ' + (this.params.value != null ? this.params.value : '');\n }\n var innerCompDetails = this.getInnerCompDetails(this.params);\n this.comp.setInnerRenderer(innerCompDetails, footerValue);\n };\n GroupCellRendererCtrl.prototype.getInnerCompDetails = function (params) {\n var _this = this;\n // for full width rows, we don't do any of the below\n if (params.fullWidth) {\n return this.userComponentFactory.getFullWidthGroupRowInnerCellRenderer(this.gridOptions.groupRowRendererParams, params);\n }\n // when grouping, the normal case is we use the cell renderer of the grouped column. eg if grouping by country\n // and then rating, we will use the country cell renderer for each country group row and likewise the rating\n // cell renderer for each rating group row.\n //\n // however if the user has innerCellRenderer defined, this gets preference and we don't use cell renderers\n // of the grouped columns.\n //\n // so we check and use in the following order:\n //\n // 1) thisColDef.cellRendererParams.innerRenderer of the column showing the groups (eg auto group column)\n // 2) groupedColDef.cellRenderer of the grouped column\n // 3) groupedColDef.cellRendererParams.innerRenderer\n // we check if cell renderer provided for the group cell renderer, eg colDef.cellRendererParams.innerRenderer\n var innerCompDetails = this.userComponentFactory\n .getInnerRendererDetails(params, params);\n // avoid using GroupCellRenderer again, otherwise stack overflow, as we insert same renderer again and again.\n // this covers off chance user is grouping by a column that is also configured with GroupCellRenderer\n var isGroupRowRenderer = function (details) { return details && details.componentClass == _this.compClass; };\n if (innerCompDetails && !isGroupRowRenderer(innerCompDetails)) {\n // use the renderer defined in cellRendererParams.innerRenderer\n return innerCompDetails;\n }\n var relatedColumn = this.displayedGroupNode.rowGroupColumn;\n var relatedColDef = relatedColumn ? relatedColumn.getColDef() : undefined;\n if (!relatedColDef) {\n return;\n }\n // otherwise see if we can use the cellRenderer of the column we are grouping by\n var relatedCompDetails = this.userComponentFactory\n .getCellRendererDetails(relatedColDef, params);\n if (relatedCompDetails && !isGroupRowRenderer(relatedCompDetails)) {\n // Only if the original column is using a specific renderer, it it is a using a DEFAULT one ignore it\n return relatedCompDetails;\n }\n if (isGroupRowRenderer(relatedCompDetails) &&\n relatedColDef.cellRendererParams &&\n relatedColDef.cellRendererParams.innerRenderer) {\n // edge case - this comes from a column which has been grouped dynamically, that has a renderer 'group'\n // and has an inner cell renderer\n var res = this.userComponentFactory.getInnerRendererDetails(relatedColDef.cellRendererParams, params);\n return res;\n }\n };\n GroupCellRendererCtrl.prototype.addChildCount = function () {\n // only include the child count if it's included, eg if user doing custom aggregation,\n // then this could be left out, or set to -1, ie no child count\n if (this.params.suppressCount) {\n return;\n }\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.updateChildCount.bind(this));\n // filtering changes the child count, so need to cater for it\n this.updateChildCount();\n };\n GroupCellRendererCtrl.prototype.updateChildCount = function () {\n var allChildrenCount = this.displayedGroupNode.allChildrenCount;\n var showingGroupForThisNode = this.isShowRowGroupForThisRow();\n var showCount = showingGroupForThisNode && allChildrenCount != null && allChildrenCount >= 0;\n var countString = showCount ? \"(\" + allChildrenCount + \")\" : \"\";\n this.comp.setChildCount(countString);\n };\n GroupCellRendererCtrl.prototype.isShowRowGroupForThisRow = function () {\n if (this.gridOptionsWrapper.isTreeData()) {\n return true;\n }\n var rowGroupColumn = this.displayedGroupNode.rowGroupColumn;\n if (!rowGroupColumn) {\n return false;\n }\n // column is null for fullWidthRows\n var column = this.params.column;\n var thisColumnIsInterested = column == null || column.isRowGroupDisplayed(rowGroupColumn.getId());\n return thisColumnIsInterested;\n };\n GroupCellRendererCtrl.prototype.addExpandAndContract = function () {\n var params = this.params;\n var eExpandedIcon = createIconNoSpan('groupExpanded', this.gridOptionsWrapper, null);\n var eContractedIcon = createIconNoSpan('groupContracted', this.gridOptionsWrapper, null);\n if (eExpandedIcon) {\n this.eExpanded.appendChild(eExpandedIcon);\n }\n if (eContractedIcon) {\n this.eContracted.appendChild(eContractedIcon);\n }\n var eGroupCell = params.eGridCell;\n // if editing groups, then double click is to start editing\n if (!this.gridOptionsWrapper.isEnableGroupEdit() && this.isExpandable() && !params.suppressDoubleClickExpand) {\n this.addManagedListener(eGroupCell, 'dblclick', this.onCellDblClicked.bind(this));\n }\n this.addManagedListener(this.eExpanded, 'click', this.onExpandClicked.bind(this));\n this.addManagedListener(this.eContracted, 'click', this.onExpandClicked.bind(this));\n // expand / contract as the user hits enter\n this.addManagedListener(eGroupCell, 'keydown', this.onKeyDown.bind(this));\n this.addManagedListener(params.node, RowNode.EVENT_EXPANDED_CHANGED, this.showExpandAndContractIcons.bind(this));\n this.showExpandAndContractIcons();\n // because we don't show the expand / contract when there are no children, we need to check every time\n // the number of children change.\n var expandableChangedListener = this.onRowNodeIsExpandableChanged.bind(this);\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, expandableChangedListener);\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_MASTER_CHANGED, expandableChangedListener);\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_GROUP_CHANGED, expandableChangedListener);\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_HAS_CHILDREN_CHANGED, expandableChangedListener);\n };\n GroupCellRendererCtrl.prototype.onExpandClicked = function (mouseEvent) {\n if (isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // so if we expand a node, it does not also get selected.\n stopPropagationForAgGrid(mouseEvent);\n this.onExpandOrContract(mouseEvent);\n };\n GroupCellRendererCtrl.prototype.onExpandOrContract = function (e) {\n // must use the displayedGroup, so if data was dragged down, we expand the parent, not this row\n var rowNode = this.displayedGroupNode;\n var nextExpandState = !rowNode.expanded;\n if (!nextExpandState && rowNode.sticky) {\n this.scrollToStickyNode(rowNode);\n }\n rowNode.setExpanded(nextExpandState, e);\n };\n GroupCellRendererCtrl.prototype.scrollToStickyNode = function (rowNode) {\n var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n var scrollFeature = gridBodyCtrl.getScrollFeature();\n scrollFeature.setVerticalScrollPosition(rowNode.rowTop - rowNode.stickyRowTop);\n };\n GroupCellRendererCtrl.prototype.isExpandable = function () {\n if (this.showingValueForOpenedParent) {\n return true;\n }\n var rowNode = this.displayedGroupNode;\n var reducedLeafNode = this.columnModel.isPivotMode() && rowNode.leafGroup;\n var expandableGroup = rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode;\n if (!expandableGroup) {\n return false;\n }\n // column is null for fullWidthRows\n var column = this.params.column;\n var displayingForOneColumnOnly = column != null && typeof column.getColDef().showRowGroup === 'string';\n if (displayingForOneColumnOnly) {\n var showing = this.isShowRowGroupForThisRow();\n return showing;\n }\n return true;\n };\n GroupCellRendererCtrl.prototype.showExpandAndContractIcons = function () {\n var _a = this, params = _a.params, displayedGroup = _a.displayedGroupNode, columnModel = _a.columnModel;\n var node = params.node;\n var isExpandable = this.isExpandable();\n if (isExpandable) {\n // if expandable, show one based on expand state.\n // if we were dragged down, means our parent is always expanded\n var expanded = this.showingValueForOpenedParent ? true : node.expanded;\n this.comp.setExpandedDisplayed(expanded);\n this.comp.setContractedDisplayed(!expanded);\n }\n else {\n // it not expandable, show neither\n this.comp.setExpandedDisplayed(false);\n this.comp.setContractedDisplayed(false);\n }\n // compensation padding for leaf nodes, so there is blank space instead of the expand icon\n var pivotMode = columnModel.isPivotMode();\n var pivotModeAndLeafGroup = pivotMode && displayedGroup.leafGroup;\n var addExpandableCss = isExpandable && !pivotModeAndLeafGroup;\n var isTotalFooterNode = node.footer && node.level === -1;\n this.comp.addOrRemoveCssClass('ag-cell-expandable', addExpandableCss);\n this.comp.addOrRemoveCssClass('ag-row-group', addExpandableCss);\n if (pivotMode) {\n this.comp.addOrRemoveCssClass('ag-pivot-leaf-group', pivotModeAndLeafGroup);\n }\n else if (!isTotalFooterNode) {\n this.comp.addOrRemoveCssClass('ag-row-group-leaf-indent', !addExpandableCss);\n }\n };\n GroupCellRendererCtrl.prototype.onRowNodeIsExpandableChanged = function () {\n // maybe if no children now, we should hide the expand / contract icons\n this.showExpandAndContractIcons();\n // if we have no children, this impacts the indent\n this.setIndent();\n this.refreshAriaExpanded();\n };\n GroupCellRendererCtrl.prototype.setupIndent = function () {\n // only do this if an indent - as this overwrites the padding that\n // the theme set, which will make things look 'not aligned' for the\n // first group level.\n var node = this.params.node;\n var suppressPadding = this.params.suppressPadding;\n if (!suppressPadding) {\n this.addManagedListener(node, RowNode.EVENT_UI_LEVEL_CHANGED, this.setIndent.bind(this));\n this.setIndent();\n }\n };\n GroupCellRendererCtrl.prototype.setIndent = function () {\n if (this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n var params = this.params;\n var rowNode = params.node;\n // if we are only showing one group column, we don't want to be indenting based on level\n var fullWithRow = !!params.colDef;\n var treeData = this.gridOptionsWrapper.isTreeData();\n var manyDimensionThisColumn = !fullWithRow || treeData || params.colDef.showRowGroup === true;\n var paddingCount = manyDimensionThisColumn ? rowNode.uiLevel : 0;\n var userProvidedPaddingPixelsTheDeprecatedWay = params.padding >= 0;\n if (userProvidedPaddingPixelsTheDeprecatedWay) {\n doOnce(function () { return console.warn('AG Grid: cellRendererParams.padding no longer works, it was deprecated in since v14.2 and removed in v26, configuring padding for groupCellRenderer should be done with Sass variables and themes. Please see the AG Grid documentation page for Themes, in particular the property $row-group-indent-size.'); }, 'groupCellRenderer->doDeprecatedWay');\n }\n if (this.indentClass) {\n this.comp.addOrRemoveCssClass(this.indentClass, false);\n }\n this.indentClass = 'ag-row-group-indent-' + paddingCount;\n this.comp.addOrRemoveCssClass(this.indentClass, true);\n };\n GroupCellRendererCtrl.prototype.addFullWidthRowDraggerIfNeeded = function () {\n var _this = this;\n if (!this.params.fullWidth || !this.params.rowDrag) {\n return;\n }\n var rowDragComp = new RowDragComp(function () { return _this.params.value; }, this.params.node);\n this.createManagedBean(rowDragComp, this.context);\n this.eGui.insertAdjacentElement('afterbegin', rowDragComp.getGui());\n };\n GroupCellRendererCtrl.prototype.isUserWantsSelected = function () {\n var paramsCheckbox = this.params.checkbox;\n // if a function, we always return true as change detection can show or hide the checkbox.\n return typeof paramsCheckbox === 'function' || paramsCheckbox === true;\n };\n GroupCellRendererCtrl.prototype.addCheckboxIfNeeded = function () {\n var _this = this;\n var rowNode = this.displayedGroupNode;\n var checkboxNeeded = this.isUserWantsSelected() &&\n // footers cannot be selected\n !rowNode.footer &&\n // pinned rows cannot be selected\n !rowNode.rowPinned &&\n // details cannot be selected\n !rowNode.detail;\n if (checkboxNeeded) {\n var cbSelectionComponent_1 = new CheckboxSelectionComponent();\n this.getContext().createBean(cbSelectionComponent_1);\n cbSelectionComponent_1.init({\n rowNode: rowNode,\n column: this.params.column,\n overrides: {\n isVisible: this.params.checkbox,\n callbackParams: this.params,\n removeHidden: true,\n },\n });\n this.eCheckbox.appendChild(cbSelectionComponent_1.getGui());\n this.addDestroyFunc(function () { return _this.getContext().destroyBean(cbSelectionComponent_1); });\n }\n this.comp.setCheckboxVisible(checkboxNeeded);\n };\n GroupCellRendererCtrl.prototype.onKeyDown = function (event) {\n var enterKeyPressed = event.key === KeyCode.ENTER;\n if (!enterKeyPressed || this.params.suppressEnterExpand) {\n return;\n }\n var cellEditable = this.params.column && this.params.column.isCellEditable(this.params.node);\n if (cellEditable) {\n return;\n }\n this.onExpandOrContract(event);\n };\n GroupCellRendererCtrl.prototype.onCellDblClicked = function (mouseEvent) {\n if (isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // we want to avoid acting on double click events on the expand / contract icon,\n // as that icons already has expand / collapse functionality on it. otherwise if\n // the icon was double clicked, we would get 'click', 'click', 'dblclick' which\n // is open->close->open, however double click should be open->close only.\n var targetIsExpandIcon = isElementInEventPath(this.eExpanded, mouseEvent)\n || isElementInEventPath(this.eContracted, mouseEvent);\n if (!targetIsExpandIcon) {\n this.onExpandOrContract(mouseEvent);\n }\n };\n __decorate$1_([\n Autowired('expressionService')\n ], GroupCellRendererCtrl.prototype, \"expressionService\", void 0);\n __decorate$1_([\n Autowired('valueFormatterService')\n ], GroupCellRendererCtrl.prototype, \"valueFormatterService\", void 0);\n __decorate$1_([\n Autowired('columnModel')\n ], GroupCellRendererCtrl.prototype, \"columnModel\", void 0);\n __decorate$1_([\n Autowired('userComponentFactory')\n ], GroupCellRendererCtrl.prototype, \"userComponentFactory\", void 0);\n __decorate$1_([\n Autowired('gridOptions')\n ], GroupCellRendererCtrl.prototype, \"gridOptions\", void 0);\n __decorate$1_([\n Autowired(\"ctrlsService\")\n ], GroupCellRendererCtrl.prototype, \"ctrlsService\", void 0);\n return GroupCellRendererCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupCellRenderer = /** @class */ (function (_super) {\n __extends$2e(GroupCellRenderer, _super);\n function GroupCellRenderer() {\n return _super.call(this, GroupCellRenderer.TEMPLATE) || this;\n }\n GroupCellRenderer.prototype.init = function (params) {\n var _this = this;\n var compProxy = {\n setInnerRenderer: function (compDetails, valueToDisplay) { return _this.setRenderDetails(compDetails, valueToDisplay); },\n setChildCount: function (count) { return _this.eChildCount.innerHTML = count; },\n addOrRemoveCssClass: function (cssClass, value) { return _this.addOrRemoveCssClass(cssClass, value); },\n setContractedDisplayed: function (expanded) { return setDisplayed(_this.eContracted, expanded); },\n setExpandedDisplayed: function (expanded) { return setDisplayed(_this.eExpanded, expanded); },\n setCheckboxVisible: function (visible) { return _this.eCheckbox.classList.toggle('ag-invisible', !visible); }\n };\n var ctrl = this.createManagedBean(new GroupCellRendererCtrl());\n var fullWidth = !params.colDef;\n var eGui = this.getGui();\n ctrl.init(compProxy, eGui, this.eCheckbox, this.eExpanded, this.eContracted, this.constructor, params);\n if (fullWidth) {\n setAriaRole(eGui, 'gridcell');\n }\n };\n GroupCellRenderer.prototype.setRenderDetails = function (compDetails, valueToDisplay) {\n var _this = this;\n if (compDetails) {\n var componentPromise = compDetails.newAgStackInstance();\n if (!componentPromise) {\n return;\n }\n componentPromise.then(function (comp) {\n if (!comp) {\n return;\n }\n var destroyComp = function () { return _this.context.destroyBean(comp); };\n if (_this.isAlive()) {\n _this.eValue.appendChild(comp.getGui());\n _this.addDestroyFunc(destroyComp);\n }\n else {\n destroyComp();\n }\n });\n }\n else {\n this.eValue.innerText = valueToDisplay;\n }\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to have public here instead of private or protected\n GroupCellRenderer.prototype.destroy = function () {\n this.getContext().destroyBean(this.innerCellRenderer);\n _super.prototype.destroy.call(this);\n };\n GroupCellRenderer.prototype.refresh = function () {\n return false;\n };\n GroupCellRenderer.TEMPLATE = \"\\n \\n \\n \\n \\n \\n \";\n __decorate$1Z([\n RefSelector('eExpanded')\n ], GroupCellRenderer.prototype, \"eExpanded\", void 0);\n __decorate$1Z([\n RefSelector('eContracted')\n ], GroupCellRenderer.prototype, \"eContracted\", void 0);\n __decorate$1Z([\n RefSelector('eCheckbox')\n ], GroupCellRenderer.prototype, \"eCheckbox\", void 0);\n __decorate$1Z([\n RefSelector('eValue')\n ], GroupCellRenderer.prototype, \"eValue\", void 0);\n __decorate$1Z([\n RefSelector('eChildCount')\n ], GroupCellRenderer.prototype, \"eChildCount\", void 0);\n return GroupCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LoadingCellRenderer = /** @class */ (function (_super) {\n __extends$2d(LoadingCellRenderer, _super);\n function LoadingCellRenderer() {\n return _super.call(this, LoadingCellRenderer.TEMPLATE) || this;\n }\n LoadingCellRenderer.prototype.init = function (params) {\n params.node.failedLoad ? this.setupFailed() : this.setupLoading();\n };\n LoadingCellRenderer.prototype.setupFailed = function () {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc('loadingError', 'ERR');\n };\n LoadingCellRenderer.prototype.setupLoading = function () {\n var eLoadingIcon = createIconNoSpan('groupLoading', this.gridOptionsWrapper, null);\n if (eLoadingIcon) {\n this.eLoadingIcon.appendChild(eLoadingIcon);\n }\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc('loadingOoo', 'Loading');\n };\n LoadingCellRenderer.prototype.refresh = function (params) {\n return false;\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n LoadingCellRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n LoadingCellRenderer.TEMPLATE = \"
\\n \\n \\n
\";\n __decorate$1Y([\n RefSelector('eLoadingIcon')\n ], LoadingCellRenderer.prototype, \"eLoadingIcon\", void 0);\n __decorate$1Y([\n RefSelector('eLoadingText')\n ], LoadingCellRenderer.prototype, \"eLoadingText\", void 0);\n return LoadingCellRenderer;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LoadingOverlayComponent$1 = /** @class */ (function (_super) {\n __extends$2c(LoadingOverlayComponent, _super);\n function LoadingOverlayComponent() {\n return _super.call(this) || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n LoadingOverlayComponent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n LoadingOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayLoadingTemplate() ?\n this.gridOptionsWrapper.getOverlayLoadingTemplate() : LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[LOADING...]', localeTextFunc('loadingOoo', 'Loading...'));\n this.setTemplate(localisedTemplate);\n };\n LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE = '[LOADING...]';\n return LoadingOverlayComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar NoRowsOverlayComponent$1 = /** @class */ (function (_super) {\n __extends$2b(NoRowsOverlayComponent, _super);\n function NoRowsOverlayComponent() {\n return _super.call(this) || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n NoRowsOverlayComponent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n NoRowsOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayNoRowsTemplate() ?\n this.gridOptionsWrapper.getOverlayNoRowsTemplate() : NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[NO_ROWS_TO_SHOW]', localeTextFunc('noRowsToShow', 'No Rows To Show'));\n this.setTemplate(localisedTemplate);\n };\n NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE = '[NO_ROWS_TO_SHOW]';\n return NoRowsOverlayComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$2a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TooltipComponent$1 = /** @class */ (function (_super) {\n __extends$2a(TooltipComponent, _super);\n function TooltipComponent() {\n return _super.call(this, /* html */ \"
\") || this;\n }\n // will need to type params\n TooltipComponent.prototype.init = function (params) {\n var value = params.value;\n this.getGui().innerHTML = escapeString(value);\n };\n return TooltipComponent;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$29 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UserComponentRegistry = /** @class */ (function (_super) {\n __extends$29(UserComponentRegistry, _super);\n function UserComponentRegistry() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.agGridDefaults = {\n //date\n agDateInput: DefaultDateComponent,\n //header\n agColumnHeader: HeaderComp,\n agColumnGroupHeader: HeaderGroupComp,\n agSortIndicator: SortIndicatorComp,\n //floating filters\n agTextColumnFloatingFilter: TextFloatingFilter,\n agNumberColumnFloatingFilter: NumberFloatingFilter,\n agDateColumnFloatingFilter: DateFloatingFilter,\n agReadOnlyFloatingFilter: ReadOnlyFloatingFilter,\n // renderers\n agAnimateShowChangeCellRenderer: AnimateShowChangeCellRenderer,\n agAnimateSlideCellRenderer: AnimateSlideCellRenderer,\n agGroupCellRenderer: GroupCellRenderer,\n agGroupRowRenderer: GroupCellRenderer,\n agLoadingCellRenderer: LoadingCellRenderer,\n //editors\n agCellEditor: TextCellEditor,\n agTextCellEditor: TextCellEditor,\n agSelectCellEditor: SelectCellEditor,\n agPopupTextCellEditor: PopupTextCellEditor,\n agPopupSelectCellEditor: PopupSelectCellEditor,\n agLargeTextCellEditor: LargeTextCellEditor,\n //filter\n agTextColumnFilter: TextFilter,\n agNumberColumnFilter: NumberFilter,\n agDateColumnFilter: DateFilter,\n //overlays\n agLoadingOverlay: LoadingOverlayComponent$1,\n agNoRowsOverlay: NoRowsOverlayComponent$1,\n // tooltips\n agTooltipComponent: TooltipComponent$1\n };\n _this.agDeprecatedNames = {\n set: {\n newComponentName: 'agSetColumnFilter',\n propertyHolder: 'filter'\n },\n text: {\n newComponentName: 'agTextColumnFilter',\n propertyHolder: 'filter'\n },\n number: {\n newComponentName: 'agNumberColumnFilter',\n propertyHolder: 'filter'\n },\n date: {\n newComponentName: 'agDateColumnFilter',\n propertyHolder: 'filter'\n },\n group: {\n newComponentName: 'agGroupCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n animateShowChange: {\n newComponentName: 'agAnimateShowChangeCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n animateSlide: {\n newComponentName: 'agAnimateSlideCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n select: {\n newComponentName: 'agSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n largeText: {\n newComponentName: 'agLargeTextCellEditor',\n propertyHolder: 'cellEditor'\n },\n popupSelect: {\n newComponentName: 'agPopupSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n popupText: {\n newComponentName: 'agPopupTextCellEditor',\n propertyHolder: 'cellEditor'\n },\n richSelect: {\n newComponentName: 'agRichSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n headerComponent: {\n newComponentName: 'agColumnHeader',\n propertyHolder: 'headerComponent'\n }\n };\n _this.jsComps = {};\n _this.fwComps = {};\n return _this;\n }\n UserComponentRegistry.prototype.init = function () {\n var _this = this;\n if (this.gridOptions.components != null) {\n iterateObject(this.gridOptions.components, function (key, component) { return _this.registerJsComponent(key, component); });\n }\n if (this.gridOptions.frameworkComponents != null) {\n iterateObject(this.gridOptions.frameworkComponents, function (key, component) { return _this.registerFwComponent(key, component); });\n }\n };\n UserComponentRegistry.prototype.registerDefaultComponent = function (rawName, component) {\n var name = this.translateIfDeprecated(rawName);\n if (this.agGridDefaults[name]) {\n console.error(\"Trying to overwrite a default component. You should call registerComponent\");\n return;\n }\n this.agGridDefaults[name] = component;\n };\n UserComponentRegistry.prototype.registerJsComponent = function (rawName, component) {\n var name = this.translateIfDeprecated(rawName);\n if (this.fwComps[name]) {\n console.error(\"Trying to register a component that you have already registered for frameworks: \" + name);\n return;\n }\n this.jsComps[name] = component;\n };\n /**\n * B the business interface (ie IHeader)\n * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid\n */\n UserComponentRegistry.prototype.registerFwComponent = function (rawName, component) {\n var warningMessage = \"AG Grid: As of v27, registering components via grid property frameworkComponents is deprecated. Instead register both JavaScript AND Framework Components via the components property.\";\n doOnce(function () { return console.warn(warningMessage); }, \"UserComponentRegistry.frameworkComponentsDeprecated\");\n var name = this.translateIfDeprecated(rawName);\n this.fwComps[name] = component;\n };\n UserComponentRegistry.prototype.retrieve = function (rawName) {\n var name = this.translateIfDeprecated(rawName);\n var createResult = function (component, componentFromFramework) { return ({ componentFromFramework: componentFromFramework, component: component }); };\n // FrameworkOverrides.frameworkComponent() is used in two locations:\n // 1) for Vue, user provided components get registered via a framework specific way.\n // 2) for React, it's how the React UI provides alternative default components (eg GroupCellRenderer and DetailCellRenderer)\n var registeredViaFrameworkComp = this.getFrameworkOverrides().frameworkComponent(name, this.gridOptions.components);\n if (registeredViaFrameworkComp != null) {\n return createResult(registeredViaFrameworkComp, true);\n }\n var frameworkComponent = this.fwComps[name];\n if (frameworkComponent) {\n return createResult(frameworkComponent, true);\n }\n var jsComponent = this.jsComps[name];\n if (jsComponent) {\n var isFwkComp = this.getFrameworkOverrides().isFrameworkComponent(jsComponent);\n return createResult(jsComponent, isFwkComp);\n }\n var defaultComponent = this.agGridDefaults[name];\n if (defaultComponent) {\n return createResult(defaultComponent, false);\n }\n if (Object.keys(this.agGridDefaults).indexOf(name) < 0) {\n console.warn(\"AG Grid: Looking for component [\" + name + \"] but it wasn't found.\");\n }\n return null;\n };\n UserComponentRegistry.prototype.translateIfDeprecated = function (raw) {\n var deprecatedInfo = this.agDeprecatedNames[raw];\n if (deprecatedInfo != null) {\n doOnce(function () {\n console.warn(\"ag-grid. Since v15.0 component names have been renamed to be namespaced. You should rename \" + deprecatedInfo.propertyHolder + \":\" + raw + \" to \" + deprecatedInfo.propertyHolder + \":\" + deprecatedInfo.newComponentName);\n }, 'DEPRECATE_COMPONENT_' + raw);\n return deprecatedInfo.newComponentName;\n }\n return raw;\n };\n __decorate$1X([\n Autowired('gridOptions')\n ], UserComponentRegistry.prototype, \"gridOptions\", void 0);\n __decorate$1X([\n Autowired('agComponentUtils')\n ], UserComponentRegistry.prototype, \"agComponentUtils\", void 0);\n __decorate$1X([\n PostConstruct\n ], UserComponentRegistry.prototype, \"init\", null);\n UserComponentRegistry = __decorate$1X([\n Bean('userComponentRegistry')\n ], UserComponentRegistry);\n return UserComponentRegistry;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar DateComponent = {\n propertyName: 'dateComponent',\n cellRenderer: false\n};\nvar HeaderComponent = {\n propertyName: 'headerComponent',\n cellRenderer: false\n};\nvar HeaderGroupComponent = {\n propertyName: 'headerGroupComponent',\n cellRenderer: false\n};\nvar CellRendererComponent = {\n propertyName: 'cellRenderer',\n cellRenderer: true\n};\nvar CellEditorComponent = {\n propertyName: 'cellEditor',\n cellRenderer: false\n};\nvar InnerRendererComponent = {\n propertyName: 'innerRenderer',\n cellRenderer: true\n};\nvar LoadingOverlayComponent = {\n propertyName: 'loadingOverlayComponent',\n cellRenderer: false\n};\nvar NoRowsOverlayComponent = {\n propertyName: 'noRowsOverlayComponent',\n cellRenderer: false\n};\nvar TooltipComponent = {\n propertyName: 'tooltipComponent',\n cellRenderer: false\n};\nvar FilterComponent = {\n propertyName: 'filter',\n cellRenderer: false\n};\nvar FloatingFilterComponent = {\n propertyName: 'floatingFilterComponent',\n cellRenderer: false\n};\nvar ToolPanelComponent = {\n propertyName: 'toolPanel',\n cellRenderer: false\n};\nvar StatusPanelComponent = {\n propertyName: 'statusPanel',\n cellRenderer: false\n};\nvar FullWidth = {\n propertyName: 'fullWidthCellRenderer',\n cellRenderer: true\n};\nvar FullWidthLoading = {\n propertyName: 'loadingCellRenderer',\n cellRenderer: true\n};\nvar FullWidthGroup = {\n propertyName: 'groupRowRenderer',\n cellRenderer: true\n};\nvar FullWidthDetail = {\n propertyName: 'detailCellRenderer',\n cellRenderer: true\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar FloatingFilterMapper = /** @class */ (function () {\n function FloatingFilterMapper() {\n }\n FloatingFilterMapper.getFloatingFilterType = function (filterType) {\n return this.filterToFloatingFilterMapping[filterType];\n };\n FloatingFilterMapper.filterToFloatingFilterMapping = {\n set: 'agSetColumnFloatingFilter',\n agSetColumnFilter: 'agSetColumnFloatingFilter',\n multi: 'agMultiColumnFloatingFilter',\n agMultiColumnFilter: 'agMultiColumnFloatingFilter',\n number: 'agNumberColumnFloatingFilter',\n agNumberColumnFilter: 'agNumberColumnFloatingFilter',\n date: 'agDateColumnFloatingFilter',\n agDateColumnFilter: 'agDateColumnFloatingFilter',\n text: 'agTextColumnFloatingFilter',\n agTextColumnFilter: 'agTextColumnFloatingFilter'\n };\n return FloatingFilterMapper;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$28 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UserComponentFactory = /** @class */ (function (_super) {\n __extends$28(UserComponentFactory, _super);\n function UserComponentFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n UserComponentFactory.prototype.getHeaderCompDetails = function (colDef, params) {\n return this.getCompDetails(colDef, HeaderComponent, 'agColumnHeader', params);\n };\n UserComponentFactory.prototype.getHeaderGroupCompDetails = function (params) {\n var colGroupDef = params.columnGroup.getColGroupDef();\n return this.getCompDetails(colGroupDef, HeaderGroupComponent, 'agColumnGroupHeader', params);\n };\n // this one is unusual, as it can be LoadingCellRenderer, DetailCellRenderer, FullWidthCellRenderer or GroupRowRenderer.\n // so we have to pass the type in.\n UserComponentFactory.prototype.getFullWidthCellRendererDetails = function (params) {\n return this.getCompDetails(this.gridOptions, FullWidth, null, params, true);\n };\n UserComponentFactory.prototype.getFullWidthLoadingCellRendererDetails = function (params) {\n return this.getCompDetails(this.gridOptions, FullWidthLoading, 'agLoadingCellRenderer', params, true);\n };\n UserComponentFactory.prototype.getFullWidthGroupCellRendererDetails = function (params) {\n return this.getCompDetails(this.gridOptions, FullWidthGroup, 'agGroupRowRenderer', params, true);\n };\n UserComponentFactory.prototype.getFullWidthDetailCellRendererDetails = function (params) {\n return this.getCompDetails(this.gridOptions, FullWidthDetail, 'agDetailCellRenderer', params, true);\n };\n // CELL RENDERER\n UserComponentFactory.prototype.getInnerRendererDetails = function (def, params) {\n return this.getCompDetails(def, InnerRendererComponent, null, params);\n };\n UserComponentFactory.prototype.getFullWidthGroupRowInnerCellRenderer = function (def, params) {\n return this.getCompDetails(def, InnerRendererComponent, null, params);\n };\n UserComponentFactory.prototype.getCellRendererDetails = function (def, params) {\n return this.getCompDetails(def, CellRendererComponent, null, params);\n };\n // CELL EDITOR\n UserComponentFactory.prototype.getCellEditorDetails = function (def, params) {\n return this.getCompDetails(def, CellEditorComponent, 'agCellEditor', params, true);\n };\n // FILTER\n UserComponentFactory.prototype.getFilterDetails = function (def, params, defaultFilter) {\n return this.getCompDetails(def, FilterComponent, defaultFilter, params, true);\n };\n UserComponentFactory.prototype.getDateCompDetails = function (params) {\n return this.getCompDetails(this.gridOptions, DateComponent, 'agDateInput', params, true);\n };\n UserComponentFactory.prototype.getLoadingOverlayCompDetails = function (params) {\n return this.getCompDetails(this.gridOptions, LoadingOverlayComponent, 'agLoadingOverlay', params, true);\n };\n UserComponentFactory.prototype.getNoRowsOverlayCompDetails = function (params) {\n return this.getCompDetails(this.gridOptions, NoRowsOverlayComponent, 'agNoRowsOverlay', params, true);\n };\n UserComponentFactory.prototype.getTooltipCompDetails = function (params) {\n return this.getCompDetails(params.colDef, TooltipComponent, 'agTooltipComponent', params, true);\n };\n UserComponentFactory.prototype.getSetFilterCellRendererDetails = function (def, params) {\n return this.getCompDetails(def, CellRendererComponent, null, params);\n };\n UserComponentFactory.prototype.getFloatingFilterCompDetails = function (def, params, defaultFloatingFilter) {\n return this.getCompDetails(def, FloatingFilterComponent, defaultFloatingFilter, params);\n };\n UserComponentFactory.prototype.getToolPanelCompDetails = function (toolPanelDef, params) {\n return this.getCompDetails(toolPanelDef, ToolPanelComponent, null, params, true);\n };\n UserComponentFactory.prototype.getStatusPanelCompDetails = function (def, params) {\n return this.getCompDetails(def, StatusPanelComponent, null, params, true);\n };\n UserComponentFactory.prototype.getCompDetails = function (defObject, type, defaultName, params, mandatory) {\n var _this = this;\n if (mandatory === void 0) { mandatory = false; }\n var propertyName = type.propertyName, cellRenderer = type.cellRenderer;\n var _a = this.getCompKeys(defObject, type, params), compName = _a.compName, jsComp = _a.jsComp, fwComp = _a.fwComp, paramsFromSelector = _a.paramsFromSelector, popupFromSelector = _a.popupFromSelector, popupPositionFromSelector = _a.popupPositionFromSelector;\n var lookupFromRegistry = function (key) {\n var item = _this.userComponentRegistry.retrieve(key);\n if (item) {\n jsComp = !item.componentFromFramework ? item.component : undefined;\n fwComp = item.componentFromFramework ? item.component : undefined;\n }\n };\n // if compOption is a string, means we need to look the item up\n if (compName != null) {\n lookupFromRegistry(compName);\n }\n // if lookup brought nothing back, and we have a default, lookup the default\n if (jsComp == null && fwComp == null && defaultName != null) {\n lookupFromRegistry(defaultName);\n }\n // if we have a comp option, and it's a function, replace it with an object equivalent adaptor\n if (jsComp && cellRenderer && !this.agComponentUtils.doesImplementIComponent(jsComp)) {\n jsComp = this.agComponentUtils.adaptFunction(propertyName, jsComp);\n }\n if (!jsComp && !fwComp) {\n if (mandatory) {\n console.error(\"Could not find component \" + compName + \", did you forget to configure this component?\");\n }\n return;\n }\n var paramsMerged = this.mergeParamsWithApplicationProvidedParams(defObject, type, params, paramsFromSelector);\n var componentFromFramework = jsComp == null;\n var componentClass = jsComp ? jsComp : fwComp;\n return {\n componentFromFramework: componentFromFramework,\n componentClass: componentClass,\n params: paramsMerged,\n type: type,\n popupFromSelector: popupFromSelector,\n popupPositionFromSelector: popupPositionFromSelector,\n newAgStackInstance: function () { return _this.newAgStackInstance(componentClass, componentFromFramework, paramsMerged, type); }\n };\n };\n UserComponentFactory.prototype.getCompKeys = function (defObject, type, params) {\n var _this = this;\n var propertyName = type.propertyName;\n var compName;\n var jsComp;\n var fwComp;\n var paramsFromSelector;\n var popupFromSelector;\n var popupPositionFromSelector;\n // there are two types of js comps, class based and func based. we can only check for\n // class based, by checking if getGui() exists. no way to differentiate js func based vs eg react func based\n // const isJsClassComp = (comp: any) => this.agComponentUtils.doesImplementIComponent(comp);\n // const fwActive = this.frameworkComponentWrapper != null;\n // pull from defObject if available\n if (defObject) {\n var defObjectAny = defObject;\n // if selector, use this\n var selectorFunc = defObjectAny[propertyName + 'Selector'];\n var selectorRes = selectorFunc ? selectorFunc(params) : null;\n var assignComp = function (providedJsComp, providedFwComp) {\n var xxxFrameworkDeprecatedWarn = function () {\n var warningMessage = \"AG Grid: As of v27, the property \" + propertyName + \"Framework is deprecated. The property \" + propertyName + \" can now be used for JavaScript AND Framework Components.\";\n doOnce(function () { return console.warn(warningMessage); }, \"UserComponentFactory.\" + propertyName + \"FrameworkDeprecated\");\n };\n if (typeof providedJsComp === 'string') {\n compName = providedJsComp;\n }\n else if (typeof providedFwComp === 'string') {\n xxxFrameworkDeprecatedWarn();\n compName = providedFwComp;\n // comp===true for filters, which means use the default comp\n }\n else if (providedJsComp != null && providedJsComp !== true) {\n var isFwkComp = _this.getFrameworkOverrides().isFrameworkComponent(providedJsComp);\n if (isFwkComp) {\n fwComp = providedJsComp;\n }\n else {\n jsComp = providedJsComp;\n }\n }\n else if (providedFwComp != null) {\n xxxFrameworkDeprecatedWarn();\n fwComp = providedFwComp;\n }\n };\n if (selectorRes) {\n if (selectorRes.frameworkComponent != null) {\n var warningMessage_1 = \"AG Grid: As of v27, the return for \" + propertyName + \"Selector has attributes [component, params] only. The attribute frameworkComponent is deprecated. You should now return back Framework Components using the 'component' attribute and the grid works out if it's a framework component or not.\";\n doOnce(function () { return console.warn(warningMessage_1); }, \"UserComponentFactory.\" + propertyName + \"FrameworkSelectorDeprecated\");\n assignComp(selectorRes.frameworkComponent, undefined);\n }\n else {\n assignComp(selectorRes.component, undefined);\n }\n paramsFromSelector = selectorRes.params;\n popupFromSelector = selectorRes.popup;\n popupPositionFromSelector = selectorRes.popupPosition;\n }\n else {\n // if no selector, or result of selector is empty, take from defObject\n assignComp(defObjectAny[propertyName], defObjectAny[propertyName + 'Framework']);\n }\n }\n return { compName: compName, jsComp: jsComp, fwComp: fwComp, paramsFromSelector: paramsFromSelector, popupFromSelector: popupFromSelector, popupPositionFromSelector: popupPositionFromSelector };\n };\n UserComponentFactory.prototype.newAgStackInstance = function (ComponentClass, componentFromFramework, params, type) {\n var propertyName = type.propertyName;\n var jsComponent = !componentFromFramework;\n // using javascript component\n var instance;\n if (jsComponent) {\n instance = new ComponentClass();\n }\n else {\n // Using framework component\n var thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);\n instance = this.frameworkComponentWrapper.wrap(ComponentClass, thisComponentConfig.mandatoryMethodList, thisComponentConfig.optionalMethodList, type);\n }\n var deferredInit = this.initComponent(instance, params);\n if (deferredInit == null) {\n return AgPromise.resolve(instance);\n }\n return deferredInit.then(function () { return instance; });\n };\n // used by Floating Filter\n UserComponentFactory.prototype.mergeParamsWithApplicationProvidedParams = function (defObject, type, paramsFromGrid, paramsFromSelector) {\n if (paramsFromSelector === void 0) { paramsFromSelector = null; }\n var params = {\n context: this.gridOptionsWrapper.getContext(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n api: this.gridOptionsWrapper.getApi()\n };\n mergeDeep(params, paramsFromGrid);\n // pull user params from either the old prop name and new prop name\n // eg either cellRendererParams and cellCompParams\n var defObjectAny = defObject;\n var userParams = defObjectAny && defObjectAny[type.propertyName + 'Params'];\n if (typeof userParams === 'function') {\n var userParamsFromFunc = userParams(paramsFromGrid);\n mergeDeep(params, userParamsFromFunc);\n }\n else if (typeof userParams === 'object') {\n mergeDeep(params, userParams);\n }\n mergeDeep(params, paramsFromSelector);\n return params;\n };\n UserComponentFactory.prototype.initComponent = function (component, params) {\n this.context.createBean(component);\n if (component.init == null) {\n return;\n }\n return component.init(params);\n };\n UserComponentFactory.prototype.getDefaultFloatingFilterType = function (def) {\n if (def == null) {\n return null;\n }\n var defaultFloatingFilterType = null;\n var _a = this.getCompKeys(def, FilterComponent), compName = _a.compName, jsComp = _a.jsComp, fwComp = _a.fwComp;\n if (compName) {\n // will be undefined if not in the map\n defaultFloatingFilterType = FloatingFilterMapper.getFloatingFilterType(compName);\n }\n else {\n var usingDefaultFilter = (jsComp == null && fwComp == null) && (def.filter === true);\n if (usingDefaultFilter) {\n var setFilterModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.SetFilterModule);\n defaultFloatingFilterType = setFilterModuleLoaded ? 'agSetColumnFloatingFilter' : 'agTextColumnFloatingFilter';\n }\n }\n return defaultFloatingFilterType;\n };\n __decorate$1W([\n Autowired('gridOptions')\n ], UserComponentFactory.prototype, \"gridOptions\", void 0);\n __decorate$1W([\n Autowired('agComponentUtils')\n ], UserComponentFactory.prototype, \"agComponentUtils\", void 0);\n __decorate$1W([\n Autowired('componentMetadataProvider')\n ], UserComponentFactory.prototype, \"componentMetadataProvider\", void 0);\n __decorate$1W([\n Autowired('userComponentRegistry')\n ], UserComponentFactory.prototype, \"userComponentRegistry\", void 0);\n __decorate$1W([\n Optional('frameworkComponentWrapper')\n ], UserComponentFactory.prototype, \"frameworkComponentWrapper\", void 0);\n UserComponentFactory = __decorate$1W([\n Bean('userComponentFactory')\n ], UserComponentFactory);\n return UserComponentFactory;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n// Excel Export\nvar ExcelFactoryMode;\n(function (ExcelFactoryMode) {\n ExcelFactoryMode[ExcelFactoryMode[\"SINGLE_SHEET\"] = 0] = \"SINGLE_SHEET\";\n ExcelFactoryMode[ExcelFactoryMode[\"MULTI_SHEET\"] = 1] = \"MULTI_SHEET\";\n})(ExcelFactoryMode || (ExcelFactoryMode = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$27 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/** Adds drag listening onto an element. In AG Grid this is used twice, first is resizing columns,\n * second is moving the columns and column groups around (ie the 'drag' part of Drag and Drop. */\nvar DragService = /** @class */ (function (_super) {\n __extends$27(DragService, _super);\n function DragService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.dragEndFunctions = [];\n _this.dragSources = [];\n return _this;\n }\n DragService.prototype.init = function () {\n this.logger = this.loggerFactory.create('DragService');\n };\n DragService.prototype.removeAllListeners = function () {\n this.dragSources.forEach(this.removeListener.bind(this));\n this.dragSources.length = 0;\n };\n DragService.prototype.removeListener = function (dragSourceAndListener) {\n var element = dragSourceAndListener.dragSource.eElement;\n var mouseDownListener = dragSourceAndListener.mouseDownListener;\n element.removeEventListener('mousedown', mouseDownListener);\n // remove touch listener only if it exists\n if (dragSourceAndListener.touchEnabled) {\n var touchStartListener = dragSourceAndListener.touchStartListener;\n element.removeEventListener('touchstart', touchStartListener, { passive: true });\n }\n };\n DragService.prototype.removeDragSource = function (params) {\n var dragSourceAndListener = this.dragSources.find(function (item) { return item.dragSource === params; });\n if (!dragSourceAndListener) {\n return;\n }\n this.removeListener(dragSourceAndListener);\n removeFromArray(this.dragSources, dragSourceAndListener);\n };\n DragService.prototype.isDragging = function () {\n return this.dragging;\n };\n DragService.prototype.addDragSource = function (params, includeTouch) {\n var _this = this;\n if (includeTouch === void 0) { includeTouch = false; }\n var mouseListener = this.onMouseDown.bind(this, params);\n params.eElement.addEventListener('mousedown', mouseListener);\n var touchListener = null;\n var suppressTouch = this.gridOptionsWrapper.isSuppressTouch();\n if (includeTouch && !suppressTouch) {\n touchListener = function (touchEvent) {\n if (isFocusableFormField(touchEvent.target)) {\n return;\n }\n if (touchEvent.cancelable) {\n touchEvent.preventDefault();\n }\n _this.onTouchStart(params, touchEvent);\n };\n // we set passive=false, as we want to prevent default on this event\n params.eElement.addEventListener('touchstart', touchListener, { passive: false });\n }\n this.dragSources.push({\n dragSource: params,\n mouseDownListener: mouseListener,\n touchStartListener: touchListener,\n touchEnabled: includeTouch\n });\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onTouchStart = function (params, touchEvent) {\n var _this = this;\n this.currentDragParams = params;\n this.dragging = false;\n var touch = touchEvent.touches[0];\n this.touchLastTime = touch;\n this.touchStart = touch;\n var touchMoveEvent = function (e) { return _this.onTouchMove(e, params.eElement); };\n var touchEndEvent = function (e) { return _this.onTouchUp(e, params.eElement); };\n var documentTouchMove = function (e) { if (e.cancelable) {\n e.preventDefault();\n } };\n var target = touchEvent.target;\n var events = [\n // Prevents the page document from moving while we are dragging items around.\n // preventDefault needs to be called in the touchmove listener and never inside the\n // touchstart, because using touchstart causes the click event to be cancelled on touch devices.\n { target: document, type: 'touchmove', listener: documentTouchMove, options: { passive: false } },\n { target: target, type: 'touchmove', listener: touchMoveEvent, options: { passive: true } },\n { target: target, type: 'touchend', listener: touchEndEvent, options: { passive: true } },\n { target: target, type: 'touchcancel', listener: touchEndEvent, options: { passive: true } }\n ];\n // temporally add these listeners, for the duration of the drag\n this.addTemporaryEvents(events);\n // see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onCommonMove(touch, this.touchStart, params.eElement);\n }\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onMouseDown = function (params, mouseEvent) {\n var _this = this;\n var e = mouseEvent;\n if (params.skipMouseEvent && params.skipMouseEvent(mouseEvent)) {\n return;\n }\n // if there are two elements with parent / child relationship, and both are draggable,\n // when we drag the child, we should NOT drag the parent. an example of this is row moving\n // and range selection - row moving should get preference when use drags the rowDrag component.\n if (e._alreadyProcessedByDragService) {\n return;\n }\n e._alreadyProcessedByDragService = true;\n // only interested in left button clicks\n if (mouseEvent.button !== 0) {\n return;\n }\n this.currentDragParams = params;\n this.dragging = false;\n this.mouseStartEvent = mouseEvent;\n var eDocument = this.gridOptionsWrapper.getDocument();\n var mouseMoveEvent = function (event) { return _this.onMouseMove(event, params.eElement); };\n var mouseUpEvent = function (event) { return _this.onMouseUp(event, params.eElement); };\n var contextEvent = function (event) { return event.preventDefault(); };\n var target = eDocument;\n var events = [\n { target: target, type: 'mousemove', listener: mouseMoveEvent },\n { target: target, type: 'mouseup', listener: mouseUpEvent },\n { target: target, type: 'contextmenu', listener: contextEvent }\n ];\n // temporally add these listeners, for the duration of the drag\n this.addTemporaryEvents(events);\n //see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onMouseMove(mouseEvent, params.eElement);\n }\n };\n DragService.prototype.addTemporaryEvents = function (events) {\n events.forEach(function (currentEvent) {\n var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;\n target.addEventListener(type, listener, options);\n });\n this.dragEndFunctions.push(function () {\n events.forEach(function (currentEvent) {\n var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;\n target.removeEventListener(type, listener, options);\n });\n });\n };\n // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n DragService.prototype.isEventNearStartEvent = function (currentEvent, startEvent) {\n // by default, we wait 4 pixels before starting the drag\n var dragStartPixels = this.currentDragParams.dragStartPixels;\n var requiredPixelDiff = exists(dragStartPixels) ? dragStartPixels : 4;\n return areEventsNear(currentEvent, startEvent, requiredPixelDiff);\n };\n DragService.prototype.getFirstActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n if (touchList[i].identifier === this.touchStart.identifier) {\n return touchList[i];\n }\n }\n return null;\n };\n DragService.prototype.onCommonMove = function (currentEvent, startEvent, el) {\n if (!this.dragging) {\n // if mouse hasn't travelled from the start position enough, do nothing\n if (!this.dragging && this.isEventNearStartEvent(currentEvent, startEvent)) {\n return;\n }\n this.dragging = true;\n var event_1 = {\n type: Events.EVENT_DRAG_STARTED,\n target: el\n };\n this.eventService.dispatchEvent(event_1);\n this.currentDragParams.onDragStart(startEvent);\n // we need ONE drag action at the startEvent, so that we are guaranteed the drop target\n // at the start gets notified. this is because the drag can start outside of the element\n // that started it, as the mouse is allowed drag away from the mouse down before it's\n // considered a drag (the isEventNearStartEvent() above). if we didn't do this, then\n // it would be possible to click a column by the edge, then drag outside of the drop zone\n // in less than 4 pixels and the drag officially starts outside of the header but the header\n // wouldn't be notified of the dragging.\n this.currentDragParams.onDragging(startEvent);\n }\n this.currentDragParams.onDragging(currentEvent);\n };\n DragService.prototype.onTouchMove = function (touchEvent, el) {\n var touch = this.getFirstActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n // this.___statusPanel.setInfoText(Math.random() + ' onTouchMove preventDefault stopPropagation');\n this.onCommonMove(touch, this.touchStart, el);\n };\n // only gets called after a mouse down - as this is only added after mouseDown\n // and is removed when mouseUp happens\n DragService.prototype.onMouseMove = function (mouseEvent, el) {\n // when `isEnableCellTextSelect` is `true`, we need to preventDefault on mouseMove\n // to avoid the grid text being selected while dragging components.\n // Note: Safari also has an issue, where `user-select: none` is not being respected.\n if ((this.gridOptionsWrapper.isEnableCellTextSelect() || isBrowserSafari()) &&\n // The event type can be `mousedown` when `dragStartPixels=0`\n // we should only preventDefault on `mousemove`.\n mouseEvent.type === 'mousemove' &&\n mouseEvent.cancelable &&\n this.mouseEventService.isEventFromThisGrid(mouseEvent) &&\n // we should not prevent mouseMove when above a form field\n // as that would prevent the text in the field from being selected\n !this.isOverFormFieldElement(mouseEvent)) {\n mouseEvent.preventDefault();\n }\n this.onCommonMove(mouseEvent, this.mouseStartEvent, el);\n };\n DragService.prototype.isOverFormFieldElement = function (mouseEvent) {\n var _a, _b;\n var el = mouseEvent.target;\n var tagName = (_a = el) === null || _a === void 0 ? void 0 : _a.tagName.toLocaleLowerCase();\n return !!((_b = tagName) === null || _b === void 0 ? void 0 : _b.match('^a$|textarea|input|select|button'));\n };\n DragService.prototype.onTouchUp = function (touchEvent, el) {\n var touch = this.getFirstActiveTouch(touchEvent.changedTouches);\n // i haven't worked this out yet, but there is no matching touch\n // when we get the touch up event. to get around this, we swap in\n // the last touch. this is a hack to 'get it working' while we\n // figure out what's going on, why we are not getting a touch in\n // current event.\n if (!touch) {\n touch = this.touchLastTime;\n }\n // if mouse was left up before we started to move, then this is a tap.\n // we check this before onUpCommon as onUpCommon resets the dragging\n // let tap = !this.dragging;\n // let tapTarget = this.currentDragParams.eElement;\n this.onUpCommon(touch, el);\n // if tap, tell user\n // console.log(`${Math.random()} tap = ${tap}`);\n // if (tap) {\n // tapTarget.click();\n // }\n };\n DragService.prototype.onMouseUp = function (mouseEvent, el) {\n this.onUpCommon(mouseEvent, el);\n };\n DragService.prototype.onUpCommon = function (eventOrTouch, el) {\n if (this.dragging) {\n this.dragging = false;\n this.currentDragParams.onDragStop(eventOrTouch);\n var event_2 = {\n type: Events.EVENT_DRAG_STOPPED,\n target: el\n };\n this.eventService.dispatchEvent(event_2);\n }\n this.mouseStartEvent = null;\n this.touchStart = null;\n this.touchLastTime = null;\n this.currentDragParams = null;\n this.dragEndFunctions.forEach(function (func) { return func(); });\n this.dragEndFunctions.length = 0;\n };\n __decorate$1V([\n Autowired('loggerFactory')\n ], DragService.prototype, \"loggerFactory\", void 0);\n __decorate$1V([\n Autowired('mouseEventService')\n ], DragService.prototype, \"mouseEventService\", void 0);\n __decorate$1V([\n PostConstruct\n ], DragService.prototype, \"init\", null);\n __decorate$1V([\n PreDestroy\n ], DragService.prototype, \"removeAllListeners\", null);\n DragService = __decorate$1V([\n Bean('dragService')\n ], DragService);\n return DragService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$26 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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$7 = (undefined && undefined.__assign) || function () {\n __assign$7 = 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$7.apply(this, arguments);\n};\nvar __decorate$1U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterManager = /** @class */ (function (_super) {\n __extends$26(FilterManager, _super);\n function FilterManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.allColumnFilters = new Map();\n _this.activeAggregateFilters = [];\n _this.activeColumnFilters = [];\n _this.quickFilter = null;\n _this.quickFilterParts = null;\n // this is true when the grid is processing the filter change. this is used by the cell comps, so that they\n // don't flash when data changes due to filter changes. there is no need to flash when filter changes as the\n // user is in control, so doesn't make sense to show flashing changes. for example, go to main demo where\n // this feature is turned off (hack code to always return false for isSuppressFlashingCellsBecauseFiltering(), put in)\n // 100,000 rows and group by country. then do some filtering. all the cells flash, which is silly.\n _this.processingFilterChange = false;\n return _this;\n }\n FilterManager_1 = FilterManager;\n FilterManager.prototype.init = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, function () { return _this.onColumnsChanged(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, function () { return _this.refreshFiltersForAggregations(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, function () { return _this.refreshFiltersForAggregations(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, function () { return _this.refreshFiltersForAggregations(); });\n this.quickFilter = this.parseQuickFilter(this.gridOptionsWrapper.getQuickFilterText());\n this.setQuickFilterParts();\n this.allowShowChangeAfterFilter = this.gridOptionsWrapper.isAllowShowChangeAfterFilter();\n this.externalFilterPresent = this.gridOptionsWrapper.isExternalFilterPresent();\n };\n FilterManager.prototype.setQuickFilterParts = function () {\n this.quickFilterParts = this.quickFilter ? this.quickFilter.split(' ') : null;\n };\n FilterManager.prototype.setFilterModel = function (model) {\n var _this = this;\n var allPromises = [];\n var previousModel = this.getFilterModel();\n if (model) {\n // mark the filters as we set them, so any active filters left over we stop\n var modelKeys_1 = convertToSet(Object.keys(model));\n this.allColumnFilters.forEach(function (filterWrapper, colId) {\n var newModel = model[colId];\n allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, newModel));\n modelKeys_1.delete(colId);\n });\n // at this point, processedFields contains data for which we don't have a filter working yet\n modelKeys_1.forEach(function (colId) {\n var column = _this.columnModel.getPrimaryColumn(colId) || _this.columnModel.getGridColumn(colId);\n if (!column) {\n console.warn('AG Grid: setFilterModel() - no column found for colId: ' + colId);\n return;\n }\n if (!column.isFilterAllowed()) {\n console.warn('AG Grid: setFilterModel() - unable to fully apply model, filtering disabled for colId: ' + colId);\n return;\n }\n var filterWrapper = _this.getOrCreateFilterWrapper(column, 'NO_UI');\n if (!filterWrapper) {\n console.warn('AG-Grid: setFilterModel() - unable to fully apply model, unable to create filter for colId: ' + colId);\n return;\n }\n allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]));\n });\n }\n else {\n this.allColumnFilters.forEach(function (filterWrapper) {\n allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, null));\n });\n }\n AgPromise.all(allPromises).then(function () {\n var currentModel = _this.getFilterModel();\n var columns = [];\n _this.allColumnFilters.forEach(function (filterWrapper, colId) {\n var before = previousModel ? previousModel[colId] : null;\n var after = currentModel ? currentModel[colId] : null;\n if (!_.jsonEquals(before, after)) {\n columns.push(filterWrapper.column);\n }\n });\n if (columns.length > 0) {\n _this.onFilterChanged({ columns: columns });\n }\n });\n };\n FilterManager.prototype.setModelOnFilterWrapper = function (filterPromise, newModel) {\n return new AgPromise(function (resolve) {\n filterPromise.then(function (filter) {\n if (typeof filter.setModel !== 'function') {\n console.warn('AG Grid: filter missing setModel method, which is needed for setFilterModel');\n resolve();\n }\n (filter.setModel(newModel) || AgPromise.resolve()).then(function () { return resolve(); });\n });\n });\n };\n FilterManager.prototype.getFilterModel = function () {\n var result = {};\n this.allColumnFilters.forEach(function (filterWrapper, key) {\n // because user can provide filters, we provide useful error checking and messages\n var filterPromise = filterWrapper.filterPromise;\n var filter = filterPromise.resolveNow(null, function (promiseFilter) { return promiseFilter; });\n if (filter == null) {\n return null;\n }\n if (typeof filter.getModel !== 'function') {\n console.warn('AG Grid: filter API missing getModel method, which is needed for getFilterModel');\n return;\n }\n var model = filter.getModel();\n if (exists(model)) {\n result[key] = model;\n }\n });\n return result;\n };\n FilterManager.prototype.isColumnFilterPresent = function () {\n return this.activeColumnFilters.length > 0;\n };\n FilterManager.prototype.isAggregateFilterPresent = function () {\n return !!this.activeAggregateFilters.length;\n };\n FilterManager.prototype.isExternalFilterPresent = function () {\n return this.externalFilterPresent;\n };\n FilterManager.prototype.doAggregateFiltersPass = function (node, filterToSkip) {\n return this.doColumnFiltersPass(node, filterToSkip, true);\n };\n // called by:\n // 1) onFilterChanged()\n // 2) onNewRowsLoaded()\n FilterManager.prototype.updateActiveFilters = function () {\n var _this = this;\n this.activeColumnFilters.length = 0;\n this.activeAggregateFilters.length = 0;\n var isFilterActive = function (filter) {\n if (!filter) {\n return false;\n } // this never happens, including to avoid compile error\n if (!filter.isFilterActive) {\n console.warn('AG Grid: Filter is missing isFilterActive() method');\n return false;\n }\n return filter.isFilterActive();\n };\n var groupFilterEnabled = !!this.gridOptionsWrapper.getGroupAggFiltering();\n var isAggFilter = function (column) {\n var isSecondary = !column.isPrimary();\n // the only filters that can appear on secondary columns are groupAgg filters\n if (isSecondary) {\n return true;\n }\n var isShowingPrimaryColumns = !_this.columnModel.isPivotActive();\n var isValueActive = column.isValueActive();\n // primary columns are only ever groupAgg filters if a) value is active and b) showing primary columns\n if (!isValueActive || !isShowingPrimaryColumns) {\n return false;\n }\n // from here on we know: isPrimary=true, isValueActive=true, isShowingPrimaryColumns=true\n if (_this.columnModel.isPivotMode()) {\n // primary column is pretending to be a pivot column, ie pivotMode=true, but we are\n // still showing primary columns\n return true;\n }\n else {\n // we are not pivoting, so we groupFilter when it's an agg column\n return groupFilterEnabled;\n }\n };\n this.allColumnFilters.forEach(function (filterWrapper) {\n if (filterWrapper.filterPromise.resolveNow(false, isFilterActive)) {\n var filterComp = filterWrapper.filterPromise.resolveNow(null, function (filter) { return filter; });\n if (isAggFilter(filterWrapper.column)) {\n _this.activeAggregateFilters.push(filterComp);\n }\n else {\n _this.activeColumnFilters.push(filterComp);\n }\n }\n });\n };\n FilterManager.prototype.updateFilterFlagInColumns = function (source, additionalEventAttributes) {\n this.allColumnFilters.forEach(function (filterWrapper) {\n var isFilterActive = filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n filterWrapper.column.setFilterActive(isFilterActive, source, additionalEventAttributes);\n });\n };\n FilterManager.prototype.isAnyFilterPresent = function () {\n return this.isQuickFilterPresent() || this.isColumnFilterPresent() || this.isAggregateFilterPresent() || this.isExternalFilterPresent();\n };\n FilterManager.prototype.doColumnFiltersPass = function (node, filterToSkip, targetAggregates) {\n var data = node.data, aggData = node.aggData;\n var targetedFilters = targetAggregates ? this.activeAggregateFilters : this.activeColumnFilters;\n var targetedData = targetAggregates ? aggData : data;\n for (var i = 0; i < targetedFilters.length; i++) {\n var filter = targetedFilters[i];\n if (filter == null || filter === filterToSkip) {\n continue;\n }\n if (typeof filter.doesFilterPass !== 'function') {\n // because users can do custom filters, give nice error message\n throw new Error('Filter is missing method doesFilterPass');\n }\n if (!filter.doesFilterPass({ node: node, data: targetedData })) {\n return false;\n }\n }\n return true;\n };\n FilterManager.prototype.parseQuickFilter = function (newFilter) {\n if (!exists(newFilter)) {\n return null;\n }\n if (!this.gridOptionsWrapper.isRowModelDefault()) {\n console.warn('AG Grid - Quick filtering only works with the Client-Side Row Model');\n return null;\n }\n return newFilter.toUpperCase();\n };\n FilterManager.prototype.setQuickFilter = function (newFilter) {\n if (newFilter != null && typeof newFilter !== 'string') {\n console.warn(\"AG Grid - setQuickFilter() only supports string inputs, received: \" + typeof newFilter);\n return;\n }\n var parsedFilter = this.parseQuickFilter(newFilter);\n if (this.quickFilter !== parsedFilter) {\n this.quickFilter = parsedFilter;\n this.setQuickFilterParts();\n this.onFilterChanged();\n }\n };\n FilterManager.prototype.refreshFiltersForAggregations = function () {\n var isAggFiltering = this.gridOptionsWrapper.getGroupAggFiltering();\n if (isAggFiltering) {\n this.onFilterChanged();\n }\n };\n // sometimes (especially in React) the filter can call onFilterChanged when we are in the middle\n // of a render cycle. this would be bad, so we wait for render cycle to complete when this happens.\n // this happens in react when we change React State in the grid (eg setting RowCtrl's in RowContainer)\n // which results in React State getting applied in the main application, triggering a useEffect() to\n // be kicked off adn then the application calling the grid's API. in AG-6554, the custom filter was\n // getting it's useEffect() triggered in this way.\n FilterManager.prototype.callOnFilterChangedOutsideRenderCycle = function (params) {\n var _this = this;\n if (params === void 0) { params = {}; }\n var action = function () { return _this.onFilterChanged(params); };\n if (this.rowRenderer.isRefreshInProgress()) {\n setTimeout(action, 0);\n }\n else {\n action();\n }\n };\n FilterManager.prototype.onFilterChanged = function (params) {\n if (params === void 0) { params = {}; }\n var filterInstance = params.filterInstance, additionalEventAttributes = params.additionalEventAttributes, columns = params.columns;\n this.updateActiveFilters();\n this.updateFilterFlagInColumns('filterChanged', additionalEventAttributes);\n this.externalFilterPresent = this.gridOptionsWrapper.isExternalFilterPresent();\n this.allColumnFilters.forEach(function (filterWrapper) {\n if (!filterWrapper.filterPromise) {\n return;\n }\n filterWrapper.filterPromise.then(function (filter) {\n if (filter && filter !== filterInstance && filter.onAnyFilterChanged) {\n filter.onAnyFilterChanged();\n }\n });\n });\n var filterChangedEvent = {\n type: Events.EVENT_FILTER_CHANGED,\n columns: columns || [],\n };\n if (additionalEventAttributes) {\n mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n // because internal events are not async in ag-grid, when the dispatchEvent\n // method comes back, we know all listeners have finished executing.\n this.processingFilterChange = true;\n this.eventService.dispatchEvent(filterChangedEvent);\n this.processingFilterChange = false;\n };\n FilterManager.prototype.isSuppressFlashingCellsBecauseFiltering = function () {\n // if user has elected to always flash cell changes, then always return false, otherwise we suppress flashing\n // changes when filtering\n return !this.allowShowChangeAfterFilter && this.processingFilterChange;\n };\n FilterManager.prototype.isQuickFilterPresent = function () {\n return this.quickFilter !== null;\n };\n FilterManager.prototype.doesRowPassOtherFilters = function (filterToSkip, node) {\n return this.doesRowPassFilter({ rowNode: node, filterInstanceToSkip: filterToSkip });\n };\n FilterManager.prototype.doesRowPassQuickFilterNoCache = function (node, filterPart) {\n var _this = this;\n var columns = this.columnModel.getAllColumnsForQuickFilter();\n return columns.some(function (column) {\n var part = _this.getQuickFilterTextForColumn(column, node);\n return exists(part) && part.indexOf(filterPart) >= 0;\n });\n };\n FilterManager.prototype.doesRowPassQuickFilterCache = function (node, filterPart) {\n if (!node.quickFilterAggregateText) {\n this.aggregateRowForQuickFilter(node);\n }\n return node.quickFilterAggregateText.indexOf(filterPart) >= 0;\n };\n FilterManager.prototype.doesRowPassQuickFilter = function (node) {\n var _this = this;\n var usingCache = this.gridOptionsWrapper.isCacheQuickFilter();\n // each part must pass, if any fails, then the whole filter fails\n return this.quickFilterParts.every(function (part) {\n return usingCache ? _this.doesRowPassQuickFilterCache(node, part) : _this.doesRowPassQuickFilterNoCache(node, part);\n });\n };\n FilterManager.prototype.doesRowPassAggregateFilters = function (params) {\n if (this.isAggregateFilterPresent() && !this.doAggregateFiltersPass(params.rowNode, params.filterInstanceToSkip)) {\n return false;\n }\n // got this far, all filters pass\n return true;\n };\n FilterManager.prototype.doesRowPassFilter = function (params) {\n // the row must pass ALL of the filters, so if any of them fail,\n // we return true. that means if a row passes the quick filter,\n // but fails the column filter, it fails overall\n // first up, check quick filter\n if (this.isQuickFilterPresent() && !this.doesRowPassQuickFilter(params.rowNode)) {\n return false;\n }\n // secondly, give the client a chance to reject this row\n if (this.isExternalFilterPresent() && !this.gridOptionsWrapper.doesExternalFilterPass(params.rowNode)) {\n return false;\n }\n // lastly, check column filter\n if (this.isColumnFilterPresent() && !this.doColumnFiltersPass(params.rowNode, params.filterInstanceToSkip)) {\n return false;\n }\n // got this far, all filters pass\n return true;\n };\n FilterManager.prototype.getQuickFilterTextForColumn = function (column, node) {\n var value = this.valueService.getValue(column, node, true);\n var colDef = column.getColDef();\n if (colDef.getQuickFilterText) {\n var params = {\n value: value,\n node: node,\n data: node.data,\n column: column,\n colDef: colDef,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n value = colDef.getQuickFilterText(params);\n }\n return exists(value) ? value.toString().toUpperCase() : null;\n };\n FilterManager.prototype.aggregateRowForQuickFilter = function (node) {\n var _this = this;\n var stringParts = [];\n var columns = this.columnModel.getAllColumnsForQuickFilter();\n columns.forEach(function (column) {\n var part = _this.getQuickFilterTextForColumn(column, node);\n if (exists(part)) {\n stringParts.push(part);\n }\n });\n node.quickFilterAggregateText = stringParts.join(FilterManager_1.QUICK_FILTER_SEPARATOR);\n };\n FilterManager.prototype.onNewRowsLoaded = function (source) {\n this.allColumnFilters.forEach(function (filterWrapper) {\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.onNewRowsLoaded) {\n filter.onNewRowsLoaded();\n }\n });\n });\n this.updateFilterFlagInColumns(source);\n this.updateActiveFilters();\n };\n FilterManager.prototype.createValueGetter = function (column) {\n var _this = this;\n return function (_a) {\n var node = _a.node;\n return _this.valueService.getValue(column, node, true);\n };\n };\n FilterManager.prototype.getFilterComponent = function (column, source, createIfDoesNotExist) {\n if (createIfDoesNotExist === void 0) { createIfDoesNotExist = true; }\n var _a;\n if (createIfDoesNotExist) {\n return ((_a = this.getOrCreateFilterWrapper(column, source)) === null || _a === void 0 ? void 0 : _a.filterPromise) || null;\n }\n var filterWrapper = this.cachedFilter(column);\n return filterWrapper ? filterWrapper.filterPromise : null;\n };\n FilterManager.prototype.isFilterActive = function (column) {\n var filterWrapper = this.cachedFilter(column);\n return !!filterWrapper && filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n };\n FilterManager.prototype.getOrCreateFilterWrapper = function (column, source) {\n if (!column.isFilterAllowed()) {\n return null;\n }\n var filterWrapper = this.cachedFilter(column);\n if (!filterWrapper) {\n filterWrapper = this.createFilterWrapper(column, source);\n this.allColumnFilters.set(column.getColId(), filterWrapper);\n }\n else if (source !== 'NO_UI') {\n this.putIntoGui(filterWrapper, source);\n }\n return filterWrapper;\n };\n FilterManager.prototype.cachedFilter = function (column) {\n return this.allColumnFilters.get(column.getColId());\n };\n FilterManager.prototype.createFilterInstance = function (column) {\n var _this = this;\n var defaultFilter = ModuleRegistry.isRegistered(ModuleNames.SetFilterModule) ? 'agSetColumnFilter' : 'agTextColumnFilter';\n var colDef = column.getColDef();\n var filterInstance;\n var params = __assign$7(__assign$7({}, this.createFilterParams(column, colDef)), { filterModifiedCallback: function () {\n var event = {\n type: Events.EVENT_FILTER_MODIFIED,\n column: column,\n filterInstance: filterInstance\n };\n _this.eventService.dispatchEvent(event);\n }, filterChangedCallback: function (additionalEventAttributes) {\n var params = { filterInstance: filterInstance, additionalEventAttributes: additionalEventAttributes, columns: [column] };\n _this.callOnFilterChangedOutsideRenderCycle(params);\n }, doesRowPassOtherFilter: function (node) { return _this.doesRowPassOtherFilters(filterInstance, node); } });\n var compDetails = this.userComponentFactory.getFilterDetails(colDef, params, defaultFilter);\n if (!compDetails) {\n return null;\n }\n var componentPromise = compDetails.newAgStackInstance();\n if (componentPromise) {\n componentPromise.then(function (r) { return filterInstance = r; });\n }\n return componentPromise;\n };\n FilterManager.prototype.createFilterParams = function (column, colDef) {\n var params = {\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n column: column,\n colDef: cloneObject(colDef),\n rowModel: this.rowModel,\n filterChangedCallback: function () { },\n filterModifiedCallback: function () { },\n valueGetter: this.createValueGetter(column),\n context: this.gridOptionsWrapper.getContext(),\n doesRowPassOtherFilter: function () { return true; },\n };\n return params;\n };\n FilterManager.prototype.createFilterWrapper = function (column, source) {\n var filterWrapper = {\n column: column,\n filterPromise: null,\n compiledElement: null,\n guiPromise: AgPromise.resolve(null)\n };\n filterWrapper.filterPromise = this.createFilterInstance(column);\n if (filterWrapper.filterPromise) {\n this.putIntoGui(filterWrapper, source);\n }\n return filterWrapper;\n };\n FilterManager.prototype.putIntoGui = function (filterWrapper, source) {\n var _this = this;\n var eFilterGui = document.createElement('div');\n eFilterGui.className = 'ag-filter';\n filterWrapper.guiPromise = new AgPromise(function (resolve) {\n filterWrapper.filterPromise.then(function (filter) {\n var guiFromFilter = filter.getGui();\n if (!exists(guiFromFilter)) {\n console.warn(\"AG Grid: getGui method from filter returned \" + guiFromFilter + \", it should be a DOM element or an HTML template string.\");\n }\n // for backwards compatibility with Angular 1 - we\n // used to allow providing back HTML from getGui().\n // once we move away from supporting Angular 1\n // directly, we can change this.\n if (typeof guiFromFilter === 'string') {\n guiFromFilter = loadTemplate(guiFromFilter);\n }\n eFilterGui.appendChild(guiFromFilter);\n resolve(eFilterGui);\n var event = {\n type: Events.EVENT_FILTER_OPENED,\n column: filterWrapper.column,\n source: source,\n eGui: eFilterGui\n };\n _this.eventService.dispatchEvent(event);\n });\n });\n };\n FilterManager.prototype.onColumnsChanged = function () {\n var _this = this;\n var columns = [];\n this.allColumnFilters.forEach(function (wrapper, colId) {\n var currentColumn;\n if (wrapper.column.isPrimary()) {\n currentColumn = _this.columnModel.getPrimaryColumn(colId);\n }\n else {\n currentColumn = _this.columnModel.getGridColumn(colId);\n }\n if (currentColumn) {\n return;\n }\n columns.push(wrapper.column);\n _this.disposeFilterWrapper(wrapper, 'filterDestroyed');\n });\n if (columns.length > 0) {\n this.onFilterChanged({ columns: columns });\n }\n };\n // destroys the filter, so it not longer takes part\n FilterManager.prototype.destroyFilter = function (column, source) {\n if (source === void 0) { source = 'api'; }\n var filterWrapper = this.allColumnFilters.get(column.getColId());\n if (filterWrapper) {\n this.disposeFilterWrapper(filterWrapper, source);\n this.onFilterChanged({ columns: [column] });\n }\n };\n FilterManager.prototype.disposeFilterWrapper = function (filterWrapper, source) {\n var _this = this;\n filterWrapper.filterPromise.then(function (filter) {\n (filter.setModel(null) || AgPromise.resolve()).then(function () {\n _this.getContext().destroyBean(filter);\n filterWrapper.column.setFilterActive(false, source);\n _this.allColumnFilters.delete(filterWrapper.column.getColId());\n });\n });\n };\n FilterManager.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n this.allColumnFilters.forEach(function (filterWrapper) { return _this.disposeFilterWrapper(filterWrapper, 'filterDestroyed'); });\n };\n var FilterManager_1;\n FilterManager.QUICK_FILTER_SEPARATOR = '\\n';\n __decorate$1U([\n Autowired('valueService')\n ], FilterManager.prototype, \"valueService\", void 0);\n __decorate$1U([\n Autowired('columnModel')\n ], FilterManager.prototype, \"columnModel\", void 0);\n __decorate$1U([\n Autowired('rowModel')\n ], FilterManager.prototype, \"rowModel\", void 0);\n __decorate$1U([\n Autowired('userComponentFactory')\n ], FilterManager.prototype, \"userComponentFactory\", void 0);\n __decorate$1U([\n Autowired('rowRenderer')\n ], FilterManager.prototype, \"rowRenderer\", void 0);\n __decorate$1U([\n PostConstruct\n ], FilterManager.prototype, \"init\", null);\n __decorate$1U([\n PreDestroy\n ], FilterManager.prototype, \"destroy\", null);\n FilterManager = FilterManager_1 = __decorate$1U([\n Bean('filterManager')\n ], FilterManager);\n return FilterManager;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$25 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AbstractHeaderCellComp = /** @class */ (function (_super) {\n __extends$25(AbstractHeaderCellComp, _super);\n function AbstractHeaderCellComp(template, ctrl) {\n var _this = _super.call(this, template) || this;\n _this.ctrl = ctrl;\n return _this;\n }\n AbstractHeaderCellComp.prototype.getCtrl = function () {\n return this.ctrl;\n };\n return AbstractHeaderCellComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$24 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderFilterCellComp = /** @class */ (function (_super) {\n __extends$24(HeaderFilterCellComp, _super);\n function HeaderFilterCellComp(ctrl) {\n return _super.call(this, HeaderFilterCellComp.TEMPLATE, ctrl) || this;\n }\n HeaderFilterCellComp.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n addOrRemoveBodyCssClass: function (cssClassName, on) { return _this.eFloatingFilterBody.classList.toggle(cssClassName, on); },\n addOrRemoveButtonWrapperCssClass: function (cssClassName, on) { return _this.eButtonWrapper.classList.toggle(cssClassName, on); },\n setCompDetails: function (compDetails) { return _this.setCompDetails(compDetails); },\n getFloatingFilterComp: function () { return _this.compPromise; },\n setWidth: function (width) { return eGui.style.width = width; },\n setMenuIcon: function (eIcon) { return _this.eButtonShowMainFilter.appendChild(eIcon); }\n };\n this.ctrl.setComp(compProxy, eGui, this.eButtonShowMainFilter, this.eFloatingFilterBody);\n };\n HeaderFilterCellComp.prototype.setCompDetails = function (compDetails) {\n var _this = this;\n // because we are providing defaultFloatingFilterType, we know it will never be undefined;\n this.compPromise = compDetails.newAgStackInstance();\n this.compPromise.then(function (comp) { return _this.afterCompCreated(comp); });\n };\n HeaderFilterCellComp.prototype.afterCompCreated = function (comp) {\n var _this = this;\n if (!comp) {\n return;\n }\n this.addDestroyFunc(function () { return _this.context.destroyBean(comp); });\n if (!this.isAlive()) {\n return;\n }\n this.eFloatingFilterBody.appendChild(comp.getGui());\n if (comp.afterGuiAttached) {\n comp.afterGuiAttached();\n }\n };\n HeaderFilterCellComp.TEMPLATE = \"
\\n
\\n
\\n \\n
\\n
\";\n __decorate$1T([\n RefSelector('eFloatingFilterBody')\n ], HeaderFilterCellComp.prototype, \"eFloatingFilterBody\", void 0);\n __decorate$1T([\n RefSelector('eButtonWrapper')\n ], HeaderFilterCellComp.prototype, \"eButtonWrapper\", void 0);\n __decorate$1T([\n RefSelector('eButtonShowMainFilter')\n ], HeaderFilterCellComp.prototype, \"eButtonShowMainFilter\", void 0);\n __decorate$1T([\n PostConstruct\n ], HeaderFilterCellComp.prototype, \"postConstruct\", null);\n return HeaderFilterCellComp;\n}(AbstractHeaderCellComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$23 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LayoutCssClasses;\n(function (LayoutCssClasses) {\n LayoutCssClasses[\"AUTO_HEIGHT\"] = \"ag-layout-auto-height\";\n LayoutCssClasses[\"NORMAL\"] = \"ag-layout-normal\";\n LayoutCssClasses[\"PRINT\"] = \"ag-layout-print\";\n})(LayoutCssClasses || (LayoutCssClasses = {}));\nvar LayoutFeature = /** @class */ (function (_super) {\n __extends$23(LayoutFeature, _super);\n function LayoutFeature(view) {\n var _this = _super.call(this) || this;\n _this.view = view;\n return _this;\n }\n LayoutFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.updateLayoutClasses.bind(this));\n this.updateLayoutClasses();\n };\n LayoutFeature.prototype.updateLayoutClasses = function () {\n var domLayout = this.gridOptionsWrapper.getDomLayout();\n var params = {\n autoHeight: domLayout === Constants.DOM_LAYOUT_AUTO_HEIGHT,\n normal: domLayout === Constants.DOM_LAYOUT_NORMAL,\n print: domLayout === Constants.DOM_LAYOUT_PRINT\n };\n var cssClass = params.autoHeight ? LayoutCssClasses.AUTO_HEIGHT :\n params.print ? LayoutCssClasses.PRINT : LayoutCssClasses.NORMAL;\n this.view.updateLayoutClasses(cssClass, params);\n };\n __decorate$1S([\n Autowired('gridOptionsWrapper')\n ], LayoutFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1S([\n PostConstruct\n ], LayoutFeature.prototype, \"postConstruct\", null);\n return LayoutFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$22 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridBodyScrollFeature = /** @class */ (function (_super) {\n __extends$22(GridBodyScrollFeature, _super);\n function GridBodyScrollFeature(eBodyViewport) {\n var _this = _super.call(this) || this;\n _this.scrollLeft = -1;\n _this.nextScrollTop = -1;\n _this.scrollTop = -1;\n _this.eBodyViewport = eBodyViewport;\n _this.resetLastHorizontalScrollElementDebounced = debounce(_this.resetLastHorizontalScrollElement.bind(_this), 500);\n return _this;\n }\n GridBodyScrollFeature.prototype.postConstruct = function () {\n var _this = this;\n this.enableRtl = this.gridOptionsWrapper.isEnableRtl();\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n this.ctrlsService.whenReady(function (p) {\n _this.centerRowContainerCtrl = p.centerRowContainerCtrl;\n _this.onDisplayedColumnsWidthChanged();\n _this.addScrollListener();\n });\n };\n GridBodyScrollFeature.prototype.addScrollListener = function () {\n var fakeHScroll = this.ctrlsService.getFakeHScrollCtrl();\n this.addManagedListener(this.centerRowContainerCtrl.getViewportElement(), 'scroll', this.onCenterViewportScroll.bind(this));\n this.addManagedListener(fakeHScroll.getViewport(), 'scroll', this.onFakeHorizontalScroll.bind(this));\n var onVerticalScroll = this.gridOptionsWrapper.isDebounceVerticalScrollbar() ?\n debounce(this.onVerticalScroll.bind(this), 100)\n : this.onVerticalScroll.bind(this);\n this.addManagedListener(this.eBodyViewport, 'scroll', onVerticalScroll);\n };\n GridBodyScrollFeature.prototype.onDisplayedColumnsWidthChanged = function () {\n if (this.enableRtl) {\n // because RTL is all backwards, a change in the width of the row\n // can cause a change in the scroll position, without a scroll event,\n // because the scroll position in RTL is a function that depends on\n // the width. to be convinced of this, take out this line, enable RTL,\n // scroll all the way to the left and then resize a column\n this.horizontallyScrollHeaderCenterAndFloatingCenter();\n }\n };\n GridBodyScrollFeature.prototype.horizontallyScrollHeaderCenterAndFloatingCenter = function (scrollLeft) {\n // when doing RTL, this method gets called once prematurely\n var notYetInitialised = this.centerRowContainerCtrl == null;\n if (notYetInitialised) {\n return;\n }\n if (scrollLeft === undefined) {\n scrollLeft = this.centerRowContainerCtrl.getCenterViewportScrollLeft();\n }\n var offset = this.enableRtl ? scrollLeft : -scrollLeft;\n var topCenterContainer = this.ctrlsService.getTopCenterRowContainerCtrl();\n var stickyTopCenterContainer = this.ctrlsService.getStickyTopCenterRowContainerCtrl();\n var bottomCenterContainer = this.ctrlsService.getBottomCenterRowContainerCtrl();\n var fakeHScroll = this.ctrlsService.getFakeHScrollCtrl();\n var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n centerHeaderContainer.setHorizontalScroll(offset);\n bottomCenterContainer.setContainerTranslateX(offset);\n topCenterContainer.setContainerTranslateX(offset);\n stickyTopCenterContainer.setContainerTranslateX(offset);\n var centerViewport = this.centerRowContainerCtrl.getViewportElement();\n var isCenterViewportLastHorizontal = this.lastHorizontalScrollElement === centerViewport;\n var partner = isCenterViewportLastHorizontal ?\n fakeHScroll.getViewport() :\n this.centerRowContainerCtrl.getViewportElement();\n setScrollLeft(partner, Math.abs(scrollLeft), this.enableRtl);\n };\n GridBodyScrollFeature.prototype.isControllingScroll = function (eDiv) {\n if (!this.lastHorizontalScrollElement) {\n this.lastHorizontalScrollElement = eDiv;\n return true;\n }\n return eDiv === this.lastHorizontalScrollElement;\n };\n GridBodyScrollFeature.prototype.onFakeHorizontalScroll = function () {\n var fakeHScrollViewport = this.ctrlsService.getFakeHScrollCtrl().getViewport();\n if (!this.isControllingScroll(fakeHScrollViewport)) {\n return;\n }\n this.onBodyHorizontalScroll(fakeHScrollViewport);\n };\n GridBodyScrollFeature.prototype.onCenterViewportScroll = function () {\n var centerContainerViewport = this.centerRowContainerCtrl.getViewportElement();\n if (!this.isControllingScroll(centerContainerViewport)) {\n return;\n }\n this.onBodyHorizontalScroll(centerContainerViewport);\n };\n GridBodyScrollFeature.prototype.onBodyHorizontalScroll = function (eSource) {\n var centerContainerViewport = this.centerRowContainerCtrl.getViewportElement();\n var scrollLeft = centerContainerViewport.scrollLeft;\n if (this.shouldBlockScrollUpdate('horizontal', scrollLeft, true)) {\n return;\n }\n // we do Math.round() rather than Math.floor(), to mirror how scroll values are applied.\n // eg if a scale is applied (ie user has zoomed the browser), then applying scroll=200\n // could result in 199.88, which then floor(199.88) = 199, however round(199.88) = 200.\n // initially Math.floor() was used, however this caused (almost) infinite loop with aligned grids,\n // as the scroll would move 1px at at time bouncing from one grid to the next (eg one grid would cause\n // scroll to 200px, the next to 199px, then the first back to 198px and so on).\n this.doHorizontalScroll(Math.round(getScrollLeft(eSource, this.enableRtl)));\n this.resetLastHorizontalScrollElementDebounced();\n };\n GridBodyScrollFeature.prototype.onVerticalScroll = function () {\n var scrollTop = this.eBodyViewport.scrollTop;\n if (this.shouldBlockScrollUpdate('vertical', scrollTop, true)) {\n return;\n }\n this.animationFrameService.setScrollTop(scrollTop);\n this.nextScrollTop = scrollTop;\n if (this.gridOptionsWrapper.isSuppressAnimationFrame()) {\n this.scrollTop = this.nextScrollTop;\n this.redrawRowsAfterScroll();\n }\n else {\n this.animationFrameService.schedule();\n }\n };\n GridBodyScrollFeature.prototype.resetLastHorizontalScrollElement = function () {\n this.lastHorizontalScrollElement = null;\n };\n GridBodyScrollFeature.prototype.doHorizontalScroll = function (scrollLeft) {\n var fakeHScrollViewport = this.ctrlsService.getFakeHScrollCtrl().getViewport();\n var fakeScrollLeft = getScrollLeft(fakeHScrollViewport, this.enableRtl);\n if (this.scrollLeft === scrollLeft && scrollLeft === fakeScrollLeft) {\n return;\n }\n this.scrollLeft = scrollLeft;\n this.fireScrollEvent('horizontal');\n this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft);\n this.onHorizontalViewportChanged();\n };\n GridBodyScrollFeature.prototype.fireScrollEvent = function (direction) {\n var _this = this;\n var bodyScrollEvent = {\n type: Events.EVENT_BODY_SCROLL,\n direction: direction,\n left: this.scrollLeft,\n top: this.scrollTop\n };\n this.eventService.dispatchEvent(bodyScrollEvent);\n window.clearTimeout(this.scrollTimer);\n this.scrollTimer = undefined;\n this.scrollTimer = window.setTimeout(function () {\n var bodyScrollEndEvent = Object.assign({}, bodyScrollEvent, {\n type: Events.EVENT_BODY_SCROLL_END\n });\n _this.eventService.dispatchEvent(bodyScrollEndEvent);\n }, 100);\n };\n GridBodyScrollFeature.prototype.shouldBlockScrollUpdate = function (direction, scrollTo, touchOnly) {\n // touch devices allow elastic scroll - which temporally scrolls the panel outside of the viewport\n // (eg user uses touch to go to the left of the grid, but drags past the left, the rows will actually\n // scroll past the left until the user releases the mouse). when this happens, we want ignore the scroll,\n // as otherwise it was causing the rows and header to flicker.\n if (touchOnly === void 0) { touchOnly = false; }\n // sometimes when scrolling, we got values that extended the maximum scroll allowed. we used to\n // ignore these scrolls. problem is the max scroll position could be skipped (eg the previous scroll event\n // could be 10px before the max position, and then current scroll event could be 20px after the max position).\n // if we just ignored the last event, we would be setting the scroll to 10px before the max position, when in\n // actual fact the user has exceeded the max scroll and thus scroll should be set to the max.\n if (touchOnly && !isIOSUserAgent()) {\n return false;\n }\n if (direction === 'vertical') {\n var clientHeight = getInnerHeight(this.eBodyViewport);\n var scrollHeight = this.eBodyViewport.scrollHeight;\n if (scrollTo < 0 || (scrollTo + clientHeight > scrollHeight)) {\n return true;\n }\n }\n if (direction === 'horizontal') {\n var clientWidth = this.centerRowContainerCtrl.getCenterWidth();\n var scrollWidth = this.centerRowContainerCtrl.getViewportElement().scrollWidth;\n if (this.enableRtl && isRtlNegativeScroll()) {\n if (scrollTo > 0) {\n return true;\n }\n }\n else if (scrollTo < 0) {\n return true;\n }\n if (Math.abs(scrollTo) + clientWidth > scrollWidth) {\n return true;\n }\n }\n return false;\n };\n GridBodyScrollFeature.prototype.redrawRowsAfterScroll = function () {\n this.fireScrollEvent('vertical');\n };\n GridBodyScrollFeature.prototype.onHorizontalViewportChanged = function () {\n this.centerRowContainerCtrl.onHorizontalViewportChanged();\n };\n // this is to cater for AG-3274, where grid is removed from the dom and then inserted back in again.\n // (which happens with some implementations of tabbing). this can result in horizontal scroll getting\n // reset back to the left, however no scroll event is fired. so we need to get header to also scroll\n // back to the left to be kept in sync.\n // adding and removing the grid from the DOM both resets the scroll position and\n // triggers a resize event, so notify listeners if the scroll position has changed\n GridBodyScrollFeature.prototype.checkScrollLeft = function () {\n if (this.scrollLeft !== this.centerRowContainerCtrl.getCenterViewportScrollLeft()) {\n this.onBodyHorizontalScroll(this.centerRowContainerCtrl.getViewportElement());\n }\n };\n GridBodyScrollFeature.prototype.executeAnimationFrameScroll = function () {\n var frameNeeded = this.scrollTop != this.nextScrollTop;\n if (frameNeeded) {\n this.scrollTop = this.nextScrollTop;\n this.redrawRowsAfterScroll();\n }\n return frameNeeded;\n };\n // called by scrollHorizontally method and alignedGridsService\n GridBodyScrollFeature.prototype.setHorizontalScrollPosition = function (hScrollPosition) {\n var minScrollLeft = 0;\n var maxScrollLeft = this.centerRowContainerCtrl.getViewportElement().scrollWidth - this.centerRowContainerCtrl.getCenterWidth();\n if (this.shouldBlockScrollUpdate('horizontal', hScrollPosition)) {\n if (this.enableRtl && isRtlNegativeScroll()) {\n hScrollPosition = hScrollPosition > 0 ? 0 : maxScrollLeft;\n }\n else {\n hScrollPosition = Math.min(Math.max(hScrollPosition, minScrollLeft), maxScrollLeft);\n }\n }\n setScrollLeft(this.centerRowContainerCtrl.getViewportElement(), Math.abs(hScrollPosition), this.enableRtl);\n // we need to manually do the event handling (rather than wait for the event)\n // for the alignedGridsService, as if we don't, the aligned grid service gets\n // notified async, and then it's 'consuming' flag doesn't get used right, and\n // we can end up with an infinite loop\n this.doHorizontalScroll(hScrollPosition);\n };\n GridBodyScrollFeature.prototype.setVerticalScrollPosition = function (vScrollPosition) {\n this.eBodyViewport.scrollTop = vScrollPosition;\n };\n GridBodyScrollFeature.prototype.getVScrollPosition = function () {\n var result = {\n top: this.eBodyViewport.scrollTop,\n bottom: this.eBodyViewport.scrollTop + this.eBodyViewport.offsetHeight\n };\n return result;\n };\n GridBodyScrollFeature.prototype.getHScrollPosition = function () {\n return this.centerRowContainerCtrl.getHScrollPosition();\n };\n GridBodyScrollFeature.prototype.isHorizontalScrollShowing = function () {\n return this.centerRowContainerCtrl.isHorizontalScrollShowing();\n };\n // called by the headerRootComp and moveColumnController\n GridBodyScrollFeature.prototype.scrollHorizontally = function (pixels) {\n var oldScrollPosition = this.centerRowContainerCtrl.getViewportElement().scrollLeft;\n this.setHorizontalScrollPosition(oldScrollPosition + pixels);\n return this.centerRowContainerCtrl.getViewportElement().scrollLeft - oldScrollPosition;\n };\n // gets called by rowRenderer when new data loaded, as it will want to scroll to the top\n GridBodyScrollFeature.prototype.scrollToTop = function () {\n this.eBodyViewport.scrollTop = 0;\n };\n // Valid values for position are bottom, middle and top\n GridBodyScrollFeature.prototype.ensureNodeVisible = function (comparator, position) {\n if (position === void 0) { position = null; }\n // look for the node index we want to display\n var rowCount = this.rowModel.getRowCount();\n var indexToSelect = -1;\n // go through all the nodes, find the one we want to show\n for (var i = 0; i < rowCount; i++) {\n var node = this.rowModel.getRow(i);\n if (typeof comparator === 'function') {\n // Have to assert type here, as type could be TData & Function\n var predicate = comparator;\n if (node && predicate(node)) {\n indexToSelect = i;\n break;\n }\n }\n else {\n // check object equality against node and data\n if (comparator === node || comparator === node.data) {\n indexToSelect = i;\n break;\n }\n }\n }\n if (indexToSelect >= 0) {\n this.ensureIndexVisible(indexToSelect, position);\n }\n };\n // Valid values for position are bottom, middle and top\n // position should be {'top','middle','bottom', or undefined/null}.\n // if undefined/null, then the grid will to the minimal amount of scrolling,\n // eg if grid needs to scroll up, it scrolls until row is on top,\n // if grid needs to scroll down, it scrolls until row is on bottom,\n // if row is already in view, grid does not scroll\n GridBodyScrollFeature.prototype.ensureIndexVisible = function (index, position) {\n // if for print or auto height, everything is always visible\n if (this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT) {\n return;\n }\n var rowCount = this.paginationProxy.getRowCount();\n if (typeof index !== 'number' || index < 0 || index >= rowCount) {\n console.warn('invalid row index for ensureIndexVisible: ' + index);\n return;\n }\n var isPaging = this.gridOptionsWrapper.isPagination();\n var paginationPanelEnabled = isPaging && !this.gridOptionsWrapper.isSuppressPaginationPanel();\n if (!paginationPanelEnabled) {\n this.paginationProxy.goToPageWithIndex(index);\n }\n var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n var stickyTopHeight = gridBodyCtrl.getStickyTopHeight();\n var rowNode = this.paginationProxy.getRow(index);\n var rowGotShiftedDuringOperation;\n do {\n var startingRowTop = rowNode.rowTop;\n var startingRowHeight = rowNode.rowHeight;\n var paginationOffset = this.paginationProxy.getPixelOffset();\n var rowTopPixel = rowNode.rowTop - paginationOffset;\n var rowBottomPixel = rowTopPixel + rowNode.rowHeight;\n var scrollPosition = this.getVScrollPosition();\n var heightOffset = this.heightScaler.getDivStretchOffset();\n var vScrollTop = scrollPosition.top + heightOffset;\n var vScrollBottom = scrollPosition.bottom + heightOffset;\n var viewportHeight = vScrollBottom - vScrollTop;\n // work out the pixels for top, middle and bottom up front,\n // make the if/else below easier to read\n var pxTop = this.heightScaler.getScrollPositionForPixel(rowTopPixel);\n var pxBottom = this.heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);\n // make sure if middle, the row is not outside the top of the grid\n var pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);\n var rowAboveViewport = (vScrollTop + stickyTopHeight) > rowTopPixel;\n var rowBelowViewport = vScrollBottom < rowBottomPixel;\n var newScrollPosition = null;\n if (position === 'top') {\n newScrollPosition = pxTop;\n }\n else if (position === 'bottom') {\n newScrollPosition = pxBottom;\n }\n else if (position === 'middle') {\n newScrollPosition = pxMiddle;\n }\n else if (rowAboveViewport) {\n // if row is before, scroll up with row at top\n newScrollPosition = pxTop - stickyTopHeight;\n }\n else if (rowBelowViewport) {\n // if row is after, scroll down with row at bottom\n newScrollPosition = pxBottom;\n }\n if (newScrollPosition !== null) {\n this.eBodyViewport.scrollTop = newScrollPosition;\n this.rowRenderer.redrawAfterScroll();\n }\n // the row can get shifted if during the rendering (during rowRenderer.redrawAfterScroll()),\n // the height of a row changes due to lazy calculation of row heights when using\n // colDef.autoHeight or gridOptions.getRowHeight.\n // if row was shifted, then the position we scrolled to is incorrect.\n rowGotShiftedDuringOperation = (startingRowTop !== rowNode.rowTop)\n || (startingRowHeight !== rowNode.rowHeight);\n } while (rowGotShiftedDuringOperation);\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n GridBodyScrollFeature.prototype.ensureColumnVisible = function (key, position) {\n if (position === void 0) { position = 'auto'; }\n var column = this.columnModel.getGridColumn(key);\n if (!column) {\n return;\n }\n // calling ensureColumnVisible on a pinned column doesn't make sense\n if (column.isPinned()) {\n return;\n }\n // defensive\n if (!this.columnModel.isColumnDisplayed(column)) {\n return;\n }\n var newHorizontalScroll = this.getPositionedHorizontalScroll(column, position);\n if (newHorizontalScroll !== null) {\n this.centerRowContainerCtrl.setCenterViewportScrollLeft(newHorizontalScroll);\n }\n // this will happen anyway, as the move will cause a 'scroll' event on the body, however\n // it is possible that the ensureColumnVisible method is called from within AG Grid and\n // the caller will need to have the columns rendered to continue, which will be before\n // the event has been worked on (which is the case for cell navigation).\n this.centerRowContainerCtrl.onHorizontalViewportChanged();\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n GridBodyScrollFeature.prototype.getPositionedHorizontalScroll = function (column, position) {\n var _a = this.isColumnOutsideViewport(column), columnBeforeStart = _a.columnBeforeStart, columnAfterEnd = _a.columnAfterEnd;\n var viewportTooSmallForColumn = this.centerRowContainerCtrl.getCenterWidth() < column.getActualWidth();\n var viewportWidth = this.centerRowContainerCtrl.getCenterWidth();\n var isRtl = this.enableRtl;\n var alignColToStart = (isRtl ? columnBeforeStart : columnAfterEnd) || viewportTooSmallForColumn;\n var alignColToEnd = isRtl ? columnAfterEnd : columnBeforeStart;\n if (position !== 'auto') {\n alignColToStart = position === 'start';\n alignColToEnd = position === 'end';\n }\n var isMiddle = position === 'middle';\n if (alignColToStart || alignColToEnd || isMiddle) {\n var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colMiddle = _b.colMiddle, colRight = _b.colRight;\n if (isMiddle) {\n return colMiddle - viewportWidth / 2;\n }\n if (alignColToStart) {\n return isRtl ? colRight : colLeft;\n }\n return isRtl ? (colLeft - viewportWidth) : (colRight - viewportWidth);\n }\n return null;\n };\n GridBodyScrollFeature.prototype.isColumnOutsideViewport = function (column) {\n var _a = this.getViewportBounds(), viewportStart = _a.start, viewportEnd = _a.end;\n var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colRight = _b.colRight;\n var isRtl = this.enableRtl;\n var columnBeforeStart = isRtl ? (viewportStart > colRight) : (viewportEnd < colRight);\n var columnAfterEnd = isRtl ? (viewportEnd < colLeft) : (viewportStart > colLeft);\n return { columnBeforeStart: columnBeforeStart, columnAfterEnd: columnAfterEnd };\n };\n GridBodyScrollFeature.prototype.getColumnBounds = function (column) {\n var isRtl = this.enableRtl;\n var bodyWidth = this.columnModel.getBodyContainerWidth();\n var colWidth = column.getActualWidth();\n var colLeft = column.getLeft();\n var multiplier = isRtl ? -1 : 1;\n var colLeftPixel = isRtl ? (bodyWidth - colLeft) : colLeft;\n var colRightPixel = colLeftPixel + colWidth * multiplier;\n var colMidPixel = colLeftPixel + colWidth / 2 * multiplier;\n return { colLeft: colLeftPixel, colMiddle: colMidPixel, colRight: colRightPixel };\n };\n GridBodyScrollFeature.prototype.getViewportBounds = function () {\n var viewportWidth = this.centerRowContainerCtrl.getCenterWidth();\n var scrollPosition = this.centerRowContainerCtrl.getCenterViewportScrollLeft();\n var viewportStartPixel = scrollPosition;\n var viewportEndPixel = viewportWidth + scrollPosition;\n return { start: viewportStartPixel, end: viewportEndPixel, width: viewportWidth };\n };\n __decorate$1R([\n Autowired('ctrlsService')\n ], GridBodyScrollFeature.prototype, \"ctrlsService\", void 0);\n __decorate$1R([\n Autowired('animationFrameService')\n ], GridBodyScrollFeature.prototype, \"animationFrameService\", void 0);\n __decorate$1R([\n Autowired('paginationProxy')\n ], GridBodyScrollFeature.prototype, \"paginationProxy\", void 0);\n __decorate$1R([\n Autowired('rowModel')\n ], GridBodyScrollFeature.prototype, \"rowModel\", void 0);\n __decorate$1R([\n Autowired('rowContainerHeightService')\n ], GridBodyScrollFeature.prototype, \"heightScaler\", void 0);\n __decorate$1R([\n Autowired('rowRenderer')\n ], GridBodyScrollFeature.prototype, \"rowRenderer\", void 0);\n __decorate$1R([\n Autowired('columnModel')\n ], GridBodyScrollFeature.prototype, \"columnModel\", void 0);\n __decorate$1R([\n PostConstruct\n ], GridBodyScrollFeature.prototype, \"postConstruct\", null);\n return GridBodyScrollFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar AutoScrollService = /** @class */ (function () {\n function AutoScrollService(params) {\n this.tickingInterval = null;\n this.onScrollCallback = null;\n this.scrollContainer = params.scrollContainer;\n this.scrollHorizontally = params.scrollAxis.indexOf('x') !== -1;\n this.scrollVertically = params.scrollAxis.indexOf('y') !== -1;\n this.scrollByTick = params.scrollByTick != null ? params.scrollByTick : 20;\n if (params.onScrollCallback) {\n this.onScrollCallback = params.onScrollCallback;\n }\n if (this.scrollVertically) {\n this.getVerticalPosition = params.getVerticalPosition;\n this.setVerticalPosition = params.setVerticalPosition;\n }\n if (this.scrollHorizontally) {\n this.getHorizontalPosition = params.getHorizontalPosition;\n this.setHorizontalPosition = params.setHorizontalPosition;\n }\n this.shouldSkipVerticalScroll = params.shouldSkipVerticalScroll || (function () { return false; });\n this.shouldSkipHorizontalScroll = params.shouldSkipHorizontalScroll || (function () { return false; });\n }\n AutoScrollService.prototype.check = function (mouseEvent, forceSkipVerticalScroll) {\n if (forceSkipVerticalScroll === void 0) { forceSkipVerticalScroll = false; }\n var skipVerticalScroll = forceSkipVerticalScroll || this.shouldSkipVerticalScroll();\n if (skipVerticalScroll && this.shouldSkipHorizontalScroll()) {\n return;\n }\n var rect = this.scrollContainer.getBoundingClientRect();\n var scrollTick = this.scrollByTick;\n this.tickLeft = mouseEvent.clientX < (rect.left + scrollTick);\n this.tickRight = mouseEvent.clientX > (rect.right - scrollTick);\n this.tickUp = mouseEvent.clientY < (rect.top + scrollTick) && !skipVerticalScroll;\n this.tickDown = mouseEvent.clientY > (rect.bottom - scrollTick) && !skipVerticalScroll;\n if (this.tickLeft || this.tickRight || this.tickUp || this.tickDown) {\n this.ensureTickingStarted();\n }\n else {\n this.ensureCleared();\n }\n };\n AutoScrollService.prototype.ensureTickingStarted = function () {\n if (this.tickingInterval === null) {\n this.tickingInterval = window.setInterval(this.doTick.bind(this), 100);\n this.tickCount = 0;\n }\n };\n AutoScrollService.prototype.doTick = function () {\n this.tickCount++;\n var tickAmount;\n tickAmount = this.tickCount > 20 ? 200 : (this.tickCount > 10 ? 80 : 40);\n if (this.scrollVertically) {\n var vScrollPosition = this.getVerticalPosition();\n if (this.tickUp) {\n this.setVerticalPosition(vScrollPosition - tickAmount);\n }\n if (this.tickDown) {\n this.setVerticalPosition(vScrollPosition + tickAmount);\n }\n }\n if (this.scrollHorizontally) {\n var hScrollPosition = this.getHorizontalPosition();\n if (this.tickLeft) {\n this.setHorizontalPosition(hScrollPosition - tickAmount);\n }\n if (this.tickRight) {\n this.setHorizontalPosition(hScrollPosition + tickAmount);\n }\n }\n if (this.onScrollCallback) {\n this.onScrollCallback();\n }\n };\n AutoScrollService.prototype.ensureCleared = function () {\n if (this.tickingInterval) {\n window.clearInterval(this.tickingInterval);\n this.tickingInterval = null;\n }\n };\n return AutoScrollService;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$21 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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$6 = (undefined && undefined.__assign) || function () {\n __assign$6 = 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$6.apply(this, arguments);\n};\nvar __decorate$1Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$i = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$e = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$i(arguments[i]));\n return ar;\n};\nvar RowDragFeature = /** @class */ (function (_super) {\n __extends$21(RowDragFeature, _super);\n function RowDragFeature(eContainer) {\n var _this = _super.call(this) || this;\n _this.isMultiRowDrag = false;\n _this.isGridSorted = false;\n _this.isGridFiltered = false;\n _this.isRowGroupActive = false;\n _this.eContainer = eContainer;\n return _this;\n }\n RowDragFeature.prototype.postConstruct = function () {\n var _this = this;\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.clientSideRowModel = this.rowModel;\n }\n var refreshStatus = function () {\n _this.onSortChanged();\n _this.onFilterChanged();\n _this.onRowGroupChanged();\n };\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, function () {\n refreshStatus();\n });\n refreshStatus();\n this.ctrlsService.whenReady(function () {\n var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n _this.autoScrollService = new AutoScrollService({\n scrollContainer: gridBodyCon.getBodyViewportElement(),\n scrollAxis: 'y',\n getVerticalPosition: function () { return gridBodyCon.getScrollFeature().getVScrollPosition().top; },\n setVerticalPosition: function (position) { return gridBodyCon.getScrollFeature().setVerticalScrollPosition(position); },\n onScrollCallback: function () { _this.onDragging(_this.lastDraggingEvent); }\n });\n });\n };\n RowDragFeature.prototype.onSortChanged = function () {\n this.isGridSorted = this.sortController.isSortActive();\n };\n RowDragFeature.prototype.onFilterChanged = function () {\n this.isGridFiltered = this.filterManager.isAnyFilterPresent();\n };\n RowDragFeature.prototype.onRowGroupChanged = function () {\n var rowGroups = this.columnModel.getRowGroupColumns();\n this.isRowGroupActive = !missingOrEmpty(rowGroups);\n };\n RowDragFeature.prototype.getContainer = function () {\n return this.eContainer;\n };\n RowDragFeature.prototype.isInterestedIn = function (type) {\n return type === DragSourceType.RowDrag;\n };\n RowDragFeature.prototype.getIconName = function () {\n var managedDrag = this.gridOptionsWrapper.isRowDragManaged();\n if (managedDrag && this.shouldPreventRowMove()) {\n return DragAndDropService.ICON_NOT_ALLOWED;\n }\n return DragAndDropService.ICON_MOVE;\n };\n RowDragFeature.prototype.shouldPreventRowMove = function () {\n return this.isGridSorted || this.isGridFiltered || this.isRowGroupActive;\n };\n RowDragFeature.prototype.getRowNodes = function (draggingEvent) {\n var _this = this;\n if (!this.isFromThisGrid(draggingEvent)) {\n return draggingEvent.dragItem.rowNodes || [];\n }\n var isRowDragMultiRow = this.gridOptionsWrapper.isRowDragMultiRow();\n var selectedNodes = __spread$e(this.selectionService.getSelectedNodes()).sort(function (a, b) {\n if (a.rowIndex == null || b.rowIndex == null) {\n return 0;\n }\n return _this.getRowIndexNumber(a) - _this.getRowIndexNumber(b);\n });\n var currentNode = draggingEvent.dragItem.rowNode;\n if (isRowDragMultiRow && selectedNodes.indexOf(currentNode) !== -1) {\n this.isMultiRowDrag = true;\n return selectedNodes;\n }\n this.isMultiRowDrag = false;\n return [currentNode];\n };\n RowDragFeature.prototype.onDragEnter = function (draggingEvent) {\n // builds a lits of all rows being dragged before firing events\n draggingEvent.dragItem.rowNodes = this.getRowNodes(draggingEvent);\n // when entering, we fire the enter event, then in onEnterOrDragging,\n // we also fire the move event. so we get both events when entering.\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_ENTER, draggingEvent);\n this.getRowNodes(draggingEvent).forEach(function (rowNode) {\n rowNode.setDragging(true);\n });\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.onDragging = function (draggingEvent) {\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.isFromThisGrid = function (draggingEvent) {\n var dragSourceDomDataKey = draggingEvent.dragSource.dragSourceDomDataKey;\n return dragSourceDomDataKey === this.gridOptionsWrapper.getDomDataKey();\n };\n RowDragFeature.prototype.isDropZoneWithinThisGrid = function (draggingEvent) {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var gridGui = gridBodyCon.getGui();\n var dropZoneTarget = draggingEvent.dropZoneTarget;\n return !gridGui.contains(dropZoneTarget);\n };\n RowDragFeature.prototype.onEnterOrDragging = function (draggingEvent) {\n // this event is fired for enter and move\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_MOVE, draggingEvent);\n this.lastDraggingEvent = draggingEvent;\n var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n var managedDrag = this.gridOptionsWrapper.isRowDragManaged();\n if (managedDrag) {\n this.doManagedDrag(draggingEvent, pixel);\n }\n this.autoScrollService.check(draggingEvent.event);\n };\n RowDragFeature.prototype.doManagedDrag = function (draggingEvent, pixel) {\n var isFromThisGrid = this.isFromThisGrid(draggingEvent);\n var managedDrag = this.gridOptionsWrapper.isRowDragManaged();\n var rowNodes = draggingEvent.dragItem.rowNodes;\n if (managedDrag && this.shouldPreventRowMove()) {\n return;\n }\n if (this.gridOptionsWrapper.isSuppressMoveWhenRowDragging() || !isFromThisGrid) {\n if (!this.isDropZoneWithinThisGrid(draggingEvent)) {\n this.clientSideRowModel.highlightRowAtPixel(rowNodes[0], pixel);\n }\n }\n else {\n this.moveRows(rowNodes, pixel);\n }\n };\n RowDragFeature.prototype.getRowIndexNumber = function (rowNode) {\n return parseInt(last(rowNode.getRowIndexString().split('-')), 10);\n };\n RowDragFeature.prototype.moveRowAndClearHighlight = function (draggingEvent) {\n var _this = this;\n var lastHighlightedRowNode = this.clientSideRowModel.getLastHighlightedRowNode();\n var isBelow = lastHighlightedRowNode && lastHighlightedRowNode.highlighted === RowHighlightPosition.Below;\n var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n var rowNodes = draggingEvent.dragItem.rowNodes;\n var increment = isBelow ? 1 : 0;\n if (this.isFromThisGrid(draggingEvent)) {\n rowNodes.forEach(function (rowNode) {\n if (rowNode.rowTop < pixel) {\n increment -= 1;\n }\n });\n this.moveRows(rowNodes, pixel, increment);\n }\n else {\n var getRowIdFunc_1 = this.gridOptionsWrapper.getRowIdFunc();\n var addIndex = this.clientSideRowModel.getRowIndexAtPixel(pixel) + 1;\n if (this.clientSideRowModel.getHighlightPosition(pixel) === RowHighlightPosition.Above) {\n addIndex--;\n }\n this.clientSideRowModel.updateRowData({\n add: rowNodes\n .map(function (node) { return node.data; })\n .filter(function (data) { return !_this.clientSideRowModel.getRowNode(getRowIdFunc_1 ? getRowIdFunc_1({ data: data, level: 0 }) : data.id); }),\n addIndex: addIndex\n });\n }\n this.clearRowHighlight();\n };\n RowDragFeature.prototype.clearRowHighlight = function () {\n this.clientSideRowModel.highlightRowAtPixel(null);\n };\n RowDragFeature.prototype.moveRows = function (rowNodes, pixel, increment) {\n if (increment === void 0) { increment = 0; }\n var rowWasMoved = this.clientSideRowModel.ensureRowsAtPixel(rowNodes, pixel, increment);\n if (rowWasMoved) {\n this.focusService.clearFocusedCell();\n if (this.rangeService) {\n this.rangeService.removeAllCellRanges();\n }\n }\n };\n RowDragFeature.prototype.addRowDropZone = function (params) {\n var _this = this;\n if (!params.getContainer()) {\n doOnce(function () { return console.warn('AG Grid: addRowDropZone - A container target needs to be provided'); }, 'add-drop-zone-empty-target');\n return;\n }\n if (this.dragAndDropService.findExternalZone(params)) {\n console.warn('AG Grid: addRowDropZone - target already exists in the list of DropZones. Use `removeRowDropZone` before adding it again.');\n return;\n }\n var processedParams = {\n getContainer: params.getContainer\n };\n if (params.fromGrid) {\n params.fromGrid = undefined;\n processedParams = params;\n }\n else {\n if (params.onDragEnter) {\n processedParams.onDragEnter = function (e) {\n params.onDragEnter(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e));\n };\n }\n if (params.onDragLeave) {\n processedParams.onDragLeave = function (e) {\n params.onDragLeave(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e));\n };\n }\n if (params.onDragging) {\n processedParams.onDragging = function (e) {\n params.onDragging(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e));\n };\n }\n if (params.onDragStop) {\n processedParams.onDragStop = function (e) {\n params.onDragStop(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_END, e));\n };\n }\n }\n this.dragAndDropService.addDropTarget(__assign$6({ isInterestedIn: function (type) { return type === DragSourceType.RowDrag; }, getIconName: function () { return DragAndDropService.ICON_MOVE; }, external: true }, processedParams));\n };\n RowDragFeature.prototype.getRowDropZone = function (events) {\n var _this = this;\n var getContainer = this.getContainer.bind(this);\n var onDragEnter = this.onDragEnter.bind(this);\n var onDragLeave = this.onDragLeave.bind(this);\n var onDragging = this.onDragging.bind(this);\n var onDragStop = this.onDragStop.bind(this);\n if (!events) {\n return { getContainer: getContainer, onDragEnter: onDragEnter, onDragLeave: onDragLeave, onDragging: onDragging, onDragStop: onDragStop, /* @private */ fromGrid: true };\n }\n return {\n getContainer: getContainer,\n onDragEnter: events.onDragEnter\n ? (function (e) {\n onDragEnter(e);\n events.onDragEnter(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e));\n })\n : onDragEnter,\n onDragLeave: events.onDragLeave\n ? (function (e) {\n onDragLeave(e);\n events.onDragLeave(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e));\n })\n : onDragLeave,\n onDragging: events.onDragging\n ? (function (e) {\n onDragging(e);\n events.onDragging(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e));\n })\n : onDragging,\n onDragStop: events.onDragStop\n ? (function (e) {\n onDragStop(e);\n events.onDragStop(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_END, e));\n })\n : onDragStop,\n fromGrid: true /* @private */\n };\n };\n RowDragFeature.prototype.draggingToRowDragEvent = function (type, draggingEvent) {\n var yNormalised = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n var mouseIsPastLastRow = yNormalised > this.paginationProxy.getCurrentPageHeight();\n var overIndex = -1;\n var overNode;\n if (!mouseIsPastLastRow) {\n overIndex = this.rowModel.getRowIndexAtPixel(yNormalised);\n overNode = this.rowModel.getRow(overIndex);\n }\n var vDirectionString;\n switch (draggingEvent.vDirection) {\n case VerticalDirection.Down:\n vDirectionString = 'down';\n break;\n case VerticalDirection.Up:\n vDirectionString = 'up';\n break;\n default:\n vDirectionString = null;\n break;\n }\n var event = {\n type: type,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n event: draggingEvent.event,\n node: draggingEvent.dragItem.rowNode,\n nodes: draggingEvent.dragItem.rowNodes,\n overIndex: overIndex,\n overNode: overNode,\n y: yNormalised,\n vDirection: vDirectionString\n };\n return event;\n };\n RowDragFeature.prototype.dispatchGridEvent = function (type, draggingEvent) {\n var event = this.draggingToRowDragEvent(type, draggingEvent);\n this.eventService.dispatchEvent(event);\n };\n RowDragFeature.prototype.onDragLeave = function (draggingEvent) {\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_LEAVE, draggingEvent);\n this.stopDragging(draggingEvent);\n if (this.gridOptionsWrapper.isRowDragManaged()) {\n this.clearRowHighlight();\n }\n if (this.isFromThisGrid(draggingEvent)) {\n this.isMultiRowDrag = false;\n }\n };\n RowDragFeature.prototype.onDragStop = function (draggingEvent) {\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_END, draggingEvent);\n this.stopDragging(draggingEvent);\n if (this.gridOptionsWrapper.isRowDragManaged() &&\n (this.gridOptionsWrapper.isSuppressMoveWhenRowDragging() || !this.isFromThisGrid(draggingEvent)) &&\n !this.isDropZoneWithinThisGrid(draggingEvent)) {\n this.moveRowAndClearHighlight(draggingEvent);\n }\n };\n RowDragFeature.prototype.stopDragging = function (draggingEvent) {\n this.autoScrollService.ensureCleared();\n this.getRowNodes(draggingEvent).forEach(function (rowNode) {\n rowNode.setDragging(false);\n });\n };\n __decorate$1Q([\n Autowired('dragAndDropService')\n ], RowDragFeature.prototype, \"dragAndDropService\", void 0);\n __decorate$1Q([\n Autowired('rowModel')\n ], RowDragFeature.prototype, \"rowModel\", void 0);\n __decorate$1Q([\n Autowired('paginationProxy')\n ], RowDragFeature.prototype, \"paginationProxy\", void 0);\n __decorate$1Q([\n Autowired('columnModel')\n ], RowDragFeature.prototype, \"columnModel\", void 0);\n __decorate$1Q([\n Autowired('focusService')\n ], RowDragFeature.prototype, \"focusService\", void 0);\n __decorate$1Q([\n Autowired('sortController')\n ], RowDragFeature.prototype, \"sortController\", void 0);\n __decorate$1Q([\n Autowired('filterManager')\n ], RowDragFeature.prototype, \"filterManager\", void 0);\n __decorate$1Q([\n Autowired('selectionService')\n ], RowDragFeature.prototype, \"selectionService\", void 0);\n __decorate$1Q([\n Autowired('mouseEventService')\n ], RowDragFeature.prototype, \"mouseEventService\", void 0);\n __decorate$1Q([\n Autowired('ctrlsService')\n ], RowDragFeature.prototype, \"ctrlsService\", void 0);\n __decorate$1Q([\n Optional('rangeService')\n ], RowDragFeature.prototype, \"rangeService\", void 0);\n __decorate$1Q([\n PostConstruct\n ], RowDragFeature.prototype, \"postConstruct\", null);\n return RowDragFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$20 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowAnimationCssClasses;\n(function (RowAnimationCssClasses) {\n RowAnimationCssClasses[\"ANIMATION_ON\"] = \"ag-row-animation\";\n RowAnimationCssClasses[\"ANIMATION_OFF\"] = \"ag-row-no-animation\";\n})(RowAnimationCssClasses || (RowAnimationCssClasses = {}));\nvar CSS_CLASS_CELL_SELECTABLE = 'ag-selectable';\nvar CSS_CLASS_FORCE_VERTICAL_SCROLL = 'ag-force-vertical-scroll';\nvar CSS_CLASS_COLUMN_MOVING = 'ag-column-moving';\nvar GridBodyCtrl = /** @class */ (function (_super) {\n __extends$20(GridBodyCtrl, _super);\n function GridBodyCtrl() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.stickyTopHeight = 0;\n return _this;\n }\n GridBodyCtrl.prototype.getScrollFeature = function () {\n return this.bodyScrollFeature;\n };\n GridBodyCtrl.prototype.getBodyViewportElement = function () {\n return this.eBodyViewport;\n };\n GridBodyCtrl.prototype.setComp = function (comp, eGridBody, eBodyViewport, eTop, eBottom, eStickyTop) {\n this.comp = comp;\n this.eGridBody = eGridBody;\n this.eBodyViewport = eBodyViewport;\n this.eTop = eTop;\n this.eBottom = eBottom;\n this.eStickyTop = eStickyTop;\n this.setCellTextSelection(this.gridOptionsWrapper.isEnableCellTextSelect());\n this.createManagedBean(new LayoutFeature(this.comp));\n this.bodyScrollFeature = this.createManagedBean(new GridBodyScrollFeature(this.eBodyViewport));\n this.addRowDragListener();\n this.setupRowAnimationCssClass();\n this.addEventListeners();\n this.addFocusListeners([eTop, eBodyViewport, eBottom, eStickyTop]);\n this.onGridColumnsChanged();\n this.addBodyViewportListener();\n this.setFloatingHeights();\n this.disableBrowserDragging();\n this.addStopEditingWhenGridLosesFocus();\n this.ctrlsService.registerGridBodyCtrl(this);\n };\n GridBodyCtrl.prototype.getComp = function () {\n return this.comp;\n };\n GridBodyCtrl.prototype.addEventListeners = function () {\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_HEADER_HEIGHT_CHANGED, this.onHeaderHeightChanged.bind(this));\n };\n GridBodyCtrl.prototype.addFocusListeners = function (elements) {\n var _this = this;\n elements.forEach(function (element) {\n _this.addManagedListener(element, 'focusin', function (e) {\n var target = e.target;\n // element being focused is nested?\n var isFocusedElementNested = isElementChildOfClass(target, 'ag-root', element);\n element.classList.toggle('ag-has-focus', !isFocusedElementNested);\n });\n _this.addManagedListener(element, 'focusout', function (e) {\n var target = e.target, relatedTarget = e.relatedTarget;\n var gridContainRelatedTarget = element.contains(relatedTarget);\n var isNestedRelatedTarget = isElementChildOfClass(relatedTarget, 'ag-root', element);\n var isNestedTarget = isElementChildOfClass(target, 'ag-root', element);\n // element losing focus belongs to a nested grid,\n // it should not be handled here.\n if (isNestedTarget) {\n return;\n }\n // the grid does not contain, or the focus element is within\n // a nested grid\n if (!gridContainRelatedTarget || isNestedRelatedTarget) {\n element.classList.remove('ag-has-focus');\n }\n });\n });\n };\n // used by ColumnAnimationService\n GridBodyCtrl.prototype.setColumnMovingCss = function (moving) {\n this.comp.setColumnMovingCss(moving ? CSS_CLASS_COLUMN_MOVING : null, moving);\n };\n GridBodyCtrl.prototype.setCellTextSelection = function (selectable) {\n if (selectable === void 0) { selectable = false; }\n var cssClass = selectable ? CSS_CLASS_CELL_SELECTABLE : null;\n this.comp.setCellSelectableCss(cssClass, selectable);\n };\n GridBodyCtrl.prototype.onScrollVisibilityChanged = function () {\n var visible = this.scrollVisibleService.isVerticalScrollShowing();\n this.setVerticalScrollPaddingVisible(visible);\n this.setStickyTopWidth(visible);\n };\n GridBodyCtrl.prototype.onGridColumnsChanged = function () {\n var columns = this.columnModel.getAllGridColumns();\n this.comp.setColumnCount(columns ? columns.length : 0);\n };\n // if we do not do this, then the user can select a pic in the grid (eg an image in a custom cell renderer)\n // and then that will start the browser native drag n' drop, which messes up with our own drag and drop.\n GridBodyCtrl.prototype.disableBrowserDragging = function () {\n this.addManagedListener(this.eGridBody, 'dragstart', function (event) {\n if (event.target instanceof HTMLImageElement) {\n event.preventDefault();\n return false;\n }\n });\n };\n GridBodyCtrl.prototype.addStopEditingWhenGridLosesFocus = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isStopEditingWhenCellsLoseFocus()) {\n return;\n }\n var focusOutListener = function (event) {\n // this is the element the focus is moving to\n var elementWithFocus = event.relatedTarget;\n if (getTabIndex(elementWithFocus) === null) {\n _this.rowRenderer.stopEditing();\n return;\n }\n var clickInsideGrid = \n // see if click came from inside the viewports\n viewports.some(function (viewport) { return viewport.contains(elementWithFocus); })\n // and also that it's not from a detail grid\n && _this.mouseEventService.isElementInThisGrid(elementWithFocus);\n if (!clickInsideGrid) {\n var popupService = _this.popupService;\n clickInsideGrid =\n popupService.getActivePopups().some(function (popup) { return popup.contains(elementWithFocus); }) ||\n popupService.isElementWithinCustomPopup(elementWithFocus);\n }\n if (!clickInsideGrid) {\n _this.rowRenderer.stopEditing();\n }\n };\n var viewports = [this.eBodyViewport, this.eBottom, this.eTop, this.eStickyTop];\n viewports.forEach(function (viewport) { return _this.addManagedListener(viewport, 'focusout', focusOutListener); });\n };\n GridBodyCtrl.prototype.updateRowCount = function () {\n var headerCount = this.headerNavigationService.getHeaderRowCount();\n var rowCount = this.rowModel.isLastRowIndexKnown() ? this.rowModel.getRowCount() : -1;\n var total = rowCount === -1 ? -1 : (headerCount + rowCount);\n this.comp.setRowCount(total);\n };\n GridBodyCtrl.prototype.registerBodyViewportResizeListener = function (listener) {\n this.comp.registerBodyViewportResizeListener(listener);\n };\n GridBodyCtrl.prototype.setVerticalScrollPaddingVisible = function (visible) {\n var overflowY = visible ? 'scroll' : 'hidden';\n this.comp.setPinnedTopBottomOverflowY(overflowY);\n };\n GridBodyCtrl.prototype.isVerticalScrollShowing = function () {\n var show = this.gridOptionsWrapper.isAlwaysShowVerticalScroll();\n var cssClass = show ? CSS_CLASS_FORCE_VERTICAL_SCROLL : null;\n var allowVerticalScroll = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_NORMAL;\n this.comp.setAlwaysVerticalScrollClass(cssClass, show);\n return show || (allowVerticalScroll && isVerticalScrollShowing(this.eBodyViewport));\n };\n GridBodyCtrl.prototype.setupRowAnimationCssClass = function () {\n var _this = this;\n var listener = function () {\n // we don't want to use row animation if scaling, as rows jump strangely as you scroll,\n // when scaling and doing row animation.\n var animateRows = _this.gridOptionsWrapper.isAnimateRows() && !_this.rowContainerHeightService.isStretching();\n var animateRowsCssClass = animateRows ? RowAnimationCssClasses.ANIMATION_ON : RowAnimationCssClasses.ANIMATION_OFF;\n _this.comp.setRowAnimationCssOnBodyViewport(animateRowsCssClass, animateRows);\n };\n listener();\n this.addManagedListener(this.eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, listener);\n };\n GridBodyCtrl.prototype.getGridBodyElement = function () {\n return this.eGridBody;\n };\n GridBodyCtrl.prototype.addBodyViewportListener = function () {\n var _this = this;\n // we want to listen for clicks directly on the eBodyViewport, so the user has a way of showing\n // the context menu if no rows or columns are displayed, or user simply clicks outside of a cell\n var listener = function (mouseEvent, touch, touchEvent) {\n if (!mouseEvent && !touchEvent) {\n return;\n }\n if (_this.gridOptionsWrapper.isPreventDefaultOnContextMenu()) {\n var event_1 = (mouseEvent || touchEvent);\n event_1.preventDefault();\n }\n var target = (mouseEvent || touch).target;\n if (target === _this.eBodyViewport || target === _this.ctrlsService.getCenterRowContainerCtrl().getViewportElement()) {\n // show it\n if (_this.contextMenuFactory) {\n if (mouseEvent) {\n _this.contextMenuFactory.onContextMenu(mouseEvent, null, null, null, null, _this.eGridBody);\n }\n else if (touchEvent) {\n _this.contextMenuFactory.onContextMenu(null, touchEvent, null, null, null, _this.eGridBody);\n }\n }\n }\n };\n this.addManagedListener(this.eBodyViewport, 'contextmenu', listener);\n this.mockContextMenuForIPad(listener);\n this.addManagedListener(this.eBodyViewport, 'wheel', this.onBodyViewportWheel.bind(this));\n this.addManagedListener(this.eStickyTop, 'wheel', this.onStickyTopWheel.bind(this));\n };\n GridBodyCtrl.prototype.mockContextMenuForIPad = function (listener) {\n // we do NOT want this when not in iPad\n if (!isIOSUserAgent()) {\n return;\n }\n var touchListener = new TouchListener(this.eBodyViewport);\n var longTapListener = function (event) {\n listener(undefined, event.touchStart, event.touchEvent);\n };\n this.addManagedListener(touchListener, TouchListener.EVENT_LONG_TAP, longTapListener);\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n };\n GridBodyCtrl.prototype.onBodyViewportWheel = function (e) {\n if (!this.gridOptionsWrapper.isSuppressScrollWhenPopupsAreOpen()) {\n return;\n }\n if (this.popupService.hasAnchoredPopup()) {\n e.preventDefault();\n }\n };\n GridBodyCtrl.prototype.onStickyTopWheel = function (e) {\n e.preventDefault();\n if (e.offsetY) {\n this.scrollVertically(e.deltaY);\n }\n };\n GridBodyCtrl.prototype.getGui = function () {\n return this.eGridBody;\n };\n // called by rowDragFeature\n GridBodyCtrl.prototype.scrollVertically = function (pixels) {\n var oldScrollPosition = this.eBodyViewport.scrollTop;\n this.bodyScrollFeature.setVerticalScrollPosition(oldScrollPosition + pixels);\n return this.eBodyViewport.scrollTop - oldScrollPosition;\n };\n GridBodyCtrl.prototype.addRowDragListener = function () {\n this.rowDragFeature = this.createManagedBean(new RowDragFeature(this.eBodyViewport));\n this.dragAndDropService.addDropTarget(this.rowDragFeature);\n };\n GridBodyCtrl.prototype.getRowDragFeature = function () {\n return this.rowDragFeature;\n };\n GridBodyCtrl.prototype.onPinnedRowDataChanged = function () {\n this.setFloatingHeights();\n };\n GridBodyCtrl.prototype.setFloatingHeights = function () {\n var pinnedRowModel = this.pinnedRowModel;\n var floatingTopHeight = pinnedRowModel.getPinnedTopTotalHeight();\n if (floatingTopHeight) {\n // adding 1px for cell bottom border\n floatingTopHeight += 1;\n }\n var floatingBottomHeight = pinnedRowModel.getPinnedBottomTotalHeight();\n if (floatingBottomHeight) {\n // adding 1px for cell bottom border\n floatingBottomHeight += 1;\n }\n this.comp.setTopHeight(floatingTopHeight);\n this.comp.setBottomHeight(floatingBottomHeight);\n this.comp.setTopDisplay(floatingTopHeight ? 'inherit' : 'none');\n this.comp.setBottomDisplay(floatingBottomHeight ? 'inherit' : 'none');\n this.setStickyTopOffsetTop();\n };\n GridBodyCtrl.prototype.setStickyTopHeight = function (height) {\n if (height === void 0) { height = 0; }\n // console.log('setting sticky top height ' + height);\n this.comp.setStickyTopHeight(height + \"px\");\n this.stickyTopHeight = height;\n };\n GridBodyCtrl.prototype.getStickyTopHeight = function () {\n return this.stickyTopHeight;\n };\n GridBodyCtrl.prototype.setStickyTopWidth = function (vScrollVisible) {\n if (!vScrollVisible) {\n this.comp.setStickyTopWidth('100%');\n }\n else {\n var scrollbarWidth = this.gridOptionsWrapper.getScrollbarWidth();\n this.comp.setStickyTopWidth(\"calc(100% - \" + scrollbarWidth + \"px)\");\n }\n };\n GridBodyCtrl.prototype.onHeaderHeightChanged = function () {\n this.setStickyTopOffsetTop();\n };\n GridBodyCtrl.prototype.setStickyTopOffsetTop = function () {\n var headerCtrl = this.ctrlsService.getGridHeaderCtrl();\n var headerHeight = headerCtrl.getHeaderHeight();\n var pinnedTopHeight = this.pinnedRowModel.getPinnedTopTotalHeight();\n var height = 0;\n if (headerHeight > 0) {\n height += headerHeight + 1;\n }\n if (pinnedTopHeight > 0) {\n height += pinnedTopHeight + 1;\n }\n this.comp.setStickyTopTop(height + \"px\");\n };\n // method will call itself if no available width. this covers if the grid\n // isn't visible, but is just about to be visible.\n GridBodyCtrl.prototype.sizeColumnsToFit = function (params, nextTimeout) {\n var _this = this;\n var removeScrollWidth = this.isVerticalScrollShowing();\n var scrollWidthToRemove = removeScrollWidth ? this.gridOptionsWrapper.getScrollbarWidth() : 0;\n var bodyViewportWidth = getInnerWidth(this.eBodyViewport);\n var availableWidth = bodyViewportWidth - scrollWidthToRemove;\n if (availableWidth > 0) {\n this.columnModel.sizeColumnsToFit(availableWidth, \"sizeColumnsToFit\", false, params);\n return;\n }\n if (nextTimeout === undefined) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(params, 100);\n }, 0);\n }\n else if (nextTimeout === 100) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(params, 500);\n }, 100);\n }\n else if (nextTimeout === 500) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(params, -1);\n }, 500);\n }\n else {\n console.warn('AG Grid: tried to call sizeColumnsToFit() but the grid is coming back with ' +\n 'zero width, maybe the grid is not visible yet on the screen?');\n }\n };\n // + rangeService\n GridBodyCtrl.prototype.addScrollEventListener = function (listener) {\n this.eBodyViewport.addEventListener('scroll', listener);\n };\n // + focusService\n GridBodyCtrl.prototype.removeScrollEventListener = function (listener) {\n this.eBodyViewport.removeEventListener('scroll', listener);\n };\n __decorate$1P([\n Autowired('rowContainerHeightService')\n ], GridBodyCtrl.prototype, \"rowContainerHeightService\", void 0);\n __decorate$1P([\n Autowired('ctrlsService')\n ], GridBodyCtrl.prototype, \"ctrlsService\", void 0);\n __decorate$1P([\n Autowired('columnModel')\n ], GridBodyCtrl.prototype, \"columnModel\", void 0);\n __decorate$1P([\n Autowired('scrollVisibleService')\n ], GridBodyCtrl.prototype, \"scrollVisibleService\", void 0);\n __decorate$1P([\n Optional('contextMenuFactory')\n ], GridBodyCtrl.prototype, \"contextMenuFactory\", void 0);\n __decorate$1P([\n Autowired('headerNavigationService')\n ], GridBodyCtrl.prototype, \"headerNavigationService\", void 0);\n __decorate$1P([\n Autowired('dragAndDropService')\n ], GridBodyCtrl.prototype, \"dragAndDropService\", void 0);\n __decorate$1P([\n Autowired('pinnedRowModel')\n ], GridBodyCtrl.prototype, \"pinnedRowModel\", void 0);\n __decorate$1P([\n Autowired('rowRenderer')\n ], GridBodyCtrl.prototype, \"rowRenderer\", void 0);\n __decorate$1P([\n Autowired('popupService')\n ], GridBodyCtrl.prototype, \"popupService\", void 0);\n __decorate$1P([\n Autowired('mouseEventService')\n ], GridBodyCtrl.prototype, \"mouseEventService\", void 0);\n __decorate$1P([\n Autowired('rowModel')\n ], GridBodyCtrl.prototype, \"rowModel\", void 0);\n return GridBodyCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar SelectionHandleType;\n(function (SelectionHandleType) {\n SelectionHandleType[SelectionHandleType[\"FILL\"] = 0] = \"FILL\";\n SelectionHandleType[SelectionHandleType[\"RANGE\"] = 1] = \"RANGE\";\n})(SelectionHandleType || (SelectionHandleType = {}));\nvar CellRangeType;\n(function (CellRangeType) {\n CellRangeType[CellRangeType[\"VALUE\"] = 0] = \"VALUE\";\n CellRangeType[CellRangeType[\"DIMENSION\"] = 1] = \"DIMENSION\";\n})(CellRangeType || (CellRangeType = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar CSS_CELL_RANGE_SELECTED = 'ag-cell-range-selected';\nvar CSS_CELL_RANGE_CHART = 'ag-cell-range-chart';\nvar CSS_CELL_RANGE_SINGLE_CELL = 'ag-cell-range-single-cell';\nvar CSS_CELL_RANGE_CHART_CATEGORY = 'ag-cell-range-chart-category';\nvar CSS_CELL_RANGE_HANDLE = 'ag-cell-range-handle';\nvar CSS_CELL_RANGE_TOP = 'ag-cell-range-top';\nvar CSS_CELL_RANGE_RIGHT = 'ag-cell-range-right';\nvar CSS_CELL_RANGE_BOTTOM = 'ag-cell-range-bottom';\nvar CSS_CELL_RANGE_LEFT = 'ag-cell-range-left';\nvar CellRangeFeature = /** @class */ (function () {\n function CellRangeFeature(beans, ctrl) {\n this.beans = beans;\n this.cellCtrl = ctrl;\n }\n CellRangeFeature.prototype.setComp = function (cellComp, eGui) {\n this.cellComp = cellComp;\n this.eGui = eGui;\n this.onRangeSelectionChanged();\n };\n CellRangeFeature.prototype.onRangeSelectionChanged = function () {\n // when using reactUi, given UI is async, it's possible this method is called before the comp is registered\n if (!this.cellComp) {\n return;\n }\n this.rangeCount = this.beans.rangeService.getCellRangeCount(this.cellCtrl.getCellPosition());\n this.hasChartRange = this.getHasChartRange();\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED, this.rangeCount !== 0);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-1\", this.rangeCount === 1);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-2\", this.rangeCount === 2);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-3\", this.rangeCount === 3);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-4\", this.rangeCount >= 4);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART, this.hasChartRange);\n setAriaSelected(this.eGui, this.rangeCount > 0 ? true : undefined);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SINGLE_CELL, this.isSingleCell());\n this.updateRangeBorders();\n this.refreshHandle();\n };\n CellRangeFeature.prototype.updateRangeBorders = function () {\n var rangeBorders = this.getRangeBorders();\n var isSingleCell = this.isSingleCell();\n var isTop = !isSingleCell && rangeBorders.top;\n var isRight = !isSingleCell && rangeBorders.right;\n var isBottom = !isSingleCell && rangeBorders.bottom;\n var isLeft = !isSingleCell && rangeBorders.left;\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_TOP, isTop);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_RIGHT, isRight);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_BOTTOM, isBottom);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_LEFT, isLeft);\n };\n CellRangeFeature.prototype.isSingleCell = function () {\n var rangeService = this.beans.rangeService;\n return this.rangeCount === 1 && rangeService && !rangeService.isMoreThanOneCell();\n };\n CellRangeFeature.prototype.getHasChartRange = function () {\n var rangeService = this.beans.rangeService;\n if (!this.rangeCount || !rangeService) {\n return false;\n }\n var cellRanges = rangeService.getCellRanges();\n return cellRanges.length > 0 && cellRanges.every(function (range) { return includes([CellRangeType.DIMENSION, CellRangeType.VALUE], range.type); });\n };\n CellRangeFeature.prototype.updateRangeBordersIfRangeCount = function () {\n // we only need to update range borders if we are in a range\n if (this.rangeCount > 0) {\n this.updateRangeBorders();\n this.refreshHandle();\n }\n };\n CellRangeFeature.prototype.getRangeBorders = function () {\n var _this = this;\n var isRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n var top = false;\n var right = false;\n var bottom = false;\n var left = false;\n var thisCol = this.cellCtrl.getCellPosition().column;\n var _a = this.beans, rangeService = _a.rangeService, columnModel = _a.columnModel;\n var leftCol;\n var rightCol;\n if (isRtl) {\n leftCol = columnModel.getDisplayedColAfter(thisCol);\n rightCol = columnModel.getDisplayedColBefore(thisCol);\n }\n else {\n leftCol = columnModel.getDisplayedColBefore(thisCol);\n rightCol = columnModel.getDisplayedColAfter(thisCol);\n }\n var ranges = rangeService.getCellRanges().filter(function (range) { return rangeService.isCellInSpecificRange(_this.cellCtrl.getCellPosition(), range); });\n // this means we are the first column in the grid\n if (!leftCol) {\n left = true;\n }\n // this means we are the last column in the grid\n if (!rightCol) {\n right = true;\n }\n for (var i = 0; i < ranges.length; i++) {\n if (top && right && bottom && left) {\n break;\n }\n var range = ranges[i];\n var startRow = rangeService.getRangeStartRow(range);\n var endRow = rangeService.getRangeEndRow(range);\n if (!top && this.beans.rowPositionUtils.sameRow(startRow, this.cellCtrl.getCellPosition())) {\n top = true;\n }\n if (!bottom && this.beans.rowPositionUtils.sameRow(endRow, this.cellCtrl.getCellPosition())) {\n bottom = true;\n }\n if (!left && leftCol && range.columns.indexOf(leftCol) < 0) {\n left = true;\n }\n if (!right && rightCol && range.columns.indexOf(rightCol) < 0) {\n right = true;\n }\n }\n return { top: top, right: right, bottom: bottom, left: left };\n };\n CellRangeFeature.prototype.refreshHandle = function () {\n if (!this.beans.rangeService) {\n return;\n }\n var shouldHaveSelectionHandle = this.shouldHaveSelectionHandle();\n if (this.selectionHandle && !shouldHaveSelectionHandle) {\n this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);\n }\n if (shouldHaveSelectionHandle) {\n this.addSelectionHandle();\n }\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_HANDLE, !!this.selectionHandle);\n };\n CellRangeFeature.prototype.shouldHaveSelectionHandle = function () {\n var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, rangeService = _a.rangeService;\n var cellRanges = rangeService.getCellRanges();\n var rangesLen = cellRanges.length;\n if (this.rangeCount < 1 || rangesLen < 1) {\n return false;\n }\n var cellRange = last(cellRanges);\n var cellPosition = this.cellCtrl.getCellPosition();\n var isFillHandleAvailable = gridOptionsWrapper.isEnableFillHandle() && !this.cellCtrl.isSuppressFillHandle();\n var isRangeHandleAvailable = gridOptionsWrapper.isEnableRangeHandle();\n var handleIsAvailable = rangesLen === 1 && !this.cellCtrl.isEditing() && (isFillHandleAvailable || isRangeHandleAvailable);\n if (this.hasChartRange) {\n var hasCategoryRange = cellRanges[0].type === CellRangeType.DIMENSION;\n var isCategoryCell = hasCategoryRange && rangeService.isCellInSpecificRange(cellPosition, cellRanges[0]);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART_CATEGORY, isCategoryCell);\n handleIsAvailable = cellRange.type === CellRangeType.VALUE;\n }\n return handleIsAvailable &&\n cellRange.endRow != null &&\n rangeService.isContiguousRange(cellRange) &&\n rangeService.isBottomRightCell(cellRange, cellPosition);\n };\n CellRangeFeature.prototype.addSelectionHandle = function () {\n var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, rangeService = _a.rangeService;\n var cellRangeType = last(rangeService.getCellRanges()).type;\n var selectionHandleFill = gridOptionsWrapper.isEnableFillHandle() && missing(cellRangeType);\n var type = selectionHandleFill ? SelectionHandleType.FILL : SelectionHandleType.RANGE;\n if (this.selectionHandle && this.selectionHandle.getType() !== type) {\n this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);\n }\n if (!this.selectionHandle) {\n this.selectionHandle = this.beans.selectionHandleFactory.createSelectionHandle(type);\n }\n this.selectionHandle.refresh(this.cellCtrl);\n };\n CellRangeFeature.prototype.destroy = function () {\n this.beans.context.destroyBean(this.selectionHandle);\n };\n return CellRangeFeature;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1$ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Takes care of:\n * #) Cell Width (including when doing cell spanning, which makes width cover many columns)\n * #) Cell Height (when doing row span, otherwise we don't touch the height as it's just row height)\n * #) Cell Left (the horizontal positioning of the cell, the vertical positioning is on the row)\n */\nvar CellPositionFeature = /** @class */ (function (_super) {\n __extends$1$(CellPositionFeature, _super);\n function CellPositionFeature(ctrl, beans) {\n var _this = _super.call(this) || this;\n _this.cellCtrl = ctrl;\n _this.beans = beans;\n _this.column = ctrl.getColumn();\n _this.rowNode = ctrl.getRowNode();\n _this.setupColSpan();\n _this.setupRowSpan();\n return _this;\n }\n CellPositionFeature.prototype.setupRowSpan = function () {\n this.rowSpan = this.column.getRowSpan(this.rowNode);\n };\n CellPositionFeature.prototype.setComp = function (eGui) {\n this.eGui = eGui;\n this.onLeftChanged();\n this.onWidthChanged();\n this.applyRowSpan();\n };\n CellPositionFeature.prototype.onDisplayColumnsChanged = function () {\n var colsSpanning = this.getColSpanningList();\n if (!areEqual(this.colsSpanning, colsSpanning)) {\n this.colsSpanning = colsSpanning;\n this.onWidthChanged();\n this.onLeftChanged(); // left changes when doing RTL\n }\n };\n CellPositionFeature.prototype.setupColSpan = function () {\n // if no col span is active, then we don't set it up, as it would be wasteful of CPU\n if (this.column.getColDef().colSpan == null) {\n return;\n }\n this.colsSpanning = this.getColSpanningList();\n // because we are col spanning, a reorder of the cols can change what cols we are spanning over\n this.addManagedListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayColumnsChanged.bind(this));\n // because we are spanning over multiple cols, we check for width any time any cols width changes.\n // this is expensive - really we should be explicitly checking only the cols we are spanning over\n // instead of every col, however it would be tricky code to track the cols we are spanning over, so\n // because hardly anyone will be using colSpan, am favouring this easier way for more maintainable code.\n this.addManagedListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onWidthChanged.bind(this));\n };\n CellPositionFeature.prototype.onWidthChanged = function () {\n if (!this.eGui) {\n return;\n }\n var width = this.getCellWidth();\n this.eGui.style.width = width + \"px\";\n };\n CellPositionFeature.prototype.getCellWidth = function () {\n if (!this.colsSpanning) {\n return this.column.getActualWidth();\n }\n return this.colsSpanning.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);\n };\n CellPositionFeature.prototype.getColSpanningList = function () {\n var colSpan = this.column.getColSpan(this.rowNode);\n var colsSpanning = [];\n // if just one col, the col span is just the column we are in\n if (colSpan === 1) {\n colsSpanning.push(this.column);\n }\n else {\n var pointer = this.column;\n var pinned = this.column.getPinned();\n for (var i = 0; pointer && i < colSpan; i++) {\n colsSpanning.push(pointer);\n pointer = this.beans.columnModel.getDisplayedColAfter(pointer);\n if (!pointer || missing(pointer)) {\n break;\n }\n // we do not allow col spanning to span outside of pinned areas\n if (pinned !== pointer.getPinned()) {\n break;\n }\n }\n }\n return colsSpanning;\n };\n CellPositionFeature.prototype.onLeftChanged = function () {\n if (!this.eGui) {\n return;\n }\n var left = this.modifyLeftForPrintLayout(this.getCellLeft());\n this.eGui.style.left = left + 'px';\n };\n CellPositionFeature.prototype.getCellLeft = function () {\n var mostLeftCol;\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n mostLeftCol = last(this.colsSpanning);\n }\n else {\n mostLeftCol = this.column;\n }\n return mostLeftCol.getLeft();\n };\n CellPositionFeature.prototype.modifyLeftForPrintLayout = function (leftPosition) {\n if (!this.cellCtrl.isPrintLayout() || this.column.getPinned() === Constants.PINNED_LEFT) {\n return leftPosition;\n }\n var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();\n if (this.column.getPinned() === Constants.PINNED_RIGHT) {\n var bodyWidth = this.beans.columnModel.getBodyContainerWidth();\n return leftWidth + bodyWidth + (leftPosition || 0);\n }\n // is in body\n return leftWidth + (leftPosition || 0);\n };\n CellPositionFeature.prototype.applyRowSpan = function () {\n if (this.rowSpan === 1) {\n return;\n }\n var singleRowHeight = this.beans.gridOptionsWrapper.getRowHeightAsNumber();\n var totalRowHeight = singleRowHeight * this.rowSpan;\n this.eGui.style.height = totalRowHeight + \"px\";\n this.eGui.style.zIndex = '1';\n };\n // overriding to make public, as we don't dispose this bean via context\n CellPositionFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return CellPositionFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1_ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar CellCustomStyleFeature = /** @class */ (function (_super) {\n __extends$1_(CellCustomStyleFeature, _super);\n function CellCustomStyleFeature(ctrl, beans) {\n var _this = _super.call(this) || this;\n _this.staticClasses = [];\n _this.cellCtrl = ctrl;\n _this.beans = beans;\n _this.column = ctrl.getColumn();\n _this.rowNode = ctrl.getRowNode();\n return _this;\n }\n CellCustomStyleFeature.prototype.setComp = function (comp) {\n this.cellComp = comp;\n this.applyUserStyles();\n this.applyCellClassRules();\n this.applyClassesFromColDef();\n };\n CellCustomStyleFeature.prototype.applyCellClassRules = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n var cellClassParams = {\n value: this.cellCtrl.getValue(),\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n column: this.column,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n this.beans.stylingService.processClassRules(colDef.cellClassRules, cellClassParams, function (className) { return _this.cellComp.addOrRemoveCssClass(className, true); }, function (className) { return _this.cellComp.addOrRemoveCssClass(className, false); });\n };\n CellCustomStyleFeature.prototype.applyUserStyles = function () {\n var colDef = this.column.getColDef();\n if (!colDef.cellStyle) {\n return;\n }\n var styles;\n if (typeof colDef.cellStyle === 'function') {\n var cellStyleParams = {\n column: this.column,\n value: this.cellCtrl.getValue(),\n colDef: colDef,\n data: this.rowNode.data,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n };\n var cellStyleFunc = colDef.cellStyle;\n styles = cellStyleFunc(cellStyleParams);\n }\n else {\n styles = colDef.cellStyle;\n }\n this.cellComp.setUserStyles(styles);\n };\n CellCustomStyleFeature.prototype.applyClassesFromColDef = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n var cellClassParams = {\n value: this.cellCtrl.getValue(),\n data: this.rowNode.data,\n node: this.rowNode,\n column: this.column,\n colDef: colDef,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n if (this.staticClasses.length) {\n this.staticClasses.forEach(function (className) { return _this.cellComp.addOrRemoveCssClass(className, false); });\n }\n this.staticClasses = this.beans.stylingService.getStaticCellClasses(colDef, cellClassParams);\n if (this.staticClasses.length) {\n this.staticClasses.forEach(function (className) { return _this.cellComp.addOrRemoveCssClass(className, true); });\n }\n };\n // overriding to make public, as we don't dispose this bean via context\n CellCustomStyleFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return CellCustomStyleFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1Z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TooltipFeature = /** @class */ (function (_super) {\n __extends$1Z(TooltipFeature, _super);\n function TooltipFeature(ctrl, beans) {\n var _this = _super.call(this) || this;\n _this.ctrl = ctrl;\n _this.beans = beans;\n return _this;\n }\n TooltipFeature.prototype.setComp = function (comp) {\n this.comp = comp;\n this.setupTooltip();\n };\n TooltipFeature.prototype.setupTooltip = function () {\n this.browserTooltips = this.beans.gridOptionsWrapper.isEnableBrowserTooltips();\n this.updateTooltipText();\n if (this.browserTooltips) {\n this.comp.setTitle(this.tooltip != null ? this.tooltip : undefined);\n }\n else {\n this.createTooltipFeatureIfNeeded();\n }\n };\n TooltipFeature.prototype.updateTooltipText = function () {\n this.tooltip = this.ctrl.getTooltipValue();\n };\n TooltipFeature.prototype.createTooltipFeatureIfNeeded = function () {\n var _this = this;\n if (this.genericTooltipFeature != null) {\n return;\n }\n var parent = {\n getTooltipParams: function () { return _this.getTooltipParams(); },\n getGui: function () { return _this.ctrl.getGui(); }\n };\n this.genericTooltipFeature = this.createManagedBean(new CustomTooltipFeature(parent), this.beans.context);\n };\n TooltipFeature.prototype.refreshToolTip = function () {\n this.updateTooltipText();\n if (this.browserTooltips) {\n this.comp.setTitle(this.tooltip != null ? this.tooltip : undefined);\n }\n };\n TooltipFeature.prototype.getTooltipParams = function () {\n var ctrl = this.ctrl;\n var column = ctrl.getColumn ? ctrl.getColumn() : undefined;\n var colDef = ctrl.getColDef ? ctrl.getColDef() : undefined;\n var rowNode = ctrl.getRowNode ? ctrl.getRowNode() : undefined;\n return {\n location: ctrl.getLocation(),\n colDef: colDef,\n column: column,\n rowIndex: ctrl.getRowIndex ? ctrl.getRowIndex() : undefined,\n node: rowNode,\n data: rowNode ? rowNode.data : undefined,\n value: this.getTooltipText(),\n valueFormatted: ctrl.getValueFormatted ? ctrl.getValueFormatted() : undefined,\n };\n };\n TooltipFeature.prototype.getTooltipText = function () {\n return this.tooltip;\n };\n // overriding to make public, as we don't dispose this bean via context\n TooltipFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return TooltipFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/** Using the IoC has a slight performance consideration, which is no problem most of the\n * time, unless we are trashing objects - which is the case when scrolling and rowComp\n * and cellComp. So for performance reasons, RowComp and CellComp do not get autowired\n * with the IoC. Instead they get passed this object which is all the beans the RowComp\n * and CellComp need. Not autowiring all the cells gives performance improvement. */\nvar Beans = /** @class */ (function () {\n function Beans() {\n }\n Beans.prototype.postConstruct = function () {\n this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.clientSideRowModel = this.rowModel;\n }\n if (this.gridOptionsWrapper.isRowModelServerSide()) {\n this.serverSideRowModel = this.rowModel;\n }\n };\n __decorate$1O([\n Autowired('resizeObserverService')\n ], Beans.prototype, \"resizeObserverService\", void 0);\n __decorate$1O([\n Autowired('paginationProxy')\n ], Beans.prototype, \"paginationProxy\", void 0);\n __decorate$1O([\n Autowired('context')\n ], Beans.prototype, \"context\", void 0);\n __decorate$1O([\n Autowired('columnApi')\n ], Beans.prototype, \"columnApi\", void 0);\n __decorate$1O([\n Autowired('gridApi')\n ], Beans.prototype, \"gridApi\", void 0);\n __decorate$1O([\n Autowired('gridOptionsWrapper')\n ], Beans.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1O([\n Autowired('expressionService')\n ], Beans.prototype, \"expressionService\", void 0);\n __decorate$1O([\n Autowired('rowRenderer')\n ], Beans.prototype, \"rowRenderer\", void 0);\n __decorate$1O([\n Autowired('templateService')\n ], Beans.prototype, \"templateService\", void 0);\n __decorate$1O([\n Autowired('valueService')\n ], Beans.prototype, \"valueService\", void 0);\n __decorate$1O([\n Autowired('eventService')\n ], Beans.prototype, \"eventService\", void 0);\n __decorate$1O([\n Autowired('columnModel')\n ], Beans.prototype, \"columnModel\", void 0);\n __decorate$1O([\n Autowired('headerNavigationService')\n ], Beans.prototype, \"headerNavigationService\", void 0);\n __decorate$1O([\n Autowired('navigationService')\n ], Beans.prototype, \"navigationService\", void 0);\n __decorate$1O([\n Autowired('columnAnimationService')\n ], Beans.prototype, \"columnAnimationService\", void 0);\n __decorate$1O([\n Optional('rangeService')\n ], Beans.prototype, \"rangeService\", void 0);\n __decorate$1O([\n Autowired('focusService')\n ], Beans.prototype, \"focusService\", void 0);\n __decorate$1O([\n Optional('contextMenuFactory')\n ], Beans.prototype, \"contextMenuFactory\", void 0);\n __decorate$1O([\n Autowired('popupService')\n ], Beans.prototype, \"popupService\", void 0);\n __decorate$1O([\n Autowired('valueFormatterService')\n ], Beans.prototype, \"valueFormatterService\", void 0);\n __decorate$1O([\n Autowired('stylingService')\n ], Beans.prototype, \"stylingService\", void 0);\n __decorate$1O([\n Autowired('columnHoverService')\n ], Beans.prototype, \"columnHoverService\", void 0);\n __decorate$1O([\n Autowired('userComponentFactory')\n ], Beans.prototype, \"userComponentFactory\", void 0);\n __decorate$1O([\n Autowired('userComponentRegistry')\n ], Beans.prototype, \"userComponentRegistry\", void 0);\n __decorate$1O([\n Autowired('animationFrameService')\n ], Beans.prototype, \"animationFrameService\", void 0);\n __decorate$1O([\n Autowired('dragAndDropService')\n ], Beans.prototype, \"dragAndDropService\", void 0);\n __decorate$1O([\n Autowired('sortController')\n ], Beans.prototype, \"sortController\", void 0);\n __decorate$1O([\n Autowired('filterManager')\n ], Beans.prototype, \"filterManager\", void 0);\n __decorate$1O([\n Autowired('rowContainerHeightService')\n ], Beans.prototype, \"rowContainerHeightService\", void 0);\n __decorate$1O([\n Autowired('frameworkOverrides')\n ], Beans.prototype, \"frameworkOverrides\", void 0);\n __decorate$1O([\n Autowired('cellPositionUtils')\n ], Beans.prototype, \"cellPositionUtils\", void 0);\n __decorate$1O([\n Autowired('rowPositionUtils')\n ], Beans.prototype, \"rowPositionUtils\", void 0);\n __decorate$1O([\n Autowired('selectionService')\n ], Beans.prototype, \"selectionService\", void 0);\n __decorate$1O([\n Optional('selectionHandleFactory')\n ], Beans.prototype, \"selectionHandleFactory\", void 0);\n __decorate$1O([\n Autowired('rowCssClassCalculator')\n ], Beans.prototype, \"rowCssClassCalculator\", void 0);\n __decorate$1O([\n Autowired('rowModel')\n ], Beans.prototype, \"rowModel\", void 0);\n __decorate$1O([\n Autowired('ctrlsService')\n ], Beans.prototype, \"ctrlsService\", void 0);\n __decorate$1O([\n Autowired('ctrlsFactory')\n ], Beans.prototype, \"ctrlsFactory\", void 0);\n __decorate$1O([\n Autowired('agStackComponentsRegistry')\n ], Beans.prototype, \"agStackComponentsRegistry\", void 0);\n __decorate$1O([\n Autowired('valueCache')\n ], Beans.prototype, \"valueCache\", void 0);\n __decorate$1O([\n Autowired('rowNodeEventThrottle')\n ], Beans.prototype, \"rowNodeEventThrottle\", void 0);\n __decorate$1O([\n PostConstruct\n ], Beans.prototype, \"postConstruct\", null);\n Beans = __decorate$1O([\n Bean('beans')\n ], Beans);\n return Beans;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1Y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar CellMouseListenerFeature = /** @class */ (function (_super) {\n __extends$1Y(CellMouseListenerFeature, _super);\n function CellMouseListenerFeature(ctrl, beans, column) {\n var _this = _super.call(this) || this;\n _this.cellCtrl = ctrl;\n _this.beans = beans;\n _this.column = column;\n return _this;\n }\n CellMouseListenerFeature.prototype.onMouseEvent = function (eventName, mouseEvent) {\n if (isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n switch (eventName) {\n case 'click':\n this.onCellClicked(mouseEvent);\n break;\n case 'mousedown':\n case 'touchstart':\n this.onMouseDown(mouseEvent);\n break;\n case 'dblclick':\n this.onCellDoubleClicked(mouseEvent);\n break;\n case 'mouseout':\n this.onMouseOut(mouseEvent);\n break;\n case 'mouseover':\n this.onMouseOver(mouseEvent);\n break;\n }\n };\n CellMouseListenerFeature.prototype.onCellClicked = function (mouseEvent) {\n // iPad doesn't have double click - so we need to mimic it to enable editing for iPad.\n if (this.isDoubleClickOnIPad()) {\n this.onCellDoubleClicked(mouseEvent);\n mouseEvent.preventDefault(); // if we don't do this, then iPad zooms in\n return;\n }\n var _a = this.beans, eventService = _a.eventService, rangeService = _a.rangeService, gridOptionsWrapper = _a.gridOptionsWrapper;\n var multiKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n if (rangeService && multiKeyPressed) {\n // the mousedown event has created the range already, so we only intersect if there is more than one\n // range on this cell\n if (rangeService.getCellRangeCount(this.cellCtrl.getCellPosition()) > 1) {\n rangeService.intersectLastRange(true);\n }\n }\n var cellClickedEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_CLICKED);\n eventService.dispatchEvent(cellClickedEvent);\n var colDef = this.column.getColDef();\n if (colDef.onCellClicked) {\n // to make callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellClicked(cellClickedEvent); }, 0);\n }\n var editOnSingleClick = (gridOptionsWrapper.isSingleClickEdit() || colDef.singleClickEdit)\n && !gridOptionsWrapper.isSuppressClickEdit();\n if (editOnSingleClick) {\n this.cellCtrl.startRowOrCellEdit();\n }\n };\n // returns true if on iPad and this is second 'click' event in 200ms\n CellMouseListenerFeature.prototype.isDoubleClickOnIPad = function () {\n if (!isIOSUserAgent() || isEventSupported('dblclick')) {\n return false;\n }\n var nowMillis = new Date().getTime();\n var res = nowMillis - this.lastIPadMouseClickEvent < 200;\n this.lastIPadMouseClickEvent = nowMillis;\n return res;\n };\n CellMouseListenerFeature.prototype.onCellDoubleClicked = function (mouseEvent) {\n var colDef = this.column.getColDef();\n // always dispatch event to eventService\n var cellDoubleClickedEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_DOUBLE_CLICKED);\n this.beans.eventService.dispatchEvent(cellDoubleClickedEvent);\n // check if colDef also wants to handle event\n if (typeof colDef.onCellDoubleClicked === 'function') {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellDoubleClicked(cellDoubleClickedEvent); }, 0);\n }\n var editOnDoubleClick = !this.beans.gridOptionsWrapper.isSingleClickEdit()\n && !this.beans.gridOptionsWrapper.isSuppressClickEdit();\n if (editOnDoubleClick) {\n this.cellCtrl.startRowOrCellEdit(null, null, mouseEvent);\n }\n };\n CellMouseListenerFeature.prototype.onMouseDown = function (mouseEvent) {\n var ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey;\n var target = mouseEvent.target;\n var _a = this.beans, eventService = _a.eventService, rangeService = _a.rangeService;\n // do not change the range for right-clicks inside an existing range\n if (this.isRightClickInExistingRange(mouseEvent)) {\n return;\n }\n var ranges = rangeService && rangeService.getCellRanges().length != 0;\n if (!shiftKey || !ranges) {\n // We only need to pass true to focusCell when the browser is IE/Edge/Safari and we are trying\n // to focus the cell itself. This should never be true if the mousedown was triggered\n // due to a click on a cell editor for example.\n var forceBrowserFocus = (isBrowserEdge() || isBrowserSafari()) && !this.cellCtrl.isEditing() && !isFocusableFormField(target);\n this.cellCtrl.focusCell(forceBrowserFocus);\n }\n // if shift clicking, and a range exists, we keep the focus on the cell that started the\n // range as the user then changes the range selection.\n if (shiftKey && ranges) {\n // this stops the cell from getting focused\n mouseEvent.preventDefault();\n }\n // if we are clicking on a checkbox, we need to make sure the cell wrapping that checkbox\n // is focused but we don't want to change the range selection, so return here.\n if (this.containsWidget(target)) {\n return;\n }\n if (rangeService) {\n var thisCell = this.cellCtrl.getCellPosition();\n if (shiftKey) {\n rangeService.extendLatestRangeToCell(thisCell);\n }\n else {\n var ctrlKeyPressed = ctrlKey || metaKey;\n rangeService.setRangeToCell(thisCell, ctrlKeyPressed);\n }\n }\n eventService.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_DOWN));\n };\n CellMouseListenerFeature.prototype.isRightClickInExistingRange = function (mouseEvent) {\n var rangeService = this.beans.rangeService;\n if (rangeService) {\n var cellInRange = rangeService.isCellInAnyRange(this.cellCtrl.getCellPosition());\n if (cellInRange && mouseEvent.button === 2) {\n return true;\n }\n }\n return false;\n };\n CellMouseListenerFeature.prototype.containsWidget = function (target) {\n return isElementChildOfClass(target, 'ag-selection-checkbox', 3);\n };\n CellMouseListenerFeature.prototype.onMouseOut = function (mouseEvent) {\n if (this.mouseStayingInsideCell(mouseEvent)) {\n return;\n }\n var cellMouseOutEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OUT);\n this.beans.eventService.dispatchEvent(cellMouseOutEvent);\n this.beans.columnHoverService.clearMouseOver();\n };\n CellMouseListenerFeature.prototype.onMouseOver = function (mouseEvent) {\n if (this.mouseStayingInsideCell(mouseEvent)) {\n return;\n }\n var cellMouseOverEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OVER);\n this.beans.eventService.dispatchEvent(cellMouseOverEvent);\n this.beans.columnHoverService.setMouseOver([this.column]);\n };\n CellMouseListenerFeature.prototype.mouseStayingInsideCell = function (e) {\n if (!e.target || !e.relatedTarget) {\n return false;\n }\n var eGui = this.cellCtrl.getGui();\n var cellContainsTarget = eGui.contains(e.target);\n var cellContainsRelatedTarget = eGui.contains(e.relatedTarget);\n return cellContainsTarget && cellContainsRelatedTarget;\n };\n CellMouseListenerFeature.prototype.destroy = function () {\n };\n return CellMouseListenerFeature;\n}(Beans));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1X = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar CellKeyboardListenerFeature = /** @class */ (function (_super) {\n __extends$1X(CellKeyboardListenerFeature, _super);\n function CellKeyboardListenerFeature(ctrl, beans, column, rowNode, rowCtrl) {\n var _this = _super.call(this) || this;\n _this.cellCtrl = ctrl;\n _this.beans = beans;\n _this.rowNode = rowNode;\n _this.rowCtrl = rowCtrl;\n return _this;\n }\n CellKeyboardListenerFeature.prototype.setComp = function (eGui) {\n this.eGui = eGui;\n };\n CellKeyboardListenerFeature.prototype.onKeyDown = function (event) {\n var key = event.key;\n switch (key) {\n case KeyCode.ENTER:\n this.onEnterKeyDown(event);\n break;\n case KeyCode.F2:\n this.onF2KeyDown(event);\n break;\n case KeyCode.ESCAPE:\n this.onEscapeKeyDown(event);\n break;\n case KeyCode.TAB:\n this.onTabKeyDown(event);\n break;\n case KeyCode.BACKSPACE:\n case KeyCode.DELETE:\n this.onBackspaceOrDeleteKeyPressed(key, event);\n break;\n case KeyCode.DOWN:\n case KeyCode.UP:\n case KeyCode.RIGHT:\n case KeyCode.LEFT:\n this.onNavigationKeyPressed(event, key);\n break;\n }\n };\n CellKeyboardListenerFeature.prototype.onNavigationKeyPressed = function (event, key) {\n if (this.cellCtrl.isEditing()) {\n return;\n }\n if (event.shiftKey && this.cellCtrl.isRangeSelectionEnabled()) {\n this.onShiftRangeSelect(event);\n }\n else {\n this.beans.navigationService.navigateToNextCell(event, key, this.cellCtrl.getCellPosition(), true);\n }\n // if we don't prevent default, the grid will scroll with the navigation keys\n event.preventDefault();\n };\n CellKeyboardListenerFeature.prototype.onShiftRangeSelect = function (event) {\n if (!this.beans.rangeService) {\n return;\n }\n var endCell = this.beans.rangeService.extendLatestRangeInDirection(event);\n if (endCell) {\n this.beans.navigationService.ensureCellVisible(endCell);\n }\n };\n CellKeyboardListenerFeature.prototype.onTabKeyDown = function (event) {\n this.beans.navigationService.onTabKeyDown(this.cellCtrl, event);\n };\n CellKeyboardListenerFeature.prototype.onBackspaceOrDeleteKeyPressed = function (key, event) {\n var _a = this, cellCtrl = _a.cellCtrl, beans = _a.beans, rowNode = _a.rowNode;\n var gridOptionsWrapper = beans.gridOptionsWrapper, rangeService = beans.rangeService, eventService = beans.eventService;\n if (cellCtrl.isEditing()) {\n return;\n }\n eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START });\n if (isDeleteKey(key, gridOptionsWrapper.isEnableCellEditingOnBackspace())) {\n if (rangeService && gridOptionsWrapper.isEnableRangeSelection()) {\n rangeService.clearCellRangeCellValues();\n }\n else if (cellCtrl.isCellEditable()) {\n rowNode.setDataValue(cellCtrl.getColumn(), null, 'cellKeyboardListenerFeature');\n }\n }\n else {\n cellCtrl.startRowOrCellEdit(key, undefined, event);\n }\n eventService.dispatchEvent({ type: Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END });\n };\n CellKeyboardListenerFeature.prototype.onEnterKeyDown = function (e) {\n if (this.cellCtrl.isEditing() || this.rowCtrl.isEditing()) {\n this.cellCtrl.stopEditingAndFocus();\n }\n else {\n if (this.beans.gridOptionsWrapper.isEnterMovesDown()) {\n this.beans.navigationService.navigateToNextCell(null, KeyCode.DOWN, this.cellCtrl.getCellPosition(), false);\n }\n else {\n this.cellCtrl.startRowOrCellEdit(KeyCode.ENTER, undefined, e);\n if (this.cellCtrl.isEditing()) {\n // if we started editing, then we need to prevent default, otherwise the Enter action can get\n // applied to the cell editor. this happened, for example, with largeTextCellEditor where not\n // preventing default results in a 'new line' character getting inserted in the text area\n // when the editing was started\n e.preventDefault();\n }\n }\n }\n };\n CellKeyboardListenerFeature.prototype.onF2KeyDown = function (event) {\n if (!this.cellCtrl.isEditing()) {\n this.cellCtrl.startRowOrCellEdit(KeyCode.F2, undefined, event);\n }\n };\n CellKeyboardListenerFeature.prototype.onEscapeKeyDown = function (event) {\n if (this.cellCtrl.isEditing()) {\n this.cellCtrl.stopRowOrCellEdit(true);\n this.cellCtrl.focusCell(true);\n }\n };\n CellKeyboardListenerFeature.prototype.onKeyPress = function (event) {\n // check this, in case focus is on a (for example) a text field inside the cell,\n // in which cse we should not be listening for these key pressed\n var eventTarget = event.target;\n var eventOnChildComponent = eventTarget !== this.eGui;\n if (eventOnChildComponent || this.cellCtrl.isEditing()) {\n return;\n }\n var pressedChar = String.fromCharCode(event.charCode);\n if (pressedChar === ' ') {\n this.onSpaceKeyPressed(event);\n }\n else if (isEventFromPrintableCharacter(event)) {\n this.cellCtrl.startRowOrCellEdit(null, pressedChar, event);\n // if we don't prevent default, then the keypress also gets applied to the text field\n // (at least when doing the default editor), but we need to allow the editor to decide\n // what it wants to do. we only do this IF editing was started - otherwise it messes\n // up when the use is not doing editing, but using rendering with text fields in cellRenderer\n // (as it would block the the user from typing into text fields).\n event.preventDefault();\n }\n };\n CellKeyboardListenerFeature.prototype.onSpaceKeyPressed = function (event) {\n var gridOptionsWrapper = this.beans.gridOptionsWrapper;\n if (!this.cellCtrl.isEditing() && gridOptionsWrapper.isRowSelection()) {\n var currentSelection = this.rowNode.isSelected();\n var newSelection = !currentSelection;\n if (newSelection || !gridOptionsWrapper.isSuppressRowDeselection()) {\n var groupSelectsFiltered = this.beans.gridOptionsWrapper.isGroupSelectsFiltered();\n var updatedCount = this.rowNode.setSelectedParams({\n newValue: newSelection,\n rangeSelect: event.shiftKey,\n groupSelectsFiltered: groupSelectsFiltered\n });\n if (currentSelection === undefined && updatedCount === 0) {\n this.rowNode.setSelectedParams({\n newValue: false,\n rangeSelect: event.shiftKey,\n groupSelectsFiltered: groupSelectsFiltered\n });\n }\n }\n }\n // prevent default as space key, by default, moves browser scroll down\n event.preventDefault();\n };\n CellKeyboardListenerFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return CellKeyboardListenerFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1W = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DndSourceComp = /** @class */ (function (_super) {\n __extends$1W(DndSourceComp, _super);\n function DndSourceComp(rowNode, column, beans, eCell) {\n var _this = _super.call(this, \"
\") || this;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.beans = beans;\n _this.eCell = eCell;\n return _this;\n }\n DndSourceComp.prototype.postConstruct = function () {\n var eGui = this.getGui();\n eGui.appendChild(createIconNoSpan('rowDrag', this.beans.gridOptionsWrapper, null));\n // we need to stop the event propagation here to avoid starting a range selection while dragging\n this.addGuiEventListener('mousedown', function (e) {\n e.stopPropagation();\n });\n this.addDragSource();\n this.checkVisibility();\n };\n DndSourceComp.prototype.addDragSource = function () {\n this.addGuiEventListener('dragstart', this.onDragStart.bind(this));\n };\n DndSourceComp.prototype.onDragStart = function (dragEvent) {\n var _this = this;\n var providedOnRowDrag = this.column.getColDef().dndSourceOnRowDrag;\n dragEvent.dataTransfer.setDragImage(this.eCell, 0, 0);\n // default behaviour is to convert data to json and set into drag component\n var defaultOnRowDrag = function () {\n try {\n var jsonData = JSON.stringify(_this.rowNode.data);\n dragEvent.dataTransfer.setData('application/json', jsonData);\n dragEvent.dataTransfer.setData('text/plain', jsonData);\n }\n catch (e) {\n // if we cannot convert the data to json, then we do not set the type\n }\n };\n if (providedOnRowDrag) {\n var params = {\n rowNode: this.rowNode, dragEvent: dragEvent,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n providedOnRowDrag(params);\n }\n else {\n defaultOnRowDrag();\n }\n };\n DndSourceComp.prototype.checkVisibility = function () {\n var visible = this.column.isDndSource(this.rowNode);\n this.setDisplayed(visible);\n };\n __decorate$1N([\n PostConstruct\n ], DndSourceComp.prototype, \"postConstruct\", null);\n return DndSourceComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1V = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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$5 = (undefined && undefined.__assign) || function () {\n __assign$5 = 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$5.apply(this, arguments);\n};\nvar CSS_CELL = 'ag-cell';\nvar CSS_AUTO_HEIGHT = 'ag-cell-auto-height';\nvar CSS_NORMAL_HEIGHT = 'ag-cell-normal-height';\nvar CSS_CELL_FOCUS = 'ag-cell-focus';\nvar CSS_CELL_FIRST_RIGHT_PINNED = 'ag-cell-first-right-pinned';\nvar CSS_CELL_LAST_LEFT_PINNED = 'ag-cell-last-left-pinned';\nvar CSS_CELL_NOT_INLINE_EDITING = 'ag-cell-not-inline-editing';\nvar CSS_CELL_INLINE_EDITING = 'ag-cell-inline-editing';\nvar CSS_CELL_POPUP_EDITING = 'ag-cell-popup-editing';\nvar CSS_COLUMN_HOVER = 'ag-column-hover';\nvar CSS_CELL_WRAP_TEXT = 'ag-cell-wrap-text';\nvar instanceIdSequence$3 = 0;\nvar CellCtrl = /** @class */ (function (_super) {\n __extends$1V(CellCtrl, _super);\n function CellCtrl(column, rowNode, beans, rowCtrl) {\n var _this = _super.call(this) || this;\n _this.suppressRefreshCell = false;\n _this.onCellCompAttachedFuncs = [];\n _this.column = column;\n _this.rowNode = rowNode;\n _this.beans = beans;\n _this.rowCtrl = rowCtrl;\n // unique id to this instance, including the column ID to help with debugging in React as it's used in 'key'\n _this.instanceId = column.getId() + '-' + instanceIdSequence$3++;\n _this.createCellPosition();\n _this.addFeatures();\n return _this;\n }\n CellCtrl.prototype.addFeatures = function () {\n var _this = this;\n this.cellPositionFeature = new CellPositionFeature(this, this.beans);\n this.addDestroyFunc(function () { return _this.cellPositionFeature.destroy(); });\n this.cellCustomStyleFeature = new CellCustomStyleFeature(this, this.beans);\n this.addDestroyFunc(function () { return _this.cellCustomStyleFeature.destroy(); });\n this.cellMouseListenerFeature = new CellMouseListenerFeature(this, this.beans, this.column);\n this.addDestroyFunc(function () { return _this.cellMouseListenerFeature.destroy(); });\n this.cellKeyboardListenerFeature = new CellKeyboardListenerFeature(this, this.beans, this.column, this.rowNode, this.rowCtrl);\n this.addDestroyFunc(function () { return _this.cellKeyboardListenerFeature.destroy(); });\n var rangeSelectionEnabled = this.beans.rangeService && this.beans.gridOptionsWrapper.isEnableRangeSelection();\n if (rangeSelectionEnabled) {\n this.cellRangeFeature = new CellRangeFeature(this.beans, this);\n this.addDestroyFunc(function () { return _this.cellRangeFeature.destroy(); });\n }\n this.addTooltipFeature();\n };\n CellCtrl.prototype.addTooltipFeature = function () {\n var _this = this;\n var getTooltipValue = function () {\n var colDef = _this.column.getColDef();\n var data = _this.rowNode.data;\n if (colDef.tooltipField && exists(data)) {\n return getValueUsingField(data, colDef.tooltipField, _this.column.isTooltipFieldContainsDots());\n }\n var valueGetter = colDef.tooltipValueGetter;\n if (valueGetter) {\n return valueGetter({\n location: 'cell',\n api: _this.beans.gridOptionsWrapper.getApi(),\n columnApi: _this.beans.gridOptionsWrapper.getColumnApi(),\n context: _this.beans.gridOptionsWrapper.getContext(),\n colDef: _this.column.getColDef(),\n column: _this.column,\n rowIndex: _this.cellPosition.rowIndex,\n node: _this.rowNode,\n data: _this.rowNode.data,\n value: _this.value,\n valueFormatted: _this.valueFormatted,\n });\n }\n return null;\n };\n var tooltipCtrl = {\n getColumn: function () { return _this.column; },\n getColDef: function () { return _this.column.getColDef(); },\n getRowIndex: function () { return _this.cellPosition.rowIndex; },\n getRowNode: function () { return _this.rowNode; },\n getGui: function () { return _this.getGui(); },\n getLocation: function () { return 'cell'; },\n getTooltipValue: getTooltipValue,\n // this makes no sense, why is the cell formatted value passed to the tooltip???\n getValueFormatted: function () { return _this.valueFormatted; }\n };\n this.tooltipFeature = new TooltipFeature(tooltipCtrl, this.beans);\n this.addDestroyFunc(function () { return _this.tooltipFeature.destroy(); });\n };\n CellCtrl.prototype.setComp = function (comp, eGui, eCellWrapper, printLayout, startEditing) {\n this.cellComp = comp;\n this.gow = this.beans.gridOptionsWrapper;\n this.eGui = eGui;\n this.printLayout = printLayout;\n // we force to make sure formatter gets called at least once,\n // even if value has not changed (is is undefined)\n this.updateAndFormatValue(true);\n this.addDomData();\n this.onCellFocused();\n this.applyStaticCssClasses();\n this.setWrapText();\n this.onFirstRightPinnedChanged();\n this.onLastLeftPinnedChanged();\n this.onColumnHover();\n this.setupControlComps();\n if (eCellWrapper) {\n this.setupAutoHeight(eCellWrapper);\n }\n this.setAriaColIndex();\n if (!this.gow.isSuppressCellFocus()) {\n this.cellComp.setTabIndex(-1);\n }\n var colIdSanitised = escapeString(this.column.getId());\n this.cellComp.setColId(colIdSanitised);\n this.cellComp.setRole('gridcell');\n this.cellPositionFeature.setComp(eGui);\n this.cellCustomStyleFeature.setComp(comp);\n this.tooltipFeature.setComp(comp);\n this.cellKeyboardListenerFeature.setComp(this.eGui);\n if (this.cellRangeFeature) {\n this.cellRangeFeature.setComp(comp, eGui);\n }\n if (startEditing && this.isCellEditable()) {\n this.startEditing();\n }\n else {\n this.showValue();\n }\n if (this.onCellCompAttachedFuncs.length) {\n this.onCellCompAttachedFuncs.forEach(function (func) { return func(); });\n this.onCellCompAttachedFuncs = [];\n }\n };\n CellCtrl.prototype.setupAutoHeight = function (eCellWrapper) {\n var _this = this;\n if (!this.column.isAutoHeight()) {\n return;\n }\n var eParentCell = eCellWrapper.parentElement;\n // taking minRowHeight from getRowHeightForNode means the getRowHeight() callback is used,\n // thus allowing different min heights for different rows.\n var minRowHeight = this.beans.gridOptionsWrapper.getRowHeightForNode(this.rowNode).height;\n var measureHeight = function (timesCalled) {\n if (_this.editing) {\n return;\n }\n // because of the retry's below, it's possible the retry's go beyond\n // the rows life.\n if (!_this.isAlive()) {\n return;\n }\n var _a = getElementSize(eParentCell), paddingTop = _a.paddingTop, paddingBottom = _a.paddingBottom;\n var wrapperHeight = eCellWrapper.offsetHeight;\n var autoHeight = wrapperHeight + paddingTop + paddingBottom;\n if (timesCalled < 5) {\n // if not in doc yet, means framework not yet inserted, so wait for next VM turn,\n // maybe it will be ready next VM turn\n var doc = _this.beans.gridOptionsWrapper.getDocument();\n var notYetInDom = !doc || !doc.contains(eCellWrapper);\n // this happens in React, where React hasn't put any content in. we say 'possibly'\n // as a) may not be React and b) the cell could be empty anyway\n var possiblyNoContentYet = autoHeight == 0;\n if (notYetInDom || possiblyNoContentYet) {\n _this.beans.frameworkOverrides.setTimeout(function () { return measureHeight(timesCalled + 1); }, 0);\n return;\n }\n }\n var newHeight = Math.max(autoHeight, minRowHeight);\n _this.rowNode.setRowAutoHeight(newHeight, _this.column);\n };\n var listener = function () { return measureHeight(0); };\n // do once to set size in case size doesn't change, common when cell is blank\n listener();\n var destroyResizeObserver = this.beans.resizeObserverService.observeResize(eCellWrapper, listener);\n this.addDestroyFunc(function () {\n destroyResizeObserver();\n _this.rowNode.setRowAutoHeight(undefined, _this.column);\n });\n };\n CellCtrl.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n CellCtrl.prototype.showValue = function (forceNewCellRendererInstance) {\n if (forceNewCellRendererInstance === void 0) { forceNewCellRendererInstance = false; }\n var valueToDisplay = this.valueFormatted != null ? this.valueFormatted : this.value;\n var params = this.createCellRendererParams();\n var compDetails = this.beans.userComponentFactory.getCellRendererDetails(this.column.getColDef(), params);\n this.cellComp.setRenderDetails(compDetails, valueToDisplay, forceNewCellRendererInstance);\n this.refreshHandle();\n };\n CellCtrl.prototype.setupControlComps = function () {\n var colDef = this.column.getColDef();\n this.includeSelection = this.isIncludeControl(colDef.checkboxSelection);\n this.includeRowDrag = this.isIncludeControl(colDef.rowDrag);\n this.includeDndSource = this.isIncludeControl(colDef.dndSource);\n this.cellComp.setIncludeSelection(this.includeSelection);\n this.cellComp.setIncludeDndSource(this.includeDndSource);\n this.cellComp.setIncludeRowDrag(this.includeRowDrag);\n };\n CellCtrl.prototype.isForceWrapper = function () {\n // text selection requires the value to be wrapped in another element\n var forceWrapper = this.beans.gridOptionsWrapper.isEnableCellTextSelection() || this.column.isAutoHeight();\n return forceWrapper;\n };\n CellCtrl.prototype.isIncludeControl = function (value) {\n var rowNodePinned = this.rowNode.rowPinned != null;\n var isFunc = typeof value === 'function';\n var res = rowNodePinned ? false : isFunc || value === true;\n return res;\n };\n CellCtrl.prototype.refreshShouldDestroy = function () {\n var colDef = this.column.getColDef();\n var selectionChanged = this.includeSelection != this.isIncludeControl(colDef.checkboxSelection);\n var rowDragChanged = this.includeRowDrag != this.isIncludeControl(colDef.rowDrag);\n var dndSourceChanged = this.includeDndSource != this.isIncludeControl(colDef.dndSource);\n return selectionChanged || rowDragChanged || dndSourceChanged;\n };\n // either called internally if single cell editing, or called by rowRenderer if row editing\n CellCtrl.prototype.startEditing = function (key, charPress, cellStartedEdit, event) {\n var _this = this;\n if (key === void 0) { key = null; }\n if (charPress === void 0) { charPress = null; }\n if (cellStartedEdit === void 0) { cellStartedEdit = false; }\n if (event === void 0) { event = null; }\n var _a, _b;\n if (!this.isCellEditable() || this.editing) {\n return;\n }\n // because of async in React, the cellComp may not be set yet, if no cellComp then we are\n // yet to initialise the cell, so we re-schedule this operation for when celLComp is attached\n if (!this.cellComp) {\n this.onCellCompAttachedFuncs.push(function () { _this.startEditing(key, charPress, cellStartedEdit, event); });\n return;\n }\n var editorParams = this.createCellEditorParams(key, charPress, cellStartedEdit);\n var colDef = this.column.getColDef();\n var compDetails = this.beans.userComponentFactory.getCellEditorDetails(colDef, editorParams);\n // if cellEditorSelector was used, we give preference to popup and popupPosition from the selector\n var popup = ((_a = compDetails) === null || _a === void 0 ? void 0 : _a.popupFromSelector) != null ? compDetails.popupFromSelector : !!colDef.cellEditorPopup;\n var position = ((_b = compDetails) === null || _b === void 0 ? void 0 : _b.popupPositionFromSelector) != null ? compDetails.popupPositionFromSelector : colDef.cellEditorPopupPosition;\n this.setEditing(true, popup);\n this.cellComp.setEditDetails(compDetails, popup, position);\n var e = this.createEvent(event, Events.EVENT_CELL_EDITING_STARTED);\n this.beans.eventService.dispatchEvent(e);\n };\n CellCtrl.prototype.setEditing = function (editing, inPopup) {\n if (inPopup === void 0) { inPopup = false; }\n if (this.editing === editing) {\n return;\n }\n this.editing = editing;\n this.editingInPopup = inPopup;\n this.setInlineEditingClass();\n this.refreshHandle();\n };\n // pass in 'true' to cancel the editing.\n CellCtrl.prototype.stopRowOrCellEdit = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowCtrl.stopRowEditing(cancel);\n }\n else {\n this.stopEditing(cancel);\n }\n };\n CellCtrl.prototype.onPopupEditorClosed = function () {\n if (!this.isEditing()) {\n return;\n }\n // note: this happens because of a click outside of the grid or if the popupEditor\n // is closed with `Escape` key. if another cell was clicked, then the editing will\n // have already stopped and returned on the conditional above.\n this.stopEditingAndFocus();\n };\n CellCtrl.prototype.takeValueFromCellEditor = function (cancel) {\n var noValueResult = { newValueExists: false };\n if (cancel) {\n return noValueResult;\n }\n var cellEditor = this.cellComp.getCellEditor();\n if (!cellEditor) {\n return noValueResult;\n }\n var userWantsToCancel = cellEditor.isCancelAfterEnd && cellEditor.isCancelAfterEnd();\n if (userWantsToCancel) {\n return noValueResult;\n }\n var newValue = cellEditor.getValue();\n return {\n newValue: newValue,\n newValueExists: true\n };\n };\n /**\n * @returns `True` if the value changes, otherwise `False`.\n */\n CellCtrl.prototype.saveNewValue = function (oldValue, newValue) {\n if (newValue === oldValue) {\n return false;\n }\n if (this.beans.gridOptionsWrapper.isReadOnlyEdit()) {\n this.dispatchEventForSaveValueReadOnly(oldValue, newValue);\n return false;\n }\n // we suppressRefreshCell because the call to rowNode.setDataValue() results in change detection\n // getting triggered, which results in all cells getting refreshed. we do not want this refresh\n // to happen on this call as we want to call it explicitly below. otherwise refresh gets called twice.\n // if we only did this refresh (and not the one below) then the cell would flash and not be forced.\n this.suppressRefreshCell = true;\n var valueChanged = this.rowNode.setDataValue(this.column, newValue);\n this.suppressRefreshCell = false;\n return valueChanged;\n };\n CellCtrl.prototype.dispatchEventForSaveValueReadOnly = function (oldValue, newValue) {\n var rowNode = this.rowNode;\n var event = {\n type: Events.EVENT_CELL_EDIT_REQUEST,\n event: null,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n column: this.column,\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi,\n colDef: this.column.getColDef(),\n context: this.beans.gridOptionsWrapper.getContext(),\n data: rowNode.data,\n node: rowNode,\n oldValue: oldValue,\n newValue: newValue,\n value: newValue,\n source: undefined\n };\n this.beans.eventService.dispatchEvent(event);\n };\n /**\n * Ends the Cell Editing\n * @param cancel `True` if the edit process is being canceled.\n * @returns `True` if the value of the `GridCell` has been updated, otherwise `False`.\n */\n CellCtrl.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (!this.editing) {\n return false;\n }\n var _a = this.takeValueFromCellEditor(cancel), newValue = _a.newValue, newValueExists = _a.newValueExists;\n var oldValue = this.getValueFromValueService();\n var valueChanged = false;\n if (newValueExists) {\n valueChanged = this.saveNewValue(oldValue, newValue);\n }\n this.setEditing(false);\n this.cellComp.setEditDetails(); // passing nothing stops editing\n this.updateAndFormatValue();\n this.refreshCell({ forceRefresh: true, suppressFlash: true });\n this.dispatchEditingStoppedEvent(oldValue, newValue, !cancel && !!valueChanged);\n return valueChanged;\n };\n CellCtrl.prototype.dispatchEditingStoppedEvent = function (oldValue, newValue, valueChanged) {\n var editingStoppedEvent = __assign$5(__assign$5({}, this.createEvent(null, Events.EVENT_CELL_EDITING_STOPPED)), { oldValue: oldValue,\n newValue: newValue,\n valueChanged: valueChanged });\n this.beans.eventService.dispatchEvent(editingStoppedEvent);\n };\n // if we are editing inline, then we don't have the padding in the cell (set in the themes)\n // to allow the text editor full access to the entire cell\n CellCtrl.prototype.setInlineEditingClass = function () {\n var _this = this;\n if (!this.isAlive()) {\n return;\n }\n // because of async in React, the cellComp may not be set yet, if no cellComp then we are\n // yet to initialise the cell, so we re-schedule this operation for when celLComp is attached\n if (!this.cellComp) {\n this.onCellCompAttachedFuncs.push(function () { _this.setInlineEditingClass(); });\n return;\n }\n // ag-cell-inline-editing - appears when user is inline editing\n // ag-cell-not-inline-editing - appears when user is no inline editing\n // ag-cell-popup-editing - appears when user is editing cell in popup (appears on the cell, not on the popup)\n // note: one of {ag-cell-inline-editing, ag-cell-not-inline-editing} is always present, they toggle.\n // however {ag-cell-popup-editing} shows when popup, so you have both {ag-cell-popup-editing}\n // and {ag-cell-not-inline-editing} showing at the same time.\n var editingInline = this.editing && !this.editingInPopup;\n var popupEditorShowing = this.editing && this.editingInPopup;\n this.cellComp.addOrRemoveCssClass(CSS_CELL_INLINE_EDITING, editingInline);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_NOT_INLINE_EDITING, !editingInline);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_POPUP_EDITING, popupEditorShowing);\n this.rowCtrl.setInlineEditingCss(this.editing);\n };\n // this is needed as the JS CellComp still allows isPopup() on the CellEditor class, so\n // it's possible the editor is in a popup even though it's not configured via the colDef as so\n CellCtrl.prototype.hackSayEditingInPopup = function () {\n if (this.editingInPopup) {\n return;\n }\n this.editingInPopup = true;\n this.setInlineEditingClass();\n };\n CellCtrl.prototype.createCellEditorParams = function (key, charPress, cellStartedEdit) {\n var res = {\n value: this.getValueFromValueService(),\n key: key,\n eventKey: key,\n charPress: charPress,\n column: this.column,\n colDef: this.column.getColDef(),\n rowIndex: this.getCellPosition().rowIndex,\n node: this.rowNode,\n data: this.rowNode.data,\n api: this.beans.gridOptionsWrapper.getApi(),\n cellStartedEdit: cellStartedEdit,\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n onKeyDown: this.onKeyDown.bind(this),\n stopEditing: this.stopEditingAndFocus.bind(this),\n eGridCell: this.getGui(),\n parseValue: this.parseValue.bind(this),\n formatValue: this.formatValue.bind(this)\n };\n return res;\n };\n CellCtrl.prototype.createCellRendererParams = function () {\n var _this = this;\n var addRowCompListener = function (eventType, listener) {\n console.warn('AG Grid: since AG Grid v26, params.addRowCompListener() is deprecated. If you need this functionality, please contact AG Grid support and advise why so that we can revert with an appropriate workaround, as we dont have any valid use cases for it. This method was originally provided as a work around to know when cells were destroyed in AG Grid before custom Cell Renderers could be provided.');\n _this.rowCtrl.addEventListener(eventType, listener);\n };\n var res = {\n value: this.value,\n valueFormatted: this.valueFormatted,\n getValue: this.getValueFromValueService.bind(this),\n setValue: function (value) { return _this.beans.valueService.setValue(_this.rowNode, _this.column, value); },\n formatValue: this.formatValue.bind(this),\n data: this.rowNode.data,\n node: this.rowNode,\n pinned: this.column.getPinned(),\n colDef: this.column.getColDef(),\n column: this.column,\n rowIndex: this.getCellPosition().rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n refreshCell: this.refreshCell.bind(this),\n eGridCell: this.getGui(),\n eParentOfValue: this.cellComp.getParentOfValue(),\n registerRowDragger: function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) { return _this.registerRowDragger(rowDraggerElement, dragStartPixels, suppressVisibilityChange); },\n // this function is not documented anywhere, so we could drop it\n // it was in the olden days to allow user to register for when rendered\n // row was removed (the row comp was removed), however now that the user\n // can provide components for cells, the destroy method gets call when this\n // happens so no longer need to fire event.\n addRowCompListener: addRowCompListener\n };\n return res;\n };\n CellCtrl.prototype.parseValue = function (newValue) {\n var colDef = this.column.getColDef();\n var params = {\n node: this.rowNode,\n data: this.rowNode.data,\n oldValue: this.getValue(),\n newValue: newValue,\n colDef: colDef,\n column: this.column,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n var valueParser = colDef.valueParser;\n return exists(valueParser) ? this.beans.expressionService.evaluate(valueParser, params) : newValue;\n };\n CellCtrl.prototype.setFocusOutOnEditor = function () {\n if (!this.editing) {\n return;\n }\n var cellEditor = this.cellComp.getCellEditor();\n if (cellEditor && cellEditor.focusOut) {\n cellEditor.focusOut();\n }\n };\n CellCtrl.prototype.setFocusInOnEditor = function () {\n if (!this.editing) {\n return;\n }\n var cellEditor = this.cellComp.getCellEditor();\n if (cellEditor && cellEditor.focusIn) {\n // if the editor is present, then we just focus it\n cellEditor.focusIn();\n }\n else {\n // if the editor is not present, it means async cell editor (eg React fibre)\n // and we are trying to set focus before the cell editor is present, so we\n // focus the cell instead\n this.focusCell(true);\n }\n };\n CellCtrl.prototype.onCellChanged = function (event) {\n // because of async in React, the cellComp may not be set yet, if no cellComp then we are\n // yet to initialise the cell, so no need to refresh.\n if (!this.cellComp) {\n return;\n }\n var eventImpactsThisCell = event.column === this.column;\n if (eventImpactsThisCell) {\n this.refreshCell({});\n }\n };\n // + stop editing {forceRefresh: true, suppressFlash: true}\n // + event cellChanged {}\n // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything\n // + rowCtrl: event dataChanged {suppressFlash: !update, newData: !update}\n // + rowCtrl: api refreshCells() {animate: true/false}\n // + rowRenderer: api softRefreshView() {}\n CellCtrl.prototype.refreshCell = function (params) {\n // if we are in the middle of 'stopEditing', then we don't refresh here, as refresh gets called explicitly\n if (this.suppressRefreshCell || this.editing) {\n return;\n }\n // In React, due to async, it's possible a refresh was asked for before the CellComp\n // has been set. If this happens, we skip the refresh, as the cell is going to be\n // initialised anyway once the CellComp is set.\n if (!this.cellComp) {\n return;\n }\n var colDef = this.column.getColDef();\n var newData = params != null && !!params.newData;\n var suppressFlash = (params != null && !!params.suppressFlash) || !!colDef.suppressCellFlash;\n // we always refresh if cell has no value - this can happen when user provides Cell Renderer and the\n // cell renderer doesn't rely on a value, instead it could be looking directly at the data, or maybe\n // printing the current time (which would be silly)???. Generally speaking\n // non of {field, valueGetter, showRowGroup} is bad in the users application, however for this edge case, it's\n // best always refresh and take the performance hit rather than never refresh and users complaining in support\n // that cells are not updating.\n var noValueProvided = colDef.field == null && colDef.valueGetter == null && colDef.showRowGroup == null;\n var forceRefresh = (params && params.forceRefresh) || noValueProvided || newData;\n var valuesDifferent = this.updateAndFormatValue();\n var dataNeedsUpdating = forceRefresh || valuesDifferent;\n if (dataNeedsUpdating) {\n // if it's 'new data', then we don't refresh the cellRenderer, even if refresh method is available.\n // this is because if the whole data is new (ie we are showing stock price 'BBA' now and not 'SSD')\n // then we are not showing a movement in the stock price, rather we are showing different stock.\n this.showValue(newData);\n // we don't want to flash the cells when processing a filter change, as otherwise the UI would\n // be to busy. see comment in FilterManager with regards processingFilterChange\n var processingFilterChange = this.beans.filterManager.isSuppressFlashingCellsBecauseFiltering();\n var flashCell = !suppressFlash && !processingFilterChange &&\n (this.beans.gridOptionsWrapper.isEnableCellChangeFlash() || colDef.enableCellChangeFlash);\n if (flashCell) {\n this.flashCell();\n }\n this.cellCustomStyleFeature.applyUserStyles();\n this.cellCustomStyleFeature.applyClassesFromColDef();\n }\n this.refreshToolTip();\n // we do cellClassRules even if the value has not changed, so that users who have rules that\n // look at other parts of the row (where the other part of the row might of changed) will work.\n this.cellCustomStyleFeature.applyCellClassRules();\n };\n // cell editors call this, when they want to stop for reasons other\n // than what we pick up on. eg selecting from a dropdown ends editing.\n CellCtrl.prototype.stopEditingAndFocus = function (suppressNavigateAfterEdit) {\n if (suppressNavigateAfterEdit === void 0) { suppressNavigateAfterEdit = false; }\n this.stopRowOrCellEdit();\n this.focusCell(true);\n if (!suppressNavigateAfterEdit) {\n this.navigateAfterEdit();\n }\n };\n CellCtrl.prototype.navigateAfterEdit = function () {\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (fullRowEdit) {\n return;\n }\n var enterMovesDownAfterEdit = this.beans.gridOptionsWrapper.isEnterMovesDownAfterEdit();\n if (enterMovesDownAfterEdit) {\n this.beans.navigationService.navigateToNextCell(null, KeyCode.DOWN, this.getCellPosition(), false);\n }\n };\n // user can also call this via API\n CellCtrl.prototype.flashCell = function (delays) {\n var flashDelay = delays && delays.flashDelay;\n var fadeDelay = delays && delays.fadeDelay;\n this.animateCell('data-changed', flashDelay, fadeDelay);\n };\n CellCtrl.prototype.animateCell = function (cssName, flashDelay, fadeDelay) {\n var _this = this;\n var fullName = \"ag-cell-\" + cssName;\n var animationFullName = \"ag-cell-\" + cssName + \"-animation\";\n var gridOptionsWrapper = this.beans.gridOptionsWrapper;\n if (!flashDelay) {\n flashDelay = gridOptionsWrapper.getCellFlashDelay();\n }\n if (!exists(fadeDelay)) {\n fadeDelay = gridOptionsWrapper.getCellFadeDelay();\n }\n // we want to highlight the cells, without any animation\n this.cellComp.addOrRemoveCssClass(fullName, true);\n this.cellComp.addOrRemoveCssClass(animationFullName, false);\n // then once that is applied, we remove the highlight with animation\n window.setTimeout(function () {\n if (!_this.isAlive()) {\n return;\n }\n _this.cellComp.addOrRemoveCssClass(fullName, false);\n _this.cellComp.addOrRemoveCssClass(animationFullName, true);\n _this.eGui.style.transition = \"background-color \" + fadeDelay + \"ms\";\n window.setTimeout(function () {\n if (!_this.isAlive()) {\n return;\n }\n // and then to leave things as we got them, we remove the animation\n _this.cellComp.addOrRemoveCssClass(animationFullName, false);\n _this.eGui.style.transition = '';\n }, fadeDelay);\n }, flashDelay);\n };\n CellCtrl.prototype.onFlashCells = function (event) {\n if (!this.cellComp) {\n return;\n }\n var cellId = this.beans.cellPositionUtils.createId(this.getCellPosition());\n var shouldFlash = event.cells[cellId];\n if (shouldFlash) {\n this.animateCell('highlight');\n }\n };\n CellCtrl.prototype.isCellEditable = function () {\n return this.column.isCellEditable(this.rowNode);\n };\n CellCtrl.prototype.isSuppressFillHandle = function () {\n return this.column.isSuppressFillHandle();\n };\n CellCtrl.prototype.formatValue = function (value) {\n var res = this.callValueFormatter(value);\n return res != null ? res : value;\n };\n CellCtrl.prototype.callValueFormatter = function (value) {\n return this.beans.valueFormatterService.formatValue(this.column, this.rowNode, value);\n };\n CellCtrl.prototype.updateAndFormatValue = function (force) {\n if (force === void 0) { force = false; }\n var oldValue = this.value;\n var oldValueFormatted = this.valueFormatted;\n this.value = this.getValueFromValueService();\n this.valueFormatted = this.callValueFormatter(this.value);\n var valuesDifferent = force ? true :\n !this.valuesAreEqual(oldValue, this.value) || this.valueFormatted != oldValueFormatted;\n return valuesDifferent;\n };\n CellCtrl.prototype.valuesAreEqual = function (val1, val2) {\n // if the user provided an equals method, use that, otherwise do simple comparison\n var colDef = this.column.getColDef();\n return colDef.equals ? colDef.equals(val1, val2) : val1 === val2;\n };\n CellCtrl.prototype.getComp = function () {\n return this.cellComp;\n };\n CellCtrl.prototype.getValueFromValueService = function () {\n // if we don't check this, then the grid will render leaf groups as open even if we are not\n // allowing the user to open leaf groups. confused? remember for pivot mode we don't allow\n // opening leaf groups, so we have to force leafGroups to be closed in case the user expanded\n // them via the API, or user user expanded them in the UI before turning on pivot mode\n var lockedClosedGroup = this.rowNode.leafGroup && this.beans.columnModel.isPivotMode();\n var isOpenGroup = this.rowNode.group && this.rowNode.expanded && !this.rowNode.footer && !lockedClosedGroup;\n // are we showing group footers\n var groupFootersEnabled = this.beans.gridOptionsWrapper.isGroupIncludeFooter();\n // if doing footers, we normally don't show agg data at group level when group is open\n var groupAlwaysShowAggData = this.beans.gridOptionsWrapper.isGroupSuppressBlankHeader();\n // if doing grouping and footers, we don't want to include the agg value\n // in the header when the group is open\n var ignoreAggData = (isOpenGroup && groupFootersEnabled) && !groupAlwaysShowAggData;\n var value = this.beans.valueService.getValue(this.column, this.rowNode, false, ignoreAggData);\n return value;\n };\n CellCtrl.prototype.getValue = function () {\n return this.value;\n };\n CellCtrl.prototype.getValueFormatted = function () {\n return this.valueFormatted;\n };\n CellCtrl.prototype.addDomData = function () {\n var _this = this;\n var element = this.getGui();\n this.beans.gridOptionsWrapper.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, this);\n this.addDestroyFunc(function () { return _this.beans.gridOptionsWrapper.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, null); });\n };\n CellCtrl.prototype.createEvent = function (domEvent, eventType) {\n var event = {\n type: eventType,\n node: this.rowNode,\n data: this.rowNode.data,\n value: this.value,\n column: this.column,\n colDef: this.column.getColDef(),\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi,\n rowPinned: this.rowNode.rowPinned,\n event: domEvent,\n rowIndex: this.rowNode.rowIndex\n };\n return event;\n };\n CellCtrl.prototype.onKeyPress = function (event) {\n this.cellKeyboardListenerFeature.onKeyPress(event);\n };\n CellCtrl.prototype.onKeyDown = function (event) {\n this.cellKeyboardListenerFeature.onKeyDown(event);\n };\n CellCtrl.prototype.onMouseEvent = function (eventName, mouseEvent) {\n this.cellMouseListenerFeature.onMouseEvent(eventName, mouseEvent);\n };\n CellCtrl.prototype.getGui = function () {\n return this.eGui;\n };\n CellCtrl.prototype.refreshToolTip = function () {\n this.tooltipFeature.refreshToolTip();\n };\n CellCtrl.prototype.getColSpanningList = function () {\n return this.cellPositionFeature.getColSpanningList();\n };\n CellCtrl.prototype.onLeftChanged = function () {\n if (!this.cellComp) {\n return;\n }\n this.cellPositionFeature.onLeftChanged();\n };\n CellCtrl.prototype.onDisplayedColumnsChanged = function () {\n if (!this.eGui) {\n return;\n }\n this.setAriaColIndex();\n };\n CellCtrl.prototype.setAriaColIndex = function () {\n var colIdx = this.beans.columnModel.getAriaColumnIndex(this.column);\n setAriaColIndex(this.getGui(), colIdx); // for react, we don't use JSX, as it slowed down column moving\n };\n CellCtrl.prototype.isSuppressNavigable = function () {\n return this.column.isSuppressNavigable(this.rowNode);\n };\n CellCtrl.prototype.onWidthChanged = function () {\n return this.cellPositionFeature.onWidthChanged();\n };\n CellCtrl.prototype.getColumn = function () {\n return this.column;\n };\n CellCtrl.prototype.getRowNode = function () {\n return this.rowNode;\n };\n CellCtrl.prototype.getBeans = function () {\n return this.beans;\n };\n CellCtrl.prototype.isPrintLayout = function () {\n return this.printLayout;\n };\n CellCtrl.prototype.appendChild = function (htmlElement) {\n this.eGui.appendChild(htmlElement);\n };\n CellCtrl.prototype.refreshHandle = function () {\n if (this.cellRangeFeature) {\n this.cellRangeFeature.refreshHandle();\n }\n };\n CellCtrl.prototype.getCellPosition = function () {\n return this.cellPosition;\n };\n CellCtrl.prototype.isEditing = function () {\n return this.editing;\n };\n // called by rowRenderer when user navigates via tab key\n CellCtrl.prototype.startRowOrCellEdit = function (key, charPress, event) {\n if (event === void 0) { event = null; }\n if (!this.cellComp) {\n return;\n }\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowCtrl.startRowEditing(key, charPress, this);\n }\n else {\n this.startEditing(key, charPress, true, event);\n }\n };\n CellCtrl.prototype.getRowCtrl = function () {\n return this.rowCtrl;\n };\n CellCtrl.prototype.getRowPosition = function () {\n return {\n rowIndex: this.cellPosition.rowIndex,\n rowPinned: this.cellPosition.rowPinned\n };\n };\n CellCtrl.prototype.updateRangeBordersIfRangeCount = function () {\n if (!this.cellComp) {\n return;\n }\n if (this.cellRangeFeature) {\n this.cellRangeFeature.updateRangeBordersIfRangeCount();\n }\n };\n CellCtrl.prototype.onRangeSelectionChanged = function () {\n if (!this.cellComp) {\n return;\n }\n if (this.cellRangeFeature) {\n this.cellRangeFeature.onRangeSelectionChanged();\n }\n };\n CellCtrl.prototype.isRangeSelectionEnabled = function () {\n return this.cellRangeFeature != null;\n };\n CellCtrl.prototype.focusCell = function (forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n this.beans.focusService.setFocusedCell({\n rowIndex: this.getCellPosition().rowIndex,\n column: this.column,\n rowPinned: this.rowNode.rowPinned,\n forceBrowserFocus: forceBrowserFocus\n });\n };\n CellCtrl.prototype.onRowIndexChanged = function () {\n // when index changes, this influences items that need the index, so we update the\n // grid cell so they are working off the new index.\n this.createCellPosition();\n // when the index of the row changes, ie means the cell may have lost or gained focus\n this.onCellFocused();\n // check range selection\n if (this.cellRangeFeature) {\n this.cellRangeFeature.onRangeSelectionChanged();\n }\n };\n CellCtrl.prototype.onFirstRightPinnedChanged = function () {\n if (!this.cellComp) {\n return;\n }\n var firstRightPinned = this.column.isFirstRightPinned();\n this.cellComp.addOrRemoveCssClass(CSS_CELL_FIRST_RIGHT_PINNED, firstRightPinned);\n };\n CellCtrl.prototype.onLastLeftPinnedChanged = function () {\n if (!this.cellComp) {\n return;\n }\n var lastLeftPinned = this.column.isLastLeftPinned();\n this.cellComp.addOrRemoveCssClass(CSS_CELL_LAST_LEFT_PINNED, lastLeftPinned);\n };\n CellCtrl.prototype.onCellFocused = function (event) {\n if (!this.cellComp || this.gow.isSuppressCellFocus()) {\n return;\n }\n var cellFocused = this.beans.focusService.isCellFocused(this.cellPosition);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_FOCUS, cellFocused);\n // see if we need to force browser focus - this can happen if focus is programmatically set\n if (cellFocused && event && event.forceBrowserFocus) {\n var focusEl = this.cellComp.getFocusableElement();\n focusEl.focus({ preventScroll: !!event.preventScrollOnBrowserFocus });\n }\n // if another cell was focused, and we are editing, then stop editing\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (!cellFocused && !fullRowEdit && this.editing) {\n this.stopRowOrCellEdit();\n }\n };\n CellCtrl.prototype.createCellPosition = function () {\n this.cellPosition = {\n rowIndex: this.rowNode.rowIndex,\n rowPinned: makeNull(this.rowNode.rowPinned),\n column: this.column\n };\n };\n // CSS Classes that only get applied once, they never change\n CellCtrl.prototype.applyStaticCssClasses = function () {\n this.cellComp.addOrRemoveCssClass(CSS_CELL, true);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_NOT_INLINE_EDITING, true);\n // normal cells fill the height of the row. autoHeight cells have no height to let them\n // fit the height of content.\n var autoHeight = this.column.isAutoHeight() == true;\n this.cellComp.addOrRemoveCssClass(CSS_AUTO_HEIGHT, autoHeight);\n this.cellComp.addOrRemoveCssClass(CSS_NORMAL_HEIGHT, !autoHeight);\n };\n CellCtrl.prototype.onColumnHover = function () {\n if (!this.cellComp) {\n return;\n }\n if (!this.beans.gridOptionsWrapper.isColumnHoverHighlight()) {\n return;\n }\n var isHovered = this.beans.columnHoverService.isHovered(this.column);\n this.cellComp.addOrRemoveCssClass(CSS_COLUMN_HOVER, isHovered);\n };\n CellCtrl.prototype.onColDefChanged = function () {\n if (!this.cellComp) {\n return;\n }\n this.setWrapText();\n if (!this.editing) {\n this.refreshCell({ forceRefresh: true, suppressFlash: true });\n }\n };\n CellCtrl.prototype.setWrapText = function () {\n var value = this.column.getColDef().wrapText == true;\n this.cellComp.addOrRemoveCssClass(CSS_CELL_WRAP_TEXT, value);\n };\n CellCtrl.prototype.dispatchCellContextMenuEvent = function (event) {\n var colDef = this.column.getColDef();\n var cellContextMenuEvent = this.createEvent(event, Events.EVENT_CELL_CONTEXT_MENU);\n this.beans.eventService.dispatchEvent(cellContextMenuEvent);\n if (colDef.onCellContextMenu) {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellContextMenu(cellContextMenuEvent); }, 0);\n }\n };\n CellCtrl.prototype.getCellRenderer = function () {\n return this.cellComp ? this.cellComp.getCellRenderer() : null;\n };\n CellCtrl.prototype.getCellEditor = function () {\n return this.cellComp ? this.cellComp.getCellEditor() : null;\n };\n CellCtrl.prototype.destroy = function () {\n this.onCellCompAttachedFuncs = [];\n _super.prototype.destroy.call(this);\n };\n CellCtrl.prototype.createSelectionCheckbox = function () {\n var cbSelectionComponent = new CheckboxSelectionComponent();\n this.beans.context.createBean(cbSelectionComponent);\n cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column });\n // put the checkbox in before the value\n return cbSelectionComponent;\n };\n CellCtrl.prototype.createDndSource = function () {\n var dndSourceComp = new DndSourceComp(this.rowNode, this.column, this.beans, this.eGui);\n this.beans.context.createBean(dndSourceComp);\n return dndSourceComp;\n };\n CellCtrl.prototype.registerRowDragger = function (customElement, dragStartPixels, suppressVisibilityChange) {\n var _this = this;\n // if previously existed, then we are only updating\n if (this.customRowDragComp) {\n this.customRowDragComp.setDragElement(customElement, dragStartPixels);\n return;\n }\n var newComp = this.createRowDragComp(customElement, dragStartPixels, suppressVisibilityChange);\n if (newComp) {\n this.customRowDragComp = newComp;\n this.addDestroyFunc(function () { return _this.beans.context.destroyBean(newComp); });\n }\n };\n CellCtrl.prototype.createRowDragComp = function (customElement, dragStartPixels, suppressVisibilityChange) {\n var _this = this;\n var pagination = this.beans.gridOptionsWrapper.isPagination();\n var rowDragManaged = this.beans.gridOptionsWrapper.isRowDragManaged();\n var clientSideRowModelActive = this.beans.gridOptionsWrapper.isRowModelDefault();\n if (rowDragManaged) {\n // row dragging only available in default row model\n if (!clientSideRowModelActive) {\n doOnce(function () { return console.warn('AG Grid: managed row dragging is only allowed in the Client Side Row Model'); }, 'CellComp.addRowDragging');\n return;\n }\n if (pagination) {\n doOnce(function () { return console.warn('AG Grid: managed row dragging is not possible when doing pagination'); }, 'CellComp.addRowDragging');\n return;\n }\n }\n // otherwise (normal case) we are creating a RowDraggingComp for the first time\n var rowDragComp = new RowDragComp(function () { return _this.value; }, this.rowNode, this.column, customElement, dragStartPixels, suppressVisibilityChange);\n this.beans.context.createBean(rowDragComp);\n return rowDragComp;\n };\n CellCtrl.DOM_DATA_KEY_CELL_CTRL = 'cellCtrl';\n return CellCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1U = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values$2 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$h = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$d = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$h(arguments[i]));\n return ar;\n};\nvar RowType$1;\n(function (RowType) {\n RowType[\"Normal\"] = \"Normal\";\n RowType[\"FullWidth\"] = \"FullWidth\";\n RowType[\"FullWidthLoading\"] = \"FullWidthLoading\";\n RowType[\"FullWidthGroup\"] = \"FullWidthGroup\";\n RowType[\"FullWidthDetail\"] = \"FullWidthDetail\";\n})(RowType$1 || (RowType$1 = {}));\nvar instanceIdSequence$2 = 0;\nvar RowCtrl = /** @class */ (function (_super) {\n __extends$1U(RowCtrl, _super);\n function RowCtrl(rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout) {\n var _this = _super.call(this) || this;\n _this.allRowGuis = [];\n _this.active = true;\n _this.centerCellCtrls = { list: [], map: {} };\n _this.leftCellCtrls = { list: [], map: {} };\n _this.rightCellCtrls = { list: [], map: {} };\n _this.lastMouseDownOnDragger = false;\n _this.updateColumnListsPending = false;\n _this.beans = beans;\n _this.rowNode = rowNode;\n _this.paginationPage = _this.beans.paginationProxy.getCurrentPage();\n _this.useAnimationFrameForCreate = useAnimationFrameForCreate;\n _this.printLayout = printLayout;\n _this.instanceId = rowNode.id + '-' + instanceIdSequence$2++;\n _this.setAnimateFlags(animateIn);\n _this.rowFocused = _this.beans.focusService.isRowFocused(_this.rowNode.rowIndex, _this.rowNode.rowPinned);\n _this.rowLevel = _this.beans.rowCssClassCalculator.calculateRowLevel(_this.rowNode);\n _this.setRowType();\n _this.addListeners();\n return _this;\n }\n RowCtrl.prototype.isSticky = function () {\n return this.rowNode.sticky;\n };\n RowCtrl.prototype.getBeans = function () {\n return this.beans;\n };\n RowCtrl.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n RowCtrl.prototype.setComp = function (rowComp, element, containerType) {\n var gui = { rowComp: rowComp, element: element, containerType: containerType };\n this.allRowGuis.push(gui);\n if (containerType === RowContainerType.LEFT) {\n this.leftGui = gui;\n }\n else if (containerType === RowContainerType.RIGHT) {\n this.rightGui = gui;\n }\n else if (containerType === RowContainerType.FULL_WIDTH) {\n this.fullWidthGui = gui;\n }\n else {\n this.centerGui = gui;\n }\n var allNormalPresent = this.leftGui != null && this.rightGui != null && this.centerGui != null;\n var fullWidthPresent = this.fullWidthGui != null;\n if (allNormalPresent || fullWidthPresent) {\n this.initialiseRowComps();\n }\n if (this.rowType !== 'FullWidthLoading') {\n // this is fired within setComp as we know that the component renderer is now trying to render.\n // linked with the fact the function implementation queues behind requestAnimationFrame should allow\n // us to be certain that all rendering is done by the time the event fires.\n this.beans.rowRenderer.dispatchFirstDataRenderedEvent();\n }\n };\n RowCtrl.prototype.isCacheable = function () {\n return this.rowType === RowType$1.FullWidthDetail\n && this.beans.gridOptionsWrapper.isKeepDetailRows();\n };\n RowCtrl.prototype.setCached = function (cached) {\n var displayValue = cached ? 'none' : '';\n this.allRowGuis.forEach(function (rg) { return rg.element.style.display = displayValue; });\n };\n RowCtrl.prototype.initialiseRowComps = function () {\n var _this = this;\n var gow = this.beans.gridOptionsWrapper;\n this.onRowHeightChanged();\n this.updateRowIndexes();\n this.setFocusedClasses();\n this.setStylesFromGridOptions();\n if (gow.isRowSelection() && this.rowNode.selectable) {\n this.onRowSelected();\n }\n this.updateColumnLists(!this.useAnimationFrameForCreate);\n if (this.slideRowIn) {\n executeNextVMTurn(this.onTopChanged.bind(this));\n }\n if (this.fadeRowIn) {\n executeNextVMTurn(function () {\n _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', false); });\n });\n }\n var businessKey = this.getRowBusinessKey();\n var rowIdSanitised = escapeString(this.rowNode.id);\n var businessKeySanitised = escapeString(businessKey);\n this.allRowGuis.forEach(function (gui) {\n var comp = gui.rowComp;\n comp.setRole('row');\n var initialRowClasses = _this.getInitialRowClasses(gui.containerType);\n initialRowClasses.forEach(function (name) { return comp.addOrRemoveCssClass(name, true); });\n if (_this.rowNode.group) {\n setAriaExpanded(gui.element, _this.rowNode.expanded == true);\n }\n if (rowIdSanitised != null) {\n comp.setRowId(rowIdSanitised);\n }\n if (businessKeySanitised != null) {\n comp.setRowBusinessKey(businessKeySanitised);\n }\n if (_this.isFullWidth() && !_this.beans.gridOptionsWrapper.isSuppressCellFocus()) {\n comp.setTabIndex(-1);\n }\n // DOM DATA\n gow.setDomData(gui.element, RowCtrl.DOM_DATA_KEY_ROW_CTRL, _this);\n _this.addDestroyFunc(function () { return gow.setDomData(gui.element, RowCtrl.DOM_DATA_KEY_ROW_CTRL, null); });\n // adding hover functionality adds listener to this row, so we\n // do it lazily in an animation frame\n if (_this.useAnimationFrameForCreate) {\n _this.beans.animationFrameService.createTask(_this.addHoverFunctionality.bind(_this, gui.element), _this.rowNode.rowIndex, 'createTasksP2');\n }\n else {\n _this.addHoverFunctionality(gui.element);\n }\n if (_this.isFullWidth()) {\n _this.setupFullWidth(gui);\n }\n if (gow.isRowDragEntireRow()) {\n _this.addRowDraggerToRow(gui);\n }\n if (_this.useAnimationFrameForCreate) {\n // the height animation we only want active after the row is alive for 1 second.\n // this stops the row animation working when rows are initially crated. otherwise\n // auto-height rows get inserted into the dom and resized immediately, which gives\n // very bad UX (eg 10 rows get inserted, then all 10 expand, look particularly bad\n // when scrolling). so this makes sure when rows are shown for the first time, they\n // are resized immediately without animation.\n _this.beans.animationFrameService.addDestroyTask(function () {\n if (!_this.isAlive()) {\n return;\n }\n gui.rowComp.addOrRemoveCssClass('ag-after-created', true);\n });\n }\n });\n this.executeProcessRowPostCreateFunc();\n };\n RowCtrl.prototype.addRowDraggerToRow = function (gui) {\n var gow = this.beans.gridOptionsWrapper;\n if (gow.isEnableRangeSelection()) {\n doOnce(function () {\n console.warn('AG Grid: Setting `rowDragEntireRow: true` in the gridOptions doesn\\'t work with `enableRangeSelection: true`');\n }, 'rowDragAndRangeSelectionEnabled');\n return;\n }\n var translate = gow.getLocaleTextFunc();\n var rowDragComp = new RowDragComp(function () { return \"1 \" + translate('rowDragRow', 'row'); }, this.rowNode, undefined, gui.element, undefined, true);\n this.createManagedBean(rowDragComp, this.beans.context);\n };\n RowCtrl.prototype.setupFullWidth = function (gui) {\n var pinned = this.getPinnedForContainer(gui.containerType);\n var params = this.createFullWidthParams(gui.element, pinned);\n var masterDetailModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.MasterDetailModule);\n if (this.rowType == RowType$1.FullWidthDetail && !masterDetailModuleLoaded) {\n if (ModuleRegistry.isPackageBased()) {\n console.warn(\"AG Grid: cell renderer 'agDetailCellRenderer' (for master detail) not found. Can only be used with ag-grid-enterprise package.\");\n }\n else {\n console.warn(\"AG Grid: cell renderer 'agDetailCellRenderer' (for master detail) not found. Can only be used with AG Grid Enterprise Module \" + ModuleNames.MasterDetailModule);\n }\n return;\n }\n var compDetails;\n switch (this.rowType) {\n case RowType$1.FullWidthDetail:\n compDetails = this.beans.userComponentFactory.getFullWidthDetailCellRendererDetails(params);\n break;\n case RowType$1.FullWidthGroup:\n compDetails = this.beans.userComponentFactory.getFullWidthGroupCellRendererDetails(params);\n break;\n case RowType$1.FullWidthLoading:\n compDetails = this.beans.userComponentFactory.getFullWidthLoadingCellRendererDetails(params);\n break;\n default:\n compDetails = this.beans.userComponentFactory.getFullWidthCellRendererDetails(params);\n break;\n }\n gui.rowComp.showFullWidth(compDetails);\n };\n RowCtrl.prototype.isPrintLayout = function () {\n return this.printLayout;\n };\n // use by autoWidthCalculator, as it clones the elements\n RowCtrl.prototype.getCellElement = function (column) {\n var cellCtrl = this.getCellCtrl(column);\n return cellCtrl ? cellCtrl.getGui() : null;\n };\n RowCtrl.prototype.executeProcessRowPostCreateFunc = function () {\n var func = this.beans.gridOptionsWrapper.getProcessRowPostCreateFunc();\n if (!func) {\n return;\n }\n var params = {\n eRow: this.centerGui ? this.centerGui.element : undefined,\n ePinnedLeftRow: this.leftGui ? this.leftGui.element : undefined,\n ePinnedRightRow: this.rightGui ? this.rightGui.element : undefined,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex,\n addRenderedRowListener: this.addEventListener.bind(this),\n };\n func(params);\n };\n RowCtrl.prototype.setRowType = function () {\n var isStub = this.rowNode.stub;\n var isFullWidthCell = this.rowNode.isFullWidthCell();\n var isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;\n var pivotMode = this.beans.columnModel.isPivotMode();\n // we only use full width for groups, not footers. it wouldn't make sense to include footers if not looking\n // for totals. if users complain about this, then we should introduce a new property 'footerUseEntireRow'\n // so each can be set independently (as a customer complained about footers getting full width, hence\n // introducing this logic)\n var isGroupRow = !!this.rowNode.group && !this.rowNode.footer;\n var isFullWidthGroup = isGroupRow && this.beans.gridOptionsWrapper.isGroupUseEntireRow(pivotMode);\n if (isStub) {\n this.rowType = RowType$1.FullWidthLoading;\n }\n else if (isDetailCell) {\n this.rowType = RowType$1.FullWidthDetail;\n }\n else if (isFullWidthCell) {\n this.rowType = RowType$1.FullWidth;\n }\n else if (isFullWidthGroup) {\n this.rowType = RowType$1.FullWidthGroup;\n }\n else {\n this.rowType = RowType$1.Normal;\n }\n };\n RowCtrl.prototype.updateColumnLists = function (suppressAnimationFrame) {\n var _this = this;\n if (suppressAnimationFrame === void 0) { suppressAnimationFrame = false; }\n if (this.isFullWidth()) {\n return;\n }\n var noAnimation = suppressAnimationFrame\n || this.beans.gridOptionsWrapper.isSuppressAnimationFrame()\n || this.printLayout;\n if (noAnimation) {\n this.updateColumnListsImpl();\n return;\n }\n if (this.updateColumnListsPending) {\n return;\n }\n this.beans.animationFrameService.createTask(function () {\n if (!_this.active) {\n return;\n }\n _this.updateColumnListsImpl();\n }, this.rowNode.rowIndex, 'createTasksP1');\n this.updateColumnListsPending = true;\n };\n RowCtrl.prototype.createCellCtrls = function (prev, cols, pinned) {\n var _this = this;\n if (pinned === void 0) { pinned = null; }\n var res = {\n list: [],\n map: {}\n };\n var addCell = function (colInstanceId, cellCtrl) {\n res.list.push(cellCtrl);\n res.map[colInstanceId] = cellCtrl;\n };\n cols.forEach(function (col) {\n // we use instanceId's rather than colId as it's possible there is a Column with same Id,\n // but it's referring to a different column instance. Happens a lot with pivot, as pivot col id's are\n // reused eg pivot_0, pivot_1 etc\n var colInstanceId = col.getInstanceId();\n var cellCtrl = prev.map[colInstanceId];\n if (!cellCtrl) {\n cellCtrl = new CellCtrl(col, _this.rowNode, _this.beans, _this);\n }\n addCell(colInstanceId, cellCtrl);\n });\n prev.list.forEach(function (prevCellCtrl) {\n var cellInResult = res.map[prevCellCtrl.getColumn().getInstanceId()] != null;\n if (cellInResult) {\n return;\n }\n var keepCell = !_this.isCellEligibleToBeRemoved(prevCellCtrl, pinned);\n if (keepCell) {\n addCell(prevCellCtrl.getColumn().getInstanceId(), prevCellCtrl);\n return;\n }\n prevCellCtrl.destroy();\n });\n return res;\n };\n RowCtrl.prototype.updateColumnListsImpl = function () {\n var _this = this;\n this.updateColumnListsPending = false;\n var columnModel = this.beans.columnModel;\n if (this.printLayout) {\n this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, columnModel.getAllDisplayedColumns());\n this.leftCellCtrls = { list: [], map: {} };\n this.rightCellCtrls = { list: [], map: {} };\n }\n else {\n var centerCols = columnModel.getViewportCenterColumnsForRow(this.rowNode);\n this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, centerCols);\n var leftCols = columnModel.getDisplayedLeftColumnsForRow(this.rowNode);\n this.leftCellCtrls = this.createCellCtrls(this.leftCellCtrls, leftCols, Constants.PINNED_LEFT);\n var rightCols = columnModel.getDisplayedRightColumnsForRow(this.rowNode);\n this.rightCellCtrls = this.createCellCtrls(this.rightCellCtrls, rightCols, Constants.PINNED_RIGHT);\n }\n this.allRowGuis.forEach(function (item) {\n var cellControls = item.containerType === RowContainerType.LEFT ? _this.leftCellCtrls :\n item.containerType === RowContainerType.RIGHT ? _this.rightCellCtrls : _this.centerCellCtrls;\n item.rowComp.setCellCtrls(cellControls.list);\n });\n };\n RowCtrl.prototype.isCellEligibleToBeRemoved = function (cellCtrl, nextContainerPinned) {\n var REMOVE_CELL = true;\n var KEEP_CELL = false;\n // always remove the cell if it's not rendered or if it's in the wrong pinned location\n var column = cellCtrl.getColumn();\n if (column.getPinned() != nextContainerPinned) {\n return REMOVE_CELL;\n }\n // we want to try and keep editing and focused cells\n var editing = cellCtrl.isEditing();\n var focused = this.beans.focusService.isCellFocused(cellCtrl.getCellPosition());\n var mightWantToKeepCell = editing || focused;\n if (mightWantToKeepCell) {\n var column_1 = cellCtrl.getColumn();\n var displayedColumns = this.beans.columnModel.getAllDisplayedColumns();\n var cellStillDisplayed = displayedColumns.indexOf(column_1) >= 0;\n return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;\n }\n return REMOVE_CELL;\n };\n RowCtrl.prototype.setAnimateFlags = function (animateIn) {\n if (!this.isSticky() && animateIn) {\n var oldRowTopExists = exists(this.rowNode.oldRowTop);\n // if the row had a previous position, we slide it in (animate row top)\n this.slideRowIn = oldRowTopExists;\n // if the row had no previous position, we fade it in (animate\n this.fadeRowIn = !oldRowTopExists;\n }\n else {\n this.slideRowIn = false;\n this.fadeRowIn = false;\n }\n };\n RowCtrl.prototype.isEditing = function () {\n return this.editingRow;\n };\n RowCtrl.prototype.stopRowEditing = function (cancel) {\n this.stopEditing(cancel);\n };\n RowCtrl.prototype.isFullWidth = function () {\n return this.rowType !== RowType$1.Normal;\n };\n RowCtrl.prototype.getRowType = function () {\n return this.rowType;\n };\n RowCtrl.prototype.refreshFullWidth = function () {\n var _this = this;\n // returns 'true' if refresh succeeded\n var tryRefresh = function (gui, pinned) {\n if (!gui) {\n return true;\n } // no refresh needed\n var cellRenderer = gui.rowComp.getFullWidthCellRenderer();\n // no cell renderer, either means comp not yet ready, or comp ready but now reference\n // to it (happens in react when comp is stateless). if comp not ready, we don't need to\n // refresh, however we don't know which one, so we refresh to cover the case where it's\n // react comp without reference so need to force a refresh\n if (!cellRenderer) {\n return false;\n }\n // no refresh method present, so can't refresh, hard refresh needed\n if (!cellRenderer.refresh) {\n return false;\n }\n var params = _this.createFullWidthParams(gui.element, pinned);\n var refreshSucceeded = cellRenderer.refresh(params);\n return refreshSucceeded;\n };\n var fullWidthSuccess = tryRefresh(this.fullWidthGui, null);\n var centerSuccess = tryRefresh(this.centerGui, null);\n var leftSuccess = tryRefresh(this.leftGui, Constants.PINNED_LEFT);\n var rightSuccess = tryRefresh(this.rightGui, Constants.PINNED_RIGHT);\n var allFullWidthRowsRefreshed = fullWidthSuccess && centerSuccess && leftSuccess && rightSuccess;\n return allFullWidthRowsRefreshed;\n };\n RowCtrl.prototype.addListeners = function () {\n this.addManagedListener(this.rowNode, RowNode.EVENT_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_TOP_CHANGED, this.onTopChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_EXPANDED_CHANGED, this.updateExpandedCss.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_HAS_CHILDREN_CHANGED, this.updateExpandedCss.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onRowNodeDataChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.onRowNodeCellChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_HIGHLIGHT_CHANGED, this.onRowNodeHighlightChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_DRAGGING_CHANGED, this.onRowNodeDraggingChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_UI_LEVEL_CHANGED, this.onUiLevelChanged.bind(this));\n var eventService = this.beans.eventService;\n this.addManagedListener(eventService, Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED, this.onPaginationPixelOffsetChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, this.onTopChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_CELL_FOCUSED, this.onCellFocusChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addManagedListener(eventService, Events.EVENT_COLUMN_MOVED, this.onColumnMoved.bind(this));\n this.addListenersForCellComps();\n };\n RowCtrl.prototype.onColumnMoved = function () {\n this.updateColumnLists();\n };\n RowCtrl.prototype.addListenersForCellComps = function () {\n var _this = this;\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onRowIndexChanged(); });\n });\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, function (event) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onCellChanged(event); });\n });\n };\n RowCtrl.prototype.onRowNodeDataChanged = function (event) {\n // if this is an update, we want to refresh, as this will allow the user to put in a transition\n // into the cellRenderer refresh method. otherwise this might be completely new data, in which case\n // we will want to completely replace the cells\n this.getAllCellCtrls().forEach(function (cellCtrl) {\n return cellCtrl.refreshCell({\n suppressFlash: !event.update,\n newData: !event.update\n });\n });\n // check for selected also, as this could be after lazy loading of the row data, in which case\n // the id might of just gotten set inside the row and the row selected state may of changed\n // as a result. this is what happens when selected rows are loaded in virtual pagination.\n // - niall note - since moving to the stub component, this may no longer be true, as replacing\n // the stub component now replaces the entire row\n this.onRowSelected();\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowCtrl.prototype.onRowNodeCellChanged = function () {\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowCtrl.prototype.postProcessCss = function () {\n this.setStylesFromGridOptions();\n this.postProcessClassesFromGridOptions();\n this.postProcessRowClassRules();\n this.postProcessRowDragging();\n };\n RowCtrl.prototype.onRowNodeHighlightChanged = function () {\n var highlighted = this.rowNode.highlighted;\n this.allRowGuis.forEach(function (gui) {\n var aboveOn = highlighted === RowHighlightPosition.Above;\n var belowOn = highlighted === RowHighlightPosition.Below;\n gui.rowComp.addOrRemoveCssClass('ag-row-highlight-above', aboveOn);\n gui.rowComp.addOrRemoveCssClass('ag-row-highlight-below', belowOn);\n });\n };\n RowCtrl.prototype.onRowNodeDraggingChanged = function () {\n this.postProcessRowDragging();\n };\n RowCtrl.prototype.postProcessRowDragging = function () {\n var dragging = this.rowNode.dragging;\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-dragging', dragging); });\n };\n RowCtrl.prototype.updateExpandedCss = function () {\n var expandable = this.rowNode.isExpandable();\n var expanded = this.rowNode.expanded == true;\n this.allRowGuis.forEach(function (gui) {\n gui.rowComp.addOrRemoveCssClass('ag-row-group', expandable);\n gui.rowComp.addOrRemoveCssClass('ag-row-group-expanded', expandable && expanded);\n gui.rowComp.addOrRemoveCssClass('ag-row-group-contracted', expandable && !expanded);\n setAriaExpanded(gui.element, expandable && expanded);\n });\n };\n RowCtrl.prototype.onDisplayedColumnsChanged = function () {\n // we skip animations for onDisplayedColumnChanged, as otherwise the client could remove columns and\n // then set data, and any old valueGetter's (ie from cols that were removed) would still get called.\n this.updateColumnLists(true);\n if (this.beans.columnModel.wasAutoRowHeightEverActive()) {\n this.rowNode.checkAutoHeights();\n }\n };\n RowCtrl.prototype.onVirtualColumnsChanged = function () {\n this.updateColumnLists();\n };\n RowCtrl.prototype.getRowPosition = function () {\n return {\n rowPinned: makeNull(this.rowNode.rowPinned),\n rowIndex: this.rowNode.rowIndex\n };\n };\n RowCtrl.prototype.onKeyboardNavigate = function (keyboardEvent) {\n var currentFullWidthComp = this.allRowGuis.find(function (c) { return c.element.contains(keyboardEvent.target); });\n var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;\n var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n if (!isFullWidthContainerFocused) {\n return;\n }\n var node = this.rowNode;\n var lastFocusedCell = this.beans.focusService.getFocusedCell();\n var cellPosition = {\n rowIndex: node.rowIndex,\n rowPinned: node.rowPinned,\n column: (lastFocusedCell && lastFocusedCell.column)\n };\n this.beans.navigationService.navigateToNextCell(keyboardEvent, keyboardEvent.key, cellPosition, true);\n keyboardEvent.preventDefault();\n };\n RowCtrl.prototype.onTabKeyDown = function (keyboardEvent) {\n if (keyboardEvent.defaultPrevented || isStopPropagationForAgGrid(keyboardEvent)) {\n return;\n }\n var currentFullWidthComp = this.allRowGuis.find(function (c) { return c.element.contains(keyboardEvent.target); });\n var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;\n var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n var nextEl = null;\n if (!isFullWidthContainerFocused) {\n nextEl = this.beans.focusService.findNextFocusableElement(currentFullWidthContainer, false, keyboardEvent.shiftKey);\n }\n if ((this.isFullWidth() && isFullWidthContainerFocused) || !nextEl) {\n this.beans.navigationService.onTabKeyDown(this, keyboardEvent);\n }\n };\n RowCtrl.prototype.onFullWidthRowFocused = function (event) {\n var _a;\n var node = this.rowNode;\n var isFocused = this.isFullWidth() && event.rowIndex === node.rowIndex && event.rowPinned == node.rowPinned;\n var element = this.fullWidthGui ? this.fullWidthGui.element : (_a = this.centerGui) === null || _a === void 0 ? void 0 : _a.element;\n if (!element) {\n return;\n } // can happen with react ui, comp not yet ready\n element.classList.toggle('ag-full-width-focus', isFocused);\n if (isFocused) {\n // we don't scroll normal rows into view when we focus them, so we don't want\n // to scroll Full Width rows either.\n element.focus({ preventScroll: true });\n }\n };\n RowCtrl.prototype.refreshCell = function (cellCtrl) {\n this.centerCellCtrls = this.removeCellCtrl(this.centerCellCtrls, cellCtrl);\n this.leftCellCtrls = this.removeCellCtrl(this.leftCellCtrls, cellCtrl);\n this.rightCellCtrls = this.removeCellCtrl(this.rightCellCtrls, cellCtrl);\n this.updateColumnLists();\n };\n RowCtrl.prototype.removeCellCtrl = function (prev, cellCtrlToRemove) {\n var res = {\n list: [],\n map: {}\n };\n prev.list.forEach(function (cellCtrl) {\n if (cellCtrl === cellCtrlToRemove) {\n return;\n }\n res.list.push(cellCtrl);\n res.map[cellCtrl.getInstanceId()] = cellCtrl;\n });\n return res;\n };\n RowCtrl.prototype.onMouseEvent = function (eventName, mouseEvent) {\n switch (eventName) {\n case 'dblclick':\n this.onRowDblClick(mouseEvent);\n break;\n case 'click':\n this.onRowClick(mouseEvent);\n break;\n case 'touchstart':\n case 'mousedown':\n this.onRowMouseDown(mouseEvent);\n break;\n }\n };\n RowCtrl.prototype.createRowEvent = function (type, domEvent) {\n return {\n type: type,\n node: this.rowNode,\n data: this.rowNode.data,\n rowIndex: this.rowNode.rowIndex,\n rowPinned: this.rowNode.rowPinned,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n event: domEvent\n };\n };\n RowCtrl.prototype.createRowEventWithSource = function (type, domEvent) {\n var event = this.createRowEvent(type, domEvent);\n // when first developing this, we included the rowComp in the event.\n // this seems very weird. so when introducing the event types, i left the 'source'\n // out of the type, and just include the source in the two places where this event\n // was fired (rowClicked and rowDoubleClicked). it doesn't make sense for any\n // users to be using this, as the rowComp isn't an object we expose, so would be\n // very surprising if a user was using it.\n event.source = this;\n return event;\n };\n RowCtrl.prototype.onRowDblClick = function (mouseEvent) {\n if (isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_DOUBLE_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n };\n RowCtrl.prototype.onRowMouseDown = function (mouseEvent) {\n this.lastMouseDownOnDragger = isElementChildOfClass(mouseEvent.target, 'ag-row-drag', 3);\n if (!this.isFullWidth()) {\n return;\n }\n var node = this.rowNode;\n var columnModel = this.beans.columnModel;\n if (this.beans.rangeService) {\n this.beans.rangeService.removeAllCellRanges();\n }\n this.beans.focusService.setFocusedCell({\n rowIndex: node.rowIndex,\n column: columnModel.getAllDisplayedColumns()[0],\n rowPinned: node.rowPinned,\n forceBrowserFocus: true\n });\n };\n RowCtrl.prototype.onRowClick = function (mouseEvent) {\n var stop = isStopPropagationForAgGrid(mouseEvent) || this.lastMouseDownOnDragger;\n if (stop) {\n return;\n }\n var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n // ctrlKey for windows, metaKey for Apple\n var multiSelectKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n var shiftKeyPressed = mouseEvent.shiftKey;\n // we do not allow selecting the group by clicking, when groupSelectChildren, as the logic to\n // handle this is broken. to observe, change the logic below and allow groups to be selected.\n // you will see the group gets selected, then all children get selected, then the grid unselects\n // the children (as the default behaviour when clicking is to unselect other rows) which results\n // in the group getting unselected (as all children are unselected). the correct thing would be\n // to change this, so that children of the selected group are not then subsequenly un-selected.\n var groupSelectsChildren = this.beans.gridOptionsWrapper.isGroupSelectsChildren();\n if (\n // we do not allow selecting groups by clicking (as the click here expands the group), or if it's a detail row,\n // so return if it's a group row\n (groupSelectsChildren && this.rowNode.group) ||\n // this is needed so we don't unselect other rows when we click this row, eg if this row is not selectable,\n // and we click it, the selection should not change (ie any currently selected row should stay selected)\n !this.rowNode.selectable ||\n // we also don't allow selection of pinned rows\n this.rowNode.rowPinned ||\n // if no selection method enabled, do nothing\n !this.beans.gridOptionsWrapper.isRowSelection() ||\n // if click selection suppressed, do nothing\n this.beans.gridOptionsWrapper.isSuppressRowClickSelection()) {\n return;\n }\n var multiSelectOnClick = this.beans.gridOptionsWrapper.isRowMultiSelectWithClick();\n var rowDeselectionWithCtrl = !this.beans.gridOptionsWrapper.isSuppressRowDeselection();\n if (this.rowNode.isSelected()) {\n if (multiSelectOnClick) {\n this.rowNode.setSelectedParams({ newValue: false, event: mouseEvent });\n }\n else if (multiSelectKeyPressed) {\n if (rowDeselectionWithCtrl) {\n this.rowNode.setSelectedParams({ newValue: false, event: mouseEvent });\n }\n }\n else {\n // selected with no multi key, must make sure anything else is unselected\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: !shiftKeyPressed, rangeSelect: shiftKeyPressed, event: mouseEvent });\n }\n }\n else {\n var clearSelection = multiSelectOnClick ? false : !multiSelectKeyPressed;\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: clearSelection, rangeSelect: shiftKeyPressed, event: mouseEvent });\n }\n };\n RowCtrl.prototype.setupDetailRowAutoHeight = function (eDetailGui) {\n var _this = this;\n if (this.rowType !== RowType$1.FullWidthDetail) {\n return;\n }\n if (!this.beans.gridOptionsWrapper.isDetailRowAutoHeight()) {\n return;\n }\n var checkRowSizeFunc = function () {\n var clientHeight = eDetailGui.clientHeight;\n // if the UI is not ready, the height can be 0, which we ignore, as otherwise a flicker will occur\n // as UI goes from the default height, to 0, then to the real height as UI becomes ready. this means\n // it's not possible for have 0 as auto-height, however this is an improbable use case, as even an\n // empty detail grid would still have some styling around it giving at least a few pixels.\n if (clientHeight != null && clientHeight > 0) {\n // we do the update in a timeout, to make sure we are not calling from inside the grid\n // doing another update\n var updateRowHeightFunc = function () {\n _this.rowNode.setRowHeight(clientHeight);\n if (_this.beans.clientSideRowModel) {\n _this.beans.clientSideRowModel.onRowHeightChanged();\n }\n else if (_this.beans.serverSideRowModel) {\n _this.beans.serverSideRowModel.onRowHeightChanged();\n }\n };\n _this.beans.frameworkOverrides.setTimeout(updateRowHeightFunc, 0);\n }\n };\n var resizeObserverDestroyFunc = this.beans.resizeObserverService.observeResize(eDetailGui, checkRowSizeFunc);\n this.addDestroyFunc(resizeObserverDestroyFunc);\n checkRowSizeFunc();\n };\n RowCtrl.prototype.createFullWidthParams = function (eRow, pinned) {\n var _this = this;\n var params = {\n fullWidth: true,\n data: this.rowNode.data,\n node: this.rowNode,\n value: this.rowNode.key,\n valueFormatted: this.rowNode.key,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n // these need to be taken out, as part of 'afterAttached' now\n eGridCell: eRow,\n eParentOfValue: eRow,\n pinned: pinned,\n addRenderedRowListener: this.addEventListener.bind(this),\n registerRowDragger: function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) { return _this.addFullWidthRowDragging(rowDraggerElement, dragStartPixels, value, suppressVisibilityChange); }\n };\n return params;\n };\n RowCtrl.prototype.addFullWidthRowDragging = function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) {\n if (value === void 0) { value = ''; }\n if (!this.isFullWidth()) {\n return;\n }\n var rowDragComp = new RowDragComp(function () { return value; }, this.rowNode, undefined, rowDraggerElement, dragStartPixels, suppressVisibilityChange);\n this.createManagedBean(rowDragComp, this.beans.context);\n };\n RowCtrl.prototype.onUiLevelChanged = function () {\n var newLevel = this.beans.rowCssClassCalculator.calculateRowLevel(this.rowNode);\n if (this.rowLevel != newLevel) {\n var classToAdd_1 = 'ag-row-level-' + newLevel;\n var classToRemove_1 = 'ag-row-level-' + this.rowLevel;\n this.allRowGuis.forEach(function (gui) {\n gui.rowComp.addOrRemoveCssClass(classToAdd_1, true);\n gui.rowComp.addOrRemoveCssClass(classToRemove_1, false);\n });\n }\n this.rowLevel = newLevel;\n };\n RowCtrl.prototype.isFirstRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageFirstRow();\n };\n RowCtrl.prototype.isLastRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageLastRow();\n };\n RowCtrl.prototype.onModelUpdated = function () {\n this.refreshFirstAndLastRowStyles();\n };\n RowCtrl.prototype.refreshFirstAndLastRowStyles = function () {\n var newFirst = this.isFirstRowOnPage();\n var newLast = this.isLastRowOnPage();\n if (this.firstRowOnPage !== newFirst) {\n this.firstRowOnPage = newFirst;\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-first', newFirst); });\n }\n if (this.lastRowOnPage !== newLast) {\n this.lastRowOnPage = newLast;\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-last', newLast); });\n }\n };\n RowCtrl.prototype.stopEditing = function (cancel) {\n var e_1, _a;\n if (cancel === void 0) { cancel = false; }\n // if we are already stopping row edit, there is\n // no need to start this process again.\n if (this.stoppingRowEdit) {\n return;\n }\n var cellControls = this.getAllCellCtrls();\n var isRowEdit = this.editingRow;\n this.stoppingRowEdit = true;\n var fireRowEditEvent = false;\n try {\n for (var cellControls_1 = __values$2(cellControls), cellControls_1_1 = cellControls_1.next(); !cellControls_1_1.done; cellControls_1_1 = cellControls_1.next()) {\n var ctrl = cellControls_1_1.value;\n var valueChanged = ctrl.stopEditing(cancel);\n if (isRowEdit && !cancel && !fireRowEditEvent && valueChanged) {\n fireRowEditEvent = true;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (cellControls_1_1 && !cellControls_1_1.done && (_a = cellControls_1.return)) _a.call(cellControls_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (fireRowEditEvent) {\n var event_1 = this.createRowEvent(Events.EVENT_ROW_VALUE_CHANGED);\n this.beans.eventService.dispatchEvent(event_1);\n }\n if (isRowEdit) {\n this.setEditingRow(false);\n }\n this.stoppingRowEdit = false;\n };\n RowCtrl.prototype.setInlineEditingCss = function (editing) {\n this.allRowGuis.forEach(function (gui) {\n gui.rowComp.addOrRemoveCssClass(\"ag-row-inline-editing\", editing);\n gui.rowComp.addOrRemoveCssClass(\"ag-row-not-inline-editing\", !editing);\n });\n };\n RowCtrl.prototype.setEditingRow = function (value) {\n this.editingRow = value;\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-editing', value); });\n var event = value ?\n this.createRowEvent(Events.EVENT_ROW_EDITING_STARTED)\n : this.createRowEvent(Events.EVENT_ROW_EDITING_STOPPED);\n this.beans.eventService.dispatchEvent(event);\n };\n RowCtrl.prototype.startRowEditing = function (key, charPress, sourceRenderedCell, event) {\n if (key === void 0) { key = null; }\n if (charPress === void 0) { charPress = null; }\n if (sourceRenderedCell === void 0) { sourceRenderedCell = null; }\n if (event === void 0) { event = null; }\n // don't do it if already editing\n if (this.editingRow) {\n return;\n }\n var atLeastOneEditing = this.getAllCellCtrls().reduce(function (prev, cellCtrl) {\n var cellStartedEdit = cellCtrl === sourceRenderedCell;\n if (cellStartedEdit) {\n cellCtrl.startEditing(key, charPress, cellStartedEdit, event);\n }\n else {\n cellCtrl.startEditing(null, null, cellStartedEdit, event);\n }\n if (prev) {\n return true;\n }\n return cellCtrl.isEditing();\n }, false);\n if (atLeastOneEditing) {\n this.setEditingRow(true);\n }\n };\n RowCtrl.prototype.getAllCellCtrls = function () {\n var res = __spread$d(this.centerCellCtrls.list, this.leftCellCtrls.list, this.rightCellCtrls.list);\n return res;\n };\n RowCtrl.prototype.postProcessClassesFromGridOptions = function () {\n var _this = this;\n var cssClasses = this.beans.rowCssClassCalculator.processClassesFromGridOptions(this.rowNode);\n if (!cssClasses || !cssClasses.length) {\n return;\n }\n cssClasses.forEach(function (classStr) {\n _this.allRowGuis.forEach(function (c) { return c.rowComp.addOrRemoveCssClass(classStr, true); });\n });\n };\n RowCtrl.prototype.postProcessRowClassRules = function () {\n var _this = this;\n this.beans.rowCssClassCalculator.processRowClassRules(this.rowNode, function (className) {\n _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass(className, true); });\n }, function (className) {\n _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass(className, false); });\n });\n };\n RowCtrl.prototype.setStylesFromGridOptions = function () {\n var rowStyles = this.processStylesFromGridOptions();\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.setUserStyles(rowStyles); });\n };\n RowCtrl.prototype.getRowBusinessKey = function () {\n var businessKeyForNodeFunc = this.beans.gridOptionsWrapper.getBusinessKeyForNodeFunc();\n if (typeof businessKeyForNodeFunc !== 'function') {\n return;\n }\n return businessKeyForNodeFunc(this.rowNode);\n };\n RowCtrl.prototype.getPinnedForContainer = function (rowContainerType) {\n var pinned = rowContainerType === RowContainerType.LEFT\n ? Constants.PINNED_LEFT\n : rowContainerType === RowContainerType.RIGHT\n ? Constants.PINNED_RIGHT\n : null;\n return pinned;\n };\n RowCtrl.prototype.getInitialRowClasses = function (rowContainerType) {\n var pinned = this.getPinnedForContainer(rowContainerType);\n var params = {\n rowNode: this.rowNode,\n rowFocused: this.rowFocused,\n fadeRowIn: this.fadeRowIn,\n rowIsEven: this.rowNode.rowIndex % 2 === 0,\n rowLevel: this.rowLevel,\n fullWidthRow: this.isFullWidth(),\n firstRowOnPage: this.isFirstRowOnPage(),\n lastRowOnPage: this.isLastRowOnPage(),\n printLayout: this.printLayout,\n expandable: this.rowNode.isExpandable(),\n pinned: pinned\n };\n return this.beans.rowCssClassCalculator.getInitialRowClasses(params);\n };\n RowCtrl.prototype.processStylesFromGridOptions = function () {\n // part 1 - rowStyle\n var rowStyle = this.beans.gridOptionsWrapper.getRowStyle();\n if (rowStyle && typeof rowStyle === 'function') {\n console.warn('AG Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead');\n return;\n }\n // part 1 - rowStyleFunc\n var rowStyleFunc = this.beans.gridOptionsWrapper.getRowStyleFunc();\n var rowStyleFuncResult;\n if (rowStyleFunc) {\n var params = {\n data: this.rowNode.data,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex\n };\n rowStyleFuncResult = rowStyleFunc(params);\n }\n return Object.assign({}, rowStyle, rowStyleFuncResult);\n };\n RowCtrl.prototype.onRowSelected = function () {\n var _this = this;\n // Treat undefined as false, if we pass undefined down it gets treated as toggle class, rather than explicitly\n // setting the required value\n var selected = !!this.rowNode.isSelected();\n this.allRowGuis.forEach(function (gui) {\n gui.rowComp.addOrRemoveCssClass('ag-row-selected', selected);\n setAriaSelected(gui.element, selected ? true : undefined);\n var ariaLabel = _this.createAriaLabel();\n setAriaLabel(gui.element, ariaLabel == null ? '' : ariaLabel);\n });\n };\n RowCtrl.prototype.createAriaLabel = function () {\n var selected = this.rowNode.isSelected();\n if (selected && this.beans.gridOptionsWrapper.isSuppressRowDeselection()) {\n return undefined;\n }\n var translate = this.beans.gridOptionsWrapper.getLocaleTextFunc();\n var label = translate(selected ? 'ariaRowDeselect' : 'ariaRowSelect', \"Press SPACE to \" + (selected ? 'deselect' : 'select') + \" this row.\");\n return label;\n };\n RowCtrl.prototype.isUseAnimationFrameForCreate = function () {\n return this.useAnimationFrameForCreate;\n };\n RowCtrl.prototype.addHoverFunctionality = function (eRow) {\n var _this = this;\n // because we use animation frames to do this, it's possible the row no longer exists\n // by the time we get to add it\n if (!this.active) {\n return;\n }\n // because mouseenter and mouseleave do not propagate, we cannot listen on the gridPanel\n // like we do for all the other mouse events.\n // because of the pinning, we cannot simply add / remove the class based on the eRow. we\n // have to check all eRow's (body & pinned). so the trick is if any of the rows gets a\n // mouse hover, it sets such in the rowNode, and then all three reflect the change as\n // all are listening for event on the row node.\n // step 1 - add listener, to set flag on row node\n this.addManagedListener(eRow, 'mouseenter', function () { return _this.rowNode.onMouseEnter(); });\n this.addManagedListener(eRow, 'mouseleave', function () { return _this.rowNode.onMouseLeave(); });\n // step 2 - listen for changes on row node (which any eRow can trigger)\n this.addManagedListener(this.rowNode, RowNode.EVENT_MOUSE_ENTER, function () {\n // if hover turned off, we don't add the class. we do this here so that if the application\n // toggles this property mid way, we remove the hover form the last row, but we stop\n // adding hovers from that point onwards.\n if (!_this.beans.gridOptionsWrapper.isSuppressRowHoverHighlight()) {\n eRow.classList.add('ag-row-hover');\n }\n });\n this.addManagedListener(this.rowNode, RowNode.EVENT_MOUSE_LEAVE, function () {\n eRow.classList.remove('ag-row-hover');\n });\n };\n // for animation, we don't want to animate entry or exit to a very far away pixel,\n // otherwise the row would move so fast, it would appear to disappear. so this method\n // moves the row closer to the viewport if it is far away, so the row slide in / out\n // at a speed the user can see.\n RowCtrl.prototype.roundRowTopToBounds = function (rowTop) {\n var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();\n var range = gridBodyCon.getScrollFeature().getVScrollPosition();\n var minPixel = this.applyPaginationOffset(range.top, true) - 100;\n var maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;\n return Math.min(Math.max(minPixel, rowTop), maxPixel);\n };\n RowCtrl.prototype.getFrameworkOverrides = function () {\n return this.beans.frameworkOverrides;\n };\n RowCtrl.prototype.onRowHeightChanged = function () {\n // check for exists first - if the user is resetting the row height, then\n // it will be null (or undefined) momentarily until the next time the flatten\n // stage is called where the row will then update again with a new height\n if (this.rowNode.rowHeight == null) {\n return;\n }\n var rowHeight = this.rowNode.rowHeight;\n var defaultRowHeight = this.beans.gridOptionsWrapper.getDefaultRowHeight();\n var isHeightFromFunc = this.beans.gridOptionsWrapper.isGetRowHeightFunction();\n var heightFromFunc = isHeightFromFunc ? this.beans.gridOptionsWrapper.getRowHeightForNode(this.rowNode).height : undefined;\n var lineHeight = heightFromFunc ? Math.min(defaultRowHeight, heightFromFunc) - 2 + \"px\" : undefined;\n this.allRowGuis.forEach(function (gui) {\n gui.element.style.height = rowHeight + \"px\";\n // If the row height is coming from a function, this means some rows can\n // be smaller than the theme had intended. so we set --ag-line-height on\n // the row, which is picked up by the theme CSS and is used in a calc\n // for the CSS line-height property, which makes sure the line-height is\n // not bigger than the row height, otherwise the row text would not fit.\n // We do not use rowNode.rowHeight here, as this could be the result of autoHeight,\n // and we found using the autoHeight result causes a loop, where changing the\n // line-height them impacts the cell height, resulting in a new autoHeight,\n // resulting in a new line-height and so on loop.\n // const heightFromFunc = this.beans.gridOptionsWrapper.getRowHeightForNode(this.rowNode).height;\n if (lineHeight) {\n gui.element.style.setProperty('--ag-line-height', lineHeight);\n }\n });\n };\n RowCtrl.prototype.addEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('AG Grid: Since version 11, event renderedRowRemoved is now called ' + Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.addEventListener.call(this, eventType, listener);\n };\n RowCtrl.prototype.removeEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('AG Grid: Since version 11, event renderedRowRemoved and rowRemoved is now called ' + Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.removeEventListener.call(this, eventType, listener);\n };\n // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.\n RowCtrl.prototype.destroyFirstPass = function () {\n this.active = false;\n // why do we have this method? shouldn't everything below be added as a destroy func beside\n // the corresponding create logic?\n this.setupRemoveAnimation();\n var event = this.createRowEvent(Events.EVENT_VIRTUAL_ROW_REMOVED);\n this.dispatchEvent(event);\n this.beans.eventService.dispatchEvent(event);\n _super.prototype.destroy.call(this);\n };\n RowCtrl.prototype.setupRemoveAnimation = function () {\n // we don't animate sticky rows\n if (this.isSticky()) {\n return;\n }\n var rowStillVisibleJustNotInViewport = this.rowNode.rowTop != null;\n if (rowStillVisibleJustNotInViewport) {\n // if the row is not rendered, but in viewport, it means it has moved,\n // so we animate the row out. if the new location is very far away,\n // the animation will be so fast the row will look like it's just disappeared,\n // so instead we animate to a position just outside the viewport.\n var rowTop = this.roundRowTopToBounds(this.rowNode.rowTop);\n this.setRowTop(rowTop);\n }\n else {\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', true); });\n }\n };\n RowCtrl.prototype.destroySecondPass = function () {\n this.allRowGuis.length = 0;\n var destroyCellCtrls = function (ctrls) {\n ctrls.list.forEach(function (c) { return c.destroy(); });\n return { list: [], map: {} };\n };\n this.centerCellCtrls = destroyCellCtrls(this.centerCellCtrls);\n this.leftCellCtrls = destroyCellCtrls(this.leftCellCtrls);\n this.rightCellCtrls = destroyCellCtrls(this.rightCellCtrls);\n };\n RowCtrl.prototype.setFocusedClasses = function () {\n var _this = this;\n this.allRowGuis.forEach(function (gui) {\n gui.rowComp.addOrRemoveCssClass('ag-row-focus', _this.rowFocused);\n gui.rowComp.addOrRemoveCssClass('ag-row-no-focus', !_this.rowFocused);\n });\n };\n RowCtrl.prototype.onCellFocusChanged = function () {\n var rowFocused = this.beans.focusService.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n if (rowFocused !== this.rowFocused) {\n this.rowFocused = rowFocused;\n this.setFocusedClasses();\n }\n // if we are editing, then moving the focus out of a row will stop editing\n if (!rowFocused && this.editingRow) {\n this.stopEditing(false);\n }\n };\n RowCtrl.prototype.onPaginationChanged = function () {\n var currentPage = this.beans.paginationProxy.getCurrentPage();\n // it is possible this row is in the new page, but the page number has changed, which means\n // it needs to reposition itself relative to the new page\n if (this.paginationPage !== currentPage) {\n this.paginationPage = currentPage;\n this.onTopChanged();\n }\n this.refreshFirstAndLastRowStyles();\n };\n RowCtrl.prototype.onTopChanged = function () {\n this.setRowTop(this.rowNode.rowTop);\n };\n RowCtrl.prototype.onPaginationPixelOffsetChanged = function () {\n // the pixel offset is used when calculating rowTop to set on the row DIV\n this.onTopChanged();\n };\n // applies pagination offset, eg if on second page, and page height is 500px, then removes\n // 500px from the top position, so a row with rowTop 600px is displayed at location 100px.\n // reverse will take the offset away rather than add.\n RowCtrl.prototype.applyPaginationOffset = function (topPx, reverse) {\n if (reverse === void 0) { reverse = false; }\n if (this.rowNode.isRowPinned()) {\n return topPx;\n }\n var pixelOffset = this.beans.paginationProxy.getPixelOffset();\n var multiplier = reverse ? 1 : -1;\n return topPx + (pixelOffset * multiplier);\n };\n RowCtrl.prototype.setRowTop = function (pixels) {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return;\n }\n // need to make sure rowTop is not null, as this can happen if the node was once\n // visible (ie parent group was expanded) but is now not visible\n if (exists(pixels)) {\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n var afterScalingPixels = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);\n var topPx = afterScalingPixels + \"px\";\n this.setRowTopStyle(topPx);\n }\n };\n // the top needs to be set into the DOM element when the element is created, not updated afterwards.\n // otherwise the transition would not work, as it would be transitioning from zero (the unset value).\n // for example, suppose a row that is outside the viewport, then user does a filter to remove other rows\n // and this row now appears in the viewport, and the row moves up (ie it was under the viewport and not rendered,\n // but now is in the viewport) then a new RowComp is created, however it should have it's position initialised\n // to below the viewport, so the row will appear to animate up. if we didn't set the initial position at creation\n // time, the row would animate down (ie from position zero).\n RowCtrl.prototype.getInitialRowTop = function () {\n var suppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();\n return suppressRowTransform ? this.getInitialRowTopShared() : undefined;\n };\n RowCtrl.prototype.getInitialTransform = function () {\n var suppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();\n return suppressRowTransform ? undefined : \"translateY(\" + this.getInitialRowTopShared() + \")\";\n };\n RowCtrl.prototype.getInitialRowTopShared = function () {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return '';\n }\n var rowTop;\n if (this.isSticky()) {\n rowTop = this.rowNode.stickyRowTop;\n }\n else {\n // if sliding in, we take the old row top. otherwise we just set the current row top.\n var pixels = this.slideRowIn ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n // we don't apply scaling if row is pinned\n rowTop = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);\n }\n return rowTop + 'px';\n };\n RowCtrl.prototype.setRowTopStyle = function (topPx) {\n var suppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();\n this.allRowGuis.forEach(function (gui) { return suppressRowTransform ?\n gui.rowComp.setTop(topPx) :\n gui.rowComp.setTransform(\"translateY(\" + topPx + \")\"); });\n };\n RowCtrl.prototype.getRowNode = function () {\n return this.rowNode;\n };\n RowCtrl.prototype.getCellCtrl = function (column) {\n // first up, check for cell directly linked to this column\n var res = null;\n this.getAllCellCtrls().forEach(function (cellCtrl) {\n if (cellCtrl.getColumn() == column) {\n res = cellCtrl;\n }\n });\n if (res != null) {\n return res;\n }\n // second up, if not found, then check for spanned cols.\n // we do this second (and not at the same time) as this is\n // more expensive, as spanning cols is a\n // infrequently used feature so we don't need to do this most\n // of the time\n this.getAllCellCtrls().forEach(function (cellCtrl) {\n if (cellCtrl.getColSpanningList().indexOf(column) >= 0) {\n res = cellCtrl;\n }\n });\n return res;\n };\n RowCtrl.prototype.onRowIndexChanged = function () {\n // we only bother updating if the rowIndex is present. if it is not present, it means this row\n // is child of a group node, and the group node was closed, it's the only way to have no row index.\n // when this happens, row is about to be de-rendered, so we don't care, rowComp is about to die!\n if (this.rowNode.rowIndex != null) {\n this.onCellFocusChanged();\n this.updateRowIndexes();\n this.postProcessCss();\n }\n };\n RowCtrl.prototype.updateRowIndexes = function () {\n var rowIndexStr = this.rowNode.getRowIndexString();\n var headerRowCount = this.beans.headerNavigationService.getHeaderRowCount();\n var rowIsEven = this.rowNode.rowIndex % 2 === 0;\n var ariaRowIndex = headerRowCount + this.rowNode.rowIndex + 1;\n this.allRowGuis.forEach(function (c) {\n c.rowComp.setRowIndex(rowIndexStr);\n c.rowComp.addOrRemoveCssClass('ag-row-even', rowIsEven);\n c.rowComp.addOrRemoveCssClass('ag-row-odd', !rowIsEven);\n setAriaRowIndex(c.element, ariaRowIndex);\n });\n };\n // returns the pinned left container, either the normal one, or the embedded full with one if exists\n RowCtrl.prototype.getPinnedLeftRowElement = function () {\n return this.leftGui ? this.leftGui.element : undefined;\n };\n // returns the pinned right container, either the normal one, or the embedded full with one if exists\n RowCtrl.prototype.getPinnedRightRowElement = function () {\n return this.rightGui ? this.rightGui.element : undefined;\n };\n // returns the body container, either the normal one, or the embedded full with one if exists\n RowCtrl.prototype.getBodyRowElement = function () {\n return this.centerGui ? this.centerGui.element : undefined;\n };\n // returns the full width container\n RowCtrl.prototype.getFullWidthRowElement = function () {\n return this.fullWidthGui ? this.fullWidthGui.element : undefined;\n };\n RowCtrl.DOM_DATA_KEY_ROW_CTRL = 'renderedRow';\n return RowCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1T = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$g = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar RowContainerEventsFeature = /** @class */ (function (_super) {\n __extends$1T(RowContainerEventsFeature, _super);\n function RowContainerEventsFeature(element) {\n var _this = _super.call(this) || this;\n _this.element = element;\n return _this;\n }\n RowContainerEventsFeature.prototype.postConstruct = function () {\n this.addMouseListeners();\n this.mockContextMenuForIPad();\n this.addKeyboardEvents();\n };\n RowContainerEventsFeature.prototype.addKeyboardEvents = function () {\n var _this = this;\n var eventNames = ['keydown', 'keypress'];\n eventNames.forEach(function (eventName) {\n var listener = _this.processKeyboardEvent.bind(_this, eventName);\n _this.addManagedListener(_this.element, eventName, listener);\n });\n };\n RowContainerEventsFeature.prototype.addMouseListeners = function () {\n var _this = this;\n var mouseDownEvent = isEventSupported('touchstart') ? 'touchstart' : 'mousedown';\n var eventNames = ['dblclick', 'contextmenu', 'mouseover', 'mouseout', 'click', mouseDownEvent];\n eventNames.forEach(function (eventName) {\n var listener = _this.processMouseEvent.bind(_this, eventName);\n _this.addManagedListener(_this.element, eventName, listener);\n });\n };\n RowContainerEventsFeature.prototype.processMouseEvent = function (eventName, mouseEvent) {\n if (!this.mouseEventService.isEventFromThisGrid(mouseEvent) ||\n isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var rowComp = this.getRowForEvent(mouseEvent);\n var cellCtrl = this.mouseEventService.getRenderedCellForEvent(mouseEvent);\n if (eventName === \"contextmenu\") {\n this.handleContextMenuMouseEvent(mouseEvent, null, rowComp, cellCtrl);\n }\n else {\n if (cellCtrl) {\n cellCtrl.onMouseEvent(eventName, mouseEvent);\n }\n if (rowComp) {\n rowComp.onMouseEvent(eventName, mouseEvent);\n }\n }\n };\n RowContainerEventsFeature.prototype.mockContextMenuForIPad = function () {\n var _this = this;\n // we do NOT want this when not in iPad, otherwise we will be doing\n if (!isIOSUserAgent()) {\n return;\n }\n var touchListener = new TouchListener(this.element);\n var longTapListener = function (event) {\n var rowComp = _this.getRowForEvent(event.touchEvent);\n var cellComp = _this.mouseEventService.getRenderedCellForEvent(event.touchEvent);\n _this.handleContextMenuMouseEvent(null, event.touchEvent, rowComp, cellComp);\n };\n this.addManagedListener(touchListener, TouchListener.EVENT_LONG_TAP, longTapListener);\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n };\n RowContainerEventsFeature.prototype.getRowForEvent = function (event) {\n var sourceElement = event.target;\n while (sourceElement) {\n var rowCon = this.gridOptionsWrapper.getDomData(sourceElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL);\n if (rowCon) {\n return rowCon;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n };\n RowContainerEventsFeature.prototype.handleContextMenuMouseEvent = function (mouseEvent, touchEvent, rowComp, cellCtrl) {\n var rowNode = rowComp ? rowComp.getRowNode() : null;\n var column = cellCtrl ? cellCtrl.getColumn() : null;\n var value = null;\n if (column) {\n var event_1 = mouseEvent ? mouseEvent : touchEvent;\n cellCtrl.dispatchCellContextMenuEvent(event_1);\n value = this.valueService.getValue(column, rowNode);\n }\n // if user clicked on a cell, anchor to that cell, otherwise anchor to the grid panel\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var anchorToElement = cellCtrl ? cellCtrl.getGui() : gridBodyCon.getGridBodyElement();\n if (this.contextMenuFactory) {\n this.contextMenuFactory.onContextMenu(mouseEvent, touchEvent, rowNode, column, value, anchorToElement);\n }\n };\n RowContainerEventsFeature.prototype.processKeyboardEvent = function (eventName, keyboardEvent) {\n var cellComp = getCtrlForEvent(this.gridOptionsWrapper, keyboardEvent, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n var rowComp = getCtrlForEvent(this.gridOptionsWrapper, keyboardEvent, RowCtrl.DOM_DATA_KEY_ROW_CTRL);\n if (keyboardEvent.defaultPrevented) {\n return;\n }\n if (cellComp) {\n this.processCellKeyboardEvent(cellComp, eventName, keyboardEvent);\n }\n else if (rowComp && rowComp.isFullWidth()) {\n this.processFullWidthRowKeyboardEvent(rowComp, eventName, keyboardEvent);\n }\n };\n RowContainerEventsFeature.prototype.processCellKeyboardEvent = function (cellCtrl, eventName, keyboardEvent) {\n var rowNode = cellCtrl.getRowNode();\n var column = cellCtrl.getColumn();\n var editing = cellCtrl.isEditing();\n var gridProcessingAllowed = !isUserSuppressingKeyboardEvent(this.gridOptionsWrapper, keyboardEvent, rowNode, column, editing);\n if (gridProcessingAllowed) {\n switch (eventName) {\n case 'keydown':\n // first see if it's a scroll key, page up / down, home / end etc\n var wasScrollKey = !editing && this.navigationService.handlePageScrollingKey(keyboardEvent);\n // if not a scroll key, then we pass onto cell\n if (!wasScrollKey) {\n cellCtrl.onKeyDown(keyboardEvent);\n }\n // perform clipboard and undo / redo operations\n this.doGridOperations(keyboardEvent, cellCtrl.isEditing());\n break;\n case 'keypress':\n cellCtrl.onKeyPress(keyboardEvent);\n break;\n }\n }\n if (eventName === 'keydown') {\n var cellKeyDownEvent = cellCtrl.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_DOWN);\n this.eventService.dispatchEvent(cellKeyDownEvent);\n }\n if (eventName === 'keypress') {\n var cellKeyPressEvent = cellCtrl.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_PRESS);\n this.eventService.dispatchEvent(cellKeyPressEvent);\n }\n };\n RowContainerEventsFeature.prototype.processFullWidthRowKeyboardEvent = function (rowComp, eventName, keyboardEvent) {\n var rowNode = rowComp.getRowNode();\n var focusedCell = this.focusService.getFocusedCell();\n var column = (focusedCell && focusedCell.column);\n var gridProcessingAllowed = !isUserSuppressingKeyboardEvent(this.gridOptionsWrapper, keyboardEvent, rowNode, column, false);\n if (gridProcessingAllowed) {\n var key = keyboardEvent.key;\n if (eventName === 'keydown') {\n switch (key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n rowComp.onKeyboardNavigate(keyboardEvent);\n break;\n case KeyCode.TAB:\n rowComp.onTabKeyDown(keyboardEvent);\n }\n }\n }\n if (eventName === 'keydown') {\n var cellKeyDownEvent = rowComp.createRowEvent(Events.EVENT_CELL_KEY_DOWN, keyboardEvent);\n this.eventService.dispatchEvent(cellKeyDownEvent);\n }\n if (eventName === 'keypress') {\n var cellKeyPressEvent = rowComp.createRowEvent(Events.EVENT_CELL_KEY_PRESS, keyboardEvent);\n this.eventService.dispatchEvent(cellKeyPressEvent);\n }\n };\n RowContainerEventsFeature.prototype.doGridOperations = function (keyboardEvent, editing) {\n // check if ctrl or meta key pressed\n if (!keyboardEvent.ctrlKey && !keyboardEvent.metaKey) {\n return;\n }\n // if the cell the event came from is editing, then we do not\n // want to do the default shortcut keys, otherwise the editor\n // (eg a text field) would not be able to do the normal cut/copy/paste\n if (editing) {\n return;\n }\n // for copy / paste, we don't want to execute when the event\n // was from a child grid (happens in master detail)\n if (!this.mouseEventService.isEventFromThisGrid(keyboardEvent)) {\n return;\n }\n var keyCode = normaliseQwertyAzerty(keyboardEvent);\n if (keyCode === KeyCode.A) {\n return this.onCtrlAndA(keyboardEvent);\n }\n if (keyCode === KeyCode.C) {\n return this.onCtrlAndC(keyboardEvent);\n }\n if (keyCode === KeyCode.V) {\n return this.onCtrlAndV();\n }\n if (keyCode === KeyCode.D) {\n return this.onCtrlAndD(keyboardEvent);\n }\n if (keyCode === KeyCode.Z) {\n return this.onCtrlAndZ(keyboardEvent);\n }\n if (keyCode === KeyCode.Y) {\n return this.onCtrlAndY();\n }\n };\n RowContainerEventsFeature.prototype.onCtrlAndA = function (event) {\n var _a = this, pinnedRowModel = _a.pinnedRowModel, paginationProxy = _a.paginationProxy, rangeService = _a.rangeService;\n var PINNED_BOTTOM = Constants.PINNED_BOTTOM, PINNED_TOP = Constants.PINNED_TOP;\n if (rangeService && paginationProxy.isRowsToRender()) {\n var _b = __read$g([\n pinnedRowModel.isEmpty(PINNED_TOP),\n pinnedRowModel.isEmpty(PINNED_BOTTOM)\n ], 2), isEmptyPinnedTop = _b[0], isEmptyPinnedBottom = _b[1];\n var floatingStart = isEmptyPinnedTop ? null : PINNED_TOP;\n var floatingEnd = void 0;\n var rowEnd = void 0;\n if (isEmptyPinnedBottom) {\n floatingEnd = null;\n rowEnd = this.paginationProxy.getRowCount() - 1;\n }\n else {\n floatingEnd = PINNED_BOTTOM;\n rowEnd = pinnedRowModel.getPinnedBottomRowData().length - 1;\n }\n var allDisplayedColumns = this.columnModel.getAllDisplayedColumns();\n if (missingOrEmpty(allDisplayedColumns)) {\n return;\n }\n rangeService.setCellRange({\n rowStartIndex: 0,\n rowStartPinned: floatingStart,\n rowEndIndex: rowEnd,\n rowEndPinned: floatingEnd,\n columnStart: allDisplayedColumns[0],\n columnEnd: last(allDisplayedColumns)\n });\n }\n event.preventDefault();\n };\n RowContainerEventsFeature.prototype.onCtrlAndC = function (event) {\n if (!this.clipboardService || this.gridOptionsWrapper.isEnableCellTextSelection()) {\n return;\n }\n this.clipboardService.copyToClipboard();\n event.preventDefault();\n };\n RowContainerEventsFeature.prototype.onCtrlAndV = function () {\n if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule) && !this.gridOptionsWrapper.isSuppressClipboardPaste()) {\n this.clipboardService.pasteFromClipboard();\n }\n };\n RowContainerEventsFeature.prototype.onCtrlAndD = function (event) {\n if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule) && !this.gridOptionsWrapper.isSuppressClipboardPaste()) {\n this.clipboardService.copyRangeDown();\n }\n event.preventDefault();\n };\n RowContainerEventsFeature.prototype.onCtrlAndZ = function (event) {\n if (!this.gridOptionsWrapper.isUndoRedoCellEditing()) {\n return;\n }\n event.preventDefault();\n if (event.shiftKey) {\n this.undoRedoService.redo();\n }\n else {\n this.undoRedoService.undo();\n }\n };\n RowContainerEventsFeature.prototype.onCtrlAndY = function () {\n this.undoRedoService.redo();\n };\n __decorate$1M([\n Autowired('mouseEventService')\n ], RowContainerEventsFeature.prototype, \"mouseEventService\", void 0);\n __decorate$1M([\n Autowired('valueService')\n ], RowContainerEventsFeature.prototype, \"valueService\", void 0);\n __decorate$1M([\n Optional('contextMenuFactory')\n ], RowContainerEventsFeature.prototype, \"contextMenuFactory\", void 0);\n __decorate$1M([\n Autowired('ctrlsService')\n ], RowContainerEventsFeature.prototype, \"ctrlsService\", void 0);\n __decorate$1M([\n Autowired('navigationService')\n ], RowContainerEventsFeature.prototype, \"navigationService\", void 0);\n __decorate$1M([\n Autowired('focusService')\n ], RowContainerEventsFeature.prototype, \"focusService\", void 0);\n __decorate$1M([\n Autowired('undoRedoService')\n ], RowContainerEventsFeature.prototype, \"undoRedoService\", void 0);\n __decorate$1M([\n Autowired('columnModel')\n ], RowContainerEventsFeature.prototype, \"columnModel\", void 0);\n __decorate$1M([\n Autowired('paginationProxy')\n ], RowContainerEventsFeature.prototype, \"paginationProxy\", void 0);\n __decorate$1M([\n Autowired('pinnedRowModel')\n ], RowContainerEventsFeature.prototype, \"pinnedRowModel\", void 0);\n __decorate$1M([\n Optional('rangeService')\n ], RowContainerEventsFeature.prototype, \"rangeService\", void 0);\n __decorate$1M([\n Optional('clipboardService')\n ], RowContainerEventsFeature.prototype, \"clipboardService\", void 0);\n __decorate$1M([\n PostConstruct\n ], RowContainerEventsFeature.prototype, \"postConstruct\", null);\n return RowContainerEventsFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1S = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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// listens to changes in the center viewport size, for column and row virtualisation,\n// and adjusts grid as necessary. there are two viewports, one for horizontal and one for\n// vertical scrolling.\nvar ViewportSizeFeature = /** @class */ (function (_super) {\n __extends$1S(ViewportSizeFeature, _super);\n function ViewportSizeFeature(centerContainerCtrl) {\n var _this = _super.call(this) || this;\n _this.centerContainerCtrl = centerContainerCtrl;\n return _this;\n }\n ViewportSizeFeature.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n _this.listenForResize();\n });\n this.addManagedListener(this.eventService, Events.EVENT_SCROLLBAR_WIDTH_CHANGED, this.onScrollbarWidthChanged.bind(this));\n };\n ViewportSizeFeature.prototype.listenForResize = function () {\n var _this = this;\n var listener = function () { return _this.onCenterViewportResized(); };\n // centerContainer gets horizontal resizes\n this.centerContainerCtrl.registerViewportResizeListener(listener);\n // eBodyViewport gets vertical resizes\n this.gridBodyCtrl.registerBodyViewportResizeListener(listener);\n };\n ViewportSizeFeature.prototype.onScrollbarWidthChanged = function () {\n this.checkViewportAndScrolls();\n };\n ViewportSizeFeature.prototype.onCenterViewportResized = function () {\n if (this.centerContainerCtrl.isViewportVisible()) {\n this.checkViewportAndScrolls();\n var newWidth = this.centerContainerCtrl.getCenterWidth();\n if (newWidth !== this.centerWidth) {\n this.centerWidth = newWidth;\n this.columnModel.refreshFlexedColumns({ viewportWidth: this.centerWidth, updateBodyWidths: true, fireResizedEvent: true });\n }\n }\n else {\n this.bodyHeight = 0;\n }\n };\n // gets called every time the viewport size changes. we use this to check visibility of scrollbars\n // in the grid panel, and also to check size and position of viewport for row and column virtualisation.\n ViewportSizeFeature.prototype.checkViewportAndScrolls = function () {\n // results in updating anything that depends on scroll showing\n this.updateScrollVisibleService();\n // fires event if height changes, used by PaginationService, HeightScalerService, RowRenderer\n this.checkBodyHeight();\n // check for virtual columns for ColumnController\n this.onHorizontalViewportChanged();\n this.gridBodyCtrl.getScrollFeature().checkScrollLeft();\n };\n ViewportSizeFeature.prototype.getBodyHeight = function () {\n return this.bodyHeight;\n };\n ViewportSizeFeature.prototype.checkBodyHeight = function () {\n var eBodyViewport = this.gridBodyCtrl.getBodyViewportElement();\n var bodyHeight = getInnerHeight(eBodyViewport);\n if (this.bodyHeight !== bodyHeight) {\n this.bodyHeight = bodyHeight;\n var event_1 = {\n type: Events.EVENT_BODY_HEIGHT_CHANGED\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n ViewportSizeFeature.prototype.updateScrollVisibleService = function () {\n // because of column animation (which takes 200ms), we have to do this twice.\n // eg if user removes cols anywhere except at the RHS, then the cols on the RHS\n // will animate to the left to fill the gap. this animation means just after\n // the cols are removed, the remaining cols are still in the original location\n // at the start of the animation, so pre animation the H scrollbar is still needed,\n // but post animation it is not.\n this.updateScrollVisibleServiceImpl();\n setTimeout(this.updateScrollVisibleServiceImpl.bind(this), 500);\n };\n ViewportSizeFeature.prototype.updateScrollVisibleServiceImpl = function () {\n var params = {\n horizontalScrollShowing: this.isHorizontalScrollShowing(),\n verticalScrollShowing: this.gridBodyCtrl.isVerticalScrollShowing()\n };\n this.scrollVisibleService.setScrollsVisible(params);\n // fix - gridComp should just listen to event from above\n this.gridBodyCtrl.setVerticalScrollPaddingVisible(params.verticalScrollShowing);\n };\n ViewportSizeFeature.prototype.isHorizontalScrollShowing = function () {\n var isAlwaysShowHorizontalScroll = this.gridOptionsWrapper.isAlwaysShowHorizontalScroll();\n return isAlwaysShowHorizontalScroll || this.centerContainerCtrl.isViewportHScrollShowing();\n };\n // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n // out the virtual columns again. gets called from following locations:\n // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged, API (doLayout)\n ViewportSizeFeature.prototype.onHorizontalViewportChanged = function () {\n var scrollWidth = this.centerContainerCtrl.getCenterWidth();\n var scrollPosition = this.centerContainerCtrl.getViewportScrollLeft();\n this.columnModel.setViewportPosition(scrollWidth, scrollPosition);\n };\n __decorate$1L([\n Autowired('ctrlsService')\n ], ViewportSizeFeature.prototype, \"ctrlsService\", void 0);\n __decorate$1L([\n Autowired('columnModel')\n ], ViewportSizeFeature.prototype, \"columnModel\", void 0);\n __decorate$1L([\n Autowired('scrollVisibleService')\n ], ViewportSizeFeature.prototype, \"scrollVisibleService\", void 0);\n __decorate$1L([\n PostConstruct\n ], ViewportSizeFeature.prototype, \"postConstruct\", null);\n return ViewportSizeFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1R = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetPinnedLeftWidthFeature = /** @class */ (function (_super) {\n __extends$1R(SetPinnedLeftWidthFeature, _super);\n function SetPinnedLeftWidthFeature(element) {\n var _this = _super.call(this) || this;\n _this.element = element;\n return _this;\n }\n SetPinnedLeftWidthFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, this.onPinnedLeftWidthChanged.bind(this));\n };\n SetPinnedLeftWidthFeature.prototype.onPinnedLeftWidthChanged = function () {\n var leftWidth = this.pinnedWidthService.getPinnedLeftWidth();\n var displayed = leftWidth > 0;\n setDisplayed(this.element, displayed);\n if (displayed) {\n setFixedWidth(this.element, leftWidth);\n }\n };\n __decorate$1K([\n Autowired('pinnedWidthService')\n ], SetPinnedLeftWidthFeature.prototype, \"pinnedWidthService\", void 0);\n __decorate$1K([\n PostConstruct\n ], SetPinnedLeftWidthFeature.prototype, \"postConstruct\", null);\n return SetPinnedLeftWidthFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1Q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetPinnedRightWidthFeature = /** @class */ (function (_super) {\n __extends$1Q(SetPinnedRightWidthFeature, _super);\n function SetPinnedRightWidthFeature(element) {\n var _this = _super.call(this) || this;\n _this.element = element;\n return _this;\n }\n SetPinnedRightWidthFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, this.onPinnedRightWidthChanged.bind(this));\n };\n SetPinnedRightWidthFeature.prototype.onPinnedRightWidthChanged = function () {\n var rightWidth = this.pinnedWidthService.getPinnedRightWidth();\n var displayed = rightWidth > 0;\n setDisplayed(this.element, displayed);\n if (displayed) {\n setFixedWidth(this.element, rightWidth);\n }\n };\n __decorate$1J([\n Autowired('pinnedWidthService')\n ], SetPinnedRightWidthFeature.prototype, \"pinnedWidthService\", void 0);\n __decorate$1J([\n PostConstruct\n ], SetPinnedRightWidthFeature.prototype, \"postConstruct\", null);\n return SetPinnedRightWidthFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1P = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetHeightFeature = /** @class */ (function (_super) {\n __extends$1P(SetHeightFeature, _super);\n function SetHeightFeature(eContainer, eWrapper) {\n var _this = _super.call(this) || this;\n _this.eContainer = eContainer;\n _this.eWrapper = eWrapper;\n return _this;\n }\n SetHeightFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED, this.onHeightChanged.bind(this));\n };\n SetHeightFeature.prototype.onHeightChanged = function () {\n var height = this.maxDivHeightScaler.getUiContainerHeight();\n var heightString = height != null ? height + \"px\" : \"\";\n this.eContainer.style.height = heightString;\n if (this.eWrapper) {\n this.eWrapper.style.height = heightString;\n }\n };\n __decorate$1I([\n Autowired(\"rowContainerHeightService\")\n ], SetHeightFeature.prototype, \"maxDivHeightScaler\", void 0);\n __decorate$1I([\n PostConstruct\n ], SetHeightFeature.prototype, \"postConstruct\", null);\n return SetHeightFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1O = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DragListenerFeature = /** @class */ (function (_super) {\n __extends$1O(DragListenerFeature, _super);\n function DragListenerFeature(eContainer) {\n var _this = _super.call(this) || this;\n _this.eContainer = eContainer;\n return _this;\n }\n DragListenerFeature.prototype.postConstruct = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isEnableRangeSelection() || // no range selection if no property\n missing(this.rangeService) // no range selection if not enterprise version\n ) {\n return;\n }\n var params = {\n eElement: this.eContainer,\n onDragStart: this.rangeService.onDragStart.bind(this.rangeService),\n onDragStop: this.rangeService.onDragStop.bind(this.rangeService),\n onDragging: this.rangeService.onDragging.bind(this.rangeService)\n };\n this.dragService.addDragSource(params);\n this.addDestroyFunc(function () { return _this.dragService.removeDragSource(params); });\n };\n __decorate$1H([\n Optional('rangeService')\n ], DragListenerFeature.prototype, \"rangeService\", void 0);\n __decorate$1H([\n Autowired('dragService')\n ], DragListenerFeature.prototype, \"dragService\", void 0);\n __decorate$1H([\n PostConstruct\n ], DragListenerFeature.prototype, \"postConstruct\", null);\n return DragListenerFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1N = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CenterWidthFeature = /** @class */ (function (_super) {\n __extends$1N(CenterWidthFeature, _super);\n function CenterWidthFeature(callback) {\n var _this = _super.call(this) || this;\n _this.callback = callback;\n return _this;\n }\n CenterWidthFeature.prototype.postConstruct = function () {\n var listener = this.setWidth.bind(this);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, listener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);\n this.setWidth();\n };\n CenterWidthFeature.prototype.setWidth = function () {\n var columnModel = this.columnModel;\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n var centerWidth = columnModel.getBodyContainerWidth();\n var leftWidth = columnModel.getDisplayedColumnsLeftWidth();\n var rightWidth = columnModel.getDisplayedColumnsRightWidth();\n var totalWidth = printLayout ? centerWidth + leftWidth + rightWidth : centerWidth;\n this.callback(totalWidth);\n };\n __decorate$1G([\n Autowired('columnModel')\n ], CenterWidthFeature.prototype, \"columnModel\", void 0);\n __decorate$1G([\n PostConstruct\n ], CenterWidthFeature.prototype, \"postConstruct\", null);\n return CenterWidthFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1M = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$f = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$c = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$f(arguments[i]));\n return ar;\n};\nvar RowContainerName;\n(function (RowContainerName) {\n RowContainerName[\"LEFT\"] = \"left\";\n RowContainerName[\"RIGHT\"] = \"right\";\n RowContainerName[\"CENTER\"] = \"center\";\n RowContainerName[\"FULL_WIDTH\"] = \"fullWidth\";\n RowContainerName[\"TOP_LEFT\"] = \"topLeft\";\n RowContainerName[\"TOP_RIGHT\"] = \"topRight\";\n RowContainerName[\"TOP_CENTER\"] = \"topCenter\";\n RowContainerName[\"TOP_FULL_WIDTH\"] = \"topFullWidth\";\n RowContainerName[\"STICKY_TOP_LEFT\"] = \"stickyTopLeft\";\n RowContainerName[\"STICKY_TOP_RIGHT\"] = \"stickyTopRight\";\n RowContainerName[\"STICKY_TOP_CENTER\"] = \"stickyTopCenter\";\n RowContainerName[\"STICKY_TOP_FULL_WIDTH\"] = \"stickyTopFullWidth\";\n RowContainerName[\"BOTTOM_LEFT\"] = \"bottomLeft\";\n RowContainerName[\"BOTTOM_RIGHT\"] = \"bottomRight\";\n RowContainerName[\"BOTTOM_CENTER\"] = \"bottomCenter\";\n RowContainerName[\"BOTTOM_FULL_WIDTH\"] = \"bottomFullWidth\";\n})(RowContainerName || (RowContainerName = {}));\nvar RowContainerType;\n(function (RowContainerType) {\n RowContainerType[\"LEFT\"] = \"left\";\n RowContainerType[\"RIGHT\"] = \"right\";\n RowContainerType[\"CENTER\"] = \"center\";\n RowContainerType[\"FULL_WIDTH\"] = \"fullWidth\";\n})(RowContainerType || (RowContainerType = {}));\nfunction getRowContainerTypeForName(name) {\n switch (name) {\n case RowContainerName.CENTER:\n case RowContainerName.TOP_CENTER:\n case RowContainerName.STICKY_TOP_CENTER:\n case RowContainerName.BOTTOM_CENTER:\n return RowContainerType.CENTER;\n case RowContainerName.LEFT:\n case RowContainerName.TOP_LEFT:\n case RowContainerName.STICKY_TOP_LEFT:\n case RowContainerName.BOTTOM_LEFT:\n return RowContainerType.LEFT;\n case RowContainerName.RIGHT:\n case RowContainerName.TOP_RIGHT:\n case RowContainerName.STICKY_TOP_RIGHT:\n case RowContainerName.BOTTOM_RIGHT:\n return RowContainerType.RIGHT;\n case RowContainerName.FULL_WIDTH:\n case RowContainerName.TOP_FULL_WIDTH:\n case RowContainerName.STICKY_TOP_FULL_WIDTH:\n case RowContainerName.BOTTOM_FULL_WIDTH:\n return RowContainerType.FULL_WIDTH;\n default:\n throw Error('Invalid Row Container Type');\n }\n}\nvar ContainerCssClasses = convertToMap([\n [RowContainerName.CENTER, 'ag-center-cols-container'],\n [RowContainerName.LEFT, 'ag-pinned-left-cols-container'],\n [RowContainerName.RIGHT, 'ag-pinned-right-cols-container'],\n [RowContainerName.FULL_WIDTH, 'ag-full-width-container'],\n [RowContainerName.TOP_CENTER, 'ag-floating-top-container'],\n [RowContainerName.TOP_LEFT, 'ag-pinned-left-floating-top'],\n [RowContainerName.TOP_RIGHT, 'ag-pinned-right-floating-top'],\n [RowContainerName.TOP_FULL_WIDTH, 'ag-floating-top-full-width-container'],\n [RowContainerName.STICKY_TOP_CENTER, 'ag-sticky-top-container'],\n [RowContainerName.STICKY_TOP_LEFT, 'ag-pinned-left-sticky-top'],\n [RowContainerName.STICKY_TOP_RIGHT, 'ag-pinned-right-sticky-top'],\n [RowContainerName.STICKY_TOP_FULL_WIDTH, 'ag-sticky-top-full-width-container'],\n [RowContainerName.BOTTOM_CENTER, 'ag-floating-bottom-container'],\n [RowContainerName.BOTTOM_LEFT, 'ag-pinned-left-floating-bottom'],\n [RowContainerName.BOTTOM_RIGHT, 'ag-pinned-right-floating-bottom'],\n [RowContainerName.BOTTOM_FULL_WIDTH, 'ag-floating-bottom-full-width-container'],\n]);\nvar ViewportCssClasses = convertToMap([\n [RowContainerName.CENTER, 'ag-center-cols-viewport'],\n [RowContainerName.TOP_CENTER, 'ag-floating-top-viewport'],\n [RowContainerName.STICKY_TOP_CENTER, 'ag-sticky-top-viewport'],\n [RowContainerName.BOTTOM_CENTER, 'ag-floating-bottom-viewport'],\n]);\nvar WrapperCssClasses = convertToMap([\n [RowContainerName.CENTER, 'ag-center-cols-clipper'],\n]);\nvar RowContainerCtrl = /** @class */ (function (_super) {\n __extends$1M(RowContainerCtrl, _super);\n function RowContainerCtrl(name) {\n var _this = _super.call(this) || this;\n _this.name = name;\n return _this;\n }\n RowContainerCtrl.getRowContainerCssClasses = function (name) {\n var containerClass = ContainerCssClasses.get(name);\n var viewportClass = ViewportCssClasses.get(name);\n var wrapperClass = WrapperCssClasses.get(name);\n return { container: containerClass, viewport: viewportClass, wrapper: wrapperClass };\n };\n RowContainerCtrl.getPinned = function (name) {\n switch (name) {\n case RowContainerName.BOTTOM_LEFT:\n case RowContainerName.TOP_LEFT:\n case RowContainerName.STICKY_TOP_LEFT:\n case RowContainerName.LEFT:\n return Constants.PINNED_LEFT;\n case RowContainerName.BOTTOM_RIGHT:\n case RowContainerName.TOP_RIGHT:\n case RowContainerName.STICKY_TOP_RIGHT:\n case RowContainerName.RIGHT:\n return Constants.PINNED_RIGHT;\n default:\n return null;\n }\n };\n RowContainerCtrl.prototype.postConstruct = function () {\n var _this = this;\n this.enableRtl = this.gridOptionsWrapper.isEnableRtl();\n this.embedFullWidthRows = this.gridOptionsWrapper.isEmbedFullWidthRows();\n this.forContainers([RowContainerName.CENTER], function () { return _this.viewportSizeFeature = _this.createManagedBean(new ViewportSizeFeature(_this)); });\n };\n RowContainerCtrl.prototype.registerWithCtrlsService = function () {\n switch (this.name) {\n case RowContainerName.CENTER:\n this.ctrlsService.registerCenterRowContainerCtrl(this);\n break;\n case RowContainerName.LEFT:\n this.ctrlsService.registerLeftRowContainerCtrl(this);\n break;\n case RowContainerName.RIGHT:\n this.ctrlsService.registerRightRowContainerCtrl(this);\n break;\n case RowContainerName.TOP_CENTER:\n this.ctrlsService.registerTopCenterRowContainerCtrl(this);\n break;\n case RowContainerName.TOP_LEFT:\n this.ctrlsService.registerTopLeftRowContainerCon(this);\n break;\n case RowContainerName.TOP_RIGHT:\n this.ctrlsService.registerTopRightRowContainerCtrl(this);\n break;\n case RowContainerName.STICKY_TOP_CENTER:\n this.ctrlsService.registerStickyTopCenterRowContainerCtrl(this);\n break;\n case RowContainerName.STICKY_TOP_LEFT:\n this.ctrlsService.registerStickyTopLeftRowContainerCon(this);\n break;\n case RowContainerName.STICKY_TOP_RIGHT:\n this.ctrlsService.registerStickyTopRightRowContainerCtrl(this);\n break;\n case RowContainerName.BOTTOM_CENTER:\n this.ctrlsService.registerBottomCenterRowContainerCtrl(this);\n break;\n case RowContainerName.BOTTOM_LEFT:\n this.ctrlsService.registerBottomLeftRowContainerCtrl(this);\n break;\n case RowContainerName.BOTTOM_RIGHT:\n this.ctrlsService.registerBottomRightRowContainerCtrl(this);\n break;\n }\n };\n RowContainerCtrl.prototype.forContainers = function (names, callback) {\n if (names.indexOf(this.name) >= 0) {\n callback();\n }\n };\n RowContainerCtrl.prototype.getContainerElement = function () {\n return this.eContainer;\n };\n RowContainerCtrl.prototype.getViewportSizeFeature = function () {\n return this.viewportSizeFeature;\n };\n RowContainerCtrl.prototype.setComp = function (view, eContainer, eViewport, eWrapper) {\n var _this = this;\n this.comp = view;\n this.eContainer = eContainer;\n this.eViewport = eViewport;\n this.eWrapper = eWrapper;\n this.createManagedBean(new RowContainerEventsFeature(this.eContainer));\n this.addPreventScrollWhileDragging();\n this.listenOnDomOrder();\n this.stopHScrollOnPinnedRows();\n var allTopNoFW = [RowContainerName.TOP_CENTER, RowContainerName.TOP_LEFT, RowContainerName.TOP_RIGHT];\n var allStickyTopNoFW = [RowContainerName.STICKY_TOP_CENTER, RowContainerName.STICKY_TOP_LEFT, RowContainerName.STICKY_TOP_RIGHT];\n var allBottomNoFW = [RowContainerName.BOTTOM_CENTER, RowContainerName.BOTTOM_LEFT, RowContainerName.BOTTOM_RIGHT];\n var allMiddleNoFW = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT];\n var allNoFW = __spread$c(allTopNoFW, allBottomNoFW, allMiddleNoFW, allStickyTopNoFW);\n var allMiddle = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT, RowContainerName.FULL_WIDTH];\n var allCenter = [RowContainerName.CENTER, RowContainerName.TOP_CENTER, RowContainerName.STICKY_TOP_CENTER, RowContainerName.BOTTOM_CENTER];\n var allLeft = [RowContainerName.LEFT, RowContainerName.BOTTOM_LEFT, RowContainerName.TOP_LEFT, RowContainerName.STICKY_TOP_LEFT];\n var allRight = [RowContainerName.RIGHT, RowContainerName.BOTTOM_RIGHT, RowContainerName.TOP_RIGHT, RowContainerName.STICKY_TOP_RIGHT];\n this.forContainers(allLeft, function () { return _this.createManagedBean(new SetPinnedLeftWidthFeature(_this.eContainer)); });\n this.forContainers(allRight, function () { return _this.createManagedBean(new SetPinnedRightWidthFeature(_this.eContainer)); });\n this.forContainers(allMiddle, function () { return _this.createManagedBean(new SetHeightFeature(_this.eContainer, _this.eWrapper)); });\n this.forContainers(allNoFW, function () { return _this.createManagedBean(new DragListenerFeature(_this.eContainer)); });\n this.forContainers(allCenter, function () { return _this.createManagedBean(new CenterWidthFeature(function (width) { return _this.comp.setContainerWidth(width + \"px\"); })); });\n this.addListeners();\n this.registerWithCtrlsService();\n };\n RowContainerCtrl.prototype.addListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, function () { return _this.onScrollVisibilityChanged(); });\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, function () { return _this.onDisplayedColumnsChanged(); });\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function () { return _this.onDisplayedColumnsWidthChanged(); });\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_ROWS_CHANGED, function () { return _this.onDisplayedRowsChanged(); });\n this.onScrollVisibilityChanged();\n this.onDisplayedColumnsChanged();\n this.onDisplayedColumnsWidthChanged();\n this.onDisplayedRowsChanged();\n };\n RowContainerCtrl.prototype.listenOnDomOrder = function () {\n var _this = this;\n // sticky section must show rows in set order\n var allStickyContainers = [RowContainerName.STICKY_TOP_CENTER, RowContainerName.STICKY_TOP_LEFT, RowContainerName.STICKY_TOP_RIGHT, RowContainerName.STICKY_TOP_FULL_WIDTH];\n var isStickContainer = allStickyContainers.indexOf(this.name) >= 0;\n if (isStickContainer) {\n this.comp.setDomOrder(true);\n return;\n }\n var listener = function () { return _this.comp.setDomOrder(_this.gridOptionsWrapper.isEnsureDomOrder()); };\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, listener);\n listener();\n };\n // when editing a pinned row, if the cell is half outside the scrollable area, the browser can\n // scroll the column into view. we do not want this, the pinned sections should never scroll.\n // so we listen to scrolls on these containers and reset the scroll if we find one.\n RowContainerCtrl.prototype.stopHScrollOnPinnedRows = function () {\n var _this = this;\n this.forContainers([RowContainerName.TOP_CENTER, RowContainerName.STICKY_TOP_CENTER, RowContainerName.BOTTOM_CENTER], function () {\n var resetScrollLeft = function () { return _this.eViewport.scrollLeft = 0; };\n _this.addManagedListener(_this.eViewport, 'scroll', resetScrollLeft);\n });\n };\n RowContainerCtrl.prototype.onDisplayedColumnsChanged = function () {\n var _this = this;\n this.forContainers([RowContainerName.CENTER], function () { return _this.onHorizontalViewportChanged(); });\n };\n RowContainerCtrl.prototype.onDisplayedColumnsWidthChanged = function () {\n var _this = this;\n this.forContainers([RowContainerName.CENTER], function () { return _this.onHorizontalViewportChanged(); });\n };\n RowContainerCtrl.prototype.onScrollVisibilityChanged = function () {\n if (this.name !== RowContainerName.CENTER) {\n return;\n }\n var visible = this.scrollVisibleService.isHorizontalScrollShowing();\n var scrollbarWidth = visible ? (this.gridOptionsWrapper.getScrollbarWidth() || 0) : 0;\n var height = scrollbarWidth == 0 ? '100%' : \"calc(100% + \" + scrollbarWidth + \"px)\";\n this.comp.setViewportHeight(height);\n };\n // this methods prevents the grid views from being scrolled while the dragService is being used\n // eg. the view should not scroll up and down while dragging rows using the rowDragComp.\n RowContainerCtrl.prototype.addPreventScrollWhileDragging = function () {\n var _this = this;\n var preventScroll = function (e) {\n if (_this.dragService.isDragging()) {\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n };\n this.eContainer.addEventListener('touchmove', preventScroll, { passive: false });\n this.addDestroyFunc(function () { return _this.eContainer.removeEventListener('touchmove', preventScroll); });\n };\n // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n // out the virtual columns again. gets called from following locations:\n // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged, API (doLayout)\n RowContainerCtrl.prototype.onHorizontalViewportChanged = function () {\n var scrollWidth = this.getCenterWidth();\n var scrollPosition = this.getCenterViewportScrollLeft();\n this.columnModel.setViewportPosition(scrollWidth, scrollPosition);\n };\n RowContainerCtrl.prototype.getCenterWidth = function () {\n return getInnerWidth(this.eViewport);\n };\n RowContainerCtrl.prototype.getCenterViewportScrollLeft = function () {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n return getScrollLeft(this.eViewport, this.enableRtl);\n };\n RowContainerCtrl.prototype.registerViewportResizeListener = function (listener) {\n var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eViewport, listener);\n this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n };\n RowContainerCtrl.prototype.isViewportVisible = function () {\n return isVisible(this.eViewport);\n };\n RowContainerCtrl.prototype.isViewportHScrollShowing = function () {\n return isHorizontalScrollShowing(this.eViewport);\n };\n RowContainerCtrl.prototype.getViewportScrollLeft = function () {\n return getScrollLeft(this.eViewport, this.enableRtl);\n };\n RowContainerCtrl.prototype.isHorizontalScrollShowing = function () {\n var isAlwaysShowHorizontalScroll = this.gridOptionsWrapper.isAlwaysShowHorizontalScroll();\n return isAlwaysShowHorizontalScroll || isHorizontalScrollShowing(this.eViewport);\n };\n RowContainerCtrl.prototype.getViewportElement = function () {\n return this.eViewport;\n };\n RowContainerCtrl.prototype.setContainerTranslateX = function (amount) {\n this.eContainer.style.transform = \"translateX(\" + amount + \"px)\";\n };\n RowContainerCtrl.prototype.getHScrollPosition = function () {\n var res = {\n left: this.eViewport.scrollLeft,\n right: this.eViewport.scrollLeft + this.eViewport.offsetWidth\n };\n return res;\n };\n RowContainerCtrl.prototype.setCenterViewportScrollLeft = function (value) {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n setScrollLeft(this.eViewport, value, this.enableRtl);\n };\n RowContainerCtrl.prototype.onDisplayedRowsChanged = function () {\n var _this = this;\n var fullWithContainer = this.name === RowContainerName.TOP_FULL_WIDTH\n || this.name === RowContainerName.STICKY_TOP_FULL_WIDTH\n || this.name === RowContainerName.BOTTOM_FULL_WIDTH\n || this.name === RowContainerName.FULL_WIDTH;\n var doesRowMatch = function (rowCtrl) {\n var fullWidthRow = rowCtrl.isFullWidth();\n var printLayout = _this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n var embedFW = _this.embedFullWidthRows || printLayout;\n var match = fullWithContainer ?\n !embedFW && fullWidthRow\n : embedFW || !fullWidthRow;\n return match;\n };\n // this list contains either all pinned top, center or pinned bottom rows\n var allRowsRegardlessOfFullWidth = this.getRowCtrls();\n // this filters out rows not for this container, eg if it's a full with row, but we are not full with container\n var rowsThisContainer = allRowsRegardlessOfFullWidth.filter(doesRowMatch);\n this.comp.setRowCtrls(rowsThisContainer);\n };\n RowContainerCtrl.prototype.getRowCtrls = function () {\n switch (this.name) {\n case RowContainerName.TOP_CENTER:\n case RowContainerName.TOP_LEFT:\n case RowContainerName.TOP_RIGHT:\n case RowContainerName.TOP_FULL_WIDTH:\n return this.rowRenderer.getTopRowCtrls();\n case RowContainerName.STICKY_TOP_CENTER:\n case RowContainerName.STICKY_TOP_LEFT:\n case RowContainerName.STICKY_TOP_RIGHT:\n case RowContainerName.STICKY_TOP_FULL_WIDTH:\n return this.rowRenderer.getStickyTopRowCtrls();\n case RowContainerName.BOTTOM_CENTER:\n case RowContainerName.BOTTOM_LEFT:\n case RowContainerName.BOTTOM_RIGHT:\n case RowContainerName.BOTTOM_FULL_WIDTH:\n return this.rowRenderer.getBottomRowCtrls();\n default:\n return this.rowRenderer.getRowCtrls();\n }\n };\n __decorate$1F([\n Autowired('scrollVisibleService')\n ], RowContainerCtrl.prototype, \"scrollVisibleService\", void 0);\n __decorate$1F([\n Autowired('dragService')\n ], RowContainerCtrl.prototype, \"dragService\", void 0);\n __decorate$1F([\n Autowired('ctrlsService')\n ], RowContainerCtrl.prototype, \"ctrlsService\", void 0);\n __decorate$1F([\n Autowired('columnModel')\n ], RowContainerCtrl.prototype, \"columnModel\", void 0);\n __decorate$1F([\n Autowired('resizeObserverService')\n ], RowContainerCtrl.prototype, \"resizeObserverService\", void 0);\n __decorate$1F([\n Autowired('rowRenderer')\n ], RowContainerCtrl.prototype, \"rowRenderer\", void 0);\n __decorate$1F([\n PostConstruct\n ], RowContainerCtrl.prototype, \"postConstruct\", null);\n return RowContainerCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1L = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GRID_BODY_TEMPLATE = /* html */ \"
\\n \\n
\\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n
\\n \\n \\n
\";\nvar GridBodyComp = /** @class */ (function (_super) {\n __extends$1L(GridBodyComp, _super);\n function GridBodyComp() {\n return _super.call(this, GRID_BODY_TEMPLATE) || this;\n }\n GridBodyComp.prototype.init = function () {\n var _this = this;\n var setHeight = function (height, element) {\n var heightString = height + \"px\";\n element.style.minHeight = heightString;\n element.style.height = heightString;\n };\n var compProxy = {\n setRowAnimationCssOnBodyViewport: function (cssClass, animate) { return _this.setRowAnimationCssOnBodyViewport(cssClass, animate); },\n setColumnCount: function (count) { return setAriaColCount(_this.getGui(), count); },\n setRowCount: function (count) { return setAriaRowCount(_this.getGui(), count); },\n setTopHeight: function (height) { return setHeight(height, _this.eTop); },\n setBottomHeight: function (height) { return setHeight(height, _this.eBottom); },\n setTopDisplay: function (display) { return _this.eTop.style.display = display; },\n setBottomDisplay: function (display) { return _this.eBottom.style.display = display; },\n setStickyTopHeight: function (height) { return _this.eStickyTop.style.height = height; },\n setStickyTopTop: function (top) { return _this.eStickyTop.style.top = top; },\n setStickyTopWidth: function (width) { return _this.eStickyTop.style.width = width; },\n setColumnMovingCss: function (cssClass, flag) { return _this.addOrRemoveCssClass(CSS_CLASS_COLUMN_MOVING, flag); },\n updateLayoutClasses: function (cssClass, params) {\n var bodyViewportClassList = _this.eBodyViewport.classList;\n bodyViewportClassList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n bodyViewportClassList.toggle(LayoutCssClasses.NORMAL, params.normal);\n bodyViewportClassList.toggle(LayoutCssClasses.PRINT, params.print);\n _this.addOrRemoveCssClass(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n _this.addOrRemoveCssClass(LayoutCssClasses.NORMAL, params.normal);\n _this.addOrRemoveCssClass(LayoutCssClasses.PRINT, params.print);\n },\n setAlwaysVerticalScrollClass: function (cssClass, on) {\n return _this.eBodyViewport.classList.toggle(CSS_CLASS_FORCE_VERTICAL_SCROLL, on);\n },\n registerBodyViewportResizeListener: function (listener) {\n var unsubscribeFromResize = _this.resizeObserverService.observeResize(_this.eBodyViewport, listener);\n _this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n },\n setPinnedTopBottomOverflowY: function (overflow) { return _this.eTop.style.overflowY = _this.eBottom.style.overflowY = overflow; },\n setCellSelectableCss: function (cssClass, selectable) {\n [_this.eTop, _this.eBodyViewport, _this.eBottom]\n .forEach(function (ct) { return ct.classList.toggle(CSS_CLASS_CELL_SELECTABLE, selectable); });\n },\n };\n this.ctrl = this.createManagedBean(new GridBodyCtrl());\n this.ctrl.setComp(compProxy, this.getGui(), this.eBodyViewport, this.eTop, this.eBottom, this.eStickyTop);\n if (this.rangeService || this.gridOptionsWrapper.isRowSelectionMulti()) {\n setAriaMultiSelectable(this.getGui(), true);\n }\n };\n GridBodyComp.prototype.setRowAnimationCssOnBodyViewport = function (cssClass, animateRows) {\n var bodyViewportClassList = this.eBodyViewport.classList;\n bodyViewportClassList.toggle(RowAnimationCssClasses.ANIMATION_ON, animateRows);\n bodyViewportClassList.toggle(RowAnimationCssClasses.ANIMATION_OFF, !animateRows);\n };\n GridBodyComp.prototype.getFloatingTopBottom = function () {\n return [this.eTop, this.eBottom];\n };\n __decorate$1E([\n Autowired('resizeObserverService')\n ], GridBodyComp.prototype, \"resizeObserverService\", void 0);\n __decorate$1E([\n Optional('rangeService')\n ], GridBodyComp.prototype, \"rangeService\", void 0);\n __decorate$1E([\n RefSelector('eBodyViewport')\n ], GridBodyComp.prototype, \"eBodyViewport\", void 0);\n __decorate$1E([\n RefSelector('eStickyTop')\n ], GridBodyComp.prototype, \"eStickyTop\", void 0);\n __decorate$1E([\n RefSelector('eTop')\n ], GridBodyComp.prototype, \"eTop\", void 0);\n __decorate$1E([\n RefSelector('eBottom')\n ], GridBodyComp.prototype, \"eBottom\", void 0);\n __decorate$1E([\n RefSelector('gridHeader')\n ], GridBodyComp.prototype, \"headerRootComp\", void 0);\n __decorate$1E([\n PostConstruct\n ], GridBodyComp.prototype, \"init\", null);\n return GridBodyComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1K = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ScrollVisibleService = /** @class */ (function (_super) {\n __extends$1K(ScrollVisibleService, _super);\n function ScrollVisibleService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ScrollVisibleService.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n };\n ScrollVisibleService.prototype.onDisplayedColumnsChanged = function () {\n this.update();\n };\n ScrollVisibleService.prototype.onDisplayedColumnsWidthChanged = function () {\n this.update();\n };\n ScrollVisibleService.prototype.update = function () {\n // because of column animation (which takes 200ms), we have to do this twice.\n // eg if user removes cols anywhere except at the RHS, then the cols on the RHS\n // will animate to the left to fill the gap. this animation means just after\n // the cols are removed, the remaining cols are still in the original location\n // at the start of the animation, so pre animation the H scrollbar is still needed,\n // but post animation it is not.\n this.updateImpl();\n setTimeout(this.updateImpl.bind(this), 500);\n };\n ScrollVisibleService.prototype.updateImpl = function () {\n var centerRowCtrl = this.ctrlsService.getCenterRowContainerCtrl();\n if (!centerRowCtrl) {\n return;\n }\n var params = {\n horizontalScrollShowing: centerRowCtrl.isHorizontalScrollShowing(),\n verticalScrollShowing: this.isVerticalScrollShowing()\n };\n this.setScrollsVisible(params);\n };\n ScrollVisibleService.prototype.setScrollsVisible = function (params) {\n var atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing ||\n this.verticalScrollShowing !== params.verticalScrollShowing;\n if (atLeastOneDifferent) {\n this.horizontalScrollShowing = params.horizontalScrollShowing;\n this.verticalScrollShowing = params.verticalScrollShowing;\n var event_1 = {\n type: Events.EVENT_SCROLL_VISIBILITY_CHANGED\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n // used by pagination service - to know page height\n ScrollVisibleService.prototype.isHorizontalScrollShowing = function () {\n return this.horizontalScrollShowing;\n };\n // used by header container\n ScrollVisibleService.prototype.isVerticalScrollShowing = function () {\n return this.verticalScrollShowing;\n };\n __decorate$1D([\n Autowired('ctrlsService')\n ], ScrollVisibleService.prototype, \"ctrlsService\", void 0);\n __decorate$1D([\n PostConstruct\n ], ScrollVisibleService.prototype, \"postConstruct\", null);\n ScrollVisibleService = __decorate$1D([\n Bean('scrollVisibleService')\n ], ScrollVisibleService);\n return ScrollVisibleService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1J = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MouseEventService = /** @class */ (function (_super) {\n __extends$1J(MouseEventService, _super);\n function MouseEventService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.gridInstanceId = MouseEventService_1.gridInstanceSequence.next();\n return _this;\n }\n MouseEventService_1 = MouseEventService;\n // we put the instance id onto the main DOM element. this is used for events, when grids are inside grids,\n // so the grid can work out if the even came from this grid or a grid inside this one. see the ctrl+v logic\n // for where this is used.\n MouseEventService.prototype.stampTopLevelGridCompWithGridInstance = function (eGridDiv) {\n eGridDiv[MouseEventService_1.GRID_DOM_KEY] = this.gridInstanceId;\n };\n MouseEventService.prototype.getRenderedCellForEvent = function (event) {\n return getCtrlForEvent(this.gridOptionsWrapper, event, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n };\n // walks the path of the event, and returns true if this grid is the first one that it finds. if doing\n // master / detail grids, and a child grid is found, then it returns false. this stops things like copy/paste\n // getting executed on many grids at the same time.\n MouseEventService.prototype.isEventFromThisGrid = function (event) {\n var res = this.isElementInThisGrid(event.target);\n return res;\n };\n MouseEventService.prototype.isElementInThisGrid = function (element) {\n var pointer = element;\n while (pointer) {\n var instanceId = pointer[MouseEventService_1.GRID_DOM_KEY];\n if (exists(instanceId)) {\n var eventFromThisGrid = instanceId === this.gridInstanceId;\n return eventFromThisGrid;\n }\n pointer = pointer.parentElement;\n }\n return false;\n };\n MouseEventService.prototype.getCellPositionForEvent = function (event) {\n var cellComp = this.getRenderedCellForEvent(event);\n return cellComp ? cellComp.getCellPosition() : null;\n };\n MouseEventService.prototype.getNormalisedPosition = function (event) {\n var gridPanelHasScrolls = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_NORMAL;\n var e = event;\n var x;\n var y;\n if (e.clientX != null || e.clientY != null) {\n x = e.clientX;\n y = e.clientY;\n }\n else {\n x = e.x;\n y = e.y;\n }\n if (gridPanelHasScrolls) {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var vRange = gridBodyCon.getScrollFeature().getVScrollPosition();\n var hRange = gridBodyCon.getScrollFeature().getHScrollPosition();\n x += hRange.left;\n y += vRange.top;\n }\n return { x: x, y: y };\n };\n var MouseEventService_1;\n MouseEventService.gridInstanceSequence = new NumberSequence();\n MouseEventService.GRID_DOM_KEY = '__ag_grid_instance';\n __decorate$1C([\n Autowired('ctrlsService')\n ], MouseEventService.prototype, \"ctrlsService\", void 0);\n MouseEventService = MouseEventService_1 = __decorate$1C([\n Bean('mouseEventService')\n ], MouseEventService);\n return MouseEventService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1I = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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$4 = (undefined && undefined.__assign) || function () {\n __assign$4 = 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$4.apply(this, arguments);\n};\nvar __decorate$1B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar NavigationService = /** @class */ (function (_super) {\n __extends$1I(NavigationService, _super);\n function NavigationService() {\n var _this = _super.call(this) || this;\n _this.onPageDown = throttle(_this.onPageDown, 100);\n _this.onPageUp = throttle(_this.onPageUp, 100);\n return _this;\n }\n NavigationService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.gridBodyCon = p.gridBodyCtrl;\n });\n };\n NavigationService.prototype.handlePageScrollingKey = function (event) {\n var key = event.key;\n var alt = event.altKey;\n var ctrl = event.ctrlKey || event.metaKey;\n var rangeServiceShouldHandleShift = !!this.rangeService && event.shiftKey;\n var currentCell = this.mouseEventService.getCellPositionForEvent(event);\n if (!currentCell) {\n return false;\n }\n var processed = false;\n switch (key) {\n case KeyCode.PAGE_HOME:\n case KeyCode.PAGE_END:\n // handle home and end when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onHomeOrEndKey(key);\n processed = true;\n }\n break;\n case KeyCode.LEFT:\n case KeyCode.RIGHT:\n case KeyCode.UP:\n case KeyCode.DOWN:\n // handle when ctrl is pressed only, if shift is pressed\n // it will be handled by the rangeService\n if (ctrl && !alt && !rangeServiceShouldHandleShift) {\n this.onCtrlUpDownLeftRight(key, currentCell);\n processed = true;\n }\n break;\n case KeyCode.PAGE_DOWN:\n // handle page up and page down when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onPageDown(currentCell);\n processed = true;\n }\n break;\n case KeyCode.PAGE_UP:\n // handle page up and page down when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onPageUp(currentCell);\n processed = true;\n }\n break;\n }\n if (processed) {\n event.preventDefault();\n }\n return processed;\n };\n NavigationService.prototype.navigateTo = function (navigateParams) {\n var scrollIndex = navigateParams.scrollIndex, scrollType = navigateParams.scrollType, scrollColumn = navigateParams.scrollColumn, focusIndex = navigateParams.focusIndex, focusColumn = navigateParams.focusColumn;\n if (exists(scrollColumn) && !scrollColumn.isPinned()) {\n this.gridBodyCon.getScrollFeature().ensureColumnVisible(scrollColumn);\n }\n if (exists(scrollIndex)) {\n this.gridBodyCon.getScrollFeature().ensureIndexVisible(scrollIndex, scrollType);\n }\n // setFocusedCell relies on the browser default focus behavior to scroll the focused cell into view,\n // however, this behavior will cause the cell border to be cut off, or if we have sticky rows, the\n // cell will be completely hidden, so we call ensureIndexVisible without a position to guarantee\n // minimal scroll to get the row into view.\n if (!navigateParams.isAsync) {\n this.gridBodyCon.getScrollFeature().ensureIndexVisible(focusIndex);\n }\n // if we don't do this, the range will be left on the last cell, which will leave the last focused cell\n // highlighted.\n this.focusService.setFocusedCell({ rowIndex: focusIndex, column: focusColumn, rowPinned: null, forceBrowserFocus: true });\n if (this.rangeService) {\n var cellPosition = { rowIndex: focusIndex, rowPinned: null, column: focusColumn };\n this.rangeService.setRangeToCell(cellPosition);\n }\n };\n NavigationService.prototype.onPageDown = function (gridCell) {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n var pixelsInOnePage = this.getViewportHeight();\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentPageBottomPixel = scrollPosition.top + pixelsInOnePage;\n var currentPageBottomRow = this.paginationProxy.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);\n if (this.columnModel.isAutoRowHeightActive()) {\n this.navigateToNextPageWithAutoHeight(gridCell, currentPageBottomRow);\n }\n else {\n this.navigateToNextPage(gridCell, currentPageBottomRow);\n }\n };\n NavigationService.prototype.onPageUp = function (gridCell) {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentPageTopPixel = scrollPosition.top;\n var currentPageTopRow = this.paginationProxy.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);\n if (this.columnModel.isAutoRowHeightActive()) {\n this.navigateToNextPageWithAutoHeight(gridCell, currentPageTopRow, true);\n }\n else {\n this.navigateToNextPage(gridCell, currentPageTopRow, true);\n }\n };\n NavigationService.prototype.navigateToNextPage = function (gridCell, scrollIndex, up) {\n if (up === void 0) { up = false; }\n var _a, _b;\n var pixelsInOnePage = this.getViewportHeight();\n var firstRow = this.paginationProxy.getPageFirstRow();\n var lastRow = this.paginationProxy.getPageLastRow();\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentRowNode = this.paginationProxy.getRow(gridCell.rowIndex);\n var rowPixelDiff = up\n ? (((_a = currentRowNode) === null || _a === void 0 ? void 0 : _a.rowHeight) - pixelsInOnePage - pagingPixelOffset)\n : (pixelsInOnePage - pagingPixelOffset);\n var nextCellPixel = ((_b = currentRowNode) === null || _b === void 0 ? void 0 : _b.rowTop) + rowPixelDiff;\n var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n if (focusIndex === gridCell.rowIndex) {\n var diff = up ? -1 : 1;\n scrollIndex = focusIndex = gridCell.rowIndex + diff;\n }\n var scrollType;\n if (up) {\n scrollType = 'bottom';\n if (focusIndex < firstRow) {\n focusIndex = firstRow;\n }\n if (scrollIndex < firstRow) {\n scrollIndex = firstRow;\n }\n }\n else {\n scrollType = 'top';\n if (focusIndex > lastRow) {\n focusIndex = lastRow;\n }\n if (scrollIndex > lastRow) {\n scrollIndex = lastRow;\n }\n }\n if (this.isRowTallerThanView(focusIndex)) {\n scrollIndex = focusIndex;\n scrollType = 'top';\n }\n this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: scrollType,\n scrollColumn: null,\n focusIndex: focusIndex,\n focusColumn: gridCell.column\n });\n };\n NavigationService.prototype.navigateToNextPageWithAutoHeight = function (gridCell, scrollIndex, up) {\n var _this = this;\n if (up === void 0) { up = false; }\n // because autoHeight will calculate the height of rows after scroll\n // first we scroll towards the required point, then we add a small\n // delay to allow the height to be recalculated, check which index\n // should be focused and then finally navigate to that index.\n // TODO: we should probably have an event fired once to scrollbar has\n // settled and all rowHeights have been calculated instead of relying\n // on a setTimeout of 50ms.\n this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: up ? 'bottom' : 'top',\n scrollColumn: null,\n focusIndex: scrollIndex,\n focusColumn: gridCell.column\n });\n setTimeout(function () {\n var focusIndex = _this.getNextFocusIndexForAutoHeight(gridCell, up);\n _this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: up ? 'bottom' : 'top',\n scrollColumn: null,\n focusIndex: focusIndex,\n focusColumn: gridCell.column,\n isAsync: true\n });\n }, 50);\n };\n NavigationService.prototype.getNextFocusIndexForAutoHeight = function (gridCell, up) {\n if (up === void 0) { up = false; }\n var _a;\n var step = up ? -1 : 1;\n var pixelsInOnePage = this.getViewportHeight();\n var lastRowIndex = this.paginationProxy.getPageLastRow();\n var pixelSum = 0;\n var currentIndex = gridCell.rowIndex;\n while (currentIndex >= 0 && currentIndex <= lastRowIndex) {\n var currentCell = this.paginationProxy.getRow(currentIndex);\n if (currentCell) {\n var currentCellHeight = (_a = currentCell.rowHeight, (_a !== null && _a !== void 0 ? _a : 0));\n if (pixelSum + currentCellHeight > pixelsInOnePage) {\n break;\n }\n pixelSum += currentCellHeight;\n }\n currentIndex += step;\n }\n return Math.max(0, Math.min(currentIndex, lastRowIndex));\n };\n NavigationService.prototype.getViewportHeight = function () {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n var scrollbarWidth = this.gridOptionsWrapper.getScrollbarWidth();\n var pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;\n if (this.ctrlsService.getCenterRowContainerCtrl().isHorizontalScrollShowing()) {\n pixelsInOnePage -= scrollbarWidth;\n }\n return pixelsInOnePage;\n };\n NavigationService.prototype.isRowTallerThanView = function (rowIndex) {\n var rowNode = this.paginationProxy.getRow(rowIndex);\n if (!rowNode) {\n return false;\n }\n var rowHeight = rowNode.rowHeight;\n if (typeof rowHeight !== 'number') {\n return false;\n }\n return rowHeight > this.getViewportHeight();\n };\n NavigationService.prototype.onCtrlUpDownLeftRight = function (key, gridCell) {\n var cellToFocus = this.cellNavigationService.getNextCellToFocus(key, gridCell, true);\n var rowIndex = cellToFocus.rowIndex, column = cellToFocus.column;\n this.navigateTo({\n scrollIndex: rowIndex,\n scrollType: null,\n scrollColumn: column,\n focusIndex: rowIndex,\n focusColumn: column\n });\n };\n // home brings focus to top left cell, end brings focus to bottom right, grid scrolled to bring\n // same cell into view (which means either scroll all the way up, or all the way down).\n NavigationService.prototype.onHomeOrEndKey = function (key) {\n var homeKey = key === KeyCode.PAGE_HOME;\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var columnToSelect = homeKey ? allColumns[0] : last(allColumns);\n var scrollIndex = homeKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();\n this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: null,\n scrollColumn: columnToSelect,\n focusIndex: scrollIndex,\n focusColumn: columnToSelect\n });\n };\n // result of keyboard event\n NavigationService.prototype.onTabKeyDown = function (previous, keyboardEvent) {\n var backwards = keyboardEvent.shiftKey;\n var movedToNextCell = this.tabToNextCellCommon(previous, backwards, keyboardEvent);\n if (movedToNextCell) {\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n keyboardEvent.preventDefault();\n return;\n }\n // if we didn't move to next cell, then need to tab out of the cells, ie to the header (if going\n // backwards)\n if (backwards) {\n var _a = previous.getRowPosition(), rowIndex = _a.rowIndex, rowPinned = _a.rowPinned;\n var firstRow = rowPinned ? rowIndex === 0 : rowIndex === this.paginationProxy.getPageFirstRow();\n if (firstRow) {\n keyboardEvent.preventDefault();\n this.focusService.focusLastHeader(keyboardEvent);\n }\n }\n else {\n // if the case it's a popup editor, the focus is on the editor and not the previous cell.\n // in order for the tab navigation to work, we need to focus the browser back onto the\n // previous cell.\n if (previous instanceof CellCtrl) {\n previous.focusCell(true);\n }\n if (this.focusService.focusNextGridCoreContainer(backwards)) {\n keyboardEvent.preventDefault();\n }\n }\n };\n // comes from API\n NavigationService.prototype.tabToNextCell = function (backwards, event) {\n var focusedCell = this.focusService.getFocusedCell();\n // if no focus, then cannot navigate\n if (!focusedCell) {\n return false;\n }\n var cellOrRow = this.getCellByPosition(focusedCell);\n // if cell is not rendered, means user has scrolled away from the cell\n // or that the focusedCell is a Full Width Row\n if (!cellOrRow) {\n cellOrRow = this.rowRenderer.getRowByPosition(focusedCell);\n if (!cellOrRow || !cellOrRow.isFullWidth()) {\n return false;\n }\n }\n return this.tabToNextCellCommon(cellOrRow, backwards, event);\n };\n NavigationService.prototype.tabToNextCellCommon = function (previous, backwards, event) {\n var editing = previous.isEditing();\n // if cell is not editing, there is still chance row is editing if it's Full Row Editing\n if (!editing && previous instanceof CellCtrl) {\n var cell = previous;\n var row = cell.getRowCtrl();\n if (row) {\n editing = row.isEditing();\n }\n }\n var res;\n if (editing) {\n // if we are editing, we know it's not a Full Width Row (RowComp)\n if (this.gridOptionsWrapper.isFullRowEdit()) {\n res = this.moveToNextEditingRow(previous, backwards, event);\n }\n else {\n res = this.moveToNextEditingCell(previous, backwards, event);\n }\n }\n else {\n res = this.moveToNextCellNotEditing(previous, backwards);\n }\n // if a cell wasn't found, it's possible that focus was moved to the header\n return res || !!this.focusService.getFocusedHeader();\n };\n NavigationService.prototype.moveToNextEditingCell = function (previousCell, backwards, event) {\n if (event === void 0) { event = null; }\n var previousPos = previousCell.getCellPosition();\n // before we stop editing, we need to focus the cell element\n // so the grid doesn't detect that focus has left the grid\n previousCell.getGui().focus();\n // need to do this before getting next cell to edit, in case the next cell\n // has editable function (eg colDef.editable=func() ) and it depends on the\n // result of this cell, so need to save updates from the first edit, in case\n // the value is referenced in the function.\n previousCell.stopEditing();\n // find the next cell to start editing\n var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);\n if (nextCell == null) {\n return false;\n }\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n nextCell.startEditing(null, null, true, event);\n nextCell.focusCell(false);\n return true;\n };\n NavigationService.prototype.moveToNextEditingRow = function (previousCell, backwards, event) {\n if (event === void 0) { event = null; }\n var previousPos = previousCell.getCellPosition();\n // find the next cell to start editing\n var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);\n if (nextCell == null) {\n return false;\n }\n var nextPos = nextCell.getCellPosition();\n var previousEditable = this.isCellEditable(previousPos);\n var nextEditable = this.isCellEditable(nextPos);\n var rowsMatch = nextPos && previousPos.rowIndex === nextPos.rowIndex && previousPos.rowPinned === nextPos.rowPinned;\n if (previousEditable) {\n previousCell.setFocusOutOnEditor();\n }\n if (!rowsMatch) {\n var pRow = previousCell.getRowCtrl();\n pRow.stopEditing();\n var nRow = nextCell.getRowCtrl();\n nRow.startRowEditing(undefined, undefined, undefined, event);\n }\n if (nextEditable) {\n nextCell.setFocusInOnEditor();\n nextCell.focusCell();\n }\n else {\n nextCell.focusCell(true);\n }\n return true;\n };\n NavigationService.prototype.moveToNextCellNotEditing = function (previousCell, backwards) {\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var cellPos;\n if (previousCell instanceof RowCtrl) {\n cellPos = __assign$4(__assign$4({}, previousCell.getRowPosition()), { column: backwards ? displayedColumns[0] : last(displayedColumns) });\n }\n else {\n cellPos = previousCell.getCellPosition();\n }\n // find the next cell to start editing\n var nextCell = this.findNextCellToFocusOn(cellPos, backwards, false);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (nextCell instanceof CellCtrl) {\n nextCell.focusCell(true);\n }\n else if (nextCell) {\n return this.tryToFocusFullWidthRow(nextCell.getRowPosition(), backwards);\n }\n return exists(nextCell);\n };\n // called by the cell, when tab is pressed while editing.\n // @return: RenderedCell when navigation successful, otherwise null\n NavigationService.prototype.findNextCellToFocusOn = function (previousPosition, backwards, startEditing) {\n var nextPosition = previousPosition;\n while (true) {\n if (previousPosition !== nextPosition) {\n previousPosition = nextPosition;\n }\n if (!backwards) {\n nextPosition = this.getLastCellOfColSpan(nextPosition);\n }\n nextPosition = this.cellNavigationService.getNextTabbedCell(nextPosition, backwards);\n // allow user to override what cell to go to next\n var userFunc = this.gridOptionsWrapper.getTabToNextCellFunc();\n if (exists(userFunc)) {\n var params = {\n backwards: backwards,\n editing: startEditing,\n previousCellPosition: previousPosition,\n nextCellPosition: nextPosition ? nextPosition : null\n };\n var userCell = userFunc(params);\n if (exists(userCell)) {\n if (userCell.floating) {\n doOnce(function () { console.warn(\"AG Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?\"); }, 'no floating in userCell');\n userCell.rowPinned = userCell.floating;\n }\n nextPosition = {\n rowIndex: userCell.rowIndex,\n column: userCell.column,\n rowPinned: userCell.rowPinned\n };\n }\n else {\n nextPosition = null;\n }\n }\n // if no 'next cell', means we have got to last cell of grid, so nothing to move to,\n // so bottom right cell going forwards, or top left going backwards\n if (!nextPosition) {\n return null;\n }\n if (nextPosition.rowIndex < 0) {\n var headerLen = this.headerNavigationService.getHeaderRowCount();\n this.focusService.focusHeaderPosition({\n headerPosition: {\n headerRowIndex: headerLen + (nextPosition.rowIndex),\n column: nextPosition.column\n }\n });\n return null;\n }\n // if editing, but cell not editable, skip cell. we do this before we do all of\n // the 'ensure index visible' and 'flush all frames', otherwise if we are skipping\n // a bunch of cells (eg 10 rows) then all the work on ensuring cell visible is useless\n // (except for the last one) which causes grid to stall for a while.\n // note - for full row edit, we do focus non-editable cells, as the row stays in edit mode.\n var fullRowEdit = this.gridOptionsWrapper.isFullRowEdit();\n if (startEditing && !fullRowEdit) {\n var cellIsEditable = this.isCellEditable(nextPosition);\n if (!cellIsEditable) {\n continue;\n }\n }\n this.ensureCellVisible(nextPosition);\n // we have to call this after ensureColumnVisible - otherwise it could be a virtual column\n // or row that is not currently in view, hence the renderedCell would not exist\n var nextCell = this.getCellByPosition(nextPosition);\n // if next cell is fullWidth row, then no rendered cell,\n // as fullWidth rows have no cells, so we skip it\n if (!nextCell) {\n var row = this.rowRenderer.getRowByPosition(nextPosition);\n if (!row || !row.isFullWidth()) {\n continue;\n }\n else {\n return row;\n }\n }\n if (nextCell.isSuppressNavigable()) {\n continue;\n }\n // by default, when we click a cell, it gets selected into a range, so to keep keyboard navigation\n // consistent, we set into range here also.\n if (this.rangeService) {\n this.rangeService.setRangeToCell(nextPosition);\n }\n // we successfully tabbed onto a grid cell, so return true\n return nextCell;\n }\n };\n NavigationService.prototype.isCellEditable = function (cell) {\n var rowNode = this.lookupRowNodeForCell(cell);\n if (rowNode) {\n return cell.column.isCellEditable(rowNode);\n }\n return false;\n };\n NavigationService.prototype.getCellByPosition = function (cellPosition) {\n var rowCtrl = this.rowRenderer.getRowByPosition(cellPosition);\n if (!rowCtrl) {\n return null;\n }\n return rowCtrl.getCellCtrl(cellPosition.column);\n };\n NavigationService.prototype.lookupRowNodeForCell = function (cell) {\n if (cell.rowPinned === Constants.PINNED_TOP) {\n return this.pinnedRowModel.getPinnedTopRow(cell.rowIndex);\n }\n if (cell.rowPinned === Constants.PINNED_BOTTOM) {\n return this.pinnedRowModel.getPinnedBottomRow(cell.rowIndex);\n }\n return this.paginationProxy.getRow(cell.rowIndex);\n };\n // we use index for rows, but column object for columns, as the next column (by index) might not\n // be visible (header grouping) so it's not reliable, so using the column object instead.\n NavigationService.prototype.navigateToNextCell = function (event, key, currentCell, allowUserOverride) {\n // we keep searching for a next cell until we find one. this is how the group rows get skipped\n var nextCell = currentCell;\n var hitEdgeOfGrid = false;\n while (nextCell && (nextCell === currentCell || !this.isValidNavigateCell(nextCell))) {\n // if the current cell is spanning across multiple columns, we need to move\n // our current position to be the last cell on the right before finding the\n // the next target.\n if (this.gridOptionsWrapper.isEnableRtl()) {\n if (key === KeyCode.LEFT) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n }\n else if (key === KeyCode.RIGHT) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n nextCell = this.cellNavigationService.getNextCellToFocus(key, nextCell);\n // eg if going down, and nextCell=undefined, means we are gone past the last row\n hitEdgeOfGrid = missing(nextCell);\n }\n if (hitEdgeOfGrid && event && event.key === KeyCode.UP) {\n nextCell = {\n rowIndex: -1,\n rowPinned: null,\n column: currentCell.column\n };\n }\n // allow user to override what cell to go to next. when doing normal cell navigation (with keys)\n // we allow this, however if processing 'enter after edit' we don't allow override\n if (allowUserOverride) {\n var userFunc = this.gridOptionsWrapper.getNavigateToNextCellFunc();\n if (exists(userFunc)) {\n var params = {\n key: key,\n previousCellPosition: currentCell,\n nextCellPosition: nextCell ? nextCell : null,\n event: event\n };\n var userCell = userFunc(params);\n if (exists(userCell)) {\n if (userCell.floating) {\n doOnce(function () { console.warn(\"AG Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?\"); }, 'no floating in userCell');\n userCell.rowPinned = userCell.floating;\n }\n nextCell = {\n rowPinned: userCell.rowPinned,\n rowIndex: userCell.rowIndex,\n column: userCell.column\n };\n }\n else {\n nextCell = null;\n }\n }\n }\n // no next cell means we have reached a grid boundary, eg left, right, top or bottom of grid\n if (!nextCell) {\n return;\n }\n if (nextCell.rowIndex < 0) {\n var headerLen = this.headerNavigationService.getHeaderRowCount();\n this.focusService.focusHeaderPosition({\n headerPosition: { headerRowIndex: headerLen + (nextCell.rowIndex), column: currentCell.column },\n event: event || undefined\n });\n return;\n }\n // in case we have col spanning we get the cellComp and use it to get the\n // position. This was we always focus the first cell inside the spanning.\n var normalisedPosition = this.getNormalisedPosition(nextCell);\n if (normalisedPosition) {\n this.focusPosition(normalisedPosition);\n }\n else {\n this.tryToFocusFullWidthRow(nextCell);\n }\n };\n NavigationService.prototype.getNormalisedPosition = function (cellPosition) {\n // ensureCellVisible first, to make sure cell at position is rendered.\n this.ensureCellVisible(cellPosition);\n var cellCtrl = this.getCellByPosition(cellPosition);\n // not guaranteed to have a cellComp when using the SSRM as blocks are loading.\n if (!cellCtrl) {\n return null;\n }\n cellPosition = cellCtrl.getCellPosition();\n // we call this again, as nextCell can be different to it's previous value due to Column Spanning\n // (ie if cursor moving from right to left, and cell is spanning columns, then nextCell was the\n // last column in the group, however now it's the first column in the group). if we didn't do\n // ensureCellVisible again, then we could only be showing the last portion (last column) of the\n // merged cells.\n this.ensureCellVisible(cellPosition);\n return cellPosition;\n };\n NavigationService.prototype.tryToFocusFullWidthRow = function (position, backwards) {\n if (backwards === void 0) { backwards = false; }\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var rowComp = this.rowRenderer.getRowByPosition(position);\n if (!rowComp || !rowComp.isFullWidth()) {\n return false;\n }\n var currentCellFocused = this.focusService.getFocusedCell();\n var cellPosition = {\n rowIndex: position.rowIndex,\n rowPinned: position.rowPinned,\n column: position.column || (backwards ? last(displayedColumns) : displayedColumns[0])\n };\n this.focusPosition(cellPosition);\n var fromBelow = currentCellFocused != null ? this.rowPositionUtils.before(cellPosition, currentCellFocused) : false;\n var focusEvent = {\n type: Events.EVENT_FULL_WIDTH_ROW_FOCUSED,\n rowIndex: cellPosition.rowIndex,\n rowPinned: cellPosition.rowPinned,\n column: cellPosition.column,\n isFullWidthCell: true,\n floating: cellPosition.rowPinned,\n fromBelow: fromBelow\n };\n this.eventService.dispatchEvent(focusEvent);\n return true;\n };\n NavigationService.prototype.focusPosition = function (cellPosition) {\n this.focusService.setFocusedCell({\n rowIndex: cellPosition.rowIndex,\n column: cellPosition.column,\n rowPinned: cellPosition.rowPinned,\n forceBrowserFocus: true\n });\n if (this.rangeService) {\n this.rangeService.setRangeToCell(cellPosition);\n }\n };\n NavigationService.prototype.isValidNavigateCell = function (cell) {\n var rowNode = this.rowPositionUtils.getRowNode(cell);\n // we do not allow focusing on detail rows and full width rows\n return !!rowNode;\n };\n NavigationService.prototype.getLastCellOfColSpan = function (cell) {\n var cellCtrl = this.getCellByPosition(cell);\n if (!cellCtrl) {\n return cell;\n }\n var colSpanningList = cellCtrl.getColSpanningList();\n if (colSpanningList.length === 1) {\n return cell;\n }\n return {\n rowIndex: cell.rowIndex,\n column: last(colSpanningList),\n rowPinned: cell.rowPinned\n };\n };\n NavigationService.prototype.ensureCellVisible = function (gridCell) {\n var _a;\n var isGroupStickyEnabled = this.gridOptionsWrapper.isGroupRowsSticky();\n var rowNode = this.rowModel.getRow(gridCell.rowIndex);\n // sticky rows are always visible, so the grid shouldn't scroll to focus them.\n var skipScrollToRow = isGroupStickyEnabled && ((_a = rowNode) === null || _a === void 0 ? void 0 : _a.sticky);\n // this scrolls the row into view\n if (!skipScrollToRow && missing(gridCell.rowPinned)) {\n this.gridBodyCon.getScrollFeature().ensureIndexVisible(gridCell.rowIndex);\n }\n if (!gridCell.column.isPinned()) {\n this.gridBodyCon.getScrollFeature().ensureColumnVisible(gridCell.column);\n }\n };\n __decorate$1B([\n Autowired('mouseEventService')\n ], NavigationService.prototype, \"mouseEventService\", void 0);\n __decorate$1B([\n Autowired('paginationProxy')\n ], NavigationService.prototype, \"paginationProxy\", void 0);\n __decorate$1B([\n Autowired('focusService')\n ], NavigationService.prototype, \"focusService\", void 0);\n __decorate$1B([\n Optional('rangeService')\n ], NavigationService.prototype, \"rangeService\", void 0);\n __decorate$1B([\n Autowired('columnModel')\n ], NavigationService.prototype, \"columnModel\", void 0);\n __decorate$1B([\n Autowired('rowModel')\n ], NavigationService.prototype, \"rowModel\", void 0);\n __decorate$1B([\n Autowired('ctrlsService')\n ], NavigationService.prototype, \"ctrlsService\", void 0);\n __decorate$1B([\n Autowired('rowRenderer')\n ], NavigationService.prototype, \"rowRenderer\", void 0);\n __decorate$1B([\n Autowired('headerNavigationService')\n ], NavigationService.prototype, \"headerNavigationService\", void 0);\n __decorate$1B([\n Autowired(\"rowPositionUtils\")\n ], NavigationService.prototype, \"rowPositionUtils\", void 0);\n __decorate$1B([\n Autowired(\"cellNavigationService\")\n ], NavigationService.prototype, \"cellNavigationService\", void 0);\n __decorate$1B([\n Autowired(\"pinnedRowModel\")\n ], NavigationService.prototype, \"pinnedRowModel\", void 0);\n __decorate$1B([\n PostConstruct\n ], NavigationService.prototype, \"postConstruct\", null);\n NavigationService = __decorate$1B([\n Bean('navigationService')\n ], NavigationService);\n return NavigationService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1H = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PopupEditorWrapper = /** @class */ (function (_super) {\n __extends$1H(PopupEditorWrapper, _super);\n function PopupEditorWrapper(params) {\n var _this = _super.call(this, /* html */ \"
\") || this;\n _this.params = params;\n return _this;\n }\n PopupEditorWrapper.prototype.postConstruct = function () {\n this.gridOptionsWrapper.setDomData(this.getGui(), PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER, true);\n this.addKeyDownListener();\n };\n PopupEditorWrapper.prototype.addKeyDownListener = function () {\n var _this = this;\n var eGui = this.getGui();\n var params = this.params;\n var listener = function (event) {\n if (!isUserSuppressingKeyboardEvent(_this.gridOptionsWrapper, event, params.node, params.column, true)) {\n params.onKeyDown(event);\n }\n };\n this.addManagedListener(eGui, 'keydown', listener);\n };\n PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER = 'popupEditorWrapper';\n __decorate$1A([\n PostConstruct\n ], PopupEditorWrapper.prototype, \"postConstruct\", null);\n return PopupEditorWrapper;\n}(PopupComponent));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1G = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar CellComp = /** @class */ (function (_super) {\n __extends$1G(CellComp, _super);\n function CellComp(beans, cellCtrl, printLayout, eRow, editingRow) {\n var _this = _super.call(this) || this;\n // every time we go into edit mode, or back again, this gets incremented.\n // it's the components way of dealing with the async nature of framework components,\n // so if a framework component takes a while to be created, we know if the object\n // is still relevant when creating is finished. eg we could click edit / un-edit 20\n // times before the first React edit component comes back - we should discard\n // the first 19.\n _this.rendererVersion = 0;\n _this.editorVersion = 0;\n _this.beans = beans;\n _this.column = cellCtrl.getColumn();\n _this.rowNode = cellCtrl.getRowNode();\n _this.rowCtrl = cellCtrl.getRowCtrl();\n _this.eRow = eRow;\n _this.setTemplate(/* html */ \"
\");\n var eGui = _this.getGui();\n _this.forceWrapper = cellCtrl.isForceWrapper();\n _this.refreshWrapper(false);\n var setAttribute = function (name, value, element) {\n var actualElement = element ? element : eGui;\n if (value != null && value != '') {\n actualElement.setAttribute(name, value);\n }\n else {\n actualElement.removeAttribute(name);\n }\n };\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setUserStyles: function (styles) { return addStylesToElement(eGui, styles); },\n getFocusableElement: function () { return _this.getFocusableElement(); },\n setTabIndex: function (tabIndex) { return setAttribute('tabindex', tabIndex.toString()); },\n setRole: function (role) { return setAriaRole(eGui, role); },\n setColId: function (colId) { return setAttribute('col-id', colId); },\n setTitle: function (title) { return setAttribute('title', title); },\n setIncludeSelection: function (include) { return _this.includeSelection = include; },\n setIncludeRowDrag: function (include) { return _this.includeRowDrag = include; },\n setIncludeDndSource: function (include) { return _this.includeDndSource = include; },\n setRenderDetails: function (compDetails, valueToDisplay, force) {\n return _this.setRenderDetails(compDetails, valueToDisplay, force);\n },\n setEditDetails: function (compDetails, popup, position) {\n return _this.setEditDetails(compDetails, popup, position);\n },\n getCellEditor: function () { return _this.cellEditor || null; },\n getCellRenderer: function () { return _this.cellRenderer || null; },\n getParentOfValue: function () { return _this.getParentOfValue(); }\n };\n _this.cellCtrl = cellCtrl;\n cellCtrl.setComp(compProxy, _this.getGui(), _this.eCellWrapper, printLayout, editingRow);\n return _this;\n }\n CellComp.prototype.getParentOfValue = function () {\n if (this.eCellValue) {\n // if not editing, and using wrapper, then value goes in eCellValue\n return this.eCellValue;\n }\n if (this.eCellWrapper) {\n // if editing, and using wrapper, value (cell editor) goes in eCellWrapper\n return this.eCellWrapper;\n }\n // if editing or rendering, and not using wrapper, value (or comp) is directly inside cell\n return this.getGui();\n };\n CellComp.prototype.setRenderDetails = function (compDetails, valueToDisplay, forceNewCellRendererInstance) {\n // this can happen if the users asks for the cell to refresh, but we are not showing the vale as we are editing\n var isInlineEditing = this.cellEditor && !this.cellEditorPopupWrapper;\n if (isInlineEditing) {\n return;\n }\n // this means firstRender will be true for one pass only, as it's initialised to undefined\n this.firstRender = this.firstRender == null;\n // if display template has changed, means any previous Cell Renderer is in the wrong location\n var controlWrapperChanged = this.refreshWrapper(false);\n // all of these have dependencies on the eGui, so only do them after eGui is set\n if (compDetails) {\n var neverRefresh = forceNewCellRendererInstance || controlWrapperChanged;\n var cellRendererRefreshSuccessful = neverRefresh ? false : this.refreshCellRenderer(compDetails);\n if (!cellRendererRefreshSuccessful) {\n this.destroyRenderer();\n this.createCellRendererInstance(compDetails);\n }\n }\n else {\n this.destroyRenderer();\n this.insertValueWithoutCellRenderer(valueToDisplay);\n }\n };\n CellComp.prototype.setEditDetails = function (compDetails, popup, position) {\n if (compDetails) {\n this.createCellEditorInstance(compDetails, popup, position);\n }\n else {\n this.destroyEditor();\n }\n };\n CellComp.prototype.removeControls = function () {\n this.checkboxSelectionComp = this.beans.context.destroyBean(this.checkboxSelectionComp);\n this.dndSourceComp = this.beans.context.destroyBean(this.dndSourceComp);\n this.rowDraggingComp = this.beans.context.destroyBean(this.rowDraggingComp);\n };\n // returns true if wrapper was changed\n CellComp.prototype.refreshWrapper = function (editing) {\n var providingControls = this.includeRowDrag || this.includeDndSource || this.includeSelection;\n var usingWrapper = providingControls || this.forceWrapper;\n var putWrapperIn = usingWrapper && this.eCellWrapper == null;\n if (putWrapperIn) {\n this.eCellWrapper = loadTemplate(\"
\");\n this.getGui().appendChild(this.eCellWrapper);\n }\n var takeWrapperOut = !usingWrapper && this.eCellWrapper != null;\n if (takeWrapperOut) {\n removeFromParent(this.eCellWrapper);\n this.eCellWrapper = undefined;\n }\n this.addOrRemoveCssClass('ag-cell-value', !usingWrapper);\n var usingCellValue = !editing && usingWrapper;\n var putCellValueIn = usingCellValue && this.eCellValue == null;\n if (putCellValueIn) {\n this.eCellValue = loadTemplate(\"\");\n this.eCellWrapper.appendChild(this.eCellValue);\n }\n var takeCellValueOut = !usingCellValue && this.eCellValue != null;\n if (takeCellValueOut) {\n removeFromParent(this.eCellValue);\n this.eCellValue = undefined;\n }\n var templateChanged = putWrapperIn || takeWrapperOut || putCellValueIn || takeCellValueOut;\n if (templateChanged) {\n this.removeControls();\n }\n if (!editing && providingControls) {\n this.addControls();\n }\n return templateChanged;\n };\n CellComp.prototype.addControls = function () {\n var id = this.eCellValue.id = \"cell-\" + this.getCompId();\n var describedByIds = [];\n setAriaHidden(this.eCellWrapper, true);\n if (this.includeRowDrag) {\n if (this.rowDraggingComp == null) {\n this.rowDraggingComp = this.cellCtrl.createRowDragComp();\n if (this.rowDraggingComp) {\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(this.rowDraggingComp.getGui(), this.eCellValue);\n }\n }\n }\n if (this.includeDndSource) {\n if (this.dndSourceComp == null) {\n this.dndSourceComp = this.cellCtrl.createDndSource();\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(this.dndSourceComp.getGui(), this.eCellValue);\n }\n }\n if (this.includeSelection) {\n if (this.checkboxSelectionComp == null) {\n this.checkboxSelectionComp = this.cellCtrl.createSelectionCheckbox();\n this.eCellWrapper.insertBefore(this.checkboxSelectionComp.getGui(), this.eCellValue);\n }\n describedByIds.push(this.checkboxSelectionComp.getCheckboxId());\n }\n describedByIds.push(id);\n setAriaDescribedBy(this.getGui(), describedByIds.join(' '));\n };\n CellComp.prototype.createCellEditorInstance = function (compDetails, popup, position) {\n var _this = this;\n var versionCopy = this.editorVersion;\n var cellEditorPromise = compDetails.newAgStackInstance();\n if (!cellEditorPromise) {\n return;\n } // if empty, userComponentFactory already did a console message\n var params = compDetails.params;\n cellEditorPromise.then(function (c) { return _this.afterCellEditorCreated(versionCopy, c, params, popup, position); });\n // if we don't do this, and editor component is async, then there will be a period\n // when the component isn't present and keyboard navigation won't work - so example\n // of user hitting tab quickly (more quickly than renderers getting created) won't work\n var cellEditorAsync = missing(this.cellEditor);\n if (cellEditorAsync && params.cellStartedEdit) {\n this.cellCtrl.focusCell(true);\n }\n };\n CellComp.prototype.insertValueWithoutCellRenderer = function (valueToDisplay) {\n var eParent = this.getParentOfValue();\n clearElement(eParent);\n var escapedValue = valueToDisplay != null ? escapeString(valueToDisplay) : null;\n if (escapedValue != null) {\n eParent.innerHTML = escapedValue;\n }\n };\n CellComp.prototype.destroyEditorAndRenderer = function () {\n this.destroyRenderer();\n this.destroyEditor();\n };\n CellComp.prototype.destroyRenderer = function () {\n var context = this.beans.context;\n this.cellRenderer = context.destroyBean(this.cellRenderer);\n removeFromParent(this.cellRendererGui);\n this.cellRendererGui = null;\n this.rendererVersion++;\n };\n CellComp.prototype.destroyEditor = function () {\n var context = this.beans.context;\n if (this.hideEditorPopup) {\n this.hideEditorPopup();\n }\n this.hideEditorPopup = undefined;\n this.cellEditor = context.destroyBean(this.cellEditor);\n this.cellEditorPopupWrapper = context.destroyBean(this.cellEditorPopupWrapper);\n removeFromParent(this.cellEditorGui);\n this.cellEditorGui = null;\n this.editorVersion++;\n };\n CellComp.prototype.refreshCellRenderer = function (compClassAndParams) {\n if (this.cellRenderer == null || this.cellRenderer.refresh == null) {\n return false;\n }\n // if different Cell Renderer configured this time (eg user is using selector, and\n // returns different component) then don't refresh, force recreate of Cell Renderer\n if (this.cellRendererClass !== compClassAndParams.componentClass) {\n return false;\n }\n // take any custom params off of the user\n var result = this.cellRenderer.refresh(compClassAndParams.params);\n // NOTE on undefined: previous version of the cellRenderer.refresh() interface\n // returned nothing, if the method existed, we assumed it refreshed. so for\n // backwards compatibility, we assume if method exists and returns nothing,\n // that it was successful.\n return result === true || result === undefined;\n };\n CellComp.prototype.createCellRendererInstance = function (compDetails) {\n var _this = this;\n // never use task service if angularCompileRows=true, as that assume the cell renderers\n // are finished when the row is created. also we never use it if animation frame service\n // is turned off.\n // and lastly we never use it if doing auto-height, as the auto-height service checks the\n // row height directly after the cell is created, it doesn't wait around for the tasks to complete\n var angularCompileRows = this.beans.gridOptionsWrapper.isAngularCompileRows();\n var suppressAnimationFrame = this.beans.gridOptionsWrapper.isSuppressAnimationFrame();\n var useTaskService = !angularCompileRows && !suppressAnimationFrame;\n var displayComponentVersionCopy = this.rendererVersion;\n var componentClass = compDetails.componentClass;\n var createCellRendererFunc = function () {\n var staleTask = _this.rendererVersion !== displayComponentVersionCopy || !_this.isAlive();\n if (staleTask) {\n return;\n }\n // this can return null in the event that the user has switched from a renderer component to nothing, for example\n // when using a cellRendererSelect to return a component or null depending on row data etc\n var componentPromise = compDetails.newAgStackInstance();\n var callback = _this.afterCellRendererCreated.bind(_this, displayComponentVersionCopy, componentClass);\n if (componentPromise) {\n componentPromise.then(callback);\n }\n };\n // we only use task service when rendering for first time, which means it is not used when doing edits.\n // if we changed this (always use task service) would make sense, however it would break tests, possibly\n // test of users.\n if (useTaskService && this.firstRender) {\n this.beans.animationFrameService.createTask(createCellRendererFunc, this.rowNode.rowIndex, 'createTasksP2');\n }\n else {\n createCellRendererFunc();\n }\n };\n CellComp.prototype.getCtrl = function () {\n return this.cellCtrl;\n };\n CellComp.prototype.getRowCtrl = function () {\n return this.rowCtrl;\n };\n CellComp.prototype.getCellRenderer = function () {\n return this.cellRenderer;\n };\n CellComp.prototype.getCellEditor = function () {\n return this.cellEditor;\n };\n CellComp.prototype.afterCellRendererCreated = function (cellRendererVersion, cellRendererClass, cellRenderer) {\n var staleTask = !this.isAlive() || cellRendererVersion !== this.rendererVersion;\n if (staleTask) {\n this.beans.context.destroyBean(cellRenderer);\n return;\n }\n this.cellRenderer = cellRenderer;\n this.cellRendererClass = cellRendererClass;\n this.cellRendererGui = this.cellRenderer.getGui();\n if (this.cellRendererGui != null) {\n var eParent = this.getParentOfValue();\n clearElement(eParent);\n eParent.appendChild(this.cellRendererGui);\n }\n };\n CellComp.prototype.afterCellEditorCreated = function (requestVersion, cellEditor, params, popup, position) {\n // if editingCell=false, means user cancelled the editor before component was ready.\n // if versionMismatch, then user cancelled the edit, then started the edit again, and this\n // is the first editor which is now stale.\n var staleComp = requestVersion !== this.editorVersion;\n if (staleComp) {\n this.beans.context.destroyBean(cellEditor);\n return;\n }\n var editingCancelledByUserComp = cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart();\n if (editingCancelledByUserComp) {\n this.beans.context.destroyBean(cellEditor);\n this.cellCtrl.stopEditing();\n return;\n }\n if (!cellEditor.getGui) {\n console.warn(\"AG Grid: cellEditor for column \" + this.column.getId() + \" is missing getGui() method\");\n this.beans.context.destroyBean(cellEditor);\n return;\n }\n this.cellEditor = cellEditor;\n this.cellEditorGui = cellEditor.getGui();\n var cellEditorInPopup = popup || (cellEditor.isPopup !== undefined && cellEditor.isPopup());\n if (cellEditorInPopup) {\n if (!popup) {\n this.cellCtrl.hackSayEditingInPopup();\n }\n this.addPopupCellEditor(params, position);\n }\n else {\n this.addInCellEditor();\n }\n if (cellEditor.afterGuiAttached) {\n cellEditor.afterGuiAttached();\n }\n };\n CellComp.prototype.addInCellEditor = function () {\n var eGui = this.getGui();\n // if focus is inside the cell, we move focus to the cell itself\n // before removing it's contents, otherwise errors could be thrown.\n var eDocument = this.beans.gridOptionsWrapper.getDocument();\n if (eGui.contains(eDocument.activeElement)) {\n eGui.focus();\n }\n this.destroyRenderer();\n this.refreshWrapper(true);\n this.clearParentOfValue();\n if (this.cellEditorGui) {\n var eParent = this.getParentOfValue();\n eParent.appendChild(this.cellEditorGui);\n }\n };\n CellComp.prototype.addPopupCellEditor = function (params, position) {\n var _this = this;\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n console.warn('AG Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both ' +\n '- either turn off fullRowEdit, or stop using popup editors.');\n }\n var cellEditor = this.cellEditor;\n // if a popup, then we wrap in a popup editor and return the popup\n this.cellEditorPopupWrapper = this.beans.context.createBean(new PopupEditorWrapper(params));\n var ePopupGui = this.cellEditorPopupWrapper.getGui();\n if (this.cellEditorGui) {\n ePopupGui.appendChild(this.cellEditorGui);\n }\n var popupService = this.beans.popupService;\n var useModelPopup = this.beans.gridOptionsWrapper.isStopEditingWhenCellsLoseFocus();\n // see if position provided by colDef, if not then check old way of method on cellComp\n var positionToUse = position != null ? position : cellEditor.getPopupPosition ? cellEditor.getPopupPosition() : 'over';\n var positionParams = {\n column: this.column,\n rowNode: this.rowNode,\n type: 'popupCellEditor',\n eventSource: this.getGui(),\n ePopup: ePopupGui,\n keepWithinBounds: true\n };\n var positionCallback = positionToUse === 'under' ?\n popupService.positionPopupUnderComponent.bind(popupService, positionParams)\n : popupService.positionPopupOverComponent.bind(popupService, positionParams);\n var translate = this.beans.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = popupService.addPopup({\n modal: useModelPopup,\n eChild: ePopupGui,\n closeOnEsc: true,\n closedCallback: function () { _this.cellCtrl.onPopupEditorClosed(); },\n anchorToElement: this.getGui(),\n positionCallback: positionCallback,\n ariaLabel: translate('ariaLabelCellEditor', 'Cell Editor')\n });\n if (addPopupRes) {\n this.hideEditorPopup = addPopupRes.hideFunc;\n }\n };\n CellComp.prototype.detach = function () {\n this.eRow.removeChild(this.getGui());\n };\n // if the row is also getting destroyed, then we don't need to remove from dom,\n // as the row will also get removed, so no need to take out the cells from the row\n // if the row is going (removing is an expensive operation, so only need to remove\n // the top part)\n //\n // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.\n CellComp.prototype.destroy = function () {\n this.cellCtrl.stopEditing();\n this.destroyEditorAndRenderer();\n this.removeControls();\n _super.prototype.destroy.call(this);\n };\n CellComp.prototype.clearParentOfValue = function () {\n var eGui = this.getGui();\n // if focus is inside the cell, we move focus to the cell itself\n // before removing it's contents, otherwise errors could be thrown.\n var eDocument = this.beans.gridOptionsWrapper.getDocument();\n if (eGui.contains(eDocument.activeElement) && browserSupportsPreventScroll()) {\n eGui.focus({ preventScroll: true });\n }\n clearElement(this.getParentOfValue());\n };\n return CellComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1F = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RowComp = /** @class */ (function (_super) {\n __extends$1F(RowComp, _super);\n function RowComp(ctrl, beans, containerType) {\n var _this = _super.call(this) || this;\n _this.cellComps = {};\n _this.beans = beans;\n _this.rowCtrl = ctrl;\n _this.setTemplate(/* html */ \"
\");\n var eGui = _this.getGui();\n var style = eGui.style;\n var compProxy = {\n setDomOrder: function (domOrder) { return _this.domOrder = domOrder; },\n setCellCtrls: function (cellCtrls) { return _this.setCellCtrls(cellCtrls); },\n showFullWidth: function (compDetails) { return _this.showFullWidth(compDetails); },\n getFullWidthCellRenderer: function () { return _this.getFullWidthCellRenderer(); },\n addOrRemoveCssClass: function (name, on) { return _this.addOrRemoveCssClass(name, on); },\n setUserStyles: function (styles) { return addStylesToElement(eGui, styles); },\n setTop: function (top) { return style.top = top; },\n setTransform: function (transform) { return style.transform = transform; },\n setRowIndex: function (rowIndex) { return eGui.setAttribute('row-index', rowIndex); },\n setRole: function (role) { return setAriaRole(eGui, role); },\n setRowId: function (rowId) { return eGui.setAttribute('row-id', rowId); },\n setRowBusinessKey: function (businessKey) { return eGui.setAttribute('row-business-key', businessKey); },\n setTabIndex: function (tabIndex) { return eGui.setAttribute('tabindex', tabIndex.toString()); }\n };\n ctrl.setComp(compProxy, _this.getGui(), containerType);\n return _this;\n }\n RowComp.prototype.getInitialStyle = function () {\n var transform = this.rowCtrl.getInitialTransform();\n var top = this.rowCtrl.getInitialRowTop();\n return transform ? \"transform: \" + transform : \"top: \" + top;\n };\n RowComp.prototype.showFullWidth = function (compDetails) {\n var _this = this;\n var callback = function (cellRenderer) {\n if (_this.isAlive()) {\n var eGui = cellRenderer.getGui();\n _this.getGui().appendChild(eGui);\n _this.rowCtrl.setupDetailRowAutoHeight(eGui);\n _this.setFullWidthRowComp(cellRenderer);\n }\n else {\n _this.beans.context.destroyBean(cellRenderer);\n }\n };\n // if not in cache, create new one\n var res = compDetails.newAgStackInstance();\n if (!res) {\n return;\n }\n res.then(callback);\n };\n RowComp.prototype.setCellCtrls = function (cellCtrls) {\n var _this = this;\n var cellsToRemove = Object.assign({}, this.cellComps);\n cellCtrls.forEach(function (cellCtrl) {\n var key = cellCtrl.getInstanceId();\n var existingCellComp = _this.cellComps[key];\n if (existingCellComp == null) {\n _this.newCellComp(cellCtrl);\n }\n else {\n cellsToRemove[key] = null;\n }\n });\n var cellCompsToRemove = getAllValuesInObject(cellsToRemove)\n .filter(function (cellComp) { return cellComp != null; });\n this.destroyCells(cellCompsToRemove);\n this.ensureDomOrder(cellCtrls);\n };\n RowComp.prototype.ensureDomOrder = function (cellCtrls) {\n var _this = this;\n if (!this.domOrder) {\n return;\n }\n var elementsInOrder = [];\n cellCtrls.forEach(function (cellCtrl) {\n var cellComp = _this.cellComps[cellCtrl.getInstanceId()];\n if (cellComp) {\n elementsInOrder.push(cellComp.getGui());\n }\n });\n setDomChildOrder(this.getGui(), elementsInOrder);\n };\n RowComp.prototype.newCellComp = function (cellCtrl) {\n var cellComp = new CellComp(this.beans, cellCtrl, this.rowCtrl.isPrintLayout(), this.getGui(), this.rowCtrl.isEditing());\n this.cellComps[cellCtrl.getInstanceId()] = cellComp;\n this.getGui().appendChild(cellComp.getGui());\n };\n RowComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.destroyAllCells();\n };\n RowComp.prototype.destroyAllCells = function () {\n var cellsToDestroy = getAllValuesInObject(this.cellComps).filter(function (cp) { return cp != null; });\n this.destroyCells(cellsToDestroy);\n };\n RowComp.prototype.setFullWidthRowComp = function (fullWidthRowComponent) {\n var _this = this;\n if (this.fullWidthCellRenderer) {\n console.error('AG Grid - should not be setting fullWidthRowComponent twice');\n }\n this.fullWidthCellRenderer = fullWidthRowComponent;\n this.addDestroyFunc(function () {\n _this.fullWidthCellRenderer = _this.beans.context.destroyBean(_this.fullWidthCellRenderer);\n });\n };\n RowComp.prototype.getFullWidthCellRenderer = function () {\n return this.fullWidthCellRenderer;\n };\n RowComp.prototype.destroyCells = function (cellComps) {\n var _this = this;\n cellComps.forEach(function (cellComp) {\n // could be old reference, ie removed cell\n if (!cellComp) {\n return;\n }\n // check cellComp belongs in this container\n var instanceId = cellComp.getCtrl().getInstanceId();\n if (_this.cellComps[instanceId] !== cellComp) {\n return;\n }\n cellComp.detach();\n cellComp.destroy();\n _this.cellComps[instanceId] = null;\n });\n };\n return RowComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1E = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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$3 = (undefined && undefined.__assign) || function () {\n __assign$3 = 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$3.apply(this, arguments);\n};\nvar __decorate$1z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction templateFactory() {\n var name = Component.elementGettingCreated.getAttribute('name');\n var cssClasses = RowContainerCtrl.getRowContainerCssClasses(name);\n var res;\n var template1 = name === RowContainerName.CENTER;\n var template2 = name === RowContainerName.TOP_CENTER\n || name === RowContainerName.STICKY_TOP_CENTER\n || name === RowContainerName.BOTTOM_CENTER;\n if (template1) {\n res = /* html */\n \"
\\n
\\n
\\n
\\n
\";\n }\n else if (template2) {\n res = /* html */\n \"
\\n
\\n
\";\n }\n else {\n res = /* html */\n \"
\";\n }\n return res;\n}\nvar RowContainerComp = /** @class */ (function (_super) {\n __extends$1E(RowContainerComp, _super);\n function RowContainerComp() {\n var _this = _super.call(this, templateFactory()) || this;\n _this.rowComps = {};\n _this.name = Component.elementGettingCreated.getAttribute('name');\n _this.type = getRowContainerTypeForName(_this.name);\n return _this;\n }\n RowContainerComp.prototype.postConstruct = function () {\n var _this = this;\n var compProxy = {\n setViewportHeight: function (height) { return _this.eViewport.style.height = height; },\n setRowCtrls: function (rowCtrls) { return _this.setRowCtrls(rowCtrls); },\n setDomOrder: function (domOrder) {\n _this.domOrder = domOrder;\n },\n setContainerWidth: function (width) { return _this.eContainer.style.width = width; }\n };\n var ctrl = this.createManagedBean(new RowContainerCtrl(this.name));\n ctrl.setComp(compProxy, this.eContainer, this.eViewport, this.eWrapper);\n };\n RowContainerComp.prototype.preDestroy = function () {\n // destroys all row comps\n this.setRowCtrls([]);\n };\n RowContainerComp.prototype.setRowCtrls = function (rowCtrls) {\n var _this = this;\n var oldRows = __assign$3({}, this.rowComps);\n this.rowComps = {};\n this.lastPlacedElement = null;\n var processRow = function (rowCon) {\n var instanceId = rowCon.getInstanceId();\n var existingRowComp = oldRows[instanceId];\n if (existingRowComp) {\n _this.rowComps[instanceId] = existingRowComp;\n delete oldRows[instanceId];\n _this.ensureDomOrder(existingRowComp.getGui());\n }\n else {\n var rowComp = _this.newRowComp(rowCon);\n _this.rowComps[instanceId] = rowComp;\n _this.appendRow(rowComp.getGui());\n }\n };\n rowCtrls.forEach(processRow);\n getAllValuesInObject(oldRows).forEach(function (oldRowComp) {\n _this.eContainer.removeChild(oldRowComp.getGui());\n oldRowComp.destroy();\n });\n setAriaRole(this.eContainer, rowCtrls.length ? \"rowgroup\" : \"presentation\");\n };\n RowContainerComp.prototype.appendRow = function (element) {\n if (this.domOrder) {\n insertWithDomOrder(this.eContainer, element, this.lastPlacedElement);\n }\n else {\n this.eContainer.appendChild(element);\n }\n this.lastPlacedElement = element;\n };\n RowContainerComp.prototype.ensureDomOrder = function (eRow) {\n if (this.domOrder) {\n ensureDomOrder(this.eContainer, eRow, this.lastPlacedElement);\n this.lastPlacedElement = eRow;\n }\n };\n RowContainerComp.prototype.newRowComp = function (rowCtrl) {\n RowContainerCtrl.getPinned(this.name);\n var res = new RowComp(rowCtrl, this.beans, this.type);\n return res;\n };\n __decorate$1z([\n Autowired('beans')\n ], RowContainerComp.prototype, \"beans\", void 0);\n __decorate$1z([\n RefSelector('eViewport')\n ], RowContainerComp.prototype, \"eViewport\", void 0);\n __decorate$1z([\n RefSelector('eContainer')\n ], RowContainerComp.prototype, \"eContainer\", void 0);\n __decorate$1z([\n RefSelector('eWrapper')\n ], RowContainerComp.prototype, \"eWrapper\", void 0);\n __decorate$1z([\n PostConstruct\n ], RowContainerComp.prototype, \"postConstruct\", null);\n __decorate$1z([\n PreDestroy\n ], RowContainerComp.prototype, \"preDestroy\", null);\n return RowContainerComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BodyDropPivotTarget = /** @class */ (function () {\n function BodyDropPivotTarget(pinned) {\n this.columnsToAggregate = [];\n this.columnsToGroup = [];\n this.columnsToPivot = [];\n this.pinned = pinned;\n }\n /** Callback for when drag enters */\n BodyDropPivotTarget.prototype.onDragEnter = function (draggingEvent) {\n var _this = this;\n this.clearColumnsList();\n // in pivot mode, we don't accept any drops if functions are read only\n if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var dragColumns = draggingEvent.dragItem.columns;\n if (!dragColumns) {\n return;\n }\n dragColumns.forEach(function (column) {\n // we don't allow adding secondary columns\n if (!column.isPrimary()) {\n return;\n }\n if (column.isAnyFunctionActive()) {\n return;\n }\n if (column.isAllowValue()) {\n _this.columnsToAggregate.push(column);\n }\n else if (column.isAllowRowGroup()) {\n _this.columnsToGroup.push(column);\n }\n else if (column.isAllowPivot()) {\n _this.columnsToPivot.push(column);\n }\n });\n };\n BodyDropPivotTarget.prototype.getIconName = function () {\n var totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;\n if (totalColumns > 0) {\n return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;\n }\n return null;\n };\n /** Callback for when drag leaves */\n BodyDropPivotTarget.prototype.onDragLeave = function (draggingEvent) {\n // if we are taking columns out of the center, then we remove them from the report\n this.clearColumnsList();\n };\n BodyDropPivotTarget.prototype.clearColumnsList = function () {\n this.columnsToAggregate.length = 0;\n this.columnsToGroup.length = 0;\n this.columnsToPivot.length = 0;\n };\n /** Callback for when dragging */\n BodyDropPivotTarget.prototype.onDragging = function (draggingEvent) {\n };\n /** Callback for when drag stops */\n BodyDropPivotTarget.prototype.onDragStop = function (draggingEvent) {\n if (this.columnsToAggregate.length > 0) {\n this.columnModel.addValueColumns(this.columnsToAggregate, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToGroup.length > 0) {\n this.columnModel.addRowGroupColumns(this.columnsToGroup, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToPivot.length > 0) {\n this.columnModel.addPivotColumns(this.columnsToPivot, \"toolPanelDragAndDrop\");\n }\n };\n __decorate$1y([\n Autowired('columnModel')\n ], BodyDropPivotTarget.prototype, \"columnModel\", void 0);\n __decorate$1y([\n Autowired('gridOptionsWrapper')\n ], BodyDropPivotTarget.prototype, \"gridOptionsWrapper\", void 0);\n return BodyDropPivotTarget;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$e = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar MoveColumnFeature = /** @class */ (function () {\n function MoveColumnFeature(pinned, eContainer) {\n this.needToMoveLeft = false;\n this.needToMoveRight = false;\n this.pinned = pinned;\n this.eContainer = eContainer;\n this.centerContainer = !exists(pinned);\n }\n MoveColumnFeature.prototype.init = function () {\n var _this = this;\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n });\n };\n MoveColumnFeature.prototype.getIconName = function () {\n return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;\n };\n MoveColumnFeature.prototype.onDragEnter = function (draggingEvent) {\n // we do dummy drag, so make sure column appears in the right location when first placed\n var columns = draggingEvent.dragItem.columns;\n var dragCameFromToolPanel = draggingEvent.dragSource.type === DragSourceType.ToolPanel;\n if (dragCameFromToolPanel) {\n // the if statement doesn't work if drag leaves grid, then enters again\n this.setColumnsVisible(columns, true, \"uiColumnDragged\");\n }\n else {\n // restore previous state of visible columns upon re-entering. this means if the user drags\n // a group out, and then drags the group back in, only columns that were originally visible\n // will be visible again. otherwise a group with three columns (but only two visible) could\n // be dragged out, then when it's dragged in again, all three are visible. this stops that.\n var visibleState_1 = draggingEvent.dragItem.visibleState;\n var visibleColumns = (columns || []).filter(function (column) { return visibleState_1[column.getId()]; });\n this.setColumnsVisible(visibleColumns, true, \"uiColumnDragged\");\n }\n this.setColumnsPinned(columns, this.pinned, \"uiColumnDragged\");\n this.onDragging(draggingEvent, true, true);\n };\n MoveColumnFeature.prototype.onDragLeave = function (draggingEvent) {\n this.ensureIntervalCleared();\n };\n MoveColumnFeature.prototype.setColumnsVisible = function (columns, visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.getColDef().lockVisible; });\n this.columnModel.setColumnsVisible(allowedCols, visible, source);\n }\n };\n MoveColumnFeature.prototype.setColumnsPinned = function (columns, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n this.columnModel.setColumnsPinned(allowedCols, pinned, source);\n }\n };\n MoveColumnFeature.prototype.onDragStop = function () {\n this.ensureIntervalCleared();\n };\n MoveColumnFeature.prototype.normaliseX = function (x) {\n // flip the coordinate if doing RTL\n if (this.gridOptionsWrapper.isEnableRtl()) {\n var clientWidth = this.eContainer.clientWidth;\n x = clientWidth - x;\n }\n // adjust for scroll only if centre container (the pinned containers don't scroll)\n if (this.centerContainer) {\n x += this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();\n }\n return x;\n };\n MoveColumnFeature.prototype.checkCenterForScrolling = function (xAdjustedForScroll) {\n if (this.centerContainer) {\n // scroll if the mouse has gone outside the grid (or just outside the scrollable part if pinning)\n // putting in 50 buffer, so even if user gets to edge of grid, a scroll will happen\n var firstVisiblePixel = this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();\n var lastVisiblePixel = firstVisiblePixel + this.ctrlsService.getCenterRowContainerCtrl().getCenterWidth();\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.needToMoveRight = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveLeft = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n else {\n this.needToMoveLeft = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveRight = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n if (this.needToMoveLeft || this.needToMoveRight) {\n this.ensureIntervalStarted();\n }\n else {\n this.ensureIntervalCleared();\n }\n }\n };\n MoveColumnFeature.prototype.onDragging = function (draggingEvent, fromEnter, fakeEvent) {\n var _this = this;\n if (fromEnter === void 0) { fromEnter = false; }\n if (fakeEvent === void 0) { fakeEvent = false; }\n this.lastDraggingEvent = draggingEvent;\n // if moving up or down (ie not left or right) then do nothing\n if (missing(draggingEvent.hDirection)) {\n return;\n }\n var mouseXNormalised = this.normaliseX(draggingEvent.x);\n // if the user is dragging into the panel, ie coming from the side panel into the main grid,\n // we don't want to scroll the grid this time, it would appear like the table is jumping\n // each time a column is dragged in.\n if (!fromEnter) {\n this.checkCenterForScrolling(mouseXNormalised);\n }\n var hDirectionNormalised = this.normaliseDirection(draggingEvent.hDirection);\n var dragSourceType = draggingEvent.dragSource.type;\n var columnsToMove = draggingEvent.dragSource.getDragItem().columns;\n columnsToMove = columnsToMove.filter(function (col) {\n if (col.getColDef().lockPinned) {\n // if locked return true only if both col and container are same pin type.\n // double equals (==) here on purpose so that null==undefined is true (for not pinned options)\n return col.getPinned() == _this.pinned;\n }\n // if not pin locked, then always allowed to be in this container\n return true;\n });\n this.attemptMoveColumns(dragSourceType, columnsToMove, hDirectionNormalised, mouseXNormalised, fromEnter, fakeEvent);\n };\n MoveColumnFeature.prototype.normaliseDirection = function (hDirection) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n switch (hDirection) {\n case HorizontalDirection.Left: return HorizontalDirection.Right;\n case HorizontalDirection.Right: return HorizontalDirection.Left;\n default: console.error(\"AG Grid: Unknown direction \" + hDirection);\n }\n }\n else {\n return hDirection;\n }\n };\n // returns the index of the first column in the list ONLY if the cols are all beside\n // each other. if the cols are not beside each other, then returns null\n MoveColumnFeature.prototype.calculateOldIndex = function (movingCols) {\n var gridCols = this.columnModel.getAllGridColumns();\n var indexes = sortNumerically(movingCols.map(function (col) { return gridCols.indexOf(col); }));\n var firstIndex = indexes[0];\n var lastIndex = last(indexes);\n var spread = lastIndex - firstIndex;\n var gapsExist = spread !== indexes.length - 1;\n return gapsExist ? null : firstIndex;\n };\n MoveColumnFeature.prototype.attemptMoveColumns = function (dragSourceType, allMovingColumns, hDirection, mouseX, fromEnter, fakeEvent) {\n var draggingLeft = hDirection === HorizontalDirection.Left;\n var draggingRight = hDirection === HorizontalDirection.Right;\n if (dragSourceType === DragSourceType.HeaderCell) {\n // If the columns we're dragging are the only visible columns of their group, move the hidden ones too\n var newCols_1 = [];\n allMovingColumns.forEach(function (col) {\n var movingGroup = null;\n var parent = col.getParent();\n while (parent != null && parent.getDisplayedLeafColumns().length === 1) {\n movingGroup = parent;\n parent = parent.getParent();\n }\n if (movingGroup != null) {\n movingGroup.getLeafColumns().forEach(function (newCol) {\n if (!newCols_1.includes(newCol)) {\n newCols_1.push(newCol);\n }\n });\n }\n else if (!newCols_1.includes(col)) {\n newCols_1.push(col);\n }\n });\n allMovingColumns = newCols_1;\n }\n // it is important to sort the moving columns as they are in grid columns, as the list of moving columns\n // could themselves be part of 'married children' groups, which means we need to maintain the order within\n // the moving list.\n var allMovingColumnsOrdered = allMovingColumns.slice();\n this.columnModel.sortColumnsLikeGridColumns(allMovingColumnsOrdered);\n var validMoves = this.calculateValidMoves(allMovingColumnsOrdered, draggingRight, mouseX);\n // if cols are not adjacent, then this returns null. when moving, we constrain the direction of the move\n // (ie left or right) to the mouse direction. however\n var oldIndex = this.calculateOldIndex(allMovingColumnsOrdered);\n if (validMoves.length === 0) {\n return;\n }\n var firstValidMove = validMoves[0];\n // the two check below stop an error when the user grabs a group my a middle column, then\n // it is possible the mouse pointer is to the right of a column while been dragged left.\n // so we need to make sure that the mouse pointer is actually left of the left most column\n // if moving left, and right of the right most column if moving right\n // we check 'fromEnter' below so we move the column to the new spot if the mouse is coming from\n // outside the grid, eg if the column is moving from side panel, mouse is moving left, then we should\n // place the column to the RHS even if the mouse is moving left and the column is already on\n // the LHS. otherwise we stick to the rule described above.\n var constrainDirection = oldIndex !== null && !fromEnter;\n // don't consider 'fromEnter' when dragging header cells, otherwise group can jump to opposite direction of drag\n if (dragSourceType == DragSourceType.HeaderCell) {\n constrainDirection = oldIndex !== null;\n }\n // if the event was faked by a change in column pin state, then the original location of the column\n // is not reliable for dictating where the column may now be placed.\n if (constrainDirection && !fakeEvent) {\n // only allow left drag if this column is moving left\n if (draggingLeft && firstValidMove >= oldIndex) {\n return;\n }\n // only allow right drag if this column is moving right\n if (draggingRight && firstValidMove <= oldIndex) {\n return;\n }\n }\n // From when we find a move that passes all the rules\n // Remember what that move would look like in terms of displayed cols\n // keep going with further moves until we find a different result in displayed output\n // In this way potentialMoves contains all potential moves over 'hidden' columns\n var displayedCols = this.columnModel.getAllDisplayedColumns();\n var potentialMoves = [];\n var targetOrder = null;\n for (var i = 0; i < validMoves.length; i++) {\n var move = validMoves[i];\n var order = this.columnModel.getProposedColumnOrder(allMovingColumnsOrdered, move);\n if (!this.columnModel.doesOrderPassRules(order)) {\n continue;\n }\n var displayedOrder = order.filter(function (col) { return displayedCols.includes(col); });\n if (targetOrder === null) {\n targetOrder = displayedOrder;\n }\n else if (!_.areEqual(displayedOrder, targetOrder)) {\n break; // Stop looking for potential moves if the displayed result changes from the target\n }\n var fragCount = this.groupFragCount(order);\n potentialMoves.push({ move: move, fragCount: fragCount });\n }\n if (potentialMoves.length === 0) {\n return;\n }\n // The best move is the move with least group fragmentation\n potentialMoves.sort(function (a, b) { return a.fragCount - b.fragCount; });\n var bestMove = potentialMoves[0].move;\n this.columnModel.moveColumns(allMovingColumnsOrdered, bestMove, \"uiColumnDragged\");\n };\n // A measure of how fragmented in terms of groups an order of columns is\n MoveColumnFeature.prototype.groupFragCount = function (columns) {\n function parents(col) {\n var result = [];\n var parent = col.getOriginalParent();\n while (parent != null) {\n result.push(parent);\n parent = parent.getOriginalParent();\n }\n return result;\n }\n var count = 0;\n var _loop_1 = function (i) {\n var _a;\n var a = parents(columns[i]);\n var b = parents(columns[i + 1]);\n // iterate over the longest one\n _a = __read$e(a.length > b.length ? [a, b] : [b, a], 2), a = _a[0], b = _a[1];\n a.forEach(function (parent) {\n if (b.indexOf(parent) === -1) {\n count++; // More fragmented if other column doesn't share the parent\n }\n });\n };\n for (var i = 0; i < columns.length - 1; i++) {\n _loop_1(i);\n }\n return count;\n };\n MoveColumnFeature.prototype.calculateValidMoves = function (movingCols, draggingRight, mouseX) {\n var isMoveBlocked = this.gridOptionsWrapper.isSuppressMovableColumns() || movingCols.some(function (col) { return col.getColDef().suppressMovable; });\n if (isMoveBlocked) {\n return [];\n }\n // this is the list of cols on the screen, so it's these we use when comparing the x mouse position\n var allDisplayedCols = this.columnModel.getDisplayedColumns(this.pinned);\n // but this list is the list of all cols, when we move a col it's the index within this list that gets used,\n // so the result we return has to be and index location for this list\n var allGridCols = this.columnModel.getAllGridColumns();\n var movingDisplayedCols = allDisplayedCols.filter(function (col) { return includes(movingCols, col); });\n var otherDisplayedCols = allDisplayedCols.filter(function (col) { return !includes(movingCols, col); });\n var otherGridCols = allGridCols.filter(function (col) { return !includes(movingCols, col); });\n // work out how many DISPLAYED columns fit before the 'x' position. this gives us the displayIndex.\n // for example, if cols are a,b,c,d and we find a,b fit before 'x', then we want to place the moving\n // col between b and c (so that it is under the mouse position).\n var displayIndex = 0;\n var availableWidth = mouseX;\n // if we are dragging right, then the columns will be to the left of the mouse, so we also want to\n // include the width of the moving columns\n if (draggingRight) {\n var widthOfMovingDisplayedCols_1 = 0;\n movingDisplayedCols.forEach(function (col) { return widthOfMovingDisplayedCols_1 += col.getActualWidth(); });\n availableWidth -= widthOfMovingDisplayedCols_1;\n }\n if (availableWidth > 0) {\n // now count how many of the displayed columns will fit to the left\n for (var i = 0; i < otherDisplayedCols.length; i++) {\n var col = otherDisplayedCols[i];\n availableWidth -= col.getActualWidth();\n if (availableWidth < 0) {\n break;\n }\n displayIndex++;\n }\n // trial and error, if going right, we adjust by one, i didn't manage to quantify why, but it works\n if (draggingRight) {\n displayIndex++;\n }\n }\n // the display index is with respect to all the showing columns, however when we move, it's with\n // respect to all grid columns, so we need to translate from display index to grid index\n var firstValidMove;\n if (displayIndex > 0) {\n var leftColumn = otherDisplayedCols[displayIndex - 1];\n firstValidMove = otherGridCols.indexOf(leftColumn) + 1;\n }\n else {\n firstValidMove = otherGridCols.indexOf(otherDisplayedCols[0]);\n if (firstValidMove === -1) {\n firstValidMove = 0;\n }\n }\n var validMoves = [firstValidMove];\n var numberComparator = function (a, b) { return a - b; };\n // add in other valid moves due to hidden columns and married children. for example, a particular\n // move might break a group that has married children (so move isn't valid), however there could\n // be hidden columns (not displayed) that we could jump over to make the move valid. because\n // they are hidden, user doesn't see any different, however it allows moves that would otherwise\n // not work. for example imagine a group with 9 columns and all columns are hidden except the\n // middle one (so 4 hidden to left, 4 hidden to right), then when moving 'firstValidMove' will\n // be relative to the not-shown column, however we need to consider the move jumping over all the\n // hidden children. if we didn't do this, then if the group just described was at the end (RHS) of the\n // grid, there would be no way to put a column after it (as the grid would only consider beside the\n // visible column, which would fail valid move rules).\n if (draggingRight) {\n // if dragging right, then we add all the additional moves to the right. so in other words\n // if the next move is not valid, find the next move to the right that is valid.\n var pointer = firstValidMove + 1;\n var lastIndex = allGridCols.length - 1;\n while (pointer <= lastIndex) {\n validMoves.push(pointer);\n pointer++;\n }\n // adding columns here means the order is now messed up\n validMoves.sort(numberComparator);\n }\n else {\n // if dragging left we do the reverse of dragging right, we add in all the valid moves to the\n // left. however we also have to consider moves to the right for all hidden columns first.\n // (this logic is hard to reason with, it was worked out with trial and error,\n // more observation rather than science).\n // add moves to the right\n var pointer = firstValidMove;\n var lastIndex = allGridCols.length - 1;\n var displacedCol = allGridCols[pointer];\n while (pointer <= lastIndex && this.isColumnHidden(allDisplayedCols, displacedCol)) {\n pointer++;\n validMoves.push(pointer);\n displacedCol = allGridCols[pointer];\n }\n // add moves to the left\n pointer = firstValidMove - 1;\n var firstDisplayIndex = 0;\n while (pointer >= firstDisplayIndex) {\n validMoves.push(pointer);\n pointer--;\n }\n // adding columns here means the order is now messed up\n validMoves.sort(numberComparator).reverse();\n }\n return validMoves;\n };\n // isHidden takes into account visible=false and group=closed, ie it is not displayed\n MoveColumnFeature.prototype.isColumnHidden = function (displayedColumns, col) {\n return displayedColumns.indexOf(col) < 0;\n };\n MoveColumnFeature.prototype.ensureIntervalStarted = function () {\n if (!this.movingIntervalId) {\n this.intervalCount = 0;\n this.failedMoveAttempts = 0;\n this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);\n if (this.needToMoveLeft) {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_LEFT, true);\n }\n else {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_RIGHT, true);\n }\n }\n };\n MoveColumnFeature.prototype.ensureIntervalCleared = function () {\n if (this.movingIntervalId) {\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_MOVE);\n }\n };\n MoveColumnFeature.prototype.moveInterval = function () {\n // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow\n // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.\n var pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + (this.intervalCount * 5);\n if (pixelsToMove > 100) {\n pixelsToMove = 100;\n }\n var pixelsMoved = null;\n var scrollFeature = this.gridBodyCon.getScrollFeature();\n if (this.needToMoveLeft) {\n pixelsMoved = scrollFeature.scrollHorizontally(-pixelsToMove);\n }\n else if (this.needToMoveRight) {\n pixelsMoved = scrollFeature.scrollHorizontally(pixelsToMove);\n }\n if (pixelsMoved !== 0) {\n this.onDragging(this.lastDraggingEvent);\n this.failedMoveAttempts = 0;\n }\n else {\n // we count the failed move attempts. if we fail to move 7 times, then we pin the column.\n // this is how we achieve pining by dragging the column to the edge of the grid.\n this.failedMoveAttempts++;\n var columns = this.lastDraggingEvent.dragItem.columns;\n var columnsThatCanPin = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n if (columnsThatCanPin.length > 0) {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_PINNED);\n if (this.failedMoveAttempts > 7) {\n var pinType = this.needToMoveLeft ? Constants.PINNED_LEFT : Constants.PINNED_RIGHT;\n this.setColumnsPinned(columnsThatCanPin, pinType, \"uiColumnDragged\");\n this.dragAndDropService.nudge();\n }\n }\n }\n };\n __decorate$1x([\n Autowired('columnModel')\n ], MoveColumnFeature.prototype, \"columnModel\", void 0);\n __decorate$1x([\n Autowired('dragAndDropService')\n ], MoveColumnFeature.prototype, \"dragAndDropService\", void 0);\n __decorate$1x([\n Autowired('gridOptionsWrapper')\n ], MoveColumnFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1x([\n Autowired('ctrlsService')\n ], MoveColumnFeature.prototype, \"ctrlsService\", void 0);\n __decorate$1x([\n PostConstruct\n ], MoveColumnFeature.prototype, \"init\", null);\n return MoveColumnFeature;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1D = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BodyDropTarget = /** @class */ (function (_super) {\n __extends$1D(BodyDropTarget, _super);\n function BodyDropTarget(pinned, eContainer) {\n var _this = _super.call(this) || this;\n _this.pinned = pinned;\n _this.eContainer = eContainer;\n return _this;\n }\n BodyDropTarget.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n switch (_this.pinned) {\n case Constants.PINNED_LEFT:\n _this.eSecondaryContainers = [\n [p.gridBodyCtrl.getBodyViewportElement(), p.leftRowContainerCtrl.getContainerElement()],\n [p.bottomLeftRowContainerCtrl.getContainerElement()],\n [p.topLeftRowContainerCtrl.getContainerElement()]\n ];\n break;\n case Constants.PINNED_RIGHT:\n _this.eSecondaryContainers = [\n [p.gridBodyCtrl.getBodyViewportElement(), p.rightRowContainerCtrl.getContainerElement()],\n [p.bottomRightRowContainerCtrl.getContainerElement()],\n [p.topRightRowContainerCtrl.getContainerElement()]\n ];\n break;\n default:\n _this.eSecondaryContainers = [\n [p.gridBodyCtrl.getBodyViewportElement(), p.centerRowContainerCtrl.getViewportElement()],\n [p.bottomCenterRowContainerCtrl.getViewportElement()],\n [p.topCenterRowContainerCtrl.getViewportElement()]\n ];\n break;\n }\n });\n };\n BodyDropTarget.prototype.isInterestedIn = function (type) {\n return type === DragSourceType.HeaderCell ||\n (type === DragSourceType.ToolPanel && this.gridOptionsWrapper.isAllowDragFromColumnsToolPanel());\n };\n BodyDropTarget.prototype.getSecondaryContainers = function () {\n return this.eSecondaryContainers;\n };\n BodyDropTarget.prototype.getContainer = function () {\n return this.eContainer;\n };\n BodyDropTarget.prototype.init = function () {\n this.moveColumnFeature = this.createManagedBean(new MoveColumnFeature(this.pinned, this.eContainer));\n this.bodyDropPivotTarget = this.createManagedBean(new BodyDropPivotTarget(this.pinned));\n this.dragAndDropService.addDropTarget(this);\n };\n BodyDropTarget.prototype.getIconName = function () {\n return this.currentDropListener.getIconName();\n };\n // we want to use the bodyPivotTarget if the user is dragging columns in from the toolPanel\n // and we are in pivot mode, as it has to logic to set pivot/value/group on the columns when\n // dropped into the grid's body.\n BodyDropTarget.prototype.isDropColumnInPivotMode = function (draggingEvent) {\n // in pivot mode, then if moving a column (ie didn't come from toolpanel) then it's\n // a standard column move, however if it came from the toolpanel, then we are introducing\n // dimensions or values to the grid\n return this.columnModel.isPivotMode() && draggingEvent.dragSource.type === DragSourceType.ToolPanel;\n };\n BodyDropTarget.prototype.onDragEnter = function (draggingEvent) {\n // we pick the drop listener depending on whether we are in pivot mode are not. if we are\n // in pivot mode, then dropping cols changes the row group, pivot, value stats. otherwise\n // we change visibility state and position.\n this.currentDropListener = this.isDropColumnInPivotMode(draggingEvent) ? this.bodyDropPivotTarget : this.moveColumnFeature;\n this.currentDropListener.onDragEnter(draggingEvent);\n };\n BodyDropTarget.prototype.onDragLeave = function (params) {\n this.currentDropListener.onDragLeave(params);\n };\n BodyDropTarget.prototype.onDragging = function (params) {\n this.currentDropListener.onDragging(params);\n };\n BodyDropTarget.prototype.onDragStop = function (params) {\n this.currentDropListener.onDragStop(params);\n };\n __decorate$1w([\n Autowired('dragAndDropService')\n ], BodyDropTarget.prototype, \"dragAndDropService\", void 0);\n __decorate$1w([\n Autowired('columnModel')\n ], BodyDropTarget.prototype, \"columnModel\", void 0);\n __decorate$1w([\n Autowired('ctrlsService')\n ], BodyDropTarget.prototype, \"ctrlsService\", void 0);\n __decorate$1w([\n PostConstruct\n ], BodyDropTarget.prototype, \"postConstruct\", null);\n __decorate$1w([\n PostConstruct\n ], BodyDropTarget.prototype, \"init\", null);\n return BodyDropTarget;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$d = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$b = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$d(arguments[i]));\n return ar;\n};\nvar CssClassApplier = /** @class */ (function () {\n function CssClassApplier() {\n }\n CssClassApplier.getHeaderClassesFromColDef = function (abstractColDef, gridOptionsWrapper, column, columnGroup) {\n if (missing(abstractColDef)) {\n return [];\n }\n return this.getColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, gridOptionsWrapper, column, columnGroup);\n };\n CssClassApplier.getToolPanelClassesFromColDef = function (abstractColDef, gridOptionsWrapper, column, columnGroup) {\n if (missing(abstractColDef)) {\n return [];\n }\n return this.getColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, gridOptionsWrapper, column, columnGroup);\n };\n CssClassApplier.getClassParams = function (abstractColDef, gridOptionsWrapper, column, columnGroup) {\n return {\n // bad naming, as colDef here can be a group or a column,\n // however most people won't appreciate the difference,\n // so keeping it as colDef to avoid confusion.\n colDef: abstractColDef,\n column: column,\n columnGroup: columnGroup,\n api: gridOptionsWrapper.getApi(),\n columnApi: gridOptionsWrapper.getColumnApi(),\n context: gridOptionsWrapper.getContext()\n };\n };\n CssClassApplier.getColumnClassesFromCollDef = function (classesOrFunc, abstractColDef, gridOptionsWrapper, column, columnGroup) {\n if (missing(classesOrFunc)) {\n return [];\n }\n var classToUse;\n if (typeof classesOrFunc === 'function') {\n var params = this.getClassParams(abstractColDef, gridOptionsWrapper, column, columnGroup);\n classToUse = classesOrFunc(params);\n }\n else {\n classToUse = classesOrFunc;\n }\n if (typeof classToUse === 'string') {\n return [classToUse];\n }\n if (Array.isArray(classToUse)) {\n return __spread$b(classToUse);\n }\n return [];\n };\n return CssClassApplier;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1C = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderCellComp = /** @class */ (function (_super) {\n __extends$1C(HeaderCellComp, _super);\n function HeaderCellComp(ctrl) {\n var _this = _super.call(this, HeaderCellComp.TEMPLATE, ctrl) || this;\n _this.headerCompVersion = 0;\n _this.column = ctrl.getColumnGroupChild();\n _this.pinned = ctrl.getPinned();\n return _this;\n }\n HeaderCellComp.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var setAttribute = function (name, value, element) {\n var actualElement = element ? element : eGui;\n if (value != null && value != '') {\n actualElement.setAttribute(name, value);\n }\n else {\n actualElement.removeAttribute(name);\n }\n };\n var compProxy = {\n setWidth: function (width) { return eGui.style.width = width; },\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setColId: function (id) { return setAttribute('col-id', id); },\n setTitle: function (title) { return setAttribute('title', title); },\n setAriaDescription: function (label) { return setAriaDescription(eGui, label); },\n setAriaSort: function (sort) { return sort ? setAriaSort(eGui, sort) : removeAriaSort(eGui); },\n setUserCompDetails: function (compDetails) { return _this.setUserCompDetails(compDetails); },\n getUserCompInstance: function () { return _this.headerComp; }\n };\n this.ctrl.setComp(compProxy, this.getGui(), this.eResize, this.eHeaderCompWrapper);\n var selectAllGui = this.ctrl.getSelectAllGui();\n this.eResize.insertAdjacentElement('afterend', selectAllGui);\n };\n HeaderCellComp.prototype.destroyHeaderComp = function () {\n if (this.headerComp) {\n this.eHeaderCompWrapper.removeChild(this.headerCompGui);\n this.headerComp = this.destroyBean(this.headerComp);\n this.headerCompGui = undefined;\n }\n };\n HeaderCellComp.prototype.setUserCompDetails = function (compDetails) {\n var _this = this;\n this.headerCompVersion++;\n var versionCopy = this.headerCompVersion;\n compDetails.newAgStackInstance().then(function (comp) { return _this.afterCompCreated(versionCopy, comp); });\n };\n HeaderCellComp.prototype.afterCompCreated = function (version, headerComp) {\n if (version != this.headerCompVersion || !this.isAlive()) {\n this.destroyBean(headerComp);\n return;\n }\n this.destroyHeaderComp();\n this.headerComp = headerComp;\n this.headerCompGui = headerComp.getGui();\n this.eHeaderCompWrapper.appendChild(this.headerCompGui);\n this.ctrl.setDragSource(this.getGui());\n };\n HeaderCellComp.TEMPLATE = \"
\\n
\\n
\\n
\";\n __decorate$1v([\n RefSelector('eResize')\n ], HeaderCellComp.prototype, \"eResize\", void 0);\n __decorate$1v([\n RefSelector('eHeaderCompWrapper')\n ], HeaderCellComp.prototype, \"eHeaderCompWrapper\", void 0);\n __decorate$1v([\n PostConstruct\n ], HeaderCellComp.prototype, \"postConstruct\", null);\n __decorate$1v([\n PreDestroy\n ], HeaderCellComp.prototype, \"destroyHeaderComp\", null);\n return HeaderCellComp;\n}(AbstractHeaderCellComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1B = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderGroupCellComp = /** @class */ (function (_super) {\n __extends$1B(HeaderGroupCellComp, _super);\n function HeaderGroupCellComp(ctrl) {\n return _super.call(this, HeaderGroupCellComp.TEMPLATE, ctrl) || this;\n }\n HeaderGroupCellComp.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var setAttribute = function (key, value) {\n return value != undefined ? eGui.setAttribute(key, value) : eGui.removeAttribute(key);\n };\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n addOrRemoveResizableCssClass: function (cssClassName, on) { return _this.eResize.classList.toggle(cssClassName, on); },\n setWidth: function (width) { return eGui.style.width = width; },\n setColId: function (id) { return eGui.setAttribute(\"col-id\", id); },\n setAriaExpanded: function (expanded) { return setAttribute('aria-expanded', expanded); },\n setTitle: function (title) { return setAttribute(\"title\", title); },\n setUserCompDetails: function (details) { return _this.setUserCompDetails(details); }\n };\n this.ctrl.setComp(compProxy, eGui, this.eResize);\n };\n HeaderGroupCellComp.prototype.setUserCompDetails = function (details) {\n var _this = this;\n details.newAgStackInstance().then(function (comp) { return _this.afterHeaderCompCreated(comp); });\n };\n HeaderGroupCellComp.prototype.afterHeaderCompCreated = function (headerGroupComp) {\n var _this = this;\n var destroyFunc = function () { return _this.destroyBean(headerGroupComp); };\n if (!this.isAlive()) {\n destroyFunc();\n return;\n }\n this.getGui().appendChild(headerGroupComp.getGui());\n this.addDestroyFunc(destroyFunc);\n this.ctrl.setDragSource(headerGroupComp.getGui());\n };\n HeaderGroupCellComp.TEMPLATE = \"
\\n
\\n
\";\n __decorate$1u([\n Autowired('userComponentFactory')\n ], HeaderGroupCellComp.prototype, \"userComponentFactory\", void 0);\n __decorate$1u([\n RefSelector('eResize')\n ], HeaderGroupCellComp.prototype, \"eResize\", void 0);\n __decorate$1u([\n PostConstruct\n ], HeaderGroupCellComp.prototype, \"postConstruct\", null);\n return HeaderGroupCellComp;\n}(AbstractHeaderCellComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1A = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderRowType;\n(function (HeaderRowType) {\n HeaderRowType[\"COLUMN_GROUP\"] = \"group\";\n HeaderRowType[\"COLUMN\"] = \"column\";\n HeaderRowType[\"FLOATING_FILTER\"] = \"filter\";\n})(HeaderRowType || (HeaderRowType = {}));\nvar HeaderRowComp = /** @class */ (function (_super) {\n __extends$1A(HeaderRowComp, _super);\n function HeaderRowComp(ctrl) {\n var _this = _super.call(this) || this;\n _this.headerComps = {};\n var extraClass = ctrl.getType() == HeaderRowType.COLUMN_GROUP ? \"ag-header-row-column-group\" :\n ctrl.getType() == HeaderRowType.FLOATING_FILTER ? \"ag-header-row-column-filter\" : \"ag-header-row-column\";\n _this.setTemplate(/* html */ \"
\");\n _this.ctrl = ctrl;\n return _this;\n }\n //noinspection JSUnusedLocalSymbols\n HeaderRowComp.prototype.init = function () {\n var _this = this;\n var compProxy = {\n setTransform: function (transform) { return _this.getGui().style.transform = transform; },\n setHeight: function (height) { return _this.getGui().style.height = height; },\n setTop: function (top) { return _this.getGui().style.top = top; },\n setHeaderCtrls: function (ctrls) { return _this.setHeaderCtrls(ctrls); },\n setWidth: function (width) { return _this.getGui().style.width = width; },\n setAriaRowIndex: function (rowIndex) { return setAriaRowIndex(_this.getGui(), rowIndex); }\n };\n this.ctrl.setComp(compProxy);\n };\n HeaderRowComp.prototype.destroyHeaderCtrls = function () {\n this.setHeaderCtrls([]);\n };\n HeaderRowComp.prototype.setHeaderCtrls = function (ctrls) {\n var _this = this;\n if (!this.isAlive()) {\n return;\n }\n var oldComps = this.headerComps;\n this.headerComps = {};\n ctrls.forEach(function (ctrl) {\n var id = ctrl.getInstanceId();\n var comp = oldComps[id];\n delete oldComps[id];\n if (comp == null) {\n comp = _this.createHeaderComp(ctrl);\n _this.getGui().appendChild(comp.getGui());\n }\n _this.headerComps[id] = comp;\n });\n iterateObject(oldComps, function (id, comp) {\n _this.getGui().removeChild(comp.getGui());\n _this.destroyBean(comp);\n });\n var ensureDomOrder = this.gridOptionsWrapper.isEnsureDomOrder();\n if (ensureDomOrder) {\n var comps = getAllValuesInObject(this.headerComps);\n // ordering the columns by left position orders them in the order they appear on the screen\n comps.sort(function (a, b) {\n var leftA = a.getCtrl().getColumnGroupChild().getLeft();\n var leftB = b.getCtrl().getColumnGroupChild().getLeft();\n return leftA - leftB;\n });\n var elementsInOrder = comps.map(function (c) { return c.getGui(); });\n setDomChildOrder(this.getGui(), elementsInOrder);\n }\n };\n HeaderRowComp.prototype.createHeaderComp = function (headerCtrl) {\n var result;\n switch (this.ctrl.getType()) {\n case HeaderRowType.COLUMN_GROUP:\n result = new HeaderGroupCellComp(headerCtrl);\n break;\n case HeaderRowType.FLOATING_FILTER:\n result = new HeaderFilterCellComp(headerCtrl);\n break;\n default:\n result = new HeaderCellComp(headerCtrl);\n break;\n }\n this.createBean(result);\n result.setParentComponent(this);\n return result;\n };\n __decorate$1t([\n PostConstruct\n ], HeaderRowComp.prototype, \"init\", null);\n __decorate$1t([\n PreDestroy\n ], HeaderRowComp.prototype, \"destroyHeaderCtrls\", null);\n return HeaderRowComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar instanceIdSequence$1 = 0;\nvar AbstractHeaderCellCtrl = /** @class */ (function (_super) {\n __extends$1z(AbstractHeaderCellCtrl, _super);\n function AbstractHeaderCellCtrl(columnGroupChild, parentRowCtrl) {\n var _this = _super.call(this) || this;\n _this.lastFocusEvent = null;\n _this.columnGroupChild = columnGroupChild;\n _this.parentRowCtrl = parentRowCtrl;\n // unique id to this instance, including the column ID to help with debugging in React as it's used in 'key'\n _this.instanceId = columnGroupChild.getUniqueId() + '-' + instanceIdSequence$1++;\n return _this;\n }\n AbstractHeaderCellCtrl.prototype.shouldStopEventPropagation = function (e) {\n var _a = this.focusService.getFocusedHeader(), headerRowIndex = _a.headerRowIndex, column = _a.column;\n return isUserSuppressingHeaderKeyboardEvent(this.gridOptionsWrapper, e, headerRowIndex, column);\n };\n AbstractHeaderCellCtrl.prototype.getWrapperHasFocus = function () {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeEl = eDocument.activeElement;\n return activeEl === this.eGui;\n };\n AbstractHeaderCellCtrl.prototype.setGui = function (eGui) {\n this.eGui = eGui;\n this.addDomData();\n };\n AbstractHeaderCellCtrl.prototype.handleKeyDown = function (e) {\n var wrapperHasFocus = this.getWrapperHasFocus();\n switch (e.key) {\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAGE_HOME:\n case KeyCode.PAGE_END:\n if (wrapperHasFocus) {\n e.preventDefault();\n }\n }\n };\n AbstractHeaderCellCtrl.prototype.addDomData = function () {\n var _this = this;\n var key = AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL;\n this.gridOptionsWrapper.setDomData(this.eGui, key, this);\n this.addDestroyFunc(function () { return _this.gridOptionsWrapper.setDomData(_this.eGui, key, null); });\n };\n AbstractHeaderCellCtrl.prototype.getGui = function () {\n return this.eGui;\n };\n AbstractHeaderCellCtrl.prototype.focus = function (event) {\n if (!this.eGui) {\n return false;\n }\n this.lastFocusEvent = event || null;\n this.eGui.focus();\n return true;\n };\n AbstractHeaderCellCtrl.prototype.getRowIndex = function () {\n return this.parentRowCtrl.getRowIndex();\n };\n AbstractHeaderCellCtrl.prototype.getParentRowCtrl = function () {\n return this.parentRowCtrl;\n };\n AbstractHeaderCellCtrl.prototype.getPinned = function () {\n return this.parentRowCtrl.getPinned();\n };\n AbstractHeaderCellCtrl.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n AbstractHeaderCellCtrl.prototype.getColumnGroupChild = function () {\n return this.columnGroupChild;\n };\n AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL = 'headerCtrl';\n __decorate$1s([\n Autowired('focusService')\n ], AbstractHeaderCellCtrl.prototype, \"focusService\", void 0);\n __decorate$1s([\n Autowired('beans')\n ], AbstractHeaderCellCtrl.prototype, \"beans\", void 0);\n __decorate$1s([\n Autowired('userComponentFactory')\n ], AbstractHeaderCellCtrl.prototype, \"userComponentFactory\", void 0);\n return AbstractHeaderCellCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ClientSideRowModelSteps;\n(function (ClientSideRowModelSteps) {\n ClientSideRowModelSteps[\"EVERYTHING\"] = \"group\";\n ClientSideRowModelSteps[\"FILTER\"] = \"filter\";\n ClientSideRowModelSteps[\"SORT\"] = \"sort\";\n ClientSideRowModelSteps[\"MAP\"] = \"map\";\n ClientSideRowModelSteps[\"AGGREGATE\"] = \"aggregate\";\n ClientSideRowModelSteps[\"FILTER_AGGREGATES\"] = \"filter_aggregates\";\n ClientSideRowModelSteps[\"PIVOT\"] = \"pivot\";\n ClientSideRowModelSteps[\"NOTHING\"] = \"nothing\";\n})(ClientSideRowModelSteps || (ClientSideRowModelSteps = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$1r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction unwrapUserComp(comp) {\n var compAsAny = comp;\n var isProxy = compAsAny != null && compAsAny.getFrameworkComponentInstance != null;\n return isProxy ? compAsAny.getFrameworkComponentInstance() : comp;\n}\nvar GridApi = /** @class */ (function () {\n function GridApi() {\n this.detailGridInfoMap = {};\n this.destroyCalled = false;\n }\n GridApi.prototype.registerOverlayWrapperComp = function (overlayWrapperComp) {\n this.overlayWrapperComp = overlayWrapperComp;\n };\n GridApi.prototype.registerSideBarComp = function (sideBarComp) {\n this.sideBarComp = sideBarComp;\n };\n GridApi.prototype.init = function () {\n var _this = this;\n switch (this.rowModel.getType()) {\n case Constants.ROW_MODEL_TYPE_CLIENT_SIDE:\n this.clientSideRowModel = this.rowModel;\n break;\n case Constants.ROW_MODEL_TYPE_INFINITE:\n this.infiniteRowModel = this.rowModel;\n break;\n case Constants.ROW_MODEL_TYPE_SERVER_SIDE:\n this.serverSideRowModel = this.rowModel;\n break;\n }\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n });\n };\n /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n GridApi.prototype.__getAlignedGridService = function () {\n return this.alignedGridsService;\n };\n /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n GridApi.prototype.__getContext = function () {\n return this.context;\n };\n /** Register a detail grid with the master grid when it is created. */\n GridApi.prototype.addDetailGridInfo = function (id, gridInfo) {\n this.detailGridInfoMap[id] = gridInfo;\n };\n /** Unregister a detail grid from the master grid when it is destroyed. */\n GridApi.prototype.removeDetailGridInfo = function (id) {\n this.detailGridInfoMap[id] = undefined;\n };\n /** Returns the `DetailGridInfo` corresponding to the supplied `detailGridId`. */\n GridApi.prototype.getDetailGridInfo = function (id) {\n return this.detailGridInfoMap[id];\n };\n /** Iterates through each `DetailGridInfo` in the grid and calls the supplied callback on each. */\n GridApi.prototype.forEachDetailGridInfo = function (callback) {\n var index = 0;\n iterateObject(this.detailGridInfoMap, function (id, gridInfo) {\n // check for undefined, as old references will still be lying around\n if (exists(gridInfo)) {\n callback(gridInfo, index);\n index++;\n }\n });\n };\n /** Similar to `exportDataAsCsv`, except returns the result as a string rather than download it. */\n GridApi.prototype.getDataAsCsv = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, 'api.getDataAsCsv')) {\n return this.csvCreator.getDataAsCsv(params);\n }\n };\n /** Downloads a CSV export of the grid's data. */\n GridApi.prototype.exportDataAsCsv = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, 'api.exportDataAsCSv')) {\n this.csvCreator.exportDataAsCsv(params);\n }\n };\n GridApi.prototype.getExcelExportMode = function (params) {\n var baseParams = this.gridOptionsWrapper.getDefaultExportParams('excel');\n var mergedParams = Object.assign({ exportMode: 'xlsx' }, baseParams, params);\n return mergedParams.exportMode;\n };\n /** Similar to `exportDataAsExcel`, except instead of downloading a file, it will return a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) to be processed by the user. */\n GridApi.prototype.getDataAsExcel = function (params) {\n if (!ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.getDataAsExcel')) {\n return;\n }\n var exportMode = this.getExcelExportMode(params);\n if (this.excelCreator.getFactoryMode(exportMode) === ExcelFactoryMode.MULTI_SHEET) {\n console.warn('AG Grid: The Excel Exporter is currently on Multi Sheet mode. End that operation by calling `api.getMultipleSheetAsExcel()` or `api.exportMultipleSheetsAsExcel()`');\n return;\n }\n return this.excelCreator.getDataAsExcel(params);\n };\n /** Downloads an Excel export of the grid's data. */\n GridApi.prototype.exportDataAsExcel = function (params) {\n if (!ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.exportDataAsExcel')) {\n return;\n }\n var exportMode = this.getExcelExportMode(params);\n if (this.excelCreator.getFactoryMode(exportMode) === ExcelFactoryMode.MULTI_SHEET) {\n console.warn('AG Grid: The Excel Exporter is currently on Multi Sheet mode. End that operation by calling `api.getMultipleSheetAsExcel()` or `api.exportMultipleSheetsAsExcel()`');\n return;\n }\n this.excelCreator.exportDataAsExcel(params);\n };\n /** This is method to be used to get the grid's data as a sheet, that will later be exported either by `getMultipleSheetsAsExcel()` or `exportMultipleSheetsAsExcel()`. */\n GridApi.prototype.getSheetDataForExcel = function (params) {\n if (!ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.getSheetDataForExcel')) {\n return;\n }\n var exportMode = this.getExcelExportMode(params);\n this.excelCreator.setFactoryMode(ExcelFactoryMode.MULTI_SHEET, exportMode);\n return this.excelCreator.getSheetDataForExcel(params);\n };\n /** Similar to `exportMultipleSheetsAsExcel`, except instead of downloading a file, it will return a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) to be processed by the user. */\n GridApi.prototype.getMultipleSheetsAsExcel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.getMultipleSheetsAsExcel')) {\n return this.excelCreator.getMultipleSheetsAsExcel(params);\n }\n };\n /** Downloads an Excel export of multiple sheets in one file. */\n GridApi.prototype.exportMultipleSheetsAsExcel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.exportMultipleSheetsAsExcel')) {\n return this.excelCreator.exportMultipleSheetsAsExcel(params);\n }\n };\n /** @deprecated AG Grid: since version 18.x, api.setEnterpriseDatasource() should be replaced with api.setServerSideDatasource() */\n GridApi.prototype.setEnterpriseDatasource = function (datasource) {\n console.warn(\"AG Grid: since version 18.x, api.setEnterpriseDatasource() should be replaced with api.setServerSideDatasource()\");\n this.setServerSideDatasource(datasource);\n };\n /**\n * Sets an ARIA property in the grid panel (element with `role=\\\"grid\\\"`), and removes an ARIA property when the value is null.\n *\n * Example: `api.setGridAriaProperty('label', 'my grid')` will set `aria-label=\\\"my grid\\\"`.\n *\n * `api.setGridAriaProperty('label', null)` will remove the `aria-label` attribute from the grid element.\n */\n GridApi.prototype.setGridAriaProperty = function (property, value) {\n if (!property) {\n return;\n }\n var eGrid = this.ctrlsService.getGridBodyCtrl().getGui();\n var ariaProperty = \"aria-\" + property;\n if (value === null) {\n eGrid.removeAttribute(ariaProperty);\n }\n else {\n eGrid.setAttribute(ariaProperty, value);\n }\n };\n /** Set new datasource for Server-Side Row Model. */\n GridApi.prototype.setServerSideDatasource = function (datasource) {\n if (this.serverSideRowModel) {\n // should really have an IEnterpriseRowModel interface, so we are not casting to any\n this.serverSideRowModel.setDatasource(datasource);\n }\n else {\n console.warn(\"AG Grid: you can only use an enterprise datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_SERVER_SIDE + \"'\");\n }\n };\n /**\n * Updates the `cacheBlockSize` used by `serverSideInfiniteScroll` when requesting data from the server.\n *\n * Note this purges all the cached data and reloads all the rows of the grid.\n * */\n GridApi.prototype.setCacheBlockSize = function (blockSize) {\n if (!this.serverSideRowModel) {\n console.warn(\"AG Grid: you can only set cacheBlockSize with gridOptions.rowModelType '\" + Constants.ROW_MODEL_TYPE_SERVER_SIDE + \"'\");\n return;\n }\n this.gridOptionsWrapper.setProperty('cacheBlockSize', blockSize);\n this.serverSideRowModel.resetRootStore();\n };\n /** Set new datasource for Infinite Row Model. */\n GridApi.prototype.setDatasource = function (datasource) {\n if (this.gridOptionsWrapper.isRowModelInfinite()) {\n this.rowModel.setDatasource(datasource);\n }\n else {\n console.warn(\"AG Grid: you can only use a datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_INFINITE + \"'\");\n }\n };\n /** Set new datasource for Viewport Row Model. */\n GridApi.prototype.setViewportDatasource = function (viewportDatasource) {\n if (this.gridOptionsWrapper.isRowModelViewport()) {\n // this is bad coding, because it's using an interface that's exposed in the enterprise.\n // really we should create an interface in the core for viewportDatasource and let\n // the enterprise implement it, rather than casting to 'any' here\n this.rowModel.setViewportDatasource(viewportDatasource);\n }\n else {\n console.warn(\"AG Grid: you can only use a viewport datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_VIEWPORT + \"'\");\n }\n };\n /** Set the row data. */\n GridApi.prototype.setRowData = function (rowData) {\n // immutable service is part of the CSRM module, if missing, no CSRM\n var missingImmutableService = this.immutableService == null;\n if (missingImmutableService) {\n console.warn('AG Grid: you can only set rowData when using the Client Side Row Model');\n return;\n }\n // if no keys provided provided for rows, then we can tread the operation as Immutable\n if (this.immutableService.isActive()) {\n this.immutableService.setRowData(rowData);\n }\n else {\n this.selectionService.reset();\n this.clientSideRowModel.setRowData(rowData);\n }\n };\n /** @deprecated AG Grid: since v12, api.setFloatingTopRowData() is now api.setPinnedTopRowData() */\n GridApi.prototype.setFloatingTopRowData = function (rows) {\n console.warn('AG Grid: since v12, api.setFloatingTopRowData() is now api.setPinnedTopRowData()');\n this.setPinnedTopRowData(rows);\n };\n /** @deprecated AG Grid: since v12, api.setFloatingBottomRowData() is now api.setPinnedBottomRowData() */\n GridApi.prototype.setFloatingBottomRowData = function (rows) {\n console.warn('AG Grid: since v12, api.setFloatingBottomRowData() is now api.setPinnedBottomRowData()');\n this.setPinnedBottomRowData(rows);\n };\n /** @deprecated AG Grid: since v12, api.getFloatingTopRowCount() is now api.getPinnedTopRowCount() */\n GridApi.prototype.getFloatingTopRowCount = function () {\n console.warn('AG Grid: since v12, api.getFloatingTopRowCount() is now api.getPinnedTopRowCount()');\n return this.getPinnedTopRowCount();\n };\n /** @deprecated AG Grid: since v12, api.getFloatingBottomRowCount() is now api.getPinnedBottomRowCount() */\n GridApi.prototype.getFloatingBottomRowCount = function () {\n console.warn('AG Grid: since v12, api.getFloatingBottomRowCount() is now api.getPinnedBottomRowCount()');\n return this.getPinnedBottomRowCount();\n };\n /** @deprecated AG Grid: since v12, api.getFloatingTopRow() is now api.getPinnedTopRow() */\n GridApi.prototype.getFloatingTopRow = function (index) {\n console.warn('AG Grid: since v12, api.getFloatingTopRow() is now api.getPinnedTopRow()');\n return this.getPinnedTopRow(index);\n };\n /** @deprecated AG Grid: since v12, api.getFloatingBottomRow() is now api.getPinnedBottomRow() */\n GridApi.prototype.getFloatingBottomRow = function (index) {\n console.warn('AG Grid: since v12, api.getFloatingBottomRow() is now api.getPinnedBottomRow()');\n return this.getPinnedBottomRow(index);\n };\n /** Set the top pinned rows. Call with no rows / undefined to clear top pinned rows. */\n GridApi.prototype.setPinnedTopRowData = function (rows) {\n this.pinnedRowModel.setPinnedTopRowData(rows);\n };\n /** Set the bottom pinned rows. Call with no rows / undefined to clear bottom pinned rows. */\n GridApi.prototype.setPinnedBottomRowData = function (rows) {\n this.pinnedRowModel.setPinnedBottomRowData(rows);\n };\n /** Gets the number of top pinned rows. */\n GridApi.prototype.getPinnedTopRowCount = function () {\n return this.pinnedRowModel.getPinnedTopRowCount();\n };\n /** Gets the number of bottom pinned rows. */\n GridApi.prototype.getPinnedBottomRowCount = function () {\n return this.pinnedRowModel.getPinnedBottomRowCount();\n };\n /** Gets the top pinned row with the specified index. */\n GridApi.prototype.getPinnedTopRow = function (index) {\n return this.pinnedRowModel.getPinnedTopRow(index);\n };\n /** Gets the top pinned row with the specified index. */\n GridApi.prototype.getPinnedBottomRow = function (index) {\n return this.pinnedRowModel.getPinnedBottomRow(index);\n };\n /**\n * Call to set new column definitions. The grid will redraw all the column headers, and then redraw all of the rows.\n */\n GridApi.prototype.setColumnDefs = function (colDefs, source) {\n if (source === void 0) { source = \"api\"; }\n this.columnModel.setColumnDefs(colDefs, source);\n };\n /** Call to set new auto group column definition. The grid will recreate any auto-group columns if present. */\n GridApi.prototype.setAutoGroupColumnDef = function (colDef, source) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_AUTO_GROUP_COLUMN_DEF, colDef, true);\n };\n /** Call to set new Default Column Definition. */\n GridApi.prototype.setDefaultColDef = function (colDef, source) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_DEFAULT_COL_DEF, colDef, true);\n };\n GridApi.prototype.expireValueCache = function () {\n this.valueCache.expire();\n };\n /**\n * Returns an object with two properties:\n * - `top`: The top pixel position of the current scroll in the grid\n * - `bottom`: The bottom pixel position of the current scroll in the grid\n */\n GridApi.prototype.getVerticalPixelRange = function () {\n return this.gridBodyCtrl.getScrollFeature().getVScrollPosition();\n };\n /**\n * Returns an object with two properties:\n * - `left`: The left pixel position of the current scroll in the grid\n * - `right`: The right pixel position of the current scroll in the grid\n */\n GridApi.prototype.getHorizontalPixelRange = function () {\n return this.gridBodyCtrl.getScrollFeature().getHScrollPosition();\n };\n /** If `true`, the horizontal scrollbar will always be present, even if not required. Otherwise, it will only be displayed when necessary. */\n GridApi.prototype.setAlwaysShowHorizontalScroll = function (show) {\n this.gridOptionsWrapper.setProperty('alwaysShowHorizontalScroll', show);\n };\n /** If `true`, the vertical scrollbar will always be present, even if not required. Otherwise it will only be displayed when necessary. */\n GridApi.prototype.setAlwaysShowVerticalScroll = function (show) {\n this.gridOptionsWrapper.setProperty('alwaysShowVerticalScroll', show);\n };\n /** Force refresh all tool panels by calling their `refresh` method. */\n GridApi.prototype.refreshToolPanel = function () {\n if (!this.sideBarComp) {\n return;\n }\n this.sideBarComp.refresh();\n };\n /** Performs change detection on all cells, refreshing cells where required. */\n GridApi.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n if (Array.isArray(params)) {\n // the old version of refreshCells() took an array of rowNodes for the first argument\n console.warn('since AG Grid v11.1, refreshCells() now takes parameters, please see the documentation.');\n return;\n }\n this.rowRenderer.refreshCells(params);\n };\n /** Flash rows, columns or individual cells. */\n GridApi.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n this.rowRenderer.flashCells(params);\n };\n /** Remove row(s) from the DOM and recreate them again from scratch. */\n GridApi.prototype.redrawRows = function (params) {\n if (params === void 0) { params = {}; }\n var rowNodes = params ? params.rowNodes : undefined;\n this.rowRenderer.redrawRows(rowNodes);\n };\n GridApi.prototype.setFunctionsReadOnly = function (readOnly) {\n this.gridOptionsWrapper.setProperty('functionsReadOnly', readOnly);\n };\n /** Redraws the header. Useful if a column name changes, or something else that changes how the column header is displayed. */\n GridApi.prototype.refreshHeader = function () {\n this.ctrlsService.getHeaderRowContainerCtrls().forEach(function (c) { return c.refresh(); });\n };\n /** Returns `true` if any filter is set. This includes quick filter, advanced filter or external filter. */\n GridApi.prototype.isAnyFilterPresent = function () {\n return this.filterManager.isAnyFilterPresent();\n };\n /** Returns `true` if any column filter is set, otherwise `false`. */\n GridApi.prototype.isColumnFilterPresent = function () {\n return this.filterManager.isColumnFilterPresent() || this.filterManager.isAggregateFilterPresent();\n };\n /** Returns `true` if the quick filter is set, otherwise `false`. */\n GridApi.prototype.isQuickFilterPresent = function () {\n return this.filterManager.isQuickFilterPresent();\n };\n /**\n * Returns the row model inside the table.\n * From here you can see the original rows, rows after filter has been applied,\n * rows after aggregation has been applied, and the final set of 'to be displayed' rows.\n */\n GridApi.prototype.getModel = function () {\n return this.rowModel;\n };\n /** Expand or collapse a specific row node. */\n GridApi.prototype.setRowNodeExpanded = function (rowNode, expanded) {\n if (rowNode) {\n rowNode.setExpanded(expanded);\n }\n };\n /**\n * If after getting the model, you expand or collapse a group, call this method to inform the grid.\n * It will work out the final set of 'to be displayed' rows again (i.e. expand or collapse the group visually).\n */\n GridApi.prototype.onGroupExpandedOrCollapsed = function (deprecated_refreshFromIndex) {\n if (missing(this.clientSideRowModel)) {\n console.warn('AG Grid: cannot call onGroupExpandedOrCollapsed unless using normal row model');\n }\n if (exists(deprecated_refreshFromIndex)) {\n console.warn('AG Grid: api.onGroupExpandedOrCollapsed - refreshFromIndex parameter is no longer used, the grid will refresh all rows');\n }\n // we don't really want the user calling this if only one rowNode was expanded, instead they should be\n // calling rowNode.setExpanded(boolean) - this way we do a 'keepRenderedRows=false' so that the whole\n // grid gets refreshed again - otherwise the row with the rowNodes that were changed won't get updated,\n // and thus the expand icon in the group cell won't get 'opened' or 'closed'.\n this.clientSideRowModel.refreshModel({ step: ClientSideRowModelSteps.MAP });\n };\n /** @deprecated AG Grid: since version 18.x, api.refreshInMemoryRowModel() should be replaced with api.refreshClientSideRowModel() */\n GridApi.prototype.refreshInMemoryRowModel = function (step) {\n console.warn(\"AG Grid: since version 18.x, api.refreshInMemoryRowModel() should be replaced with api.refreshClientSideRowModel()\");\n this.refreshClientSideRowModel(step);\n };\n /**\n * Refresh the Client-Side Row Model, executing the grouping, filtering and sorting again.\n * Optionally provide the step you wish the refresh to apply from. Defaults to `everything`.\n */\n GridApi.prototype.refreshClientSideRowModel = function (step) {\n if (missing(this.clientSideRowModel)) {\n console.warn('cannot call refreshClientSideRowModel unless using normal row model');\n }\n var paramsStep = ClientSideRowModelSteps.EVERYTHING;\n var stepsMapped = {\n everything: ClientSideRowModelSteps.EVERYTHING,\n group: ClientSideRowModelSteps.EVERYTHING,\n filter: ClientSideRowModelSteps.FILTER,\n map: ClientSideRowModelSteps.MAP,\n aggregate: ClientSideRowModelSteps.AGGREGATE,\n sort: ClientSideRowModelSteps.SORT,\n pivot: ClientSideRowModelSteps.PIVOT\n };\n if (exists(step)) {\n paramsStep = stepsMapped[step];\n }\n if (missing(paramsStep)) {\n console.error(\"AG Grid: invalid step \" + step + \", available steps are \" + Object.keys(stepsMapped).join(', '));\n return;\n }\n var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n var modelParams = {\n step: paramsStep,\n keepRenderedRows: true,\n keepEditingRows: true,\n animate: animate\n };\n this.clientSideRowModel.refreshModel(modelParams);\n };\n /** Returns `true` when there are no more animation frames left to process. */\n GridApi.prototype.isAnimationFrameQueueEmpty = function () {\n return this.animationFrameService.isQueueEmpty();\n };\n GridApi.prototype.flushAllAnimationFrames = function () {\n this.animationFrameService.flushAllFrames();\n };\n /**\n * Returns the row node with the given ID.\n * The row node ID is the one you provide from the callback `getRowId(params)`,\n * otherwise the ID is a number (cast as string) auto-generated by the grid when\n * the row data is set.\n */\n GridApi.prototype.getRowNode = function (id) {\n return this.rowModel.getRowNode(id);\n };\n /**\n * Gets the sizes that various UI elements will be rendered at with the current theme.\n * If you override the row or header height using `gridOptions`, the override value you provided will be returned.\n */\n GridApi.prototype.getSizesForCurrentTheme = function () {\n return {\n rowHeight: this.gridOptionsWrapper.getRowHeightAsNumber(),\n headerHeight: this.gridOptionsWrapper.getHeaderHeight()\n };\n };\n /** Expand all groups. */\n GridApi.prototype.expandAll = function () {\n if (this.clientSideRowModel) {\n this.clientSideRowModel.expandOrCollapseAll(true);\n }\n else if (this.serverSideRowModel) {\n this.serverSideRowModel.expandAll(true);\n }\n else {\n console.warn('AG Grid: expandAll only works with Client Side Row Model and Server Side Row Model');\n }\n };\n /** Collapse all groups. */\n GridApi.prototype.collapseAll = function () {\n if (this.clientSideRowModel) {\n this.clientSideRowModel.expandOrCollapseAll(false);\n }\n else if (this.serverSideRowModel) {\n this.serverSideRowModel.expandAll(false);\n }\n else {\n console.warn('AG Grid: collapseAll only works with Client Side Row Model and Server Side Row Model');\n }\n };\n /** Gets the tool panel instance corresponding to the supplied `id`. */\n GridApi.prototype.getToolPanelInstance = function (id) {\n if (!this.sideBarComp) {\n console.warn('AG Grid: toolPanel is only available in AG Grid Enterprise');\n return;\n }\n var comp = this.sideBarComp.getToolPanelInstance(id);\n return unwrapUserComp(comp);\n };\n GridApi.prototype.addVirtualRowListener = function (eventName, rowIndex, callback) {\n if (typeof eventName !== 'string') {\n console.warn('AG Grid: addVirtualRowListener is deprecated, please use addRenderedRowListener.');\n }\n this.addRenderedRowListener(eventName, rowIndex, callback);\n };\n /**\n * Registers a callback to a virtual row.\n * A virtual row is a row that is visually rendered on the screen (rows that are not visible because of the scroll position are not rendered).\n * Unlike normal events, you do not need to unregister rendered row listeners.\n * When the rendered row is removed from the grid, all associated rendered row listeners will also be removed.\n * listen for this event if your `cellRenderer` needs to do cleanup when the row no longer exists.\n */\n GridApi.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n if (eventName === 'virtualRowSelected') {\n console.warn(\"AG Grid: event virtualRowSelected is deprecated, to register for individual row\\n selection events, add a listener directly to the row node.\");\n }\n this.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);\n };\n /** Pass a quick filter text into the grid for filtering. */\n GridApi.prototype.setQuickFilter = function (newFilter) {\n this.filterManager.setQuickFilter(newFilter);\n };\n /** @deprecated AG Grid: do not use api for selection, call rowNode.setSelected(value) instead */\n GridApi.prototype.selectIndex = function (index, tryMulti, suppressEvents) {\n console.warn('AG Grid: do not use api for selection, call rowNode.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n this.selectionService.selectIndex(index, tryMulti);\n };\n /** @deprecated AG Grid: do not use api for selection, call rowNode.setSelected(value) instead. */\n GridApi.prototype.deselectIndex = function (index, suppressEvents) {\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('AG Grid: do not use api for selection, call rowNode.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n this.selectionService.deselectIndex(index);\n };\n /** @deprecated AG Grid: API for selection is deprecated, call rowNode.setSelected(value) instead. */\n GridApi.prototype.selectNode = function (node, tryMulti, suppressEvents) {\n if (tryMulti === void 0) { tryMulti = false; }\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('AG Grid: API for selection is deprecated, call rowNode.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n node.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n };\n /** @deprecated AG Grid: API for selection is deprecated, call rowNode.setSelected(value) instead. */\n GridApi.prototype.deselectNode = function (node, suppressEvents) {\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('AG Grid: API for selection is deprecated, call rowNode.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n node.setSelectedParams({ newValue: false });\n };\n /** Select all rows, regardless of filtering and rows that are not visible due to grouping being enabled and their groups not expanded. */\n GridApi.prototype.selectAll = function () {\n this.selectionService.selectAllRowNodes();\n };\n /** Clear all row selections, regardless of filtering. */\n GridApi.prototype.deselectAll = function () {\n this.selectionService.deselectAllRowNodes();\n };\n /** Select all filtered rows. */\n GridApi.prototype.selectAllFiltered = function () {\n this.selectionService.selectAllRowNodes(true);\n };\n /** Clear all filtered selections. */\n GridApi.prototype.deselectAllFiltered = function () {\n this.selectionService.deselectAllRowNodes(true);\n };\n /** @deprecated recomputeAggregates is deprecated, please call api.refreshClientSideRowModel('aggregate') instead */\n GridApi.prototype.recomputeAggregates = function () {\n if (missing(this.clientSideRowModel)) {\n console.warn('cannot call recomputeAggregates unless using normal row model');\n }\n console.warn(\"recomputeAggregates is deprecated, please call api.refreshClientSideRowModel('aggregate') instead\");\n this.clientSideRowModel.refreshModel({ step: ClientSideRowModelSteps.AGGREGATE });\n };\n /**\n * Sets columns to adjust in size to fit the grid horizontally.\n **/\n GridApi.prototype.sizeColumnsToFit = function (params) {\n this.gridBodyCtrl.sizeColumnsToFit(params);\n };\n /** Show the 'loading' overlay. */\n GridApi.prototype.showLoadingOverlay = function () {\n this.overlayWrapperComp.showLoadingOverlay();\n };\n /** Show the 'no rows' overlay. */\n GridApi.prototype.showNoRowsOverlay = function () {\n this.overlayWrapperComp.showNoRowsOverlay();\n };\n /** Hides the overlay if showing. */\n GridApi.prototype.hideOverlay = function () {\n this.overlayWrapperComp.hideOverlay();\n };\n GridApi.prototype.isNodeSelected = function (node) {\n console.warn('AG Grid: no need to call api.isNodeSelected(), just call node.isSelected() instead');\n return node.isSelected();\n };\n /** @deprecated Use getSelectedNodesById no longer exists, use getSelectedNodes(). */\n GridApi.prototype.getSelectedNodesById = function () {\n console.error('AG Grid: since version 3.4, getSelectedNodesById no longer exists, use getSelectedNodes() instead');\n return null;\n };\n /**\n * Returns an unsorted list of selected nodes.\n * Getting the underlying node (rather than the data) is useful when working with tree / aggregated data,\n * as the node can be traversed.\n */\n GridApi.prototype.getSelectedNodes = function () {\n return this.selectionService.getSelectedNodes();\n };\n /** Returns an unsorted list of selected rows (i.e. row data that you provided). */\n GridApi.prototype.getSelectedRows = function () {\n return this.selectionService.getSelectedRows();\n };\n /**\n * Returns a list of all selected nodes at 'best cost', a feature to be used with groups / trees.\n * If a group has all its children selected, then the group appears in the result, but not the children.\n * Designed for use with `'children'` as the group selection type, where groups don't actually appear in the selection normally.\n */\n GridApi.prototype.getBestCostNodeSelection = function () {\n return this.selectionService.getBestCostNodeSelection();\n };\n /** Retrieve rendered nodes. Due to virtualisation this will contain only the current visible rows and those in the buffer. */\n GridApi.prototype.getRenderedNodes = function () {\n return this.rowRenderer.getRenderedNodes();\n };\n /** @deprecated ensureColIndexVisible(index) no longer supported, use ensureColumnVisible(colKey) instead. */\n GridApi.prototype.ensureColIndexVisible = function (index) {\n console.warn('AG Grid: ensureColIndexVisible(index) no longer supported, use ensureColumnVisible(colKey) instead.');\n };\n /**\n * Ensures the column is visible by scrolling the table if needed.\n *\n * This will have no effect before the firstDataRendered event has fired.\n *\n * @param key - The column to ensure visible\n * @param position - Where the column will be positioned.\n * - `auto` - Scrolls the minimum amount to make sure the column is visible.\n * - `start` - Scrolls the column to the start of the viewport.\n * - `middle` - Scrolls the column to the middle of the viewport.\n * - `end` - Scrolls the column to the end of the viewport.\n */\n GridApi.prototype.ensureColumnVisible = function (key, position) {\n if (position === void 0) { position = 'auto'; }\n this.gridBodyCtrl.getScrollFeature().ensureColumnVisible(key, position);\n };\n /**\n * Vertically scrolls the grid until the provided row index is inside the visible viewport.\n * If a position is provided, the grid will attempt to scroll until the row is at the given position within the viewport.\n * This will have no effect before the firstDataRendered event has fired.\n */\n GridApi.prototype.ensureIndexVisible = function (index, position) {\n this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(index, position);\n };\n /**\n * Vertically scrolls the grid until the provided row (or a row matching the provided comparator) is inside the visible viewport.\n * If a position is provided, the grid will attempt to scroll until the row is at the given position within the viewport.\n * This will have no effect before the firstDataRendered event has fired.\n */\n GridApi.prototype.ensureNodeVisible = function (nodeSelector, position) {\n if (position === void 0) { position = null; }\n this.gridBodyCtrl.getScrollFeature().ensureNodeVisible(nodeSelector, position);\n };\n /**\n * Similar to `forEachNode`, except lists all the leaf nodes.\n * This effectively goes through all the data that you provided to the grid before the grid performed any grouping.\n * If using tree data, goes through all the nodes for the data you provided, including nodes that have children,\n * but excluding groups the grid created where gaps were missing in the hierarchy.\n */\n GridApi.prototype.forEachLeafNode = function (callback) {\n if (missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNode unless using normal row model');\n }\n this.clientSideRowModel.forEachLeafNode(callback);\n };\n /**\n * Iterates through each node (row) in the grid and calls the callback for each node.\n * This works similar to the `forEach` method on a JavaScript array.\n * This is called for every node, ignoring any filtering or sorting applied within the grid.\n * If using the Infinite Row Model, then this gets called for each page loaded in the page cache.\n */\n GridApi.prototype.forEachNode = function (callback) {\n this.rowModel.forEachNode(callback);\n };\n /** Similar to `forEachNode`, except skips any filtered out data. */\n GridApi.prototype.forEachNodeAfterFilter = function (callback) {\n if (missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNodeAfterFilter unless using normal row model');\n }\n this.clientSideRowModel.forEachNodeAfterFilter(callback);\n };\n /** Similar to `forEachNodeAfterFilter`, except the callbacks are called in the order the rows are displayed in the grid. */\n GridApi.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n if (missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNodeAfterFilterAndSort unless using normal row model');\n }\n this.clientSideRowModel.forEachNodeAfterFilterAndSort(callback);\n };\n /**\n * Returns the filter component instance for a column.\n * `key` can be a string field name or a ColDef object (matches on object reference, useful if field names are not unique).\n * If your filter is created asynchronously, `getFilterInstance` will return `null` so you will need to use the `callback` to access the filter instance instead.\n */\n GridApi.prototype.getFilterInstance = function (key, callback) {\n var res = this.getFilterInstanceImpl(key, function (instance) {\n if (!callback) {\n return;\n }\n var unwrapped = unwrapUserComp(instance);\n callback(unwrapped);\n });\n var unwrapped = unwrapUserComp(res);\n return unwrapped;\n };\n GridApi.prototype.getFilterInstanceImpl = function (key, callback) {\n var column = this.columnModel.getPrimaryColumn(key);\n if (!column) {\n return undefined;\n }\n var filterPromise = this.filterManager.getFilterComponent(column, 'NO_UI');\n var currentValue = filterPromise && filterPromise.resolveNow(null, function (filterComp) { return filterComp; });\n if (currentValue) {\n setTimeout(callback, 0, currentValue);\n }\n else if (filterPromise) {\n filterPromise.then(function (comp) {\n callback(comp);\n });\n }\n return currentValue;\n };\n /** Destroys a filter. Useful to force a particular filter to be created from scratch again. */\n GridApi.prototype.destroyFilter = function (key) {\n var column = this.columnModel.getPrimaryColumn(key);\n if (column) {\n return this.filterManager.destroyFilter(column, \"filterDestroyed\");\n }\n };\n /** Gets the status panel instance corresponding to the supplied `id`. */\n GridApi.prototype.getStatusPanel = function (key) {\n if (!this.statusBarService) {\n return;\n }\n var comp = this.statusBarService.getStatusPanel(key);\n return unwrapUserComp(comp);\n };\n GridApi.prototype.getColumnDef = function (key) {\n var column = this.columnModel.getPrimaryColumn(key);\n if (column) {\n return column.getColDef();\n }\n return null;\n };\n /**\n * Returns the current column definitions.\n */\n GridApi.prototype.getColumnDefs = function () { return this.columnModel.getColumnDefs(); };\n /** Informs the grid that a filter has changed. This is typically called after a filter change through one of the filter APIs. */\n GridApi.prototype.onFilterChanged = function () {\n this.filterManager.onFilterChanged();\n };\n /**\n * Gets the grid to act as if the sort was changed.\n * Useful if you update some values and want to get the grid to reorder them according to the new values.\n */\n GridApi.prototype.onSortChanged = function () {\n this.sortController.onSortChanged('api');\n };\n /** Sets the state of all the advanced filters. Provide it with what you get from `getFilterModel()` to restore filter state. */\n GridApi.prototype.setFilterModel = function (model) {\n this.filterManager.setFilterModel(model);\n };\n /** Gets the current state of all the advanced filters. Used for saving filter state. */\n GridApi.prototype.getFilterModel = function () {\n return this.filterManager.getFilterModel();\n };\n /** Returns the focused cell (or the last focused cell if the grid lost focus). */\n GridApi.prototype.getFocusedCell = function () {\n return this.focusService.getFocusedCell();\n };\n /** Clears the focused cell. */\n GridApi.prototype.clearFocusedCell = function () {\n return this.focusService.clearFocusedCell();\n };\n /** Sets the focus to the specified cell. `rowPinned` can be either 'top', 'bottom' or null (for not pinned). */\n GridApi.prototype.setFocusedCell = function (rowIndex, colKey, rowPinned) {\n this.focusService.setFocusedCell({ rowIndex: rowIndex, column: colKey, rowPinned: rowPinned, forceBrowserFocus: true });\n };\n /** Sets the `suppressRowDrag` property. */\n GridApi.prototype.setSuppressRowDrag = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_ROW_DRAG, value);\n };\n /** Sets the `suppressMoveWhenRowDragging` property. */\n GridApi.prototype.setSuppressMoveWhenRowDragging = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_MOVE_WHEN_ROW_DRAG, value);\n };\n /** Sets the `suppressRowClickSelection` property. */\n GridApi.prototype.setSuppressRowClickSelection = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_ROW_CLICK_SELECTION, value);\n };\n /** Adds a drop zone outside of the grid where rows can be dropped. */\n GridApi.prototype.addRowDropZone = function (params) {\n this.gridBodyCtrl.getRowDragFeature().addRowDropZone(params);\n };\n /** Removes an external drop zone added by `addRowDropZone`. */\n GridApi.prototype.removeRowDropZone = function (params) {\n var activeDropTarget = this.dragAndDropService.findExternalZone(params);\n if (activeDropTarget) {\n this.dragAndDropService.removeDropTarget(activeDropTarget);\n }\n };\n /** Returns the `RowDropZoneParams` to be used by another grid's `addRowDropZone` method. */\n GridApi.prototype.getRowDropZoneParams = function (events) {\n return this.gridBodyCtrl.getRowDragFeature().getRowDropZone(events);\n };\n /** Sets the height in pixels for the row containing the column label header. */\n GridApi.prototype.setHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_HEADER_HEIGHT, headerHeight);\n };\n /**\n * Switch between layout options: `normal`, `autoHeight`, `print`.\n * Defaults to `normal` if no domLayout provided.\n */\n GridApi.prototype.setDomLayout = function (domLayout) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_DOM_LAYOUT, domLayout);\n };\n /** Sets the `enableCellTextSelection` property. */\n GridApi.prototype.setEnableCellTextSelection = function (selectable) {\n this.gridBodyCtrl.setCellTextSelection(selectable);\n };\n /** Sets the preferred direction for the selection fill handle. */\n GridApi.prototype.setFillHandleDirection = function (direction) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_FILL_HANDLE_DIRECTION, direction);\n };\n /** Sets the height in pixels for the rows containing header column groups. */\n GridApi.prototype.setGroupHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, headerHeight);\n };\n /** Sets the height in pixels for the row containing the floating filters. */\n GridApi.prototype.setFloatingFiltersHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, headerHeight);\n };\n /** Sets the height in pixels for the row containing the columns when in pivot mode. */\n GridApi.prototype.setPivotHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, headerHeight);\n };\n /** Sets the height in pixels for the row containing header column groups when in pivot mode. */\n GridApi.prototype.setPivotGroupHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, headerHeight);\n };\n GridApi.prototype.setIsExternalFilterPresent = function (isExternalFilterPresentFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_EXTERNAL_FILTER_PRESENT, isExternalFilterPresentFunc);\n };\n GridApi.prototype.setDoesExternalFilterPass = function (doesExternalFilterPassFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_DOES_EXTERNAL_FILTER_PASS, doesExternalFilterPassFunc);\n };\n GridApi.prototype.setNavigateToNextCell = function (navigateToNextCellFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_NAVIGATE_TO_NEXT_CELL, navigateToNextCellFunc);\n };\n GridApi.prototype.setTabToNextCell = function (tabToNextCellFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_TAB_TO_NEXT_CELL, tabToNextCellFunc);\n };\n GridApi.prototype.setTabToNextHeader = function (tabToNextHeaderFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_TAB_TO_NEXT_HEADER, tabToNextHeaderFunc);\n };\n GridApi.prototype.setNavigateToNextHeader = function (navigateToNextHeaderFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_NAVIGATE_TO_NEXT_HEADER, navigateToNextHeaderFunc);\n };\n GridApi.prototype.setRowGroupPanelShow = function (rowGroupPanelShow) {\n this.gridOptionsWrapper.setProperty('rowGroupPanelShow', rowGroupPanelShow);\n };\n GridApi.prototype.setGroupRowAggNodes = function (groupRowAggNodesFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_ROW_AGG_NODES, groupRowAggNodesFunc);\n };\n GridApi.prototype.setGetGroupRowAgg = function (getGroupRowAggFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_GROUP_ROW_AGG, getGroupRowAggFunc);\n };\n GridApi.prototype.setGetBusinessKeyForNode = function (getBusinessKeyForNodeFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_BUSINESS_KEY_FOR_NODE, getBusinessKeyForNodeFunc);\n };\n GridApi.prototype.setGetChildCount = function (getChildCountFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_CHILD_COUNT, getChildCountFunc);\n };\n GridApi.prototype.setProcessRowPostCreate = function (processRowPostCreateFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PROCESS_ROW_POST_CREATE, processRowPostCreateFunc);\n };\n GridApi.prototype.setGetRowNodeId = function (getRowNodeIdFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_ROW_NODE_ID, getRowNodeIdFunc);\n };\n GridApi.prototype.setGetRowId = function (getRowIdFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_ROW_ID, getRowIdFunc);\n };\n GridApi.prototype.setGetRowClass = function (rowClassFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_ROW_CLASS, rowClassFunc);\n };\n GridApi.prototype.setIsFullWidthCell = function (isFullWidthCellFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_FULL_WIDTH_CELL, isFullWidthCellFunc);\n };\n GridApi.prototype.setIsFullWidthRow = function (isFullWidthRowFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_FULL_WIDTH_ROW, isFullWidthRowFunc);\n };\n GridApi.prototype.setIsRowSelectable = function (isRowSelectableFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_ROW_SELECTABLE, isRowSelectableFunc);\n };\n GridApi.prototype.setIsRowMaster = function (isRowMasterFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_ROW_MASTER, isRowMasterFunc);\n };\n GridApi.prototype.setPostSort = function (postSortFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_POST_SORT, postSortFunc);\n };\n GridApi.prototype.setPostSortRows = function (postSortRowsFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_POST_SORT_ROWS, postSortRowsFunc);\n };\n GridApi.prototype.setGetDocument = function (getDocumentFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_DOCUMENT, getDocumentFunc);\n };\n GridApi.prototype.setGetContextMenuItems = function (getContextMenuItemsFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_CONTEXT_MENU_ITEMS, getContextMenuItemsFunc);\n };\n GridApi.prototype.setGetMainMenuItems = function (getMainMenuItemsFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_MAIN_MENU_ITEMS, getMainMenuItemsFunc);\n };\n GridApi.prototype.setProcessCellForClipboard = function (processCellForClipboardFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PROCESS_CELL_FOR_CLIPBOARD, processCellForClipboardFunc);\n };\n GridApi.prototype.setSendToClipboard = function (sendToClipboardFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SEND_TO_CLIPBOARD, sendToClipboardFunc);\n };\n GridApi.prototype.setProcessCellFromClipboard = function (processCellFromClipboardFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PROCESS_CELL_FROM_CLIPBOARD, processCellFromClipboardFunc);\n };\n /** @deprecated use `setProcessPivotResultColDef` instead */\n GridApi.prototype.setProcessSecondaryColDef = function (processSecondaryColDefFunc) {\n console.warn('AG Grid: since version 28.0.x setProcessSecondaryColDef has been renamed, please use setProcessPivotResultColDef instead');\n this.setProcessPivotResultColDef(processSecondaryColDefFunc);\n };\n /** @deprecated use `setProcessPivotResultColGroupDef` instead */\n GridApi.prototype.setProcessSecondaryColGroupDef = function (processSecondaryColGroupDefFunc) {\n console.warn('AG Grid: since version 28.0.x setProcessSecondaryColGroupDef has been renamed, please use setProcessPivotResultColGroupDef instead');\n this.setProcessPivotResultColGroupDef(processSecondaryColGroupDefFunc);\n };\n GridApi.prototype.setProcessPivotResultColDef = function (processPivotResultColDefFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PROCESS_PIVOT_RESULT_COL_DEF, processPivotResultColDefFunc);\n };\n GridApi.prototype.setProcessPivotResultColGroupDef = function (processPivotResultColGroupDefFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PROCESS_PIVOT_RESULT_COL_GROUP_DEF, processPivotResultColGroupDefFunc);\n };\n GridApi.prototype.setPostProcessPopup = function (postProcessPopupFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_POST_PROCESS_POPUP, postProcessPopupFunc);\n };\n GridApi.prototype.setDefaultGroupOrderComparator = function (defaultGroupOrderComparatorFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_DEFAULT_GROUP_ORDER_COMPARATOR, defaultGroupOrderComparatorFunc);\n };\n GridApi.prototype.setInitialGroupOrderComparator = function (initialGroupOrderComparatorFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_INITIAL_GROUP_ORDER_COMPARATOR, initialGroupOrderComparatorFunc);\n };\n GridApi.prototype.setGetChartToolbarItems = function (getChartToolbarItemsFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_CHART_TOOLBAR_ITEMS, getChartToolbarItemsFunc);\n };\n GridApi.prototype.setPaginationNumberFormatter = function (paginationNumberFormatterFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PAGINATION_NUMBER_FORMATTER, paginationNumberFormatterFunc);\n };\n /** @deprecated use setGetServerSideGroupLevelParams instead */\n GridApi.prototype.setGetServerSideStoreParams = function (getServerSideStoreParamsFunc) {\n this.setGetServerSideGroupLevelParams(getServerSideStoreParamsFunc);\n };\n GridApi.prototype.setGetServerSideGroupLevelParams = function (getServerSideGroupLevelParamsFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_SERVER_SIDE_GROUP_PARAMS, getServerSideGroupLevelParamsFunc);\n };\n GridApi.prototype.setIsServerSideGroupOpenByDefault = function (isServerSideGroupOpenByDefaultFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_SERVER_SIDE_GROUPS_OPEN_BY_DEFAULT, isServerSideGroupOpenByDefaultFunc);\n };\n GridApi.prototype.setIsApplyServerSideTransaction = function (isApplyServerSideTransactionFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_APPLY_SERVER_SIDE_TRANSACTION, isApplyServerSideTransactionFunc);\n };\n GridApi.prototype.setIsServerSideGroup = function (isServerSideGroupFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_SERVER_SIDE_GROUP, isServerSideGroupFunc);\n };\n GridApi.prototype.setGetServerSideGroupKey = function (getServerSideGroupKeyFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_SERVER_SIDE_GROUP_KEY, getServerSideGroupKeyFunc);\n };\n GridApi.prototype.setGetRowStyle = function (rowStyleFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_ROW_STYLE, rowStyleFunc);\n };\n GridApi.prototype.setGetRowHeight = function (rowHeightFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_ROW_HEIGHT, rowHeightFunc);\n };\n /** Returns `true` if the side bar is visible. */\n GridApi.prototype.isSideBarVisible = function () {\n return this.sideBarComp ? this.sideBarComp.isDisplayed() : false;\n };\n /** Show/hide the entire side bar, including any visible panel and the tab buttons. */\n GridApi.prototype.setSideBarVisible = function (show) {\n if (!this.sideBarComp) {\n if (show) {\n console.warn('AG Grid: sideBar is not loaded');\n }\n return;\n }\n this.sideBarComp.setDisplayed(show);\n };\n /** Sets the side bar position relative to the grid. Possible values are `'left'` or `'right'`. */\n GridApi.prototype.setSideBarPosition = function (position) {\n if (!this.sideBarComp) {\n console.warn('AG Grid: sideBar is not loaded');\n return;\n }\n this.sideBarComp.setSideBarPosition(position);\n };\n /** Opens a particular tool panel. Provide the ID of the tool panel to open. */\n GridApi.prototype.openToolPanel = function (key) {\n if (!this.sideBarComp) {\n console.warn('AG Grid: toolPanel is only available in AG Grid Enterprise');\n return;\n }\n this.sideBarComp.openToolPanel(key);\n };\n /** Closes the currently open tool panel (if any). */\n GridApi.prototype.closeToolPanel = function () {\n if (!this.sideBarComp) {\n console.warn('AG Grid: toolPanel is only available in AG Grid Enterprise');\n return;\n }\n this.sideBarComp.close();\n };\n /** Returns the ID of the currently shown tool panel if any, otherwise `null`. */\n GridApi.prototype.getOpenedToolPanel = function () {\n return this.sideBarComp ? this.sideBarComp.openedItem() : null;\n };\n /** Returns the current side bar configuration. If a shortcut was used, returns the detailed long form. */\n GridApi.prototype.getSideBar = function () {\n return this.gridOptionsWrapper.getSideBar();\n };\n /** Resets the side bar to the provided configuration. The parameter is the same as the sideBar grid property. The side bar is re-created from scratch with the new config. */\n GridApi.prototype.setSideBar = function (def) {\n this.gridOptionsWrapper.setProperty('sideBar', SideBarDefParser.parse(def));\n };\n GridApi.prototype.setSuppressClipboardPaste = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_CLIPBOARD_PASTE, value);\n };\n /** Returns `true` if the tool panel is showing, otherwise `false`. */\n GridApi.prototype.isToolPanelShowing = function () {\n return this.sideBarComp.isToolPanelShowing();\n };\n /** @deprecated AG Grid - since version 25.1, doLayout was taken out, as it's not needed. The grid responds to grid size changes automatically. */\n GridApi.prototype.doLayout = function () {\n var message = \"AG Grid - since version 25.1, doLayout was taken out, as it's not needed. The grid responds to grid size changes automatically\";\n doOnce(function () { return console.warn(message); }, 'doLayoutDeprecated');\n };\n /** Tells the grid to recalculate the row heights. */\n GridApi.prototype.resetRowHeights = function () {\n if (exists(this.clientSideRowModel)) {\n if (this.columnModel.isAutoRowHeightActive()) {\n console.warn('AG Grid: calling gridApi.resetRowHeights() makes no sense when using Auto Row Height.');\n return;\n }\n this.clientSideRowModel.resetRowHeights();\n }\n };\n GridApi.prototype.setGroupRemoveSingleChildren = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, value);\n };\n GridApi.prototype.setGroupRemoveLowestSingleChildren = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, value);\n };\n GridApi.prototype.setGroupDisplayType = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_DISPLAY_TYPE, value);\n };\n /** Tells the grid a row height has changed. To be used after calling `rowNode.setRowHeight(newHeight)`. */\n GridApi.prototype.onRowHeightChanged = function () {\n if (this.clientSideRowModel) {\n this.clientSideRowModel.onRowHeightChanged();\n }\n else if (this.serverSideRowModel) {\n this.serverSideRowModel.onRowHeightChanged();\n }\n };\n /**\n * Gets the value for a column for a particular `rowNode` (row).\n * This is useful if you want the raw value of a cell e.g. if implementing your own CSV export.\n */\n GridApi.prototype.getValue = function (colKey, rowNode) {\n var column = this.columnModel.getPrimaryColumn(colKey);\n if (missing(column)) {\n column = this.columnModel.getGridColumn(colKey);\n }\n if (missing(column)) {\n return null;\n }\n return this.valueService.getValue(column, rowNode);\n };\n /** Add an event listener for the specified `eventType`. Works similar to `addEventListener` for a browser DOM element. */\n GridApi.prototype.addEventListener = function (eventType, listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.addEventListener(eventType, listener, async);\n };\n /** Add an event listener for all event types coming from the grid. */\n GridApi.prototype.addGlobalListener = function (listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.addGlobalListener(listener, async);\n };\n /** Remove an event listener. */\n GridApi.prototype.removeEventListener = function (eventType, listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.removeEventListener(eventType, listener, async);\n };\n /** Remove a global event listener. */\n GridApi.prototype.removeGlobalListener = function (listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.removeGlobalListener(listener, async);\n };\n GridApi.prototype.dispatchEvent = function (event) {\n this.eventService.dispatchEvent(event);\n };\n /** Will destroy the grid and release resources. If you are using a framework you do not need to call this, as the grid links in with the framework lifecycle. However if you are using Web Components or native JavaScript, you do need to call this, to avoid a memory leak in your application. */\n GridApi.prototype.destroy = function () {\n // this is needed as GridAPI is a bean, and GridAPI.destroy() is called as part\n // of context.destroy(). so we need to stop the infinite loop.\n if (this.destroyCalled) {\n return;\n }\n this.destroyCalled = true;\n // destroy the UI first (as they use the services)\n var gridCtrl = this.ctrlsService.getGridCtrl();\n if (gridCtrl) {\n gridCtrl.destroyGridUi();\n }\n // destroy the services\n this.context.destroy();\n };\n GridApi.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function () {\n // some users were raising support issues with regards memory leaks. the problem was the customers applications\n // were keeping references to the API. trying to educate them all would be difficult, easier to just remove\n // all references in the API so at least the core grid can be garbage collected.\n //\n // wait about 100ms before clearing down the references, in case user has some cleanup to do,\n // and needs to deference the API first\n setTimeout(removeAllReferences.bind(window, this, 'Grid API'), 100);\n };\n GridApi.prototype.warnIfDestroyed = function (methodName) {\n if (this.destroyCalled) {\n console.warn(\"AG Grid: Grid API method \" + methodName + \" was called on a grid that was destroyed.\");\n }\n return this.destroyCalled;\n };\n /** Reset the quick filter cache text on every rowNode. */\n GridApi.prototype.resetQuickFilter = function () {\n if (this.warnIfDestroyed('resetQuickFilter')) {\n return;\n }\n this.rowModel.forEachNode(function (node) { return node.quickFilterAggregateText = null; });\n };\n /** @deprecated AG Grid: in v20.1.x, api.getRangeSelections() is gone, please use getCellRanges() instead. */\n GridApi.prototype.getRangeSelections = function () {\n console.warn(\"AG Grid: in v20.1.x, api.getRangeSelections() is gone, please use getCellRanges() instead.\\n We had to change how cell selections works a small bit to allow charting to integrate. The return type of\\n getCellRanges() is a bit different, please check the AG Grid documentation.\");\n return null;\n };\n /** Returns the list of selected cell ranges. */\n GridApi.prototype.getCellRanges = function () {\n if (this.rangeService) {\n return this.rangeService.getCellRanges();\n }\n console.warn('AG Grid: cell range selection is only available in AG Grid Enterprise');\n return null;\n };\n GridApi.prototype.camelCaseToHumanReadable = function (camelCase) {\n return camelCaseToHumanText(camelCase);\n };\n /** @deprecated AG Grid: As of version 21.x, range selection changed slightly to allow charting integration. Please call api.addCellRange() instead of api.addRangeSelection() */\n GridApi.prototype.addRangeSelection = function (deprecatedNoLongerUsed) {\n console.warn('AG Grid: As of version 21.x, range selection changed slightly to allow charting integration. Please call api.addCellRange() instead of api.addRangeSelection()');\n };\n /** Adds the provided cell range to the selected ranges. */\n GridApi.prototype.addCellRange = function (params) {\n if (!this.rangeService) {\n console.warn('AG Grid: cell range selection is only available in AG Grid Enterprise');\n }\n this.rangeService.addCellRange(params);\n };\n /** Clears the selected ranges. */\n GridApi.prototype.clearRangeSelection = function () {\n if (!this.rangeService) {\n console.warn('AG Grid: cell range selection is only available in AG Grid Enterprise');\n }\n this.rangeService.removeAllCellRanges();\n };\n /** Reverts the last cell edit. */\n GridApi.prototype.undoCellEditing = function () {\n this.undoRedoService.undo();\n };\n /** Re-applies the most recently undone cell edit. */\n GridApi.prototype.redoCellEditing = function () {\n this.undoRedoService.redo();\n };\n /** Returns current number of available cell edit undo operations. */\n GridApi.prototype.getCurrentUndoSize = function () {\n return this.undoRedoService.getCurrentUndoStackSize();\n };\n /** Returns current number of available cell edit redo operations. */\n GridApi.prototype.getCurrentRedoSize = function () {\n return this.undoRedoService.getCurrentRedoStackSize();\n };\n /** Returns a list of models with information about the charts that are currently rendered from the grid. */\n GridApi.prototype.getChartModels = function () {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.getChartModels') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.getChartModels')) {\n return this.chartService.getChartModels();\n }\n };\n /** Returns the `ChartRef` using the supplied `chartId`. */\n GridApi.prototype.getChartRef = function (chartId) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.getChartRef') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.getChartRef')) {\n return this.chartService.getChartRef(chartId);\n }\n };\n /** Returns a string containing the requested data URL which contains a representation of the chart image. */\n GridApi.prototype.getChartImageDataURL = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.getChartImageDataURL')) {\n return this.chartService.getChartImageDataURL(params);\n }\n };\n /** Downloads the chart image in the browser. */\n GridApi.prototype.downloadChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.downloadChart')) {\n return this.chartService.downloadChart(params);\n }\n };\n /** Open the Chart Tool Panel. */\n GridApi.prototype.openChartToolPanel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.openChartToolPanel')) {\n return this.chartService.openChartToolPanel(params);\n }\n };\n /** Close the Chart Tool Panel. */\n GridApi.prototype.closeChartToolPanel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.closeChartToolPanel')) {\n return this.chartService.closeChartToolPanel(params.chartId);\n }\n };\n /** Used to programmatically create charts from a range. */\n GridApi.prototype.createRangeChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.createRangeChart') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createRangeChart')) {\n return this.chartService.createRangeChart(params);\n }\n };\n /** Used to programmatically create cross filter charts from a range. */\n GridApi.prototype.createCrossFilterChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.createCrossFilterChart') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createCrossFilterChart')) {\n return this.chartService.createCrossFilterChart(params);\n }\n };\n /** Restores a chart using the `ChartModel` that was previously obtained from `getChartModels()`. */\n GridApi.prototype.restoreChart = function (chartModel, chartContainer) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.restoreChart') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.restoreChart')) {\n return this.chartService.restoreChart(chartModel, chartContainer);\n }\n };\n /** Used to programmatically create pivot charts from a grid. */\n GridApi.prototype.createPivotChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.createPivotChart') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createPivotChart')) {\n return this.chartService.createPivotChart(params);\n }\n };\n /** Copies data to clipboard by following the same rules as pressing Ctrl+C. */\n GridApi.prototype.copyToClipboard = function (params) {\n if (!this.clipboardService) {\n console.warn('AG Grid: clipboard is only available in AG Grid Enterprise');\n }\n this.clipboardService.copyToClipboard(params);\n };\n /** Copies the selected rows to the clipboard. */\n GridApi.prototype.copySelectedRowsToClipboard = function (params) {\n if (!this.clipboardService) {\n console.warn('AG Grid: clipboard is only available in AG Grid Enterprise');\n }\n this.clipboardService.copySelectedRowsToClipboard(params);\n };\n /** Copies the selected ranges to the clipboard. */\n GridApi.prototype.copySelectedRangeToClipboard = function (params) {\n if (!this.clipboardService) {\n console.warn('AG Grid: clipboard is only available in AG Grid Enterprise');\n }\n this.clipboardService.copySelectedRangeToClipboard(params);\n };\n /** Copies the selected range down, similar to `Ctrl + D` in Excel. */\n GridApi.prototype.copySelectedRangeDown = function () {\n if (!this.clipboardService) {\n console.warn('AG Grid: clipboard is only available in AG Grid Enterprise');\n }\n this.clipboardService.copyRangeDown();\n };\n /** Shows the column menu after and positions it relative to the provided button element. Use in conjunction with your own header template. */\n GridApi.prototype.showColumnMenuAfterButtonClick = function (colKey, buttonElement) {\n // use grid column so works with pivot mode\n var column = this.columnModel.getGridColumn(colKey);\n this.menuFactory.showMenuAfterButtonClick(column, buttonElement, 'columnMenu');\n };\n /** Shows the column menu after and positions it relative to the mouse event. Use in conjunction with your own header template. */\n GridApi.prototype.showColumnMenuAfterMouseClick = function (colKey, mouseEvent) {\n // use grid column so works with pivot mode\n var column = this.columnModel.getGridColumn(colKey);\n if (!column) {\n column = this.columnModel.getPrimaryColumn(colKey);\n }\n if (!column) {\n console.error(\"AG Grid: column '\" + colKey + \"' not found\");\n return;\n }\n this.menuFactory.showMenuAfterMouseEvent(column, mouseEvent);\n };\n /** Hides any visible context menu or column menu. */\n GridApi.prototype.hidePopupMenu = function () {\n // hide the context menu if in enterprise\n if (this.contextMenuFactory) {\n this.contextMenuFactory.hideActiveMenu();\n }\n // and hide the column menu always\n this.menuFactory.hideActiveMenu();\n };\n /** DOM element to use as the popup parent for grid popups (context menu, column menu etc). */\n GridApi.prototype.setPopupParent = function (ePopupParent) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_POPUP_PARENT, ePopupParent);\n };\n /** Navigates the grid focus to the next cell, as if tabbing. */\n GridApi.prototype.tabToNextCell = function (event) {\n return this.navigationService.tabToNextCell(false, event);\n };\n /** Navigates the grid focus to the previous cell, as if shift-tabbing. */\n GridApi.prototype.tabToPreviousCell = function (event) {\n return this.navigationService.tabToNextCell(true, event);\n };\n /** Returns the list of active cell renderer instances. */\n GridApi.prototype.getCellRendererInstances = function (params) {\n if (params === void 0) { params = {}; }\n var res = this.rowRenderer.getCellRendererInstances(params);\n var unwrapped = res.map(unwrapUserComp);\n return unwrapped;\n };\n /** Returns the list of active cell editor instances. Optionally provide parameters to restrict to certain columns / row nodes. */\n GridApi.prototype.getCellEditorInstances = function (params) {\n if (params === void 0) { params = {}; }\n var res = this.rowRenderer.getCellEditorInstances(params);\n var unwrapped = res.map(unwrapUserComp);\n return unwrapped;\n };\n /** If the grid is editing, returns back details of the editing cell(s). */\n GridApi.prototype.getEditingCells = function () {\n return this.rowRenderer.getEditingCells();\n };\n /** If a cell is editing, it stops the editing. Pass `true` if you want to cancel the editing (i.e. don't accept changes). */\n GridApi.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.rowRenderer.stopEditing(cancel);\n };\n /** Start editing the provided cell. If another cell is editing, the editing will be stopped in that other cell. */\n GridApi.prototype.startEditingCell = function (params) {\n var column = this.columnModel.getGridColumn(params.colKey);\n if (!column) {\n console.warn(\"AG Grid: no column found for \" + params.colKey);\n return;\n }\n var cellPosition = {\n rowIndex: params.rowIndex,\n rowPinned: params.rowPinned || null,\n column: column\n };\n var notPinned = params.rowPinned == null;\n if (notPinned) {\n this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(params.rowIndex);\n }\n var cell = this.navigationService.getCellByPosition(cellPosition);\n if (!cell) {\n return;\n }\n cell.startRowOrCellEdit(params.key, params.charPress);\n };\n /** Add an aggregation function with the specified key. */\n GridApi.prototype.addAggFunc = function (key, aggFunc) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFunc(key, aggFunc);\n }\n };\n /** Add aggregations function with the specified keys. */\n GridApi.prototype.addAggFuncs = function (aggFuncs) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFuncs(aggFuncs);\n }\n };\n /** Clears all aggregation functions (including those provided by the grid). */\n GridApi.prototype.clearAggFuncs = function () {\n if (this.aggFuncService) {\n this.aggFuncService.clear();\n }\n };\n /** Apply transactions to the server side row model. */\n GridApi.prototype.applyServerSideTransaction = function (transaction) {\n if (!this.serverSideTransactionManager) {\n console.warn('AG Grid: Cannot apply Server Side Transaction if not using the Server Side Row Model.');\n return;\n }\n return this.serverSideTransactionManager.applyTransaction(transaction);\n };\n GridApi.prototype.applyServerSideTransactionAsync = function (transaction, callback) {\n if (!this.serverSideTransactionManager) {\n console.warn('AG Grid: Cannot apply Server Side Transaction if not using the Server Side Row Model.');\n return;\n }\n return this.serverSideTransactionManager.applyTransactionAsync(transaction, callback);\n };\n /** Gets all failed server side loads to retry. */\n GridApi.prototype.retryServerSideLoads = function () {\n if (!this.serverSideRowModel) {\n console.warn('AG Grid: API retryServerSideLoads() can only be used when using Server-Side Row Model.');\n return;\n }\n this.serverSideRowModel.retryLoads();\n };\n GridApi.prototype.flushServerSideAsyncTransactions = function () {\n if (!this.serverSideTransactionManager) {\n console.warn('AG Grid: Cannot flush Server Side Transaction if not using the Server Side Row Model.');\n return;\n }\n return this.serverSideTransactionManager.flushAsyncTransactions();\n };\n /** Update row data. Pass a transaction object with lists for `add`, `remove` and `update`. */\n GridApi.prototype.applyTransaction = function (rowDataTransaction) {\n if (!this.clientSideRowModel) {\n console.error('AG Grid: updateRowData() only works with ClientSideRowModel. Working with InfiniteRowModel was deprecated in v23.1 and removed in v24.1');\n return;\n }\n var res = this.clientSideRowModel.updateRowData(rowDataTransaction);\n // refresh all the full width rows\n this.rowRenderer.refreshFullWidthRows(res.update);\n // do change detection for all present cells\n if (!this.gridOptionsWrapper.isSuppressChangeDetection()) {\n this.rowRenderer.refreshCells();\n }\n return res;\n };\n /** Sets the `deltaSort` property */\n GridApi.prototype.setDeltaSort = function (enable) {\n this.gridOptionsWrapper.setProperty('deltaSort', enable);\n };\n /** @deprecated AG Grid: as of v23.1, grid API updateRowData(transaction) is now called applyTransaction(transaction). */\n GridApi.prototype.updateRowData = function (rowDataTransaction) {\n var message = 'AG Grid: as of v23.1, grid API updateRowData(transaction) is now called applyTransaction(transaction). updateRowData is deprecated and will be removed in a future major release.';\n doOnce(function () { return console.warn(message); }, 'updateRowData deprecated');\n return this.applyTransaction(rowDataTransaction);\n };\n /** Same as `applyTransaction` except executes asynchronously for efficiency. */\n GridApi.prototype.applyTransactionAsync = function (rowDataTransaction, callback) {\n if (!this.clientSideRowModel) {\n console.error('AG Grid: api.applyTransactionAsync() only works with ClientSideRowModel.');\n return;\n }\n this.clientSideRowModel.batchUpdateRowData(rowDataTransaction, callback);\n };\n /** Executes any remaining asynchronous grid transactions, if any are waiting to be executed. */\n GridApi.prototype.flushAsyncTransactions = function () {\n if (!this.clientSideRowModel) {\n console.error('AG Grid: api.applyTransactionAsync() only works with ClientSideRowModel.');\n return;\n }\n this.clientSideRowModel.flushAsyncTransactions();\n };\n /** @deprecated AG Grid: as of v23.1, grid API batchUpdateRowData(transaction, callback) is now called applyTransactionAsync(transaction, callback). */\n GridApi.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {\n var message = 'AG Grid: as of v23.1, grid API batchUpdateRowData(transaction, callback) is now called applyTransactionAsync(transaction, callback). batchUpdateRowData is deprecated and will be removed in a future major release.';\n doOnce(function () { return console.warn(message); }, 'batchUpdateRowData deprecated');\n this.applyTransactionAsync(rowDataTransaction, callback);\n };\n /** @deprecated AG Grid: insertItemsAtIndex() is deprecated, use updateRowData(transaction) instead.*/\n GridApi.prototype.insertItemsAtIndex = function (index, items, skipRefresh) {\n console.warn('AG Grid: insertItemsAtIndex() is deprecated, use updateRowData(transaction) instead.');\n this.updateRowData({ add: items, addIndex: index, update: null, remove: null });\n };\n /** @deprecated AG Grid: removeItems() is deprecated, use updateRowData(transaction) instead. */\n GridApi.prototype.removeItems = function (rowNodes, skipRefresh) {\n console.warn('AG Grid: removeItems() is deprecated, use updateRowData(transaction) instead.');\n var dataToRemove = rowNodes.map(function (rowNode) { return rowNode.data; });\n this.updateRowData({ add: null, addIndex: null, update: null, remove: dataToRemove });\n };\n /** @deprecated AG Grid: addItems() is deprecated, use updateRowData(transaction) instead. */\n GridApi.prototype.addItems = function (items, skipRefresh) {\n console.warn('AG Grid: addItems() is deprecated, use updateRowData(transaction) instead.');\n this.updateRowData({ add: items, addIndex: null, update: null, remove: null });\n };\n /** @deprecated AG Grid: refreshVirtualPageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead */\n GridApi.prototype.refreshVirtualPageCache = function () {\n console.warn('AG Grid: refreshVirtualPageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');\n this.refreshInfiniteCache();\n };\n /** @deprecated AG Grid: refreshInfinitePageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead */\n GridApi.prototype.refreshInfinitePageCache = function () {\n console.warn('AG Grid: refreshInfinitePageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');\n this.refreshInfiniteCache();\n };\n /**\n * Marks all the currently loaded blocks in the cache for reload.\n * If you have 10 blocks in the cache, all 10 will be marked for reload.\n * The old data will continue to be displayed until the new data is loaded.\n */\n GridApi.prototype.refreshInfiniteCache = function () {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.refreshCache();\n }\n else {\n console.warn(\"AG Grid: api.refreshInfiniteCache is only available when rowModelType='infinite'.\");\n }\n };\n /** @deprecated AG Grid: purgeVirtualPageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead */\n GridApi.prototype.purgeVirtualPageCache = function () {\n console.warn('AG Grid: purgeVirtualPageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');\n this.purgeInfinitePageCache();\n };\n /** @deprecated AG Grid: purgeInfinitePageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead */\n GridApi.prototype.purgeInfinitePageCache = function () {\n console.warn('AG Grid: purgeInfinitePageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');\n this.purgeInfiniteCache();\n };\n /**\n * Purges the cache.\n * The grid is then told to refresh. Only the blocks required to display the current data on screen are fetched (typically no more than 2).\n * The grid will display nothing while the new blocks are loaded.\n * Use this to immediately remove the old data from the user.\n */\n GridApi.prototype.purgeInfiniteCache = function () {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.purgeCache();\n }\n else {\n console.warn(\"AG Grid: api.purgeInfiniteCache is only available when rowModelType='infinite'.\");\n }\n };\n /** @deprecated AG Grid: since version 18.x, api.purgeEnterpriseCache() should be replaced with api.refreshServerSide({purge: true}) */\n GridApi.prototype.purgeEnterpriseCache = function (route) {\n console.warn(\"AG Grid: since version 18.x, api.purgeEnterpriseCache() should be replaced with api.refreshServerSide({purge: true})\");\n this.purgeServerSideCache(route);\n };\n /** @deprecated AG Grid: since v25.0, api.purgeServerSideCache is deprecated. Please use api.refreshServerSide({purge: true}) instead. */\n GridApi.prototype.purgeServerSideCache = function (route) {\n if (route === void 0) { route = []; }\n if (this.serverSideRowModel) {\n console.warn(\"AG Grid: since v25.0, api.purgeServerSideCache is deprecated. Please use api.refreshServerSide({purge: true}) instead.\");\n this.refreshServerSide({\n route: route,\n purge: true\n });\n }\n else {\n console.warn(\"AG Grid: api.purgeServerSideCache is only available when rowModelType='serverSide'.\");\n }\n };\n /**\n * Refresh a server-side level.\n * If you pass no parameters, then the top level store is purged.\n * To purge a child level, pass in the string of keys to get to the desired level.\n */\n GridApi.prototype.refreshServerSide = function (params) {\n if (!this.serverSideRowModel) {\n console.warn(\"AG Grid: api.refreshServerSide is only available when rowModelType='serverSide'.\");\n return;\n }\n this.serverSideRowModel.refreshStore(params);\n };\n /** @deprecated use `refreshServerSide` instead */\n GridApi.prototype.refreshServerSideStore = function (params) {\n var message = \"AG Grid: Grid API refreshServerSideStore() was renamed to refreshServerSide() in v28.0\";\n doOnce(function () { return console.warn(message); }, 'refreshServerSideStore-renamed');\n return this.refreshServerSide(params);\n };\n /** @deprecated use `getServerSideGroupLevelState` instead */\n GridApi.prototype.getServerSideStoreState = function () {\n var message = \"AG Grid: Grid API getServerSideStoreState() was renamed to getServerSideGroupLevelState() in v28.0\";\n doOnce(function () { return console.warn(message); }, 'getServerSideStoreState-renamed');\n return this.getServerSideGroupLevelState();\n };\n /** Returns info on all server side group levels. */\n GridApi.prototype.getServerSideGroupLevelState = function () {\n if (!this.serverSideRowModel) {\n console.warn(\"AG Grid: api.getServerSideGroupLevelState is only available when rowModelType='serverSide'.\");\n return [];\n }\n return this.serverSideRowModel.getStoreState();\n };\n /** @deprecated AG Grid: getVirtualRowCount() is now called getInfiniteRowCount(), please call getInfiniteRowCount() instead */\n GridApi.prototype.getVirtualRowCount = function () {\n console.warn('AG Grid: getVirtualRowCount() is now called getInfiniteRowCount(), please call getInfiniteRowCount() instead');\n return this.getInfiniteRowCount();\n };\n /** The row count defines how many rows the grid allows scrolling to. */\n GridApi.prototype.getInfiniteRowCount = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.getRowCount();\n }\n else {\n console.warn(\"AG Grid: api.getVirtualRowCount is only available when rowModelType='virtual'.\");\n }\n };\n /** @deprecated AG Grid: api.isMaxRowFound is deprecated, please use api.isLastRowIndexKnown() */\n GridApi.prototype.isMaxRowFound = function () {\n console.warn(\"AG Grid: api.isMaxRowFound is deprecated, please use api.isLastRowIndexKnown()\");\n return this.isLastRowIndexKnown();\n };\n /** Returns `true` if grid allows for scrolling past the last row to load more rows, thus providing infinite scroll. */\n GridApi.prototype.isLastRowIndexKnown = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.isLastRowIndexKnown();\n }\n else {\n console.warn(\"AG Grid: api.isMaxRowFound is only available when rowModelType='virtual'.\");\n }\n };\n /** @deprecated AG Grid: setVirtualRowCount() is now called setInfiniteRowCount(), please call setInfiniteRowCount() instead */\n GridApi.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n console.warn('AG Grid: setVirtualRowCount() is now called setInfiniteRowCount(), please call setInfiniteRowCount() instead');\n this.setRowCount(rowCount, maxRowFound);\n };\n /** @deprecated AG Grid: setInfiniteRowCount() is now called setRowCount(), please call setRowCount() instead */\n GridApi.prototype.setInfiniteRowCount = function (rowCount, maxRowFound) {\n console.warn('AG Grid: setInfiniteRowCount() is now called setRowCount(), please call setRowCount() instead');\n this.setRowCount(rowCount, maxRowFound);\n };\n /**\n * Sets the `rowCount` and `lastRowIndexKnown` properties.\n * The second parameter, `lastRowIndexKnown`, is optional and if left out, only `rowCount` is set.\n * Set `rowCount` to adjust the height of the vertical scroll.\n * Set `lastRowIndexKnown` to enable / disable searching for more rows.\n * Use this method if you add or remove rows into the dataset and need to reset the number of rows or put the data back into 'look for data' mode.\n */\n GridApi.prototype.setRowCount = function (rowCount, maxRowFound) {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.setRowCount(rowCount, maxRowFound);\n }\n else {\n console.warn(\"AG Grid: api.setRowCount is only available for Infinite Row Model.\");\n }\n };\n /** @deprecated AG Grid: getVirtualPageState() is now called getCacheBlockState(), please call getCacheBlockState() instead */\n GridApi.prototype.getVirtualPageState = function () {\n console.warn('AG Grid: getVirtualPageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');\n return this.getCacheBlockState();\n };\n /** @deprecated getInfinitePageState() is now called getCacheBlockState(), please call getCacheBlockState() instead */\n GridApi.prototype.getInfinitePageState = function () {\n console.warn('AG Grid: getInfinitePageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');\n return this.getCacheBlockState();\n };\n /**\n * Returns an object representing the state of the cache. This is useful for debugging and understanding how the cache is working.\n */\n GridApi.prototype.getCacheBlockState = function () {\n return this.rowNodeBlockLoader.getBlockState();\n };\n /** @deprecated In AG Grid v25.2.0, checkGridSize() was removed, as it was legacy and didn't do anything useful. */\n GridApi.prototype.checkGridSize = function () {\n console.warn(\"In AG Grid v25.2.0, checkGridSize() was removed, as it was legacy and didn't do anything useful.\");\n };\n /** @deprecated In AG Grid v12, getFirstRenderedRow() was renamed to getFirstDisplayedRow() */\n GridApi.prototype.getFirstRenderedRow = function () {\n console.warn('In AG Grid v12, getFirstRenderedRow() was renamed to getFirstDisplayedRow()');\n return this.getFirstDisplayedRow();\n };\n /** Get the index of the first displayed row due to scrolling (includes invisible rendered rows in the buffer). */\n GridApi.prototype.getFirstDisplayedRow = function () {\n return this.rowRenderer.getFirstVirtualRenderedRow();\n };\n /** @deprecated In AG Grid v12, getLastRenderedRow() was renamed to getLastDisplayedRow() */\n GridApi.prototype.getLastRenderedRow = function () {\n console.warn('in AG Grid v12, getLastRenderedRow() was renamed to getLastDisplayedRow()');\n return this.getLastDisplayedRow();\n };\n /** Get the index of the last displayed row due to scrolling (includes invisible rendered rows in the buffer). */\n GridApi.prototype.getLastDisplayedRow = function () {\n return this.rowRenderer.getLastVirtualRenderedRow();\n };\n /** Returns the displayed `RowNode` at the given `index`. */\n GridApi.prototype.getDisplayedRowAtIndex = function (index) {\n return this.rowModel.getRow(index);\n };\n /** Returns the total number of displayed rows. */\n GridApi.prototype.getDisplayedRowCount = function () {\n return this.rowModel.getRowCount();\n };\n /**\n * Returns `true` when the last page is known.\n * This will always be `true` if you are using the Client-Side Row Model for pagination.\n * Returns `false` when the last page is not known; this only happens when using Infinite Row Model.\n */\n GridApi.prototype.paginationIsLastPageFound = function () {\n return this.paginationProxy.isLastPageFound();\n };\n /** Returns how many rows are being shown per page. */\n GridApi.prototype.paginationGetPageSize = function () {\n return this.paginationProxy.getPageSize();\n };\n /** Sets the `paginationPageSize`, then re-paginates the grid so the changes are applied immediately. */\n GridApi.prototype.paginationSetPageSize = function (size) {\n this.gridOptionsWrapper.setProperty('paginationPageSize', size);\n };\n /** Returns the 0-based index of the page which is showing. */\n GridApi.prototype.paginationGetCurrentPage = function () {\n return this.paginationProxy.getCurrentPage();\n };\n /** Returns the total number of pages. Returns `null` if `paginationIsLastPageFound() === false`. */\n GridApi.prototype.paginationGetTotalPages = function () {\n return this.paginationProxy.getTotalPages();\n };\n /** The total number of rows. Returns `null` if `paginationIsLastPageFound() === false`. */\n GridApi.prototype.paginationGetRowCount = function () {\n return this.paginationProxy.getMasterRowCount();\n };\n /** Navigates to the next page. */\n GridApi.prototype.paginationGoToNextPage = function () {\n this.paginationProxy.goToNextPage();\n };\n /** Navigates to the previous page. */\n GridApi.prototype.paginationGoToPreviousPage = function () {\n this.paginationProxy.goToPreviousPage();\n };\n /** Navigates to the first page. */\n GridApi.prototype.paginationGoToFirstPage = function () {\n this.paginationProxy.goToFirstPage();\n };\n /** Navigates to the last page. */\n GridApi.prototype.paginationGoToLastPage = function () {\n this.paginationProxy.goToLastPage();\n };\n /** Goes to the specified page. If the page requested doesn't exist, it will go to the last page. */\n GridApi.prototype.paginationGoToPage = function (page) {\n this.paginationProxy.goToPage(page);\n };\n GridApi.prototype.setRowClass = function (className) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_ROW_CLASS, className);\n };\n __decorate$1r([\n Optional('immutableService')\n ], GridApi.prototype, \"immutableService\", void 0);\n __decorate$1r([\n Optional('csvCreator')\n ], GridApi.prototype, \"csvCreator\", void 0);\n __decorate$1r([\n Optional('excelCreator')\n ], GridApi.prototype, \"excelCreator\", void 0);\n __decorate$1r([\n Autowired('rowRenderer')\n ], GridApi.prototype, \"rowRenderer\", void 0);\n __decorate$1r([\n Autowired('navigationService')\n ], GridApi.prototype, \"navigationService\", void 0);\n __decorate$1r([\n Autowired('filterManager')\n ], GridApi.prototype, \"filterManager\", void 0);\n __decorate$1r([\n Autowired('columnModel')\n ], GridApi.prototype, \"columnModel\", void 0);\n __decorate$1r([\n Autowired('selectionService')\n ], GridApi.prototype, \"selectionService\", void 0);\n __decorate$1r([\n Autowired('gridOptionsWrapper')\n ], GridApi.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1r([\n Autowired('valueService')\n ], GridApi.prototype, \"valueService\", void 0);\n __decorate$1r([\n Autowired('alignedGridsService')\n ], GridApi.prototype, \"alignedGridsService\", void 0);\n __decorate$1r([\n Autowired('eventService')\n ], GridApi.prototype, \"eventService\", void 0);\n __decorate$1r([\n Autowired('pinnedRowModel')\n ], GridApi.prototype, \"pinnedRowModel\", void 0);\n __decorate$1r([\n Autowired('context')\n ], GridApi.prototype, \"context\", void 0);\n __decorate$1r([\n Autowired('rowModel')\n ], GridApi.prototype, \"rowModel\", void 0);\n __decorate$1r([\n Autowired('sortController')\n ], GridApi.prototype, \"sortController\", void 0);\n __decorate$1r([\n Autowired('paginationProxy')\n ], GridApi.prototype, \"paginationProxy\", void 0);\n __decorate$1r([\n Autowired('focusService')\n ], GridApi.prototype, \"focusService\", void 0);\n __decorate$1r([\n Autowired('dragAndDropService')\n ], GridApi.prototype, \"dragAndDropService\", void 0);\n __decorate$1r([\n Optional('rangeService')\n ], GridApi.prototype, \"rangeService\", void 0);\n __decorate$1r([\n Optional('clipboardService')\n ], GridApi.prototype, \"clipboardService\", void 0);\n __decorate$1r([\n Optional('aggFuncService')\n ], GridApi.prototype, \"aggFuncService\", void 0);\n __decorate$1r([\n Autowired('menuFactory')\n ], GridApi.prototype, \"menuFactory\", void 0);\n __decorate$1r([\n Optional('contextMenuFactory')\n ], GridApi.prototype, \"contextMenuFactory\", void 0);\n __decorate$1r([\n Autowired('valueCache')\n ], GridApi.prototype, \"valueCache\", void 0);\n __decorate$1r([\n Autowired('animationFrameService')\n ], GridApi.prototype, \"animationFrameService\", void 0);\n __decorate$1r([\n Optional('statusBarService')\n ], GridApi.prototype, \"statusBarService\", void 0);\n __decorate$1r([\n Optional('chartService')\n ], GridApi.prototype, \"chartService\", void 0);\n __decorate$1r([\n Optional('undoRedoService')\n ], GridApi.prototype, \"undoRedoService\", void 0);\n __decorate$1r([\n Optional('rowNodeBlockLoader')\n ], GridApi.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate$1r([\n Optional('ssrmTransactionManager')\n ], GridApi.prototype, \"serverSideTransactionManager\", void 0);\n __decorate$1r([\n Autowired('ctrlsService')\n ], GridApi.prototype, \"ctrlsService\", void 0);\n __decorate$1r([\n Optional('frameworkComponentWrapper')\n ], GridApi.prototype, \"frameworkComponentWrapper\", void 0);\n __decorate$1r([\n PostConstruct\n ], GridApi.prototype, \"init\", null);\n __decorate$1r([\n PreDestroy\n ], GridApi.prototype, \"cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid\", null);\n GridApi = __decorate$1r([\n Bean('gridApi')\n ], GridApi);\n return GridApi;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SetLeftFeature = /** @class */ (function (_super) {\n __extends$1y(SetLeftFeature, _super);\n function SetLeftFeature(columnOrGroup, eCell, beans, colsSpanning) {\n var _this = _super.call(this) || this;\n _this.columnOrGroup = columnOrGroup;\n _this.eCell = eCell;\n _this.ariaEl = _this.eCell.querySelector('[role=columnheader]') || _this.eCell;\n _this.colsSpanning = colsSpanning;\n _this.beans = beans;\n return _this;\n }\n SetLeftFeature.prototype.setColsSpanning = function (colsSpanning) {\n this.colsSpanning = colsSpanning;\n this.onLeftChanged();\n };\n SetLeftFeature.prototype.getColumnOrGroup = function () {\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n return last(this.colsSpanning);\n }\n return this.columnOrGroup;\n };\n SetLeftFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.columnOrGroup, Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));\n this.setLeftFirstTime();\n // when in print layout, the left position is also dependent on the width of the pinned sections.\n // so additionally update left if any column width changes.\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onLeftChanged.bind(this));\n // setting left has a dependency on print layout\n this.addManagedListener(this.beans.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.onLeftChanged.bind(this));\n };\n SetLeftFeature.prototype.setLeftFirstTime = function () {\n var suppressMoveAnimation = this.beans.gridOptionsWrapper.isSuppressColumnMoveAnimation();\n var oldLeftExists = exists(this.columnOrGroup.getOldLeft());\n var animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;\n if (animateColumnMove) {\n this.animateInLeft();\n }\n else {\n this.onLeftChanged();\n }\n };\n SetLeftFeature.prototype.animateInLeft = function () {\n var _this = this;\n var colOrGroup = this.getColumnOrGroup();\n var left = colOrGroup.getLeft();\n var oldLeft = colOrGroup.getOldLeft();\n var oldActualLeft = this.modifyLeftForPrintLayout(colOrGroup, oldLeft);\n var actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n this.setLeft(oldActualLeft);\n // we must keep track of the left we want to set to, as this would otherwise lead to a race\n // condition, if the user changed the left value many times in one VM turn, then we want to make\n // make sure the actualLeft we set in the timeout below (in the next VM turn) is the correct left\n // position. eg if user changes column position twice, then setLeft() below executes twice in next\n // VM turn, but only one (the correct one) should get applied.\n this.actualLeft = actualLeft;\n this.beans.columnAnimationService.executeNextVMTurn(function () {\n // test this left value is the latest one to be applied, and if not, do nothing\n if (_this.actualLeft === actualLeft) {\n _this.setLeft(actualLeft);\n }\n });\n };\n SetLeftFeature.prototype.onLeftChanged = function () {\n var colOrGroup = this.getColumnOrGroup();\n var left = colOrGroup.getLeft();\n this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n this.setLeft(this.actualLeft);\n };\n SetLeftFeature.prototype.modifyLeftForPrintLayout = function (colOrGroup, leftPosition) {\n var printLayout = this.beans.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (!printLayout) {\n return leftPosition;\n }\n if (colOrGroup.getPinned() === Constants.PINNED_LEFT) {\n return leftPosition;\n }\n var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();\n if (colOrGroup.getPinned() === Constants.PINNED_RIGHT) {\n var bodyWidth = this.beans.columnModel.getBodyContainerWidth();\n return leftWidth + bodyWidth + leftPosition;\n }\n // is in body\n return leftWidth + leftPosition;\n };\n SetLeftFeature.prototype.setLeft = function (value) {\n // if the value is null, then that means the column is no longer\n // displayed. there is logic in the rendering to fade these columns\n // out, so we don't try and change their left positions.\n if (exists(value)) {\n this.eCell.style.left = value + \"px\";\n }\n var indexColumn;\n if (this.columnOrGroup instanceof Column) {\n indexColumn = this.columnOrGroup;\n }\n else {\n var columnGroup = this.columnOrGroup;\n var children = columnGroup.getLeafColumns();\n if (!children.length) {\n return;\n }\n if (children.length > 1) {\n setAriaColSpan(this.ariaEl, children.length);\n }\n indexColumn = children[0];\n }\n var index = this.beans.columnModel.getAriaColumnIndex(indexColumn);\n setAriaColIndex(this.ariaEl, index);\n };\n __decorate$1q([\n PostConstruct\n ], SetLeftFeature.prototype, \"postConstruct\", null);\n return SetLeftFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1x = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HoverFeature = /** @class */ (function (_super) {\n __extends$1x(HoverFeature, _super);\n function HoverFeature(columns, element) {\n var _this = _super.call(this) || this;\n _this.columns = columns;\n _this.element = element;\n return _this;\n }\n HoverFeature.prototype.postConstruct = function () {\n if (this.gridOptionsWrapper.isColumnHoverHighlight()) {\n this.addMouseHoverListeners();\n }\n };\n HoverFeature.prototype.addMouseHoverListeners = function () {\n this.addManagedListener(this.element, 'mouseout', this.onMouseOut.bind(this));\n this.addManagedListener(this.element, 'mouseover', this.onMouseOver.bind(this));\n };\n HoverFeature.prototype.onMouseOut = function () {\n this.columnHoverService.clearMouseOver();\n };\n HoverFeature.prototype.onMouseOver = function () {\n this.columnHoverService.setMouseOver(this.columns);\n };\n __decorate$1p([\n Autowired('columnHoverService')\n ], HoverFeature.prototype, \"columnHoverService\", void 0);\n __decorate$1p([\n PostConstruct\n ], HoverFeature.prototype, \"postConstruct\", null);\n return HoverFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1w = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderFilterCellCtrl = /** @class */ (function (_super) {\n __extends$1w(HeaderFilterCellCtrl, _super);\n function HeaderFilterCellCtrl(column, parentRowCtrl) {\n var _this = _super.call(this, column, parentRowCtrl) || this;\n _this.column = column;\n return _this;\n }\n HeaderFilterCellCtrl.prototype.setComp = function (comp, eGui, eButtonShowMainFilter, eFloatingFilterBody) {\n _super.prototype.setGui.call(this, eGui);\n this.comp = comp;\n this.eButtonShowMainFilter = eButtonShowMainFilter;\n this.eFloatingFilterBody = eFloatingFilterBody;\n var colDef = this.column.getColDef();\n var filterExists = !!colDef.filter || !!colDef.filterFramework;\n var floatingFilterExists = !!colDef.floatingFilter;\n this.active = filterExists && floatingFilterExists;\n this.setupWidth();\n this.setupLeft();\n this.setupHover();\n this.setupFocus();\n this.setupUserComp();\n this.setupSyncWithFilter();\n this.setupUi();\n this.addManagedListener(this.eButtonShowMainFilter, 'click', this.showParentFilter.bind(this));\n };\n HeaderFilterCellCtrl.prototype.setupUi = function () {\n this.comp.addOrRemoveButtonWrapperCssClass('ag-hidden', !this.active || this.suppressFilterButton);\n if (!this.active) {\n return;\n }\n this.comp.addOrRemoveBodyCssClass('ag-floating-filter-full-body', this.suppressFilterButton);\n this.comp.addOrRemoveBodyCssClass('ag-floating-filter-body', !this.suppressFilterButton);\n var eMenuIcon = createIconNoSpan('filter', this.gridOptionsWrapper, this.column);\n if (eMenuIcon) {\n this.eButtonShowMainFilter.appendChild(eMenuIcon);\n }\n };\n HeaderFilterCellCtrl.prototype.setupFocus = function () {\n this.createManagedBean(new ManagedFocusFeature(this.eGui, {\n shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this)\n }));\n };\n HeaderFilterCellCtrl.prototype.onTabKeyDown = function (e) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeEl = eDocument.activeElement;\n var wrapperHasFocus = activeEl === this.eGui;\n if (wrapperHasFocus) {\n return;\n }\n var nextFocusableEl = this.focusService.findNextFocusableElement(this.eGui, null, e.shiftKey);\n if (nextFocusableEl) {\n this.beans.headerNavigationService.scrollToColumn(this.column);\n e.preventDefault();\n nextFocusableEl.focus();\n return;\n }\n var nextFocusableColumn = this.findNextColumnWithFloatingFilter(e.shiftKey);\n if (!nextFocusableColumn) {\n return;\n }\n if (this.focusService.focusHeaderPosition({\n headerPosition: {\n headerRowIndex: this.getParentRowCtrl().getRowIndex(),\n column: nextFocusableColumn\n },\n event: e\n })) {\n e.preventDefault();\n }\n };\n HeaderFilterCellCtrl.prototype.findNextColumnWithFloatingFilter = function (backwards) {\n var columModel = this.beans.columnModel;\n var nextCol = this.column;\n do {\n nextCol = backwards\n ? columModel.getDisplayedColBefore(nextCol)\n : columModel.getDisplayedColAfter(nextCol);\n if (!nextCol) {\n break;\n }\n } while (!nextCol.getColDef().filter || !nextCol.getColDef().floatingFilter);\n return nextCol;\n };\n HeaderFilterCellCtrl.prototype.handleKeyDown = function (e) {\n _super.prototype.handleKeyDown.call(this, e);\n var wrapperHasFocus = this.getWrapperHasFocus();\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n if (!wrapperHasFocus) {\n e.preventDefault();\n }\n case KeyCode.LEFT:\n case KeyCode.RIGHT:\n if (wrapperHasFocus) {\n return;\n }\n e.stopPropagation();\n case KeyCode.ENTER:\n if (wrapperHasFocus) {\n if (this.focusService.focusInto(this.eGui)) {\n e.preventDefault();\n }\n }\n break;\n case KeyCode.ESCAPE:\n if (!wrapperHasFocus) {\n this.eGui.focus();\n }\n }\n };\n HeaderFilterCellCtrl.prototype.onFocusIn = function (e) {\n var isRelatedWithin = this.eGui.contains(e.relatedTarget);\n // when the focus is already within the component,\n // we default to the browser's behavior\n if (isRelatedWithin) {\n return;\n }\n var notFromHeaderWrapper = !!e.relatedTarget && !e.relatedTarget.classList.contains('ag-floating-filter');\n var fromWithinHeader = !!e.relatedTarget && isElementChildOfClass(e.relatedTarget, 'ag-floating-filter');\n if (notFromHeaderWrapper && fromWithinHeader && e.target === this.eGui) {\n var lastFocusEvent = this.lastFocusEvent;\n var fromTab = !!(lastFocusEvent && lastFocusEvent.key === KeyCode.TAB);\n if (lastFocusEvent && fromTab) {\n var shouldFocusLast = lastFocusEvent.shiftKey;\n this.focusService.focusInto(this.eGui, shouldFocusLast);\n }\n }\n var rowIndex = this.getRowIndex();\n this.beans.focusService.setFocusedHeader(rowIndex, this.column);\n };\n HeaderFilterCellCtrl.prototype.setupHover = function () {\n var _this = this;\n this.createManagedBean(new HoverFeature([this.column], this.eGui));\n var listener = function () {\n if (!_this.gridOptionsWrapper.isColumnHoverHighlight()) {\n return;\n }\n var hovered = _this.columnHoverService.isHovered(_this.column);\n _this.comp.addOrRemoveCssClass('ag-column-hover', hovered);\n };\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, listener);\n listener();\n };\n HeaderFilterCellCtrl.prototype.setupLeft = function () {\n var setLeftFeature = new SetLeftFeature(this.column, this.eGui, this.beans);\n this.createManagedBean(setLeftFeature);\n };\n HeaderFilterCellCtrl.prototype.setupUserComp = function () {\n var _this = this;\n if (!this.active) {\n return;\n }\n var colDef = this.column.getColDef();\n var filterParams = this.filterManager.createFilterParams(this.column, colDef);\n var finalFilterParams = this.userComponentFactory.mergeParamsWithApplicationProvidedParams(colDef, FilterComponent, filterParams);\n var defaultFloatingFilterType = this.userComponentFactory.getDefaultFloatingFilterType(colDef);\n if (defaultFloatingFilterType == null) {\n defaultFloatingFilterType = 'agReadOnlyFloatingFilter';\n }\n var params = {\n column: this.column,\n filterParams: finalFilterParams,\n currentParentModel: function () { return _this.currentParentModel(); },\n parentFilterInstance: function (cb) { return _this.parentFilterInstance(cb); },\n showParentFilter: function () { return _this.showParentFilter(); },\n suppressFilterButton: false // This one might be overridden from the colDef\n };\n // this is unusual - we need a params value OUTSIDE the component the params are for.\n // the params are for the floating filter component, but this property is actually for the wrapper.\n this.suppressFilterButton = colDef.floatingFilterComponentParams ? !!colDef.floatingFilterComponentParams.suppressFilterButton : false;\n var compDetails = this.userComponentFactory.getFloatingFilterCompDetails(colDef, params, defaultFloatingFilterType);\n if (compDetails) {\n this.comp.setCompDetails(compDetails);\n }\n };\n HeaderFilterCellCtrl.prototype.currentParentModel = function () {\n var filterComponent = this.getFilterComponent(false);\n return filterComponent ? filterComponent.resolveNow(null, function (filter) { return filter && filter.getModel(); }) : null;\n };\n HeaderFilterCellCtrl.prototype.getFilterComponent = function (createIfDoesNotExist) {\n if (createIfDoesNotExist === void 0) { createIfDoesNotExist = true; }\n return this.filterManager.getFilterComponent(this.column, 'NO_UI', createIfDoesNotExist);\n };\n HeaderFilterCellCtrl.prototype.parentFilterInstance = function (callback) {\n var filterComponent = this.getFilterComponent();\n if (filterComponent == null) {\n return;\n }\n filterComponent.then(function (instance) {\n callback(unwrapUserComp(instance));\n });\n };\n HeaderFilterCellCtrl.prototype.showParentFilter = function () {\n var eventSource = this.suppressFilterButton ? this.eFloatingFilterBody : this.eButtonShowMainFilter;\n this.menuFactory.showMenuAfterButtonClick(this.column, eventSource, 'floatingFilter', 'filterMenuTab', ['filterMenuTab']);\n };\n HeaderFilterCellCtrl.prototype.setupSyncWithFilter = function () {\n var _this = this;\n if (!this.active) {\n return;\n }\n var syncWithFilter = function (filterChangedEvent) {\n var compPromise = _this.comp.getFloatingFilterComp();\n if (!compPromise) {\n return;\n }\n var parentModel = _this.currentParentModel();\n compPromise.then(function (comp) {\n if (comp) {\n comp.onParentModelChanged(parentModel, filterChangedEvent);\n }\n });\n };\n this.addManagedListener(this.column, Column.EVENT_FILTER_CHANGED, syncWithFilter);\n if (this.filterManager.isFilterActive(this.column)) {\n syncWithFilter(null);\n }\n };\n HeaderFilterCellCtrl.prototype.setupWidth = function () {\n var _this = this;\n var listener = function () {\n var width = _this.column.getActualWidth() + \"px\";\n _this.comp.setWidth(width);\n };\n this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, listener);\n listener();\n };\n __decorate$1o([\n Autowired('filterManager')\n ], HeaderFilterCellCtrl.prototype, \"filterManager\", void 0);\n __decorate$1o([\n Autowired('columnHoverService')\n ], HeaderFilterCellCtrl.prototype, \"columnHoverService\", void 0);\n __decorate$1o([\n Autowired('menuFactory')\n ], HeaderFilterCellCtrl.prototype, \"menuFactory\", void 0);\n return HeaderFilterCellCtrl;\n}(AbstractHeaderCellCtrl));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1v = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ResizeFeature = /** @class */ (function (_super) {\n __extends$1v(ResizeFeature, _super);\n function ResizeFeature(pinned, column, eResize, comp, ctrl) {\n var _this = _super.call(this) || this;\n _this.pinned = pinned;\n _this.column = column;\n _this.eResize = eResize;\n _this.comp = comp;\n _this.ctrl = ctrl;\n return _this;\n }\n ResizeFeature.prototype.postConstruct = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n var destroyResizeFuncs = [];\n var canResize;\n var canAutosize;\n var addResize = function () {\n setDisplayed(_this.eResize, canResize);\n if (!canResize) {\n return;\n }\n var finishedWithResizeFunc = _this.horizontalResizeService.addResizeBar({\n eResizeBar: _this.eResize,\n onResizeStart: _this.onResizeStart.bind(_this),\n onResizing: _this.onResizing.bind(_this, false),\n onResizeEnd: _this.onResizing.bind(_this, true)\n });\n destroyResizeFuncs.push(finishedWithResizeFunc);\n if (canAutosize) {\n var skipHeaderOnAutoSize_1 = _this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n var autoSizeColListener_1 = function () {\n _this.columnModel.autoSizeColumn(_this.column, skipHeaderOnAutoSize_1, \"uiColumnResized\");\n };\n _this.eResize.addEventListener('dblclick', autoSizeColListener_1);\n var touchListener_1 = new TouchListener(_this.eResize);\n touchListener_1.addEventListener(TouchListener.EVENT_DOUBLE_TAP, autoSizeColListener_1);\n _this.addDestroyFunc(function () {\n _this.eResize.removeEventListener('dblclick', autoSizeColListener_1);\n touchListener_1.removeEventListener(TouchListener.EVENT_DOUBLE_TAP, autoSizeColListener_1);\n touchListener_1.destroy();\n });\n }\n };\n var removeResize = function () {\n destroyResizeFuncs.forEach(function (f) { return f(); });\n destroyResizeFuncs.length = 0;\n };\n var refresh = function () {\n var resize = _this.column.isResizable();\n var autoSize = !_this.gridOptionsWrapper.isSuppressAutoSize() && !colDef.suppressAutoSize;\n var propertyChange = resize !== canResize || autoSize !== canAutosize;\n if (propertyChange) {\n canResize = resize;\n canAutosize = autoSize;\n removeResize();\n addResize();\n }\n };\n refresh();\n this.addDestroyFunc(removeResize);\n this.ctrl.addRefreshFunction(refresh);\n };\n ResizeFeature.prototype.onResizing = function (finished, resizeAmount) {\n var resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);\n var columnWidths = [{ key: this.column, newWidth: this.resizeStartWidth + resizeAmountNormalised }];\n this.columnModel.setColumnWidths(columnWidths, this.resizeWithShiftKey, finished, \"uiColumnDragged\");\n if (finished) {\n this.comp.addOrRemoveCssClass('ag-column-resizing', false);\n }\n };\n ResizeFeature.prototype.onResizeStart = function (shiftKey) {\n this.resizeStartWidth = this.column.getActualWidth();\n this.resizeWithShiftKey = shiftKey;\n this.comp.addOrRemoveCssClass('ag-column-resizing', true);\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderGroupCell - should refactor out?\n ResizeFeature.prototype.normaliseResizeAmount = function (dragChange) {\n var result = dragChange;\n var notPinningLeft = this.pinned !== Constants.PINNED_LEFT;\n var pinningRight = this.pinned === Constants.PINNED_RIGHT;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (notPinningLeft) {\n result *= -1;\n }\n }\n else {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n if (pinningRight) {\n result *= -1;\n }\n }\n return result;\n };\n __decorate$1n([\n Autowired('horizontalResizeService')\n ], ResizeFeature.prototype, \"horizontalResizeService\", void 0);\n __decorate$1n([\n Autowired('columnModel')\n ], ResizeFeature.prototype, \"columnModel\", void 0);\n __decorate$1n([\n PostConstruct\n ], ResizeFeature.prototype, \"postConstruct\", null);\n return ResizeFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1u = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgCheckbox = /** @class */ (function (_super) {\n __extends$1u(AgCheckbox, _super);\n function AgCheckbox(config, className, inputType) {\n if (className === void 0) { className = 'ag-checkbox'; }\n if (inputType === void 0) { inputType = 'checkbox'; }\n var _this = _super.call(this, config, className, inputType) || this;\n _this.labelAlignment = 'right';\n _this.selected = false;\n _this.readOnly = false;\n _this.passive = false;\n return _this;\n }\n AgCheckbox.prototype.addInputListeners = function () {\n this.addManagedListener(this.eInput, 'click', this.onCheckboxClick.bind(this));\n this.addManagedListener(this.eLabel, 'click', this.toggle.bind(this));\n };\n AgCheckbox.prototype.getNextValue = function () {\n return this.selected === undefined ? true : !this.selected;\n };\n AgCheckbox.prototype.setPassive = function (passive) {\n this.passive = passive;\n };\n AgCheckbox.prototype.isReadOnly = function () {\n return this.readOnly;\n };\n AgCheckbox.prototype.setReadOnly = function (readOnly) {\n this.eWrapper.classList.toggle('ag-disabled', readOnly);\n this.eInput.disabled = readOnly;\n this.readOnly = readOnly;\n };\n AgCheckbox.prototype.setDisabled = function (disabled) {\n this.eWrapper.classList.toggle('ag-disabled', disabled);\n return _super.prototype.setDisabled.call(this, disabled);\n };\n AgCheckbox.prototype.toggle = function () {\n if (this.eInput.disabled) {\n return;\n }\n var previousValue = this.isSelected();\n var nextValue = this.getNextValue();\n if (this.passive) {\n this.dispatchChange(nextValue, previousValue);\n }\n else {\n this.setValue(nextValue);\n }\n };\n AgCheckbox.prototype.getValue = function () {\n return this.isSelected();\n };\n AgCheckbox.prototype.setValue = function (value, silent) {\n this.refreshSelectedClass(value);\n this.setSelected(value, silent);\n return this;\n };\n AgCheckbox.prototype.setName = function (name) {\n var input = this.getInputElement();\n input.name = name;\n return this;\n };\n AgCheckbox.prototype.isSelected = function () {\n return this.selected;\n };\n AgCheckbox.prototype.setSelected = function (selected, silent) {\n if (this.isSelected() === selected) {\n return;\n }\n this.previousValue = this.isSelected();\n selected = this.selected = typeof selected === 'boolean' ? selected : undefined;\n this.eInput.checked = selected;\n this.eInput.indeterminate = selected === undefined;\n if (!silent) {\n this.dispatchChange(this.selected, this.previousValue);\n }\n };\n AgCheckbox.prototype.dispatchChange = function (selected, previousValue, event) {\n this.dispatchEvent({ type: AgCheckbox.EVENT_CHANGED, selected: selected, previousValue: previousValue, event: event });\n var input = this.getInputElement();\n var checkboxChangedEvent = {\n type: Events.EVENT_CHECKBOX_CHANGED,\n id: input.id,\n name: input.name,\n selected: selected,\n previousValue: previousValue\n };\n this.eventService.dispatchEvent(checkboxChangedEvent);\n };\n AgCheckbox.prototype.onCheckboxClick = function (e) {\n if (this.passive || this.eInput.disabled) {\n return;\n }\n var previousValue = this.isSelected();\n var selected = this.selected = e.target.checked;\n this.refreshSelectedClass(selected);\n this.dispatchChange(selected, previousValue, e);\n };\n AgCheckbox.prototype.refreshSelectedClass = function (value) {\n this.eWrapper.classList.toggle('ag-checked', value === true);\n this.eWrapper.classList.toggle('ag-indeterminate', value == null);\n };\n return AgCheckbox;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1t = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectAllFeature = /** @class */ (function (_super) {\n __extends$1t(SelectAllFeature, _super);\n function SelectAllFeature(column) {\n var _this = _super.call(this) || this;\n _this.cbSelectAllVisible = false;\n _this.processingEventFromCheckbox = false;\n _this.column = column;\n var colDef = column.getColDef();\n _this.filteredOnly = colDef ? !!colDef.headerCheckboxSelectionFilteredOnly : false;\n return _this;\n }\n SelectAllFeature.prototype.onSpaceKeyPressed = function (e) {\n var checkbox = this.cbSelectAll;\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (checkbox.isDisplayed() && !checkbox.getGui().contains(eDocument.activeElement)) {\n e.preventDefault();\n checkbox.setValue(!checkbox.getValue());\n }\n };\n SelectAllFeature.prototype.getCheckboxGui = function () {\n return this.cbSelectAll.getGui();\n };\n SelectAllFeature.prototype.setComp = function (ctrl) {\n this.headerCellCtrl = ctrl;\n this.cbSelectAll = this.createManagedBean(new AgCheckbox());\n this.cbSelectAll.addCssClass('ag-header-select-all');\n setAriaRole(this.cbSelectAll.getGui(), 'presentation');\n this.showOrHideSelectAll();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideSelectAll.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));\n this.addManagedListener(this.cbSelectAll, AgCheckbox.EVENT_CHANGED, this.onCbSelectAll.bind(this));\n setAriaHidden(this.cbSelectAll.getGui(), true);\n this.cbSelectAll.getInputElement().setAttribute('tabindex', '-1');\n this.refreshSelectAllLabel();\n };\n SelectAllFeature.prototype.showOrHideSelectAll = function () {\n this.cbSelectAllVisible = this.isCheckboxSelection();\n this.cbSelectAll.setDisplayed(this.cbSelectAllVisible);\n if (this.cbSelectAllVisible) {\n // in case user is trying this feature with the wrong model type\n this.checkRightRowModelType();\n // make sure checkbox is showing the right state\n this.updateStateOfCheckbox();\n }\n this.refreshSelectAllLabel();\n };\n SelectAllFeature.prototype.onModelChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.onSelectionChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.getNextCheckboxState = function (selectionCount) {\n // if no rows, always have it unselected\n if (selectionCount.selected === 0 && selectionCount.notSelected === 0) {\n return false;\n }\n // if mix of selected and unselected, this is the tri-state\n if (selectionCount.selected > 0 && selectionCount.notSelected > 0) {\n return null;\n }\n // only selected\n if (selectionCount.selected > 0) {\n return true;\n }\n // nothing selected\n return false;\n };\n SelectAllFeature.prototype.updateStateOfCheckbox = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n this.processingEventFromCheckbox = true;\n var selectionCount = this.getSelectionCount();\n var allSelected = this.getNextCheckboxState(selectionCount);\n this.cbSelectAll.setValue(allSelected);\n this.refreshSelectAllLabel();\n this.processingEventFromCheckbox = false;\n };\n SelectAllFeature.prototype.refreshSelectAllLabel = function () {\n if (!this.cbSelectAllVisible) {\n this.headerCellCtrl.setAriaDescriptionProperty('selectAll', null);\n this.cbSelectAll.setInputAriaLabel(null);\n }\n else {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var checked = this.cbSelectAll.getValue();\n var ariaStatus = checked ? translate('ariaChecked', 'checked') : translate('ariaUnchecked', 'unchecked');\n var ariaLabel = translate('ariaRowSelectAll', 'Press Space to toggle all rows selection');\n this.headerCellCtrl.setAriaDescriptionProperty('selectAll', ariaLabel + \" (\" + ariaStatus + \")\");\n this.cbSelectAll.setInputAriaLabel(ariaLabel + \" (\" + ariaStatus + \")\");\n }\n this.headerCellCtrl.refreshAriaDescription();\n };\n SelectAllFeature.prototype.getSelectionCount = function () {\n var _this = this;\n var selectedCount = 0;\n var notSelectedCount = 0;\n var callback = function (node) {\n if (_this.gridOptionsWrapper.isGroupSelectsChildren() && node.group) {\n return;\n }\n if (node.isSelected()) {\n selectedCount++;\n }\n else if (!node.selectable) ;\n else {\n notSelectedCount++;\n }\n };\n if (this.filteredOnly) {\n this.gridApi.forEachNodeAfterFilter(callback);\n }\n else {\n this.gridApi.forEachNode(callback);\n }\n return {\n notSelected: notSelectedCount,\n selected: selectedCount\n };\n };\n SelectAllFeature.prototype.checkRightRowModelType = function () {\n var rowModelType = this.rowModel.getType();\n var rowModelMatches = rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (!rowModelMatches) {\n console.warn(\"AG Grid: selectAllCheckbox is only available if using normal row model, you are using \" + rowModelType);\n }\n };\n SelectAllFeature.prototype.onCbSelectAll = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n if (!this.cbSelectAllVisible) {\n return;\n }\n var value = this.cbSelectAll.getValue();\n if (value) {\n this.selectionService.selectAllRowNodes(this.filteredOnly);\n }\n else {\n this.selectionService.deselectAllRowNodes(this.filteredOnly);\n }\n };\n SelectAllFeature.prototype.isCheckboxSelection = function () {\n var result = this.column.getColDef().headerCheckboxSelection;\n if (typeof result === 'function') {\n var func = result;\n var params = {\n column: this.column,\n colDef: this.column.getColDef(),\n columnApi: this.columnApi,\n api: this.gridApi,\n context: this.gridOptionsWrapper.getContext()\n };\n result = func(params);\n }\n if (result) {\n if (this.gridOptionsWrapper.isRowModelServerSide()) {\n console.warn('AG Grid: headerCheckboxSelection is not supported for Server Side Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelInfinite()) {\n console.warn('AG Grid: headerCheckboxSelection is not supported for Infinite Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelViewport()) {\n console.warn('AG Grid: headerCheckboxSelection is not supported for Viewport Row Model');\n return false;\n }\n // otherwise the row model is compatible, so return true\n return true;\n }\n return false;\n };\n __decorate$1m([\n Autowired('gridApi')\n ], SelectAllFeature.prototype, \"gridApi\", void 0);\n __decorate$1m([\n Autowired('columnApi')\n ], SelectAllFeature.prototype, \"columnApi\", void 0);\n __decorate$1m([\n Autowired('rowModel')\n ], SelectAllFeature.prototype, \"rowModel\", void 0);\n __decorate$1m([\n Autowired('selectionService')\n ], SelectAllFeature.prototype, \"selectionService\", void 0);\n return SelectAllFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1s = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderCellCtrl = /** @class */ (function (_super) {\n __extends$1s(HeaderCellCtrl, _super);\n function HeaderCellCtrl(column, parentRowCtrl) {\n var _this = _super.call(this, column, parentRowCtrl) || this;\n _this.refreshFunctions = [];\n _this.userHeaderClasses = new Set();\n _this.ariaDescriptionProperties = new Map();\n _this.column = column;\n return _this;\n }\n HeaderCellCtrl.prototype.setComp = function (comp, eGui, eResize, eHeaderCompWrapper) {\n var _this = this;\n _super.prototype.setGui.call(this, eGui);\n this.comp = comp;\n this.updateState();\n this.setupWidth();\n this.setupMovingCss();\n this.setupMenuClass();\n this.setupSortableClass();\n this.setupWrapTextClass();\n this.setupAutoHeight(eHeaderCompWrapper);\n this.addColumnHoverListener();\n this.setupFilterCss();\n this.setupColId();\n this.setupClassesFromColDef();\n this.setupTooltip();\n this.addActiveHeaderMouseListeners();\n this.setupSelectAll();\n this.setupUserComp();\n this.refreshAria();\n this.createManagedBean(new ResizeFeature(this.getPinned(), this.column, eResize, comp, this));\n this.createManagedBean(new HoverFeature([this.column], eGui));\n this.createManagedBean(new SetLeftFeature(this.column, eGui, this.beans));\n this.createManagedBean(new ManagedFocusFeature(eGui, {\n shouldStopEventPropagation: function (e) { return _this.shouldStopEventPropagation(e); },\n onTabKeyDown: function () { return null; },\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this),\n onFocusOut: this.onFocusOut.bind(this)\n }));\n this.addManagedListener(this.column, Column.EVENT_COL_DEF_CHANGED, this.onColDefChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnValueChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.onColumnPivotChanged.bind(this));\n };\n HeaderCellCtrl.prototype.setupUserComp = function () {\n var compDetails = this.lookupUserCompDetails();\n this.setCompDetails(compDetails);\n };\n HeaderCellCtrl.prototype.setCompDetails = function (compDetails) {\n this.userCompDetails = compDetails;\n this.comp.setUserCompDetails(compDetails);\n };\n HeaderCellCtrl.prototype.lookupUserCompDetails = function () {\n var params = this.createParams();\n var colDef = this.column.getColDef();\n return this.userComponentFactory.getHeaderCompDetails(colDef, params);\n };\n HeaderCellCtrl.prototype.createParams = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n var params = {\n column: this.column,\n displayName: this.displayName,\n enableSorting: colDef.sortable,\n enableMenu: this.menuEnabled,\n showColumnMenu: function (source) {\n _this.gridApi.showColumnMenuAfterButtonClick(_this.column, source);\n },\n progressSort: function (multiSort) {\n _this.sortController.progressSort(_this.column, !!multiSort, \"uiColumnSorted\");\n },\n setSort: function (sort, multiSort) {\n _this.sortController.setSortForColumn(_this.column, sort, !!multiSort, \"uiColumnSorted\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext(),\n eGridHeader: this.getGui()\n };\n return params;\n };\n HeaderCellCtrl.prototype.setupSelectAll = function () {\n this.selectAllFeature = this.createManagedBean(new SelectAllFeature(this.column));\n this.selectAllFeature.setComp(this);\n };\n HeaderCellCtrl.prototype.getSelectAllGui = function () {\n return this.selectAllFeature.getCheckboxGui();\n };\n HeaderCellCtrl.prototype.handleKeyDown = function (e) {\n _super.prototype.handleKeyDown.call(this, e);\n if (e.key === KeyCode.SPACE) {\n this.selectAllFeature.onSpaceKeyPressed(e);\n }\n if (e.key === KeyCode.ENTER) {\n this.onEnterKeyPressed(e);\n }\n };\n HeaderCellCtrl.prototype.onEnterKeyPressed = function (e) {\n /// THIS IS BAD - we are assuming the header is not a user provided comp\n var headerComp = this.comp.getUserCompInstance();\n if (!headerComp) {\n return;\n }\n if (e.ctrlKey || e.metaKey) {\n if (this.menuEnabled && headerComp.showMenu) {\n e.preventDefault();\n headerComp.showMenu();\n }\n }\n else if (this.sortable) {\n var multiSort = e.shiftKey;\n this.sortController.progressSort(this.column, multiSort, \"uiColumnSorted\");\n }\n };\n HeaderCellCtrl.prototype.isMenuEnabled = function () {\n return this.menuEnabled;\n };\n HeaderCellCtrl.prototype.onFocusIn = function (e) {\n if (!this.getGui().contains(e.relatedTarget)) {\n var rowIndex = this.getRowIndex();\n this.focusService.setFocusedHeader(rowIndex, this.column);\n }\n this.setActiveHeader(true);\n };\n HeaderCellCtrl.prototype.onFocusOut = function (e) {\n if (this.getGui().contains(e.relatedTarget)) {\n return;\n }\n this.setActiveHeader(false);\n };\n HeaderCellCtrl.prototype.setupTooltip = function () {\n var _this = this;\n var tooltipCtrl = {\n getColumn: function () { return _this.column; },\n getColDef: function () { return _this.column.getColDef(); },\n getGui: function () { return _this.eGui; },\n getLocation: function () { return 'header'; },\n getTooltipValue: function () {\n var res = _this.column.getColDef().headerTooltip;\n return res;\n },\n };\n var tooltipFeature = this.createManagedBean(new TooltipFeature(tooltipCtrl, this.beans));\n tooltipFeature.setComp(this.comp);\n this.refreshFunctions.push(function () { return tooltipFeature.refreshToolTip(); });\n };\n HeaderCellCtrl.prototype.setupClassesFromColDef = function () {\n var _this = this;\n var refreshHeaderClasses = function () {\n var colDef = _this.column.getColDef();\n var goa = _this.gridOptionsWrapper;\n var classes = CssClassApplier.getHeaderClassesFromColDef(colDef, goa, _this.column, null);\n var oldClasses = _this.userHeaderClasses;\n _this.userHeaderClasses = new Set(classes);\n classes.forEach(function (c) {\n if (oldClasses.has(c)) {\n // class already added, no need to apply it, but remove from old set\n oldClasses.delete(c);\n }\n else {\n // class new since last time, so apply it\n _this.comp.addOrRemoveCssClass(c, true);\n }\n });\n // now old set only has classes that were applied last time, but not this time, so remove them\n oldClasses.forEach(function (c) { return _this.comp.addOrRemoveCssClass(c, false); });\n };\n this.refreshFunctions.push(refreshHeaderClasses);\n refreshHeaderClasses();\n };\n HeaderCellCtrl.prototype.setDragSource = function (eSource) {\n var _this = this;\n this.dragSourceElement = eSource;\n this.removeDragSource();\n if (!eSource) {\n return;\n }\n if (!this.draggable) {\n return;\n }\n var hideColumnOnExit = !this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns();\n this.moveDragSource = {\n type: DragSourceType.HeaderCell,\n eElement: eSource,\n defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n getDragItem: function () { return _this.createDragItem(); },\n dragItemName: this.displayName,\n onDragStarted: function () { return _this.column.setMoving(true, \"uiColumnMoved\"); },\n onDragStopped: function () { return _this.column.setMoving(false, \"uiColumnMoved\"); },\n onGridEnter: function (dragItem) {\n var _a, _b;\n if (hideColumnOnExit) {\n var unlockedColumns = ((_b = (_a = dragItem) === null || _a === void 0 ? void 0 : _a.columns) === null || _b === void 0 ? void 0 : _b.filter(function (col) { return !col.getColDef().lockVisible; })) || [];\n _this.columnModel.setColumnsVisible(unlockedColumns, true, \"uiColumnMoved\");\n }\n },\n onGridExit: function (dragItem) {\n var _a, _b;\n if (hideColumnOnExit) {\n var unlockedColumns = ((_b = (_a = dragItem) === null || _a === void 0 ? void 0 : _a.columns) === null || _b === void 0 ? void 0 : _b.filter(function (col) { return !col.getColDef().lockVisible; })) || [];\n _this.columnModel.setColumnsVisible(unlockedColumns, false, \"uiColumnMoved\");\n }\n },\n };\n this.dragAndDropService.addDragSource(this.moveDragSource, true);\n };\n HeaderCellCtrl.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n HeaderCellCtrl.prototype.removeDragSource = function () {\n if (this.moveDragSource) {\n this.dragAndDropService.removeDragSource(this.moveDragSource);\n this.moveDragSource = undefined;\n }\n };\n HeaderCellCtrl.prototype.onColDefChanged = function () {\n this.refresh();\n };\n HeaderCellCtrl.prototype.updateState = function () {\n var colDef = this.column.getColDef();\n this.menuEnabled = this.menuFactory.isMenuEnabled(this.column) && !colDef.suppressMenu;\n this.sortable = colDef.sortable;\n this.displayName = this.calculateDisplayName();\n this.draggable = this.workOutDraggable();\n };\n HeaderCellCtrl.prototype.addRefreshFunction = function (func) {\n this.refreshFunctions.push(func);\n };\n HeaderCellCtrl.prototype.refresh = function () {\n this.updateState();\n this.refreshHeaderComp();\n this.refreshAria();\n this.refreshFunctions.forEach(function (f) { return f(); });\n };\n HeaderCellCtrl.prototype.refreshHeaderComp = function () {\n var newCompDetails = this.lookupUserCompDetails();\n var compInstance = this.comp.getUserCompInstance();\n // only try refresh if old comp exists adn it is the correct type\n var attemptRefresh = compInstance != null && this.userCompDetails.componentClass == newCompDetails.componentClass;\n var headerCompRefreshed = attemptRefresh ? this.attemptHeaderCompRefresh(newCompDetails.params) : false;\n if (headerCompRefreshed) {\n // we do this as a refresh happens after colDefs change, and it's possible the column has had it's\n // draggable property toggled. no need to call this if not refreshing, as setDragSource is done\n // as part of appendHeaderComp\n this.setDragSource(this.dragSourceElement);\n }\n else {\n this.setCompDetails(newCompDetails);\n }\n };\n HeaderCellCtrl.prototype.attemptHeaderCompRefresh = function (params) {\n var headerComp = this.comp.getUserCompInstance();\n if (!headerComp) {\n return false;\n }\n // if no refresh method, then we want to replace the headerComp\n if (!headerComp.refresh) {\n return false;\n }\n var res = headerComp.refresh(params);\n return res;\n };\n HeaderCellCtrl.prototype.calculateDisplayName = function () {\n return this.columnModel.getDisplayNameForColumn(this.column, 'header', true);\n };\n HeaderCellCtrl.prototype.checkDisplayName = function () {\n // display name can change if aggFunc different, eg sum(Gold) is now max(Gold)\n if (this.displayName !== this.calculateDisplayName()) {\n this.refresh();\n }\n };\n HeaderCellCtrl.prototype.workOutDraggable = function () {\n var colDef = this.column.getColDef();\n var isSuppressMovableColumns = this.gridOptionsWrapper.isSuppressMovableColumns();\n var colCanMove = !isSuppressMovableColumns && !colDef.suppressMovable && !colDef.lockPosition;\n // we should still be allowed drag the column, even if it can't be moved, if the column\n // can be dragged to a rowGroup or pivot drop zone\n return !!colCanMove || !!colDef.enableRowGroup || !!colDef.enablePivot;\n };\n HeaderCellCtrl.prototype.onColumnRowGroupChanged = function () {\n this.checkDisplayName();\n };\n HeaderCellCtrl.prototype.onColumnPivotChanged = function () {\n this.checkDisplayName();\n };\n HeaderCellCtrl.prototype.onColumnValueChanged = function () {\n this.checkDisplayName();\n };\n HeaderCellCtrl.prototype.setupWidth = function () {\n var _this = this;\n var listener = function () {\n _this.comp.setWidth(_this.column.getActualWidth() + 'px');\n };\n this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupMovingCss = function () {\n var _this = this;\n var listener = function () {\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n _this.comp.addOrRemoveCssClass('ag-header-cell-moving', _this.column.isMoving());\n };\n this.addManagedListener(this.column, Column.EVENT_MOVING_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupMenuClass = function () {\n var _this = this;\n var listener = function () {\n _this.comp.addOrRemoveCssClass('ag-column-menu-visible', _this.column.isMenuVisible());\n };\n this.addManagedListener(this.column, Column.EVENT_MENU_VISIBLE_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupSortableClass = function () {\n var _this = this;\n var updateSortableCssClass = function () {\n _this.comp.addOrRemoveCssClass('ag-header-cell-sortable', !!_this.sortable);\n };\n updateSortableCssClass();\n this.addRefreshFunction(updateSortableCssClass);\n this.addManagedListener(this.column, Column.EVENT_SORT_CHANGED, this.refreshAriaSort.bind(this));\n };\n HeaderCellCtrl.prototype.setupWrapTextClass = function () {\n var _this = this;\n var listener = function () {\n var wrapText = !!_this.column.getColDef().wrapHeaderText;\n _this.comp.addOrRemoveCssClass('ag-header-cell-wrap-text', wrapText);\n };\n listener();\n this.addRefreshFunction(listener);\n };\n HeaderCellCtrl.prototype.setupAutoHeight = function (wrapperElement) {\n var _this = this;\n var measureHeight = function (timesCalled) {\n if (!_this.isAlive()) {\n return;\n }\n var _a = getElementSize(_this.getGui()), paddingTop = _a.paddingTop, paddingBottom = _a.paddingBottom;\n var wrapperHeight = wrapperElement.offsetHeight;\n var autoHeight = wrapperHeight + paddingTop + paddingBottom;\n if (timesCalled < 5) {\n // if not in doc yet, means framework not yet inserted, so wait for next VM turn,\n // maybe it will be ready next VM turn\n var doc = _this.beans.gridOptionsWrapper.getDocument();\n var notYetInDom = !doc || !doc.contains(wrapperElement);\n // this happens in React, where React hasn't put any content in. we say 'possibly'\n // as a) may not be React and b) the cell could be empty anyway\n var possiblyNoContentYet = autoHeight == 0;\n if (notYetInDom || possiblyNoContentYet) {\n _this.beans.frameworkOverrides.setTimeout(function () { return measureHeight(timesCalled + 1); }, 0);\n return;\n }\n }\n _this.columnModel.setColumnHeaderHeight(_this.column, autoHeight);\n };\n var isMeasuring = false;\n var stopResizeObserver;\n var checkMeasuring = function () {\n var newValue = _this.column.isAutoHeaderHeight();\n if (newValue && !isMeasuring) {\n startMeasuring();\n }\n if (!newValue && isMeasuring) {\n stopMeasuring();\n }\n };\n var startMeasuring = function () {\n isMeasuring = true;\n measureHeight(0);\n _this.comp.addOrRemoveCssClass('ag-header-cell-auto-height', true);\n stopResizeObserver = _this.resizeObserverService.observeResize(wrapperElement, function () { return measureHeight(0); });\n };\n var stopMeasuring = function () {\n isMeasuring = false;\n if (stopResizeObserver) {\n stopResizeObserver();\n }\n _this.comp.addOrRemoveCssClass('ag-header-cell-auto-height', false);\n stopResizeObserver = undefined;\n };\n checkMeasuring();\n this.addDestroyFunc(function () { return stopMeasuring(); });\n // In theory we could rely on the resize observer for everything - but since it's debounced\n // it can be a little janky for smooth movement. in this case its better to react to our own events\n // And unfortunately we cant _just_ rely on our own events, since custom components can change whenever\n this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, function () { return isMeasuring && measureHeight(0); });\n // Displaying the sort icon changes the available area for text, so sort changes can affect height\n this.addManagedListener(this.column, Column.EVENT_SORT_CHANGED, function () {\n // Rendering changes for sort, happen after the event... not ideal\n if (isMeasuring) {\n _this.beans.frameworkOverrides.setTimeout(function () { return measureHeight(0); });\n }\n });\n this.addRefreshFunction(checkMeasuring);\n };\n HeaderCellCtrl.prototype.refreshAriaSort = function () {\n if (this.sortable) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.comp.setAriaSort(getAriaSortState(this.column));\n this.setAriaDescriptionProperty('sort', translate('ariaSortableColumn', 'Press ENTER to sort.'));\n }\n else {\n this.comp.setAriaSort();\n this.setAriaDescriptionProperty('sort', null);\n }\n };\n HeaderCellCtrl.prototype.refreshAriaMenu = function () {\n if (this.menuEnabled) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.setAriaDescriptionProperty('menu', translate('ariaMenuColumn', 'Press CTRL ENTER to open column menu.'));\n }\n else {\n this.setAriaDescriptionProperty('menu', null);\n }\n };\n HeaderCellCtrl.prototype.setAriaDescriptionProperty = function (property, value) {\n if (value != null) {\n this.ariaDescriptionProperties.set(property, value);\n }\n else {\n this.ariaDescriptionProperties.delete(property);\n }\n };\n HeaderCellCtrl.prototype.refreshAriaDescription = function () {\n var descriptionArray = Array.from(this.ariaDescriptionProperties.values());\n this.comp.setAriaDescription(descriptionArray.length ? descriptionArray.join(' ') : undefined);\n };\n HeaderCellCtrl.prototype.refreshAria = function () {\n this.refreshAriaSort();\n this.refreshAriaMenu();\n this.refreshAriaDescription();\n };\n HeaderCellCtrl.prototype.addColumnHoverListener = function () {\n var _this = this;\n var listener = function () {\n if (!_this.gridOptionsWrapper.isColumnHoverHighlight()) {\n return;\n }\n var isHovered = _this.columnHoverService.isHovered(_this.column);\n _this.comp.addOrRemoveCssClass('ag-column-hover', isHovered);\n };\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupFilterCss = function () {\n var _this = this;\n var listener = function () {\n _this.comp.addOrRemoveCssClass('ag-header-cell-filtered', _this.column.isFilterActive());\n };\n this.addManagedListener(this.column, Column.EVENT_FILTER_ACTIVE_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupColId = function () {\n this.comp.setColId(this.column.getColId());\n };\n HeaderCellCtrl.prototype.addActiveHeaderMouseListeners = function () {\n var _this = this;\n var listener = function (e) { return _this.setActiveHeader(e.type === 'mouseenter'); };\n this.addManagedListener(this.getGui(), 'mouseenter', listener);\n this.addManagedListener(this.getGui(), 'mouseleave', listener);\n };\n HeaderCellCtrl.prototype.setActiveHeader = function (active) {\n this.comp.addOrRemoveCssClass('ag-header-active', active);\n };\n __decorate$1l([\n Autowired('columnModel')\n ], HeaderCellCtrl.prototype, \"columnModel\", void 0);\n __decorate$1l([\n Autowired('columnHoverService')\n ], HeaderCellCtrl.prototype, \"columnHoverService\", void 0);\n __decorate$1l([\n Autowired('sortController')\n ], HeaderCellCtrl.prototype, \"sortController\", void 0);\n __decorate$1l([\n Autowired('menuFactory')\n ], HeaderCellCtrl.prototype, \"menuFactory\", void 0);\n __decorate$1l([\n Autowired('dragAndDropService')\n ], HeaderCellCtrl.prototype, \"dragAndDropService\", void 0);\n __decorate$1l([\n Autowired('resizeObserverService')\n ], HeaderCellCtrl.prototype, \"resizeObserverService\", void 0);\n __decorate$1l([\n Autowired('gridApi')\n ], HeaderCellCtrl.prototype, \"gridApi\", void 0);\n __decorate$1l([\n Autowired('columnApi')\n ], HeaderCellCtrl.prototype, \"columnApi\", void 0);\n __decorate$1l([\n PreDestroy\n ], HeaderCellCtrl.prototype, \"removeDragSource\", null);\n return HeaderCellCtrl;\n}(AbstractHeaderCellCtrl));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1r = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupResizeFeature = /** @class */ (function (_super) {\n __extends$1r(GroupResizeFeature, _super);\n function GroupResizeFeature(comp, eResize, pinned, columnGroup) {\n var _this = _super.call(this) || this;\n _this.eResize = eResize;\n _this.comp = comp;\n _this.pinned = pinned;\n _this.columnGroup = columnGroup;\n return _this;\n }\n GroupResizeFeature.prototype.postConstruct = function () {\n var _this = this;\n if (!this.columnGroup.isResizable()) {\n this.comp.addOrRemoveResizableCssClass('ag-hidden', true);\n return;\n }\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.eResize,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this, false),\n onResizeEnd: this.onResizing.bind(this, true)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n if (!this.gridOptionsWrapper.isSuppressAutoSize()) {\n var skipHeaderOnAutoSize_1 = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n this.eResize.addEventListener('dblclick', function () {\n // get list of all the column keys we are responsible for\n var keys = [];\n var leafCols = _this.columnGroup.getDisplayedLeafColumns();\n leafCols.forEach(function (column) {\n // not all cols in the group may be participating with auto-resize\n if (!column.getColDef().suppressAutoSize) {\n keys.push(column.getColId());\n }\n });\n if (keys.length > 0) {\n _this.columnModel.autoSizeColumns({\n columns: keys,\n skipHeader: skipHeaderOnAutoSize_1,\n stopAtGroup: _this.columnGroup,\n source: 'uiColumnResized'\n });\n }\n _this.resizeLeafColumnsToFit();\n });\n }\n };\n GroupResizeFeature.prototype.onResizeStart = function (shiftKey) {\n var _this = this;\n this.calculateInitialValues();\n var takeFromGroup = null;\n if (shiftKey) {\n takeFromGroup = this.columnModel.getDisplayedGroupAfter(this.columnGroup);\n }\n if (takeFromGroup) {\n var takeFromLeafCols = takeFromGroup.getDisplayedLeafColumns();\n this.resizeTakeFromCols = takeFromLeafCols.filter(function (col) { return col.isResizable(); });\n this.resizeTakeFromStartWidth = 0;\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromStartWidth += col.getActualWidth(); });\n this.resizeTakeFromRatios = [];\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromRatios.push(col.getActualWidth() / _this.resizeTakeFromStartWidth); });\n }\n else {\n this.resizeTakeFromCols = null;\n this.resizeTakeFromStartWidth = null;\n this.resizeTakeFromRatios = null;\n }\n this.comp.addOrRemoveCssClass('ag-column-resizing', true);\n };\n GroupResizeFeature.prototype.onResizing = function (finished, resizeAmount) {\n var resizeAmountNormalised = this.normaliseDragChange(resizeAmount);\n var width = this.resizeStartWidth + resizeAmountNormalised;\n this.resizeColumns(width, finished);\n };\n GroupResizeFeature.prototype.resizeLeafColumnsToFit = function () {\n var preferredSize = this.autoWidthCalculator.getPreferredWidthForColumnGroup(this.columnGroup);\n this.calculateInitialValues();\n if (preferredSize > this.resizeStartWidth) {\n this.resizeColumns(preferredSize, true);\n }\n };\n GroupResizeFeature.prototype.resizeColumns = function (totalWidth, finished) {\n if (finished === void 0) { finished = true; }\n var resizeSets = [];\n resizeSets.push({\n columns: this.resizeCols,\n ratios: this.resizeRatios,\n width: totalWidth\n });\n if (this.resizeTakeFromCols) {\n var diff = totalWidth - this.resizeStartWidth;\n resizeSets.push({\n columns: this.resizeTakeFromCols,\n ratios: this.resizeTakeFromRatios,\n width: this.resizeTakeFromStartWidth - diff\n });\n }\n this.columnModel.resizeColumnSets({\n resizeSets: resizeSets,\n finished: finished,\n source: 'uiColumnDragged'\n });\n if (finished) {\n this.comp.addOrRemoveCssClass('ag-column-resizing', false);\n }\n };\n GroupResizeFeature.prototype.calculateInitialValues = function () {\n var _this = this;\n var leafCols = this.columnGroup.getDisplayedLeafColumns();\n this.resizeCols = leafCols.filter(function (col) { return col.isResizable(); });\n this.resizeStartWidth = 0;\n this.resizeCols.forEach(function (col) { return _this.resizeStartWidth += col.getActualWidth(); });\n this.resizeRatios = [];\n this.resizeCols.forEach(function (col) { return _this.resizeRatios.push(col.getActualWidth() / _this.resizeStartWidth); });\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderCell - should refactor out?\n GroupResizeFeature.prototype.normaliseDragChange = function (dragChange) {\n var result = dragChange;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (this.pinned !== Constants.PINNED_LEFT) {\n result *= -1;\n }\n }\n else if (this.pinned === Constants.PINNED_RIGHT) {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n result *= -1;\n }\n return result;\n };\n __decorate$1k([\n Autowired('horizontalResizeService')\n ], GroupResizeFeature.prototype, \"horizontalResizeService\", void 0);\n __decorate$1k([\n Autowired('autoWidthCalculator')\n ], GroupResizeFeature.prototype, \"autoWidthCalculator\", void 0);\n __decorate$1k([\n Autowired('columnModel')\n ], GroupResizeFeature.prototype, \"columnModel\", void 0);\n __decorate$1k([\n PostConstruct\n ], GroupResizeFeature.prototype, \"postConstruct\", null);\n return GroupResizeFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GroupWidthFeature = /** @class */ (function (_super) {\n __extends$1q(GroupWidthFeature, _super);\n function GroupWidthFeature(comp, columnGroup) {\n var _this = _super.call(this) || this;\n // the children can change, we keep destroy functions related to listening to the children here\n _this.removeChildListenersFuncs = [];\n _this.columnGroup = columnGroup;\n _this.comp = comp;\n return _this;\n }\n GroupWidthFeature.prototype.postConstruct = function () {\n // we need to listen to changes in child columns, as they impact our width\n this.addListenersToChildrenColumns();\n // the children belonging to this group can change, so we need to add and remove listeners as they change\n this.addManagedListener(this.columnGroup, ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED, this.onDisplayedChildrenChanged.bind(this));\n this.onWidthChanged();\n // the child listeners are not tied to this components life-cycle, as children can get added and removed\n // to the group - hence they are on a different life-cycle. so we must make sure the existing children\n // listeners are removed when we finally get destroyed\n this.addDestroyFunc(this.removeListenersOnChildrenColumns.bind(this));\n };\n GroupWidthFeature.prototype.addListenersToChildrenColumns = function () {\n var _this = this;\n // first destroy any old listeners\n this.removeListenersOnChildrenColumns();\n // now add new listeners to the new set of children\n var widthChangedListener = this.onWidthChanged.bind(this);\n this.columnGroup.getLeafColumns().forEach(function (column) {\n column.addEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n column.addEventListener(Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n _this.removeChildListenersFuncs.push(function () {\n column.removeEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n column.removeEventListener(Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n });\n });\n };\n GroupWidthFeature.prototype.removeListenersOnChildrenColumns = function () {\n this.removeChildListenersFuncs.forEach(function (func) { return func(); });\n this.removeChildListenersFuncs = [];\n };\n GroupWidthFeature.prototype.onDisplayedChildrenChanged = function () {\n this.addListenersToChildrenColumns();\n this.onWidthChanged();\n };\n GroupWidthFeature.prototype.onWidthChanged = function () {\n this.comp.setWidth(this.columnGroup.getActualWidth() + 'px');\n };\n __decorate$1j([\n PostConstruct\n ], GroupWidthFeature.prototype, \"postConstruct\", null);\n return GroupWidthFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1p = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderGroupCellCtrl = /** @class */ (function (_super) {\n __extends$1p(HeaderGroupCellCtrl, _super);\n function HeaderGroupCellCtrl(columnGroup, parentRowCtrl) {\n var _this = _super.call(this, columnGroup, parentRowCtrl) || this;\n _this.columnGroup = columnGroup;\n return _this;\n }\n HeaderGroupCellCtrl.prototype.setComp = function (comp, eGui, eResize) {\n _super.prototype.setGui.call(this, eGui);\n this.comp = comp;\n this.displayName = this.columnModel.getDisplayNameForColumnGroup(this.columnGroup, 'header');\n this.addClasses();\n this.addAttributes();\n this.setupMovingCss();\n this.setupExpandable();\n this.setupTooltip();\n this.setupUserComp();\n var pinned = this.getParentRowCtrl().getPinned();\n var leafCols = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n this.createManagedBean(new HoverFeature(leafCols, eGui));\n this.createManagedBean(new SetLeftFeature(this.columnGroup, eGui, this.beans));\n this.createManagedBean(new GroupWidthFeature(comp, this.columnGroup));\n this.groupResizeFeature = this.createManagedBean(new GroupResizeFeature(comp, eResize, pinned, this.columnGroup));\n this.createManagedBean(new ManagedFocusFeature(eGui, {\n shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),\n onTabKeyDown: function () { return undefined; },\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this)\n }));\n };\n HeaderGroupCellCtrl.prototype.resizeLeafColumnsToFit = function () {\n this.groupResizeFeature.onResizeStart(false);\n this.groupResizeFeature.resizeLeafColumnsToFit();\n };\n HeaderGroupCellCtrl.prototype.setupUserComp = function () {\n var _this = this;\n var displayName = this.displayName;\n var params = {\n displayName: this.displayName,\n columnGroup: this.columnGroup,\n setExpanded: function (expanded) {\n _this.columnModel.setColumnGroupOpened(_this.columnGroup.getProvidedColumnGroup(), expanded, \"gridInitializing\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n };\n if (!displayName) {\n var columnGroup = this.columnGroup;\n var leafCols = columnGroup.getLeafColumns();\n // find the top most column group that represents the same columns. so if we are dragging a group, we also\n // want to visually show the parent groups dragging for the same column set. for example imaging 5 levels\n // of grouping, with each group only containing the next group, and the last group containing three columns,\n // then when you move any group (even the lowest level group) you are in-fact moving all the groups, as all\n // the groups represent the same column set.\n while (columnGroup.getParent() && columnGroup.getParent().getLeafColumns().length === leafCols.length) {\n columnGroup = columnGroup.getParent();\n }\n var colGroupDef = columnGroup.getColGroupDef();\n if (colGroupDef) {\n displayName = colGroupDef.headerName;\n }\n if (!displayName) {\n displayName = leafCols ? this.columnModel.getDisplayNameForColumn(leafCols[0], 'header', true) : '';\n }\n }\n var compDetails = this.userComponentFactory.getHeaderGroupCompDetails(params);\n this.comp.setUserCompDetails(compDetails);\n };\n HeaderGroupCellCtrl.prototype.setupTooltip = function () {\n var _this = this;\n var colGroupDef = this.columnGroup.getColGroupDef();\n var tooltipCtrl = {\n getColumn: function () { return _this.columnGroup; },\n getGui: function () { return _this.eGui; },\n getLocation: function () { return 'headerGroup'; },\n getTooltipValue: function () { return colGroupDef && colGroupDef.headerTooltip; }\n };\n if (colGroupDef) {\n tooltipCtrl.getColDef = function () { return colGroupDef; };\n }\n var tooltipFeature = this.createManagedBean(new TooltipFeature(tooltipCtrl, this.beans));\n tooltipFeature.setComp(this.comp);\n };\n HeaderGroupCellCtrl.prototype.setupExpandable = function () {\n var providedColGroup = this.columnGroup.getProvidedColumnGroup();\n this.refreshExpanded();\n this.addManagedListener(providedColGroup, ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED, this.refreshExpanded.bind(this));\n this.addManagedListener(providedColGroup, ProvidedColumnGroup.EVENT_EXPANDED_CHANGED, this.refreshExpanded.bind(this));\n };\n HeaderGroupCellCtrl.prototype.refreshExpanded = function () {\n var column = this.columnGroup;\n this.expandable = column.isExpandable();\n var expanded = column.isExpanded();\n if (this.expandable) {\n this.comp.setAriaExpanded(expanded ? 'true' : 'false');\n }\n else {\n this.comp.setAriaExpanded(undefined);\n }\n };\n HeaderGroupCellCtrl.prototype.addAttributes = function () {\n this.comp.setColId(this.columnGroup.getUniqueId());\n };\n HeaderGroupCellCtrl.prototype.addClasses = function () {\n var _this = this;\n var colGroupDef = this.columnGroup.getColGroupDef();\n var classes = CssClassApplier.getHeaderClassesFromColDef(colGroupDef, this.gridOptionsWrapper, null, this.columnGroup);\n // having different classes below allows the style to not have a bottom border\n // on the group header, if no group is specified\n classes.push(this.columnGroup.isPadding() ? \"ag-header-group-cell-no-group\" : \"ag-header-group-cell-with-group\");\n classes.forEach(function (c) { return _this.comp.addOrRemoveCssClass(c, true); });\n };\n HeaderGroupCellCtrl.prototype.setupMovingCss = function () {\n var _this = this;\n var providedColumnGroup = this.columnGroup.getProvidedColumnGroup();\n var leafColumns = providedColumnGroup.getLeafColumns();\n // this function adds or removes the moving css, based on if the col is moving.\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n var listener = function () { return _this.comp.addOrRemoveCssClass('ag-header-cell-moving', _this.columnGroup.isMoving()); };\n leafColumns.forEach(function (col) {\n _this.addManagedListener(col, Column.EVENT_MOVING_CHANGED, listener);\n });\n listener();\n };\n HeaderGroupCellCtrl.prototype.onFocusIn = function (e) {\n if (!this.eGui.contains(e.relatedTarget)) {\n var rowIndex = this.getRowIndex();\n this.beans.focusService.setFocusedHeader(rowIndex, this.columnGroup);\n }\n };\n HeaderGroupCellCtrl.prototype.handleKeyDown = function (e) {\n _super.prototype.handleKeyDown.call(this, e);\n var wrapperHasFocus = this.getWrapperHasFocus();\n if (!this.expandable || !wrapperHasFocus) {\n return;\n }\n if (e.key === KeyCode.ENTER) {\n var column = this.columnGroup;\n var newExpandedValue = !column.isExpanded();\n this.columnModel.setColumnGroupOpened(column.getProvidedColumnGroup(), newExpandedValue, \"uiColumnExpanded\");\n }\n };\n // unlike columns, this will only get called once, as we don't react on props on column groups\n // (we will always destroy and recreate this comp if something changes)\n HeaderGroupCellCtrl.prototype.setDragSource = function (eHeaderGroup) {\n var _this = this;\n if (this.isSuppressMoving()) {\n return;\n }\n var allLeafColumns = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n var hideColumnOnExit = !this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns();\n var dragSource = {\n type: DragSourceType.HeaderCell,\n eElement: eHeaderGroup,\n defaultIconName: hideColumnOnExit ? DragAndDropService.ICON_HIDE : DragAndDropService.ICON_NOT_ALLOWED,\n dragItemName: this.displayName,\n // we add in the original group leaf columns, so we move both visible and non-visible items\n getDragItem: this.getDragItemForGroup.bind(this),\n onDragStarted: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(true, \"uiColumnDragged\"); }); },\n onDragStopped: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(false, \"uiColumnDragged\"); }); },\n onGridEnter: function (dragItem) {\n var _a, _b;\n if (hideColumnOnExit) {\n var unlockedColumns = ((_b = (_a = dragItem) === null || _a === void 0 ? void 0 : _a.columns) === null || _b === void 0 ? void 0 : _b.filter(function (col) { return !col.getColDef().lockVisible; })) || [];\n _this.columnModel.setColumnsVisible(unlockedColumns, true, \"uiColumnMoved\");\n }\n },\n onGridExit: function (dragItem) {\n var _a, _b;\n if (hideColumnOnExit) {\n var unlockedColumns = ((_b = (_a = dragItem) === null || _a === void 0 ? void 0 : _a.columns) === null || _b === void 0 ? void 0 : _b.filter(function (col) { return !col.getColDef().lockVisible; })) || [];\n _this.columnModel.setColumnsVisible(unlockedColumns, false, \"uiColumnMoved\");\n }\n },\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n // when moving the columns, we want to move all the columns (contained within the DragItem) in this group in one go,\n // and in the order they are currently in the screen.\n HeaderGroupCellCtrl.prototype.getDragItemForGroup = function () {\n var allColumnsOriginalOrder = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n // capture visible state, used when re-entering grid to dictate which columns should be visible\n var visibleState = {};\n allColumnsOriginalOrder.forEach(function (column) { return visibleState[column.getId()] = column.isVisible(); });\n var allColumnsCurrentOrder = [];\n this.columnModel.getAllDisplayedColumns().forEach(function (column) {\n if (allColumnsOriginalOrder.indexOf(column) >= 0) {\n allColumnsCurrentOrder.push(column);\n removeFromArray(allColumnsOriginalOrder, column);\n }\n });\n // we are left with non-visible columns, stick these in at the end\n allColumnsOriginalOrder.forEach(function (column) { return allColumnsCurrentOrder.push(column); });\n // create and return dragItem\n return {\n columns: allColumnsCurrentOrder,\n visibleState: visibleState\n };\n };\n HeaderGroupCellCtrl.prototype.isSuppressMoving = function () {\n // if any child is fixed, then don't allow moving\n var childSuppressesMoving = false;\n this.columnGroup.getLeafColumns().forEach(function (column) {\n if (column.getColDef().suppressMovable || column.getColDef().lockPosition) {\n childSuppressesMoving = true;\n }\n });\n var result = childSuppressesMoving || this.gridOptionsWrapper.isSuppressMovableColumns();\n return result;\n };\n __decorate$1i([\n Autowired('columnModel')\n ], HeaderGroupCellCtrl.prototype, \"columnModel\", void 0);\n __decorate$1i([\n Autowired('dragAndDropService')\n ], HeaderGroupCellCtrl.prototype, \"dragAndDropService\", void 0);\n __decorate$1i([\n Autowired('gridApi')\n ], HeaderGroupCellCtrl.prototype, \"gridApi\", void 0);\n __decorate$1i([\n Autowired('columnApi')\n ], HeaderGroupCellCtrl.prototype, \"columnApi\", void 0);\n return HeaderGroupCellCtrl;\n}(AbstractHeaderCellCtrl));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1o = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar instanceIdSequence = 0;\nvar HeaderRowCtrl = /** @class */ (function (_super) {\n __extends$1o(HeaderRowCtrl, _super);\n function HeaderRowCtrl(rowIndex, pinned, type) {\n var _this = _super.call(this) || this;\n _this.instanceId = instanceIdSequence++;\n _this.headerCellCtrls = {};\n _this.rowIndex = rowIndex;\n _this.pinned = pinned;\n _this.type = type;\n return _this;\n }\n HeaderRowCtrl.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n HeaderRowCtrl.prototype.setComp = function (comp) {\n this.comp = comp;\n this.onRowHeightChanged();\n this.onVirtualColumnsChanged();\n this.setWidth();\n this.addEventListeners();\n if (isBrowserSafari()) {\n // fix for a Safari rendering bug that caused the header to flicker above chart panels\n // as you move the mouse over the header\n this.comp.setTransform('translateZ(0)');\n }\n comp.setAriaRowIndex(this.rowIndex + 1);\n };\n HeaderRowCtrl.prototype.addEventListeners = function () {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n // when print layout changes, it changes what columns are in what section\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, this.onRowHeightChanged.bind(this));\n };\n HeaderRowCtrl.prototype.getHeaderCellCtrl = function (column) {\n return values(this.headerCellCtrls).find(function (cellCtrl) { return cellCtrl.getColumnGroupChild() === column; });\n };\n HeaderRowCtrl.prototype.onDisplayedColumnsChanged = function () {\n this.onVirtualColumnsChanged();\n this.setWidth();\n this.onRowHeightChanged();\n };\n HeaderRowCtrl.prototype.getType = function () {\n return this.type;\n };\n HeaderRowCtrl.prototype.onColumnResized = function () {\n this.setWidth();\n };\n HeaderRowCtrl.prototype.setWidth = function () {\n var width = this.getWidthForRow();\n this.comp.setWidth(width + \"px\");\n };\n HeaderRowCtrl.prototype.getWidthForRow = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (printLayout) {\n var pinned = this.pinned != null;\n if (pinned) {\n return 0;\n }\n return this.columnModel.getContainerWidth(Constants.PINNED_RIGHT)\n + this.columnModel.getContainerWidth(Constants.PINNED_LEFT)\n + this.columnModel.getContainerWidth(null);\n }\n // if not printing, just return the width as normal\n return this.columnModel.getContainerWidth(this.pinned);\n };\n HeaderRowCtrl.prototype.onRowHeightChanged = function () {\n var headerRowCount = this.columnModel.getHeaderRowCount();\n var sizes = [];\n var numberOfFloating = 0;\n if (this.columnModel.hasFloatingFilters()) {\n headerRowCount++;\n numberOfFloating = 1;\n }\n var groupHeight = this.columnModel.getColumnGroupHeaderRowHeight();\n var headerHeight = this.columnModel.getColumnHeaderRowHeight();\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n for (var i = 0; i < numberOfGroups; i++) {\n sizes.push(groupHeight);\n }\n sizes.push(headerHeight);\n for (var i = 0; i < numberOfFloating; i++) {\n sizes.push(this.gridOptionsWrapper.getFloatingFiltersHeight());\n }\n var topOffset = 0;\n for (var i = 0; i < this.rowIndex; i++) {\n topOffset += sizes[i];\n }\n var thisRowHeight = sizes[this.rowIndex] + 'px';\n this.comp.setTop(topOffset + 'px');\n this.comp.setHeight(thisRowHeight);\n };\n HeaderRowCtrl.prototype.getPinned = function () {\n return this.pinned;\n };\n HeaderRowCtrl.prototype.getRowIndex = function () {\n return this.rowIndex;\n };\n HeaderRowCtrl.prototype.onVirtualColumnsChanged = function () {\n var _this = this;\n var oldCtrls = this.headerCellCtrls;\n this.headerCellCtrls = {};\n var columns = this.getColumnsInViewport();\n columns.forEach(function (child) {\n // skip groups that have no displayed children. this can happen when the group is broken,\n // and this section happens to have nothing to display for the open / closed state.\n // (a broken group is one that is split, ie columns in the group have a non-group column\n // in between them)\n if (child.isEmptyGroup()) {\n return;\n }\n var idOfChild = child.getUniqueId();\n // if we already have this cell rendered, do nothing\n var headerCtrl = oldCtrls[idOfChild];\n delete oldCtrls[idOfChild];\n // it's possible there is a new Column with the same ID, but it's for a different Column.\n // this is common with pivoting, where the pivot cols change, but the id's are still pivot_0,\n // pivot_1 etc. so if new col but same ID, need to remove the old col here first as we are\n // about to replace it in the this.headerComps map.\n var forOldColumn = headerCtrl && headerCtrl.getColumnGroupChild() != child;\n if (forOldColumn) {\n _this.destroyBean(headerCtrl);\n headerCtrl = undefined;\n }\n if (headerCtrl == null) {\n switch (_this.type) {\n case HeaderRowType.FLOATING_FILTER:\n headerCtrl = _this.createBean(new HeaderFilterCellCtrl(child, _this));\n break;\n case HeaderRowType.COLUMN_GROUP:\n headerCtrl = _this.createBean(new HeaderGroupCellCtrl(child, _this));\n break;\n default:\n headerCtrl = _this.createBean(new HeaderCellCtrl(child, _this));\n break;\n }\n }\n _this.headerCellCtrls[idOfChild] = headerCtrl;\n });\n // we want to keep columns that are focused, otherwise keyboard navigation breaks\n var isFocusedAndDisplayed = function (ctrl) {\n var isFocused = _this.focusService.isHeaderWrapperFocused(ctrl);\n if (!isFocused) {\n return false;\n }\n var isDisplayed = _this.columnModel.isDisplayed(ctrl.getColumnGroupChild());\n return isDisplayed;\n };\n iterateObject(oldCtrls, function (id, oldCtrl) {\n var keepCtrl = isFocusedAndDisplayed(oldCtrl);\n if (keepCtrl) {\n _this.headerCellCtrls[id] = oldCtrl;\n }\n else {\n _this.destroyBean(oldCtrl);\n }\n });\n var ctrlsToDisplay = getAllValuesInObject(this.headerCellCtrls);\n this.comp.setHeaderCtrls(ctrlsToDisplay);\n };\n HeaderRowCtrl.prototype.destroyCtrls = function () {\n var _this = this;\n iterateObject(this.headerCellCtrls, function (key, ctrl) {\n _this.destroyBean(ctrl);\n });\n this.headerCellCtrls = {};\n };\n HeaderRowCtrl.prototype.getColumnsInViewport = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n return printLayout ? this.getColumnsInViewportPrintLayout() : this.getColumnsInViewportNormalLayout();\n };\n HeaderRowCtrl.prototype.getColumnsInViewportPrintLayout = function () {\n var _this = this;\n // for print layout, we add all columns into the center\n if (this.pinned != null) {\n return [];\n }\n var viewportColumns = [];\n var actualDepth = this.getActualDepth();\n [Constants.PINNED_LEFT, null, Constants.PINNED_RIGHT].forEach(function (pinned) {\n var items = _this.columnModel.getVirtualHeaderGroupRow(pinned, actualDepth);\n viewportColumns = viewportColumns.concat(items);\n });\n return viewportColumns;\n };\n HeaderRowCtrl.prototype.getActualDepth = function () {\n return this.type == HeaderRowType.FLOATING_FILTER ? this.rowIndex - 1 : this.rowIndex;\n };\n HeaderRowCtrl.prototype.getColumnsInViewportNormalLayout = function () {\n // when in normal layout, we add the columns for that container only\n return this.columnModel.getVirtualHeaderGroupRow(this.pinned, this.getActualDepth());\n };\n HeaderRowCtrl.prototype.focusHeader = function (column, event) {\n var allCtrls = getAllValuesInObject(this.headerCellCtrls);\n var ctrl = allCtrls.find(function (ctrl) { return ctrl.getColumnGroupChild() == column; });\n if (!ctrl) {\n return false;\n }\n ctrl.focus(event);\n return true;\n };\n __decorate$1h([\n Autowired('columnModel')\n ], HeaderRowCtrl.prototype, \"columnModel\", void 0);\n __decorate$1h([\n Autowired('focusService')\n ], HeaderRowCtrl.prototype, \"focusService\", void 0);\n __decorate$1h([\n PreDestroy\n ], HeaderRowCtrl.prototype, \"destroyCtrls\", null);\n return HeaderRowCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1n = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$c = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$a = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$c(arguments[i]));\n return ar;\n};\nvar HeaderRowContainerCtrl = /** @class */ (function (_super) {\n __extends$1n(HeaderRowContainerCtrl, _super);\n function HeaderRowContainerCtrl(pinned) {\n var _this = _super.call(this) || this;\n _this.groupsRowCtrls = [];\n _this.pinned = pinned;\n return _this;\n }\n HeaderRowContainerCtrl.prototype.setComp = function (comp, eGui) {\n this.comp = comp;\n this.eViewport = eGui;\n this.setupCenterWidth();\n this.setupPinnedWidth();\n this.setupDragAndDrop(this.eViewport);\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.addManagedListener(this.eViewport, 'scroll', this.resetScrollLeft.bind(this));\n this.ctrlsService.registerHeaderContainer(this, this.pinned);\n if (this.columnModel.isReady()) {\n this.refresh();\n }\n };\n HeaderRowContainerCtrl.prototype.setupDragAndDrop = function (dropContainer) {\n var bodyDropTarget = new BodyDropTarget(this.pinned, dropContainer);\n this.createManagedBean(bodyDropTarget);\n };\n HeaderRowContainerCtrl.prototype.refresh = function (keepColumns) {\n var _this = this;\n if (keepColumns === void 0) { keepColumns = false; }\n var sequence = new NumberSequence();\n var focusedHeaderPosition = this.focusService.getFocusHeaderToUseAfterRefresh();\n var refreshColumnGroups = function () {\n var groupRowCount = _this.columnModel.getHeaderRowCount() - 1;\n _this.groupsRowCtrls = _this.destroyBeans(_this.groupsRowCtrls);\n for (var i = 0; i < groupRowCount; i++) {\n var ctrl = _this.createBean(new HeaderRowCtrl(sequence.next(), _this.pinned, HeaderRowType.COLUMN_GROUP));\n _this.groupsRowCtrls.push(ctrl);\n }\n };\n var refreshColumns = function () {\n var rowIndex = sequence.next();\n var needNewInstance = _this.columnsRowCtrl == null || !keepColumns || _this.columnsRowCtrl.getRowIndex() !== rowIndex;\n if (needNewInstance) {\n _this.destroyBean(_this.columnsRowCtrl);\n _this.columnsRowCtrl = _this.createBean(new HeaderRowCtrl(rowIndex, _this.pinned, HeaderRowType.COLUMN));\n }\n };\n var refreshFilters = function () {\n var includeFloatingFilter = _this.columnModel.hasFloatingFilters();\n var destroyPreviousComp = function () {\n _this.filtersRowCtrl = _this.destroyBean(_this.filtersRowCtrl);\n };\n if (!includeFloatingFilter) {\n destroyPreviousComp();\n return;\n }\n var rowIndex = sequence.next();\n if (_this.filtersRowCtrl) {\n var rowIndexMismatch = _this.filtersRowCtrl.getRowIndex() !== rowIndex;\n if (!keepColumns || rowIndexMismatch) {\n destroyPreviousComp();\n }\n }\n if (!_this.filtersRowCtrl) {\n _this.filtersRowCtrl = _this.createBean(new HeaderRowCtrl(rowIndex, _this.pinned, HeaderRowType.FLOATING_FILTER));\n }\n };\n refreshColumnGroups();\n refreshColumns();\n refreshFilters();\n var allCtrls = this.getAllCtrls();\n this.comp.setCtrls(allCtrls);\n this.restoreFocusOnHeader(focusedHeaderPosition);\n };\n HeaderRowContainerCtrl.prototype.restoreFocusOnHeader = function (position) {\n if (position == null || position.column.getPinned() != this.pinned) {\n return;\n }\n this.focusService.focusHeaderPosition({ headerPosition: position });\n };\n HeaderRowContainerCtrl.prototype.getAllCtrls = function () {\n var res = __spread$a(this.groupsRowCtrls, [this.columnsRowCtrl]);\n if (this.filtersRowCtrl) {\n res.push(this.filtersRowCtrl);\n }\n return res;\n };\n // grid cols have changed - this also means the number of rows in the header can have\n // changed. so we remove all the old rows and insert new ones for a complete refresh\n HeaderRowContainerCtrl.prototype.onGridColumnsChanged = function () {\n this.refresh(true);\n };\n HeaderRowContainerCtrl.prototype.setupCenterWidth = function () {\n var _this = this;\n if (this.pinned != null) {\n return;\n }\n this.createManagedBean(new CenterWidthFeature(function (width) { return _this.comp.setCenterWidth(width + \"px\"); }));\n };\n HeaderRowContainerCtrl.prototype.setHorizontalScroll = function (offset) {\n this.comp.setContainerTransform(\"translateX(\" + offset + \"px)\");\n };\n HeaderRowContainerCtrl.prototype.resetScrollLeft = function () {\n this.eViewport.scrollLeft = 0;\n };\n HeaderRowContainerCtrl.prototype.setupPinnedWidth = function () {\n var _this = this;\n if (this.pinned == null) {\n return;\n }\n var pinningLeft = this.pinned === Constants.PINNED_LEFT;\n var pinningRight = this.pinned === Constants.PINNED_RIGHT;\n var listener = function () {\n var width = pinningLeft ? _this.pinnedWidthService.getPinnedLeftWidth() : _this.pinnedWidthService.getPinnedRightWidth();\n if (width == null) {\n return;\n } // can happen at initialisation, width not yet set\n var hidden = width == 0;\n var isRtl = _this.gridOptionsWrapper.isEnableRtl();\n var scrollbarWidth = _this.gridOptionsWrapper.getScrollbarWidth();\n // if there is a scroll showing (and taking up space, so Windows, and not iOS)\n // in the body, then we add extra space to keep header aligned with the body,\n // as body width fits the cols and the scrollbar\n var addPaddingForScrollbar = _this.scrollVisibleService.isVerticalScrollShowing() && ((isRtl && pinningLeft) || (!isRtl && pinningRight));\n var widthWithPadding = addPaddingForScrollbar ? width + scrollbarWidth : width;\n _this.comp.setPinnedContainerWidth(widthWithPadding + 'px');\n _this.comp.addOrRemoveCssClass('ag-hidden', hidden);\n };\n this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_SCROLLBAR_WIDTH_CHANGED, listener);\n };\n HeaderRowContainerCtrl.prototype.getHeaderCtrlForColumn = function (column) {\n if (column instanceof Column) {\n if (!this.columnsRowCtrl) {\n return;\n }\n return this.columnsRowCtrl.getHeaderCellCtrl(column);\n }\n if (this.groupsRowCtrls.length === 0) {\n return;\n }\n for (var i = 0; i < this.groupsRowCtrls.length; i++) {\n var ctrl = this.groupsRowCtrls[i].getHeaderCellCtrl(column);\n if (ctrl) {\n return ctrl;\n }\n }\n };\n HeaderRowContainerCtrl.prototype.getHtmlElementForColumnHeader = function (column) {\n /* tslint:enable */\n var cellCtrl = this.getHeaderCtrlForColumn(column);\n if (!cellCtrl) {\n return null;\n }\n return cellCtrl.getGui();\n };\n HeaderRowContainerCtrl.prototype.getRowType = function (rowIndex) {\n var allCtrls = this.getAllCtrls();\n var ctrl = allCtrls[rowIndex];\n return ctrl ? ctrl.getType() : undefined;\n };\n HeaderRowContainerCtrl.prototype.focusHeader = function (rowIndex, column, event) {\n var allCtrls = this.getAllCtrls();\n var ctrl = allCtrls[rowIndex];\n if (!ctrl) {\n return false;\n }\n return ctrl.focusHeader(column, event);\n };\n HeaderRowContainerCtrl.prototype.getRowCount = function () {\n return this.getAllCtrls().length;\n };\n __decorate$1g([\n Autowired('ctrlsService')\n ], HeaderRowContainerCtrl.prototype, \"ctrlsService\", void 0);\n __decorate$1g([\n Autowired('scrollVisibleService')\n ], HeaderRowContainerCtrl.prototype, \"scrollVisibleService\", void 0);\n __decorate$1g([\n Autowired('pinnedWidthService')\n ], HeaderRowContainerCtrl.prototype, \"pinnedWidthService\", void 0);\n __decorate$1g([\n Autowired('columnModel')\n ], HeaderRowContainerCtrl.prototype, \"columnModel\", void 0);\n __decorate$1g([\n Autowired('focusService')\n ], HeaderRowContainerCtrl.prototype, \"focusService\", void 0);\n return HeaderRowContainerCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1m = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderRowContainerComp = /** @class */ (function (_super) {\n __extends$1m(HeaderRowContainerComp, _super);\n function HeaderRowContainerComp(pinned) {\n var _this = _super.call(this) || this;\n _this.headerRowComps = {};\n _this.rowCompsList = [];\n _this.pinned = pinned;\n return _this;\n }\n HeaderRowContainerComp.prototype.init = function () {\n var _this = this;\n this.selectAndSetTemplate();\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setCtrls: function (ctrls) { return _this.setCtrls(ctrls); },\n // only gets called for center section\n setCenterWidth: function (width) { return _this.eCenterContainer.style.width = width; },\n setContainerTransform: function (transform) { return _this.eCenterContainer.style.transform = transform; },\n // only gets called for pinned sections\n setPinnedContainerWidth: function (width) {\n var eGui = _this.getGui();\n eGui.style.width = width;\n eGui.style.maxWidth = width;\n eGui.style.minWidth = width;\n }\n };\n var ctrl = this.createManagedBean(new HeaderRowContainerCtrl(this.pinned));\n ctrl.setComp(compProxy, this.getGui());\n };\n HeaderRowContainerComp.prototype.selectAndSetTemplate = function () {\n var pinnedLeft = this.pinned == Constants.PINNED_LEFT;\n var pinnedRight = this.pinned == Constants.PINNED_RIGHT;\n var template = pinnedLeft ? HeaderRowContainerComp.PINNED_LEFT_TEMPLATE :\n pinnedRight ? HeaderRowContainerComp.PINNED_RIGHT_TEMPLATE : HeaderRowContainerComp.CENTER_TEMPLATE;\n this.setTemplate(template);\n // for left and right, we add rows directly to the root element,\n // but for center container we add elements to the child container.\n this.eRowContainer = this.eCenterContainer ? this.eCenterContainer : this.getGui();\n };\n HeaderRowContainerComp.prototype.destroyRowComps = function () {\n this.setCtrls([]);\n };\n HeaderRowContainerComp.prototype.destroyRowComp = function (rowComp) {\n this.destroyBean(rowComp);\n this.eRowContainer.removeChild(rowComp.getGui());\n };\n HeaderRowContainerComp.prototype.setCtrls = function (ctrls) {\n var _this = this;\n var oldRowComps = this.headerRowComps;\n this.headerRowComps = {};\n this.rowCompsList = [];\n var prevGui;\n var appendEnsuringDomOrder = function (rowComp) {\n var eGui = rowComp.getGui();\n var notAlreadyIn = eGui.parentElement != _this.eRowContainer;\n if (notAlreadyIn) {\n _this.eRowContainer.appendChild(eGui);\n }\n if (prevGui) {\n ensureDomOrder(_this.eRowContainer, eGui, prevGui);\n }\n prevGui = eGui;\n };\n ctrls.forEach(function (ctrl) {\n var ctrlId = ctrl.getInstanceId();\n var existingComp = oldRowComps[ctrlId];\n delete oldRowComps[ctrlId];\n var rowComp = existingComp ? existingComp : _this.createBean(new HeaderRowComp(ctrl));\n _this.headerRowComps[ctrlId] = rowComp;\n _this.rowCompsList.push(rowComp);\n appendEnsuringDomOrder(rowComp);\n });\n getAllValuesInObject(oldRowComps).forEach(function (c) { return _this.destroyRowComp(c); });\n };\n HeaderRowContainerComp.PINNED_LEFT_TEMPLATE = \"
\";\n HeaderRowContainerComp.PINNED_RIGHT_TEMPLATE = \"
\";\n HeaderRowContainerComp.CENTER_TEMPLATE = \"
\\n
\\n
\";\n __decorate$1f([\n RefSelector('eCenterContainer')\n ], HeaderRowContainerComp.prototype, \"eCenterContainer\", void 0);\n __decorate$1f([\n PostConstruct\n ], HeaderRowContainerComp.prototype, \"init\", null);\n __decorate$1f([\n PreDestroy\n ], HeaderRowContainerComp.prototype, \"destroyRowComps\", null);\n return HeaderRowContainerComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1l = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderNavigationDirection;\n(function (HeaderNavigationDirection) {\n HeaderNavigationDirection[HeaderNavigationDirection[\"UP\"] = 0] = \"UP\";\n HeaderNavigationDirection[HeaderNavigationDirection[\"DOWN\"] = 1] = \"DOWN\";\n HeaderNavigationDirection[HeaderNavigationDirection[\"LEFT\"] = 2] = \"LEFT\";\n HeaderNavigationDirection[HeaderNavigationDirection[\"RIGHT\"] = 3] = \"RIGHT\";\n})(HeaderNavigationDirection || (HeaderNavigationDirection = {}));\nvar HeaderNavigationService = /** @class */ (function (_super) {\n __extends$1l(HeaderNavigationService, _super);\n function HeaderNavigationService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HeaderNavigationService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.gridBodyCon = p.gridBodyCtrl;\n });\n };\n HeaderNavigationService.prototype.getHeaderRowCount = function () {\n var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n return centerHeaderContainer ? centerHeaderContainer.getRowCount() : 0;\n };\n HeaderNavigationService.prototype.getHeaderRowType = function (rowIndex) {\n var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n if (centerHeaderContainer) {\n return centerHeaderContainer.getRowType(rowIndex);\n }\n };\n /*\n * This method navigates grid header vertically\n * @return {boolean} true to preventDefault on the event that caused this navigation.\n */\n HeaderNavigationService.prototype.navigateVertically = function (direction, fromHeader, event) {\n if (!fromHeader) {\n fromHeader = this.focusService.getFocusedHeader();\n }\n if (!fromHeader) {\n return false;\n }\n var headerRowIndex = fromHeader.headerRowIndex, column = fromHeader.column;\n var rowLen = this.getHeaderRowCount();\n var isUp = direction === HeaderNavigationDirection.UP;\n var nextRow = isUp ? headerRowIndex - 1 : headerRowIndex + 1;\n var nextFocusColumn = null;\n var skipColumn = false;\n if (nextRow < 0) {\n nextRow = 0;\n nextFocusColumn = column;\n skipColumn = true;\n }\n if (nextRow >= rowLen) {\n nextRow = -1; // -1 indicates the focus should move to grid rows.\n }\n var currentRowType = this.getHeaderRowType(headerRowIndex);\n if (!skipColumn) {\n if (currentRowType === HeaderRowType.COLUMN_GROUP) {\n var currentColumn = column;\n nextFocusColumn = isUp ? column.getParent() : currentColumn.getDisplayedChildren()[0];\n }\n else if (currentRowType === HeaderRowType.FLOATING_FILTER) {\n nextFocusColumn = column;\n }\n else {\n var currentColumn = column;\n nextFocusColumn = isUp ? currentColumn.getParent() : currentColumn;\n }\n if (!nextFocusColumn) {\n return false;\n }\n }\n return this.focusService.focusHeaderPosition({\n headerPosition: { headerRowIndex: nextRow, column: nextFocusColumn },\n allowUserOverride: true,\n event: event\n });\n };\n /*\n * This method navigates grid header horizontally\n * @return {boolean} true to preventDefault on the event that caused this navigation.\n */\n HeaderNavigationService.prototype.navigateHorizontally = function (direction, fromTab, event) {\n if (fromTab === void 0) { fromTab = false; }\n var focusedHeader = this.focusService.getFocusedHeader();\n var isLeft = direction === HeaderNavigationDirection.LEFT;\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n var nextHeader;\n var normalisedDirection;\n // either navigating to the left or isRtl (cannot be both)\n if (isLeft !== isRtl) {\n normalisedDirection = 'Before';\n nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);\n }\n else {\n normalisedDirection = 'After';\n nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);\n }\n if (nextHeader || !fromTab) {\n return this.focusService.focusHeaderPosition({\n headerPosition: nextHeader,\n direction: normalisedDirection,\n fromTab: fromTab,\n allowUserOverride: true,\n event: event\n });\n }\n return this.focusNextHeaderRow(focusedHeader, normalisedDirection, event);\n };\n HeaderNavigationService.prototype.focusNextHeaderRow = function (focusedHeader, direction, event) {\n var currentIndex = focusedHeader.headerRowIndex;\n var nextPosition = null;\n var nextRowIndex;\n if (direction === 'Before') {\n if (currentIndex > 0) {\n nextRowIndex = currentIndex - 1;\n nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, 'end');\n }\n }\n else {\n nextRowIndex = currentIndex + 1;\n nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, 'start');\n }\n return this.focusService.focusHeaderPosition({\n headerPosition: nextPosition,\n direction: direction,\n fromTab: true,\n allowUserOverride: true,\n event: event\n });\n };\n HeaderNavigationService.prototype.scrollToColumn = function (column, direction) {\n if (direction === void 0) { direction = 'After'; }\n if (column.getPinned()) {\n return;\n }\n var columnToScrollTo;\n if (column instanceof ColumnGroup) {\n var columns = column.getDisplayedLeafColumns();\n columnToScrollTo = direction === 'Before' ? last(columns) : columns[0];\n }\n else {\n columnToScrollTo = column;\n }\n this.gridBodyCon.getScrollFeature().ensureColumnVisible(columnToScrollTo);\n };\n __decorate$1e([\n Autowired('focusService')\n ], HeaderNavigationService.prototype, \"focusService\", void 0);\n __decorate$1e([\n Autowired('headerPositionUtils')\n ], HeaderNavigationService.prototype, \"headerPositionUtils\", void 0);\n __decorate$1e([\n Autowired('animationFrameService')\n ], HeaderNavigationService.prototype, \"animationFrameService\", void 0);\n __decorate$1e([\n Autowired('ctrlsService')\n ], HeaderNavigationService.prototype, \"ctrlsService\", void 0);\n __decorate$1e([\n PostConstruct\n ], HeaderNavigationService.prototype, \"postConstruct\", null);\n HeaderNavigationService = __decorate$1e([\n Bean('headerNavigationService')\n ], HeaderNavigationService);\n return HeaderNavigationService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1k = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridHeaderCtrl = /** @class */ (function (_super) {\n __extends$1k(GridHeaderCtrl, _super);\n function GridHeaderCtrl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridHeaderCtrl.prototype.setComp = function (comp, eGui, eFocusableElement) {\n this.comp = comp;\n this.eGui = eGui;\n this.createManagedBean(new ManagedFocusFeature(eFocusableElement, {\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusOut: this.onFocusOut.bind(this)\n }));\n // for setting ag-pivot-on / ag-pivot-off CSS classes\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n this.onPivotModeChanged();\n this.setupHeaderHeight();\n this.ctrlsService.registerGridHeaderCtrl(this);\n };\n GridHeaderCtrl.prototype.setupHeaderHeight = function () {\n var listener = this.setHeaderHeight.bind(this);\n listener();\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_HEADER_HEIGHT, listener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, listener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, listener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, listener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, listener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HEADER_HEIGHT_CHANGED, listener);\n };\n GridHeaderCtrl.prototype.getHeaderHeight = function () {\n return this.headerHeight;\n };\n GridHeaderCtrl.prototype.setHeaderHeight = function () {\n var _a = this, columnModel = _a.columnModel, gridOptionsWrapper = _a.gridOptionsWrapper;\n var numberOfFloating = 0;\n var headerRowCount = columnModel.getHeaderRowCount();\n var totalHeaderHeight;\n var hasFloatingFilters = columnModel.hasFloatingFilters();\n if (hasFloatingFilters) {\n headerRowCount++;\n numberOfFloating = 1;\n }\n var groupHeight = this.columnModel.getColumnGroupHeaderRowHeight();\n var headerHeight = this.columnModel.getColumnHeaderRowHeight();\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n totalHeaderHeight = numberOfFloating * gridOptionsWrapper.getFloatingFiltersHeight();\n totalHeaderHeight += numberOfGroups * groupHeight;\n totalHeaderHeight += headerHeight;\n if (this.headerHeight === totalHeaderHeight) {\n return;\n }\n this.headerHeight = totalHeaderHeight;\n // one extra pixel is needed here to account for the\n // height of the border\n var px = totalHeaderHeight + 1 + \"px\";\n this.comp.setHeightAndMinHeight(px);\n this.eventService.dispatchEvent({\n type: Events.EVENT_HEADER_HEIGHT_CHANGED\n });\n };\n GridHeaderCtrl.prototype.onPivotModeChanged = function () {\n var pivotMode = this.columnModel.isPivotMode();\n this.comp.addOrRemoveCssClass('ag-pivot-on', pivotMode);\n this.comp.addOrRemoveCssClass('ag-pivot-off', !pivotMode);\n };\n GridHeaderCtrl.prototype.onTabKeyDown = function (e) {\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n var direction = e.shiftKey !== isRtl\n ? HeaderNavigationDirection.LEFT\n : HeaderNavigationDirection.RIGHT;\n if (this.headerNavigationService.navigateHorizontally(direction, true, e) ||\n this.focusService.focusNextGridCoreContainer(e.shiftKey)) {\n e.preventDefault();\n }\n };\n GridHeaderCtrl.prototype.handleKeyDown = function (e) {\n var direction = null;\n switch (e.key) {\n case KeyCode.LEFT:\n direction = HeaderNavigationDirection.LEFT;\n case KeyCode.RIGHT:\n if (!exists(direction)) {\n direction = HeaderNavigationDirection.RIGHT;\n }\n this.headerNavigationService.navigateHorizontally(direction, false, e);\n break;\n case KeyCode.UP:\n direction = HeaderNavigationDirection.UP;\n case KeyCode.DOWN:\n if (!exists(direction)) {\n direction = HeaderNavigationDirection.DOWN;\n }\n if (this.headerNavigationService.navigateVertically(direction, null, e)) {\n e.preventDefault();\n }\n break;\n default:\n return;\n }\n };\n GridHeaderCtrl.prototype.onFocusOut = function (e) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var relatedTarget = e.relatedTarget;\n if (!relatedTarget && this.eGui.contains(eDocument.activeElement)) {\n return;\n }\n if (!this.eGui.contains(relatedTarget)) {\n this.focusService.clearFocusedHeader();\n }\n };\n __decorate$1d([\n Autowired('headerNavigationService')\n ], GridHeaderCtrl.prototype, \"headerNavigationService\", void 0);\n __decorate$1d([\n Autowired('focusService')\n ], GridHeaderCtrl.prototype, \"focusService\", void 0);\n __decorate$1d([\n Autowired('columnModel')\n ], GridHeaderCtrl.prototype, \"columnModel\", void 0);\n __decorate$1d([\n Autowired('ctrlsService')\n ], GridHeaderCtrl.prototype, \"ctrlsService\", void 0);\n return GridHeaderCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1j = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridHeaderComp = /** @class */ (function (_super) {\n __extends$1j(GridHeaderComp, _super);\n function GridHeaderComp() {\n return _super.call(this, GridHeaderComp.TEMPLATE) || this;\n }\n GridHeaderComp.prototype.postConstruct = function () {\n var _this = this;\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setHeightAndMinHeight: function (height) {\n _this.getGui().style.height = height;\n _this.getGui().style.minHeight = height;\n }\n };\n var ctrl = this.createManagedBean(new GridHeaderCtrl());\n ctrl.setComp(compProxy, this.getGui(), this.getFocusableElement());\n var addContainer = function (container) {\n _this.createManagedBean(container);\n _this.appendChild(container);\n };\n addContainer(new HeaderRowContainerComp(Constants.PINNED_LEFT));\n addContainer(new HeaderRowContainerComp(null));\n addContainer(new HeaderRowContainerComp(Constants.PINNED_RIGHT));\n };\n GridHeaderComp.TEMPLATE = \"
\";\n __decorate$1c([\n PostConstruct\n ], GridHeaderComp.prototype, \"postConstruct\", null);\n return GridHeaderComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1i = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HorizontalResizeService = /** @class */ (function (_super) {\n __extends$1i(HorizontalResizeService, _super);\n function HorizontalResizeService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HorizontalResizeService.prototype.addResizeBar = function (params) {\n var _this = this;\n var dragSource = {\n dragStartPixels: params.dragStartPixels || 0,\n eElement: params.eResizeBar,\n onDragStart: this.onDragStart.bind(this, params),\n onDragStop: this.onDragStop.bind(this, params),\n onDragging: this.onDragging.bind(this, params)\n };\n this.dragService.addDragSource(dragSource, true);\n // we pass remove func back to the caller, so call can tell us when they\n // are finished, and then we remove the listener from the drag source\n var finishedWithResizeFunc = function () { return _this.dragService.removeDragSource(dragSource); };\n return finishedWithResizeFunc;\n };\n HorizontalResizeService.prototype.onDragStart = function (params, mouseEvent) {\n this.dragStartX = mouseEvent.clientX;\n this.setResizeIcons();\n var shiftKey = mouseEvent instanceof MouseEvent && mouseEvent.shiftKey === true;\n params.onResizeStart(shiftKey);\n };\n HorizontalResizeService.prototype.setResizeIcons = function () {\n var ctrl = this.ctrlsService.getGridCtrl();\n // change the body cursor, so when drag moves out of the drag bar, the cursor is still 'resize' (or 'move'\n ctrl.setResizeCursor(true);\n // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)\n ctrl.disableUserSelect(true);\n };\n HorizontalResizeService.prototype.onDragStop = function (params, mouseEvent) {\n params.onResizeEnd(this.resizeAmount);\n this.resetIcons();\n };\n HorizontalResizeService.prototype.resetIcons = function () {\n var ctrl = this.ctrlsService.getGridCtrl();\n ctrl.setResizeCursor(false);\n ctrl.disableUserSelect(false);\n };\n HorizontalResizeService.prototype.onDragging = function (params, mouseEvent) {\n this.resizeAmount = mouseEvent.clientX - this.dragStartX;\n params.onResizing(this.resizeAmount);\n };\n __decorate$1b([\n Autowired('dragService')\n ], HorizontalResizeService.prototype, \"dragService\", void 0);\n __decorate$1b([\n Autowired('ctrlsService')\n ], HorizontalResizeService.prototype, \"ctrlsService\", void 0);\n HorizontalResizeService = __decorate$1b([\n Bean('horizontalResizeService')\n ], HorizontalResizeService);\n return HorizontalResizeService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1h = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StandardMenuFactory = /** @class */ (function (_super) {\n __extends$1h(StandardMenuFactory, _super);\n function StandardMenuFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StandardMenuFactory.prototype.hideActiveMenu = function () {\n if (this.hidePopup) {\n this.hidePopup();\n }\n };\n StandardMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupUnderMouseEvent({\n column: column,\n type: 'columnMenu',\n mouseEvent: mouseEvent,\n ePopup: eMenu\n });\n }, mouseEvent.target);\n };\n StandardMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource, containerType) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupUnderComponent({\n type: containerType,\n eventSource: eventSource,\n ePopup: eMenu,\n keepWithinBounds: true,\n column: column\n });\n }, eventSource);\n };\n StandardMenuFactory.prototype.showPopup = function (column, positionCallback, eventSource) {\n var _this = this;\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(column, 'COLUMN_MENU');\n if (!filterWrapper) {\n throw new Error('AG Grid - unable to show popup filter, filter instantiation failed');\n }\n var eMenu = document.createElement('div');\n setAriaRole(eMenu, 'presentation');\n eMenu.classList.add('ag-menu');\n this.tabListener = this.addManagedListener(eMenu, 'keydown', function (e) { return _this.trapFocusWithin(e, eMenu); });\n filterWrapper.guiPromise.then(function (gui) { return eMenu.appendChild(gui); });\n var hidePopup;\n var anchorToElement = eventSource || this.ctrlsService.getGridBodyCtrl().getGui();\n var closedCallback = function (e) {\n column.setMenuVisible(false, 'contextMenu');\n var isKeyboardEvent = e instanceof KeyboardEvent;\n if (_this.tabListener) {\n _this.tabListener = _this.tabListener();\n }\n if (isKeyboardEvent && eventSource && isVisible(eventSource)) {\n var focusableEl = _this.focusService.findTabbableParent(eventSource);\n if (focusableEl) {\n focusableEl.focus();\n }\n }\n };\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eMenu,\n closeOnEsc: true,\n closedCallback: closedCallback,\n positionCallback: function () { return positionCallback(eMenu); },\n anchorToElement: anchorToElement,\n ariaLabel: translate('ariaLabelColumnMenu', 'Column Menu')\n });\n if (addPopupRes) {\n this.hidePopup = hidePopup = addPopupRes.hideFunc;\n }\n filterWrapper.filterPromise.then(function (filter) {\n // need to make sure the filter is present before positioning, as only\n // after filter it is visible can we find out what the width of it is\n positionCallback(eMenu);\n if (filter.afterGuiAttached) {\n filter.afterGuiAttached({ container: 'columnMenu', hidePopup: hidePopup });\n }\n });\n column.setMenuVisible(true, 'contextMenu');\n };\n StandardMenuFactory.prototype.trapFocusWithin = function (e, menu) {\n if (e.key !== KeyCode.TAB ||\n e.defaultPrevented ||\n this.focusService.findNextFocusableElement(menu, false, e.shiftKey)) {\n return;\n }\n e.preventDefault();\n this.focusService.focusInto(menu, e.shiftKey);\n };\n StandardMenuFactory.prototype.isMenuEnabled = function (column) {\n // for standard, we show menu if filter is enabled, and the menu is not suppressed\n return column.isFilterAllowed();\n };\n __decorate$1a([\n Autowired('filterManager')\n ], StandardMenuFactory.prototype, \"filterManager\", void 0);\n __decorate$1a([\n Autowired('popupService')\n ], StandardMenuFactory.prototype, \"popupService\", void 0);\n __decorate$1a([\n Autowired('focusService')\n ], StandardMenuFactory.prototype, \"focusService\", void 0);\n __decorate$1a([\n Autowired('ctrlsService')\n ], StandardMenuFactory.prototype, \"ctrlsService\", void 0);\n StandardMenuFactory = __decorate$1a([\n Bean('menuFactory')\n ], StandardMenuFactory);\n return StandardMenuFactory;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1g = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$19 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TabbedLayout = /** @class */ (function (_super) {\n __extends$1g(TabbedLayout, _super);\n function TabbedLayout(params) {\n var _this = _super.call(this, TabbedLayout.getTemplate(params.cssClass)) || this;\n _this.items = [];\n _this.tabbedItemScrollMap = new Map();\n _this.params = params;\n if (params.items) {\n params.items.forEach(function (item) { return _this.addItem(item); });\n }\n return _this;\n }\n TabbedLayout.prototype.postConstruct = function () {\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n };\n TabbedLayout.getTemplate = function (cssClass) {\n return /* html */ \"
\\n
\\n
\\n
\";\n };\n TabbedLayout.prototype.handleKeyDown = function (e) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n switch (e.key) {\n case KeyCode.RIGHT:\n case KeyCode.LEFT:\n if (!this.eHeader.contains(eDocument.activeElement)) {\n return;\n }\n var isRightKey = e.key === KeyCode.RIGHT;\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n var currentPosition = this.items.indexOf(this.activeItem);\n var nextPosition = isRightKey !== isRtl ? Math.min(currentPosition + 1, this.items.length - 1) : Math.max(currentPosition - 1, 0);\n if (currentPosition === nextPosition) {\n return;\n }\n e.preventDefault();\n var nextItem = this.items[nextPosition];\n this.showItemWrapper(nextItem);\n nextItem.eHeaderButton.focus();\n break;\n case KeyCode.UP:\n case KeyCode.DOWN:\n e.stopPropagation();\n break;\n }\n };\n TabbedLayout.prototype.onTabKeyDown = function (e) {\n if (e.defaultPrevented) {\n return;\n }\n var _a = this, focusService = _a.focusService, eHeader = _a.eHeader, eBody = _a.eBody, activeItem = _a.activeItem;\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeElement = eDocument.activeElement;\n e.preventDefault();\n if (eHeader.contains(activeElement)) {\n // focus is in header, move into body of popup\n focusService.focusInto(eBody, e.shiftKey);\n }\n else {\n // focus is in body, establish if it should return to header\n if (focusService.isFocusUnderManagedComponent(eBody)) {\n // focus was in a managed focus component and has now left, so we can return to the header\n activeItem.eHeaderButton.focus();\n }\n else {\n var nextEl = focusService.findNextFocusableElement(eBody, false, e.shiftKey);\n if (nextEl) {\n // if another element exists in the body that can be focussed, go to that\n nextEl.focus();\n }\n else {\n // otherwise return to the header\n activeItem.eHeaderButton.focus();\n }\n }\n }\n };\n TabbedLayout.prototype.setAfterAttachedParams = function (params) {\n this.afterAttachedParams = params;\n };\n TabbedLayout.prototype.showFirstItem = function () {\n if (this.items.length > 0) {\n this.showItemWrapper(this.items[0]);\n }\n };\n TabbedLayout.prototype.addItem = function (item) {\n var eHeaderButton = document.createElement('span');\n setAriaRole(eHeaderButton, 'tab');\n eHeaderButton.setAttribute('tabIndex', '-1');\n eHeaderButton.appendChild(item.title);\n eHeaderButton.classList.add('ag-tab');\n this.eHeader.appendChild(eHeaderButton);\n setAriaLabel(eHeaderButton, item.titleLabel);\n var wrapper = {\n tabbedItem: item,\n eHeaderButton: eHeaderButton\n };\n this.items.push(wrapper);\n eHeaderButton.addEventListener('click', this.showItemWrapper.bind(this, wrapper));\n };\n TabbedLayout.prototype.showItem = function (tabbedItem) {\n var itemWrapper = this.items.find(function (wrapper) { return wrapper.tabbedItem === tabbedItem; });\n if (itemWrapper) {\n this.showItemWrapper(itemWrapper);\n }\n };\n TabbedLayout.prototype.showItemWrapper = function (wrapper) {\n var _this = this;\n var tabbedItem = wrapper.tabbedItem, eHeaderButton = wrapper.eHeaderButton;\n if (this.params.onItemClicked) {\n this.params.onItemClicked({ item: tabbedItem });\n }\n if (this.activeItem === wrapper) {\n callIfPresent(this.params.onActiveItemClicked);\n return;\n }\n if (this.lastScrollListener) {\n this.lastScrollListener = this.lastScrollListener();\n }\n clearElement(this.eBody);\n tabbedItem.bodyPromise.then(function (body) {\n _this.eBody.appendChild(body);\n var onlyUnmanaged = !_this.focusService.isKeyboardMode();\n _this.focusService.focusInto(_this.eBody, false, onlyUnmanaged);\n if (tabbedItem.afterAttachedCallback) {\n tabbedItem.afterAttachedCallback(_this.afterAttachedParams);\n }\n if (_this.params.keepScrollPosition) {\n var scrollableContainer_1 = (tabbedItem.getScrollableContainer && tabbedItem.getScrollableContainer()) || body;\n _this.lastScrollListener = _this.addManagedListener(scrollableContainer_1, 'scroll', function () {\n _this.tabbedItemScrollMap.set(tabbedItem.name, scrollableContainer_1.scrollTop);\n });\n var scrollPosition_1 = _this.tabbedItemScrollMap.get(tabbedItem.name);\n if (scrollPosition_1 !== undefined) {\n // Safari needs a small timeout or it will fire a scroll event to position 0\n setTimeout(function () {\n scrollableContainer_1.scrollTop = scrollPosition_1;\n }, 0);\n }\n }\n });\n if (this.activeItem) {\n this.activeItem.eHeaderButton.classList.remove('ag-tab-selected');\n }\n eHeaderButton.classList.add('ag-tab-selected');\n this.activeItem = wrapper;\n };\n __decorate$19([\n Autowired('focusService')\n ], TabbedLayout.prototype, \"focusService\", void 0);\n __decorate$19([\n RefSelector('eHeader')\n ], TabbedLayout.prototype, \"eHeader\", void 0);\n __decorate$19([\n RefSelector('eBody')\n ], TabbedLayout.prototype, \"eBody\", void 0);\n __decorate$19([\n PostConstruct\n ], TabbedLayout.prototype, \"postConstruct\", null);\n return TabbedLayout;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n/**\n * @deprecated\n */\nfunction simpleHttpRequest(params) {\n return new AgPromise(function (resolve) {\n var httpRequest = new XMLHttpRequest();\n httpRequest.open('GET', params.url);\n httpRequest.send();\n httpRequest.onreadystatechange = function () {\n if (httpRequest.readyState === 4 && httpRequest.status === 200) {\n resolve(JSON.parse(httpRequest.responseText));\n }\n };\n });\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1f = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$18 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DEBOUNCE_DELAY = 50;\nvar ResizeObserverService = /** @class */ (function (_super) {\n __extends$1f(ResizeObserverService, _super);\n function ResizeObserverService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.polyfillFunctions = [];\n return _this;\n }\n ResizeObserverService.prototype.observeResize = function (element, callback) {\n var _this = this;\n var eDocument = this.gridOptionsWrapper.getDocument();\n var win = (eDocument.defaultView || window);\n // this gets fired too often and might cause some relayout issues\n // so we add a debounce to the callback here to avoid the flashing effect.\n var debouncedCallback = debounce(callback, DEBOUNCE_DELAY);\n var useBrowserResizeObserver = function () {\n var resizeObserver = new win.ResizeObserver(debouncedCallback);\n resizeObserver.observe(element);\n return function () { return resizeObserver.disconnect(); };\n };\n var usePolyfill = function () {\n // initialise to the current width and height, so first call will have no changes\n var widthLastTime = offsetWidth(element);\n var heightLastTime = offsetHeight(element);\n // when finished, this gets turned to false.\n var running = true;\n var periodicallyCheckWidthAndHeight = function () {\n if (running) {\n var newWidth = offsetWidth(element);\n var newHeight = offsetHeight(element);\n var changed = newWidth !== widthLastTime || newHeight !== heightLastTime;\n if (changed) {\n widthLastTime = newWidth;\n heightLastTime = newHeight;\n callback();\n }\n _this.doNextPolyfillTurn(periodicallyCheckWidthAndHeight);\n }\n };\n periodicallyCheckWidthAndHeight();\n // the callback function we return sets running to false\n return function () { return running = false; };\n };\n var suppressResize = this.gridOptionsWrapper.isSuppressBrowserResizeObserver();\n var resizeObserverExists = !!win.ResizeObserver;\n if (resizeObserverExists && !suppressResize) {\n return useBrowserResizeObserver();\n }\n return usePolyfill();\n };\n ResizeObserverService.prototype.doNextPolyfillTurn = function (func) {\n this.polyfillFunctions.push(func);\n this.schedulePolyfill();\n };\n ResizeObserverService.prototype.schedulePolyfill = function () {\n var _this = this;\n if (this.polyfillScheduled) {\n return;\n }\n var executeAllFuncs = function () {\n var funcs = _this.polyfillFunctions;\n // make sure set scheduled to false and clear clear array\n // before executing the funcs, as the funcs could add more funcs\n _this.polyfillScheduled = false;\n _this.polyfillFunctions = [];\n funcs.forEach(function (f) { return f(); });\n };\n this.polyfillScheduled = true;\n this.getFrameworkOverrides().setTimeout(executeAllFuncs, DEBOUNCE_DELAY);\n };\n ResizeObserverService = __decorate$18([\n Bean('resizeObserverService')\n ], ResizeObserverService);\n return ResizeObserverService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$17 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AnimationFrameService = /** @class */ (function (_super) {\n __extends$1e(AnimationFrameService, _super);\n function AnimationFrameService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // p1 and p2 are create tasks are to do with row and cell creation.\n // for them we want to execute according to row order, so we use\n // TaskItem so we know what index the item is for.\n _this.createTasksP1 = { list: [], sorted: false }; // eg drawing back-ground of rows\n _this.createTasksP2 = { list: [], sorted: false }; // eg cell renderers, adding hover functionality\n // destroy tasks are to do with row removal. they are done after row creation as the user will need to see new\n // rows first (as blank is scrolled into view), when we remove the old rows (no longer in view) is not as\n // important.\n _this.destroyTasks = [];\n _this.ticking = false;\n // we need to know direction of scroll, to build up rows in the direction of\n // the scroll. eg if user scrolls down, we extend the rows by building down.\n _this.scrollGoingDown = true;\n _this.lastScrollTop = 0;\n _this.taskCount = 0;\n _this.cancelledTasks = new Set();\n return _this;\n }\n AnimationFrameService.prototype.setScrollTop = function (scrollTop) {\n this.scrollGoingDown = scrollTop > this.lastScrollTop;\n this.lastScrollTop = scrollTop;\n };\n AnimationFrameService.prototype.init = function () {\n this.useAnimationFrame = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n };\n AnimationFrameService.prototype.isOn = function () {\n return this.useAnimationFrame;\n };\n // this method is for our AG Grid sanity only - if animation frames are turned off,\n // then no place in the code should be looking to add any work to be done in animation\n // frames. this stops bugs - where some code is asking for a frame to be executed\n // when it should not.\n AnimationFrameService.prototype.verifyAnimationFrameOn = function (methodName) {\n if (this.useAnimationFrame === false) {\n console.warn(\"AG Grid: AnimationFrameService.\" + methodName + \" called but animation frames are off\");\n }\n };\n AnimationFrameService.prototype.createTask = function (task, index, list) {\n this.verifyAnimationFrameOn(list);\n var taskItem = { task: task, index: index, createOrder: ++this.taskCount };\n this.addTaskToList(this[list], taskItem);\n this.schedule();\n };\n AnimationFrameService.prototype.cancelTask = function (task) {\n this.cancelledTasks.add(task);\n };\n AnimationFrameService.prototype.addTaskToList = function (taskList, task) {\n taskList.list.push(task);\n taskList.sorted = false;\n };\n AnimationFrameService.prototype.sortTaskList = function (taskList) {\n if (taskList.sorted) {\n return;\n }\n var sortDirection = this.scrollGoingDown ? 1 : -1;\n // sort first by row index (taking into account scroll direction), then by\n // order of task creation (always ascending, so cells will render left-to-right)\n taskList.list.sort(function (a, b) { return a.index !== b.index ? sortDirection * (b.index - a.index) : b.createOrder - a.createOrder; });\n taskList.sorted = true;\n };\n AnimationFrameService.prototype.addDestroyTask = function (task) {\n this.verifyAnimationFrameOn('createTasksP3');\n this.destroyTasks.push(task);\n this.schedule();\n };\n AnimationFrameService.prototype.executeFrame = function (millis) {\n this.verifyAnimationFrameOn('executeFrame');\n var p1TaskList = this.createTasksP1;\n var p1Tasks = p1TaskList.list;\n var p2TaskList = this.createTasksP2;\n var p2Tasks = p2TaskList.list;\n var destroyTasks = this.destroyTasks;\n var frameStart = new Date().getTime();\n var duration = (new Date().getTime()) - frameStart;\n // 16ms is 60 fps\n var noMaxMillis = millis <= 0;\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n while (noMaxMillis || duration < millis) {\n var gridBodyDidSomething = gridBodyCon.getScrollFeature().executeAnimationFrameScroll();\n if (!gridBodyDidSomething) {\n var task = void 0;\n if (p1Tasks.length) {\n this.sortTaskList(p1TaskList);\n task = p1Tasks.pop().task;\n }\n else if (p2Tasks.length) {\n this.sortTaskList(p2TaskList);\n task = p2Tasks.pop().task;\n }\n else if (destroyTasks.length) {\n task = destroyTasks.pop();\n }\n else {\n this.cancelledTasks.clear();\n break;\n }\n if (!this.cancelledTasks.has(task)) {\n task();\n }\n }\n duration = (new Date().getTime()) - frameStart;\n }\n if (p1Tasks.length || p2Tasks.length || destroyTasks.length) {\n this.requestFrame();\n }\n else {\n this.stopTicking();\n }\n };\n AnimationFrameService.prototype.stopTicking = function () {\n this.ticking = false;\n };\n AnimationFrameService.prototype.flushAllFrames = function () {\n if (!this.useAnimationFrame) {\n return;\n }\n this.executeFrame(-1);\n };\n AnimationFrameService.prototype.schedule = function () {\n if (!this.useAnimationFrame) {\n return;\n }\n if (!this.ticking) {\n this.ticking = true;\n this.requestFrame();\n }\n };\n AnimationFrameService.prototype.requestFrame = function () {\n // check for the existence of requestAnimationFrame, and if\n // it's missing, then we polyfill it with setTimeout()\n var callback = this.executeFrame.bind(this, 60);\n var eDocument = this.gridOptionsWrapper.getDocument();\n var win = (eDocument.defaultView || window);\n if (win.requestAnimationFrame) {\n win.requestAnimationFrame(callback);\n }\n else if (win.webkitRequestAnimationFrame) {\n win.webkitRequestAnimationFrame(callback);\n }\n else {\n win.setTimeout(callback, 0);\n }\n };\n AnimationFrameService.prototype.isQueueEmpty = function () {\n return !this.ticking;\n };\n // a debounce utility used for parts of the app involved with rendering.\n // the advantage over normal debounce is the client can call flushAllFrames()\n // to make sure all rendering is complete. we don't wait any milliseconds,\n // as this is intended to batch calls in one VM turn.\n AnimationFrameService.prototype.debounce = function (func) {\n var _this = this;\n var pending = false;\n return function () {\n if (!_this.isOn()) {\n _this.getFrameworkOverrides().setTimeout(func, 0);\n return;\n }\n if (pending) {\n return;\n }\n pending = true;\n _this.addDestroyTask(function () {\n pending = false;\n func();\n });\n };\n };\n __decorate$17([\n Autowired('ctrlsService')\n ], AnimationFrameService.prototype, \"ctrlsService\", void 0);\n __decorate$17([\n PostConstruct\n ], AnimationFrameService.prototype, \"init\", null);\n AnimationFrameService = __decorate$17([\n Bean('animationFrameService')\n ], AnimationFrameService);\n return AnimationFrameService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$16 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RESIZE_CONTAINER_STYLE = 'ag-resizer-wrapper';\nvar RESIZE_TEMPLATE = /* html */ \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\";\nvar PositionableFeature = /** @class */ (function (_super) {\n __extends$1d(PositionableFeature, _super);\n function PositionableFeature(element, config) {\n var _this = _super.call(this) || this;\n _this.element = element;\n _this.dragStartPosition = {\n x: 0,\n y: 0\n };\n _this.position = {\n x: 0,\n y: 0\n };\n _this.lastSize = {\n width: -1,\n height: -1\n };\n _this.positioned = false;\n _this.resizersAdded = false;\n _this.resizeListeners = [];\n _this.boundaryEl = null;\n _this.isResizing = false;\n _this.isMoving = false;\n _this.resizable = {};\n _this.movable = false;\n _this.currentResizer = null;\n _this.config = Object.assign({}, { popup: false }, config);\n return _this;\n }\n PositionableFeature.prototype.center = function () {\n var _a = this.offsetParent, clientHeight = _a.clientHeight, clientWidth = _a.clientWidth;\n var x = (clientWidth / 2) - (this.getWidth() / 2);\n var y = (clientHeight / 2) - (this.getHeight() / 2);\n this.offsetElement(x, y);\n };\n PositionableFeature.prototype.initialisePosition = function () {\n var _a = this.config, centered = _a.centered, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent, minWidth = _a.minWidth, width = _a.width, minHeight = _a.minHeight, height = _a.height, x = _a.x, y = _a.y;\n if (!this.offsetParent) {\n this.setOffsetParent();\n }\n var computedMinHeight = 0;\n var computedMinWidth = 0;\n // here we don't use the main offset parent but the element's offsetParent\n // in order to calculated the minWidth and minHeight correctly\n var isVisible = !!this.element.offsetParent;\n if (isVisible) {\n var boundaryEl = this.findBoundaryElement();\n var offsetParentComputedStyles = window.getComputedStyle(boundaryEl);\n if (offsetParentComputedStyles.minWidth != null) {\n var paddingWidth = boundaryEl.offsetWidth - this.element.offsetWidth;\n computedMinWidth = parseInt(offsetParentComputedStyles.minWidth, 10) - paddingWidth;\n }\n if (offsetParentComputedStyles.minHeight != null) {\n var paddingHeight = boundaryEl.offsetHeight - this.element.offsetHeight;\n computedMinHeight = parseInt(offsetParentComputedStyles.minHeight, 10) - paddingHeight;\n }\n }\n this.minHeight = minHeight || computedMinHeight;\n this.minWidth = minWidth || computedMinWidth;\n if (width) {\n this.setWidth(width);\n }\n if (height) {\n this.setHeight(height);\n }\n if (!width || !height) {\n this.refreshSize();\n }\n if (centered) {\n this.center();\n }\n else if (x || y) {\n this.offsetElement(x, y);\n }\n else if (isVisible && forcePopupParentAsOffsetParent && this.boundaryEl) {\n var top_1 = parseFloat(this.boundaryEl.style.top);\n var left = parseFloat(this.boundaryEl.style.left);\n this.offsetElement(isNaN(left) ? 0 : left, isNaN(top_1) ? 0 : top_1);\n }\n this.positioned = !!this.offsetParent;\n };\n PositionableFeature.prototype.isPositioned = function () {\n return this.positioned;\n };\n PositionableFeature.prototype.getPosition = function () {\n return this.position;\n };\n PositionableFeature.prototype.setMovable = function (movable, moveElement) {\n if (!this.config.popup || movable === this.movable) {\n return;\n }\n this.movable = movable;\n var params = this.moveElementDragListener || {\n eElement: moveElement,\n onDragStart: this.onMoveStart.bind(this),\n onDragging: this.onMove.bind(this),\n onDragStop: this.onMoveEnd.bind(this)\n };\n if (movable) {\n this.dragService.addDragSource(params);\n this.moveElementDragListener = params;\n }\n else {\n this.dragService.removeDragSource(params);\n this.moveElementDragListener = undefined;\n }\n };\n PositionableFeature.prototype.setResizable = function (resizable) {\n var _this = this;\n this.clearResizeListeners();\n if (resizable) {\n this.addResizers();\n }\n else {\n this.removeResizers();\n }\n if (typeof resizable === 'boolean') {\n if (resizable === false) {\n return;\n }\n resizable = {\n topLeft: resizable,\n top: resizable,\n topRight: resizable,\n right: resizable,\n bottomRight: resizable,\n bottom: resizable,\n bottomLeft: resizable,\n left: resizable\n };\n }\n Object.keys(resizable).forEach(function (side) {\n var resizableStructure = resizable;\n var val = !!resizableStructure[side];\n var resizerEl = _this.getResizerElement(side);\n var params = {\n dragStartPixels: 0,\n eElement: resizerEl,\n onDragStart: function (e) { return _this.onResizeStart(e, side); },\n onDragging: _this.onResize.bind(_this),\n onDragStop: function (e) { return _this.onResizeEnd(e, side); },\n };\n if (!!_this.resizable[side] !== val || (!_this.isAlive() && !val)) {\n if (val) {\n _this.dragService.addDragSource(params);\n _this.resizeListeners.push(params);\n resizerEl.style.pointerEvents = 'all';\n }\n else {\n resizerEl.style.pointerEvents = 'none';\n }\n _this.resizable[side] = val;\n }\n });\n };\n PositionableFeature.prototype.removeSizeFromEl = function () {\n this.element.style.removeProperty('height');\n this.element.style.removeProperty('width');\n this.element.style.removeProperty('flex');\n };\n PositionableFeature.prototype.restoreLastSize = function () {\n this.element.style.flex = '0 0 auto';\n var _a = this.lastSize, height = _a.height, width = _a.width;\n if (width !== -1) {\n this.element.style.width = width + \"px\";\n }\n if (height !== -1) {\n this.element.style.height = height + \"px\";\n }\n };\n PositionableFeature.prototype.getHeight = function () {\n return this.element.offsetHeight;\n };\n PositionableFeature.prototype.setHeight = function (height) {\n var popup = this.config.popup;\n var eGui = this.element;\n var isPercent = false;\n if (typeof height === 'string' && height.indexOf('%') !== -1) {\n setFixedHeight(eGui, height);\n height = getAbsoluteHeight(eGui);\n isPercent = true;\n }\n else if (this.positioned) {\n var elRect = this.element.getBoundingClientRect();\n var parentRect = this.offsetParent.getBoundingClientRect();\n height = Math.max(this.minHeight, height);\n var clientHeight = this.offsetParent.clientHeight;\n var yPosition = popup ? this.position.y : elRect.top;\n var parentTop = popup ? 0 : parentRect.top;\n if (clientHeight && (height + yPosition > clientHeight + parentTop)) {\n height = clientHeight - yPosition;\n }\n }\n if (this.getHeight() === height) {\n return;\n }\n if (!isPercent) {\n if (popup) {\n setFixedHeight(eGui, height);\n }\n else {\n eGui.style.height = height + \"px\";\n eGui.style.flex = '0 0 auto';\n this.lastSize.height = typeof height === 'number' ? height : parseFloat(height);\n }\n }\n else {\n eGui.style.maxHeight = 'unset';\n eGui.style.minHeight = 'unset';\n }\n };\n PositionableFeature.prototype.getWidth = function () {\n return this.element.offsetWidth;\n };\n PositionableFeature.prototype.setWidth = function (width) {\n var eGui = this.element;\n var popup = this.config.popup;\n var isPercent = false;\n if (typeof width === 'string' && width.indexOf('%') !== -1) {\n setFixedWidth(eGui, width);\n width = getAbsoluteWidth(eGui);\n isPercent = true;\n }\n else if (this.positioned) {\n width = Math.max(this.minWidth, width);\n var clientWidth = this.offsetParent.clientWidth;\n var xPosition = popup ? this.position.x : this.element.getBoundingClientRect().left;\n if (clientWidth && (width + xPosition > clientWidth)) {\n width = clientWidth - xPosition;\n }\n }\n if (this.getWidth() === width) {\n return;\n }\n if (!isPercent) {\n if (this.config.popup) {\n setFixedWidth(eGui, width);\n }\n else {\n eGui.style.width = width + \"px\";\n eGui.style.flex = ' unset';\n this.lastSize.width = typeof width === 'number' ? width : parseFloat(width);\n }\n }\n else {\n eGui.style.maxWidth = 'unset';\n eGui.style.minWidth = 'unset';\n }\n };\n PositionableFeature.prototype.offsetElement = function (x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n var ePopup = this.config.forcePopupParentAsOffsetParent ? this.boundaryEl : this.element;\n this.popupService.positionPopup({\n ePopup: ePopup,\n x: x,\n y: y,\n keepWithinBounds: true,\n skipObserver: this.movable || this.isResizable()\n });\n this.setPosition(parseFloat(ePopup.style.left), parseFloat(ePopup.style.top));\n };\n PositionableFeature.prototype.setPosition = function (x, y) {\n this.position.x = x;\n this.position.y = y;\n };\n PositionableFeature.prototype.updateDragStartPosition = function (x, y) {\n this.dragStartPosition = { x: x, y: y };\n };\n PositionableFeature.prototype.calculateMouseMovement = function (params) {\n var e = params.e, isLeft = params.isLeft, isTop = params.isTop, anywhereWithin = params.anywhereWithin, topBuffer = params.topBuffer;\n var xDiff = e.clientX - this.dragStartPosition.x;\n var yDiff = e.clientY - this.dragStartPosition.y;\n var movementX = this.shouldSkipX(e, !!isLeft, !!anywhereWithin, xDiff) ? 0 : xDiff;\n var movementY = this.shouldSkipY(e, !!isTop, topBuffer, yDiff) ? 0 : yDiff;\n return { movementX: movementX, movementY: movementY };\n };\n PositionableFeature.prototype.shouldSkipX = function (e, isLeft, anywhereWithin, diff) {\n var elRect = this.element.getBoundingClientRect();\n var parentRect = this.offsetParent.getBoundingClientRect();\n var boundaryElRect = this.boundaryEl.getBoundingClientRect();\n var xPosition = this.config.popup ? this.position.x : elRect.left;\n // skip if cursor is outside of popupParent horizontally\n var skipX = ((xPosition <= 0 && parentRect.left >= e.clientX) ||\n (parentRect.right <= e.clientX && parentRect.right <= boundaryElRect.right));\n if (skipX) {\n return true;\n }\n if (isLeft) {\n skipX = (\n // skip if we are moving to the left and the cursor\n // is positioned to the right of the left side anchor\n (diff < 0 && e.clientX > xPosition + parentRect.left) ||\n // skip if we are moving to the right and the cursor\n // is positioned to the left of the dialog\n (diff > 0 && e.clientX < xPosition + parentRect.left));\n }\n else {\n if (anywhereWithin) {\n // if anywhereWithin is true, we allow to move\n // as long as the cursor is within the dialog\n skipX = ((diff < 0 && e.clientX > boundaryElRect.right) ||\n (diff > 0 && e.clientX < xPosition + parentRect.left));\n }\n else {\n skipX = (\n // if the movement is bound to the right side of the dialog\n // we skip if we are moving to the left and the cursor\n // is to the right of the dialog\n (diff < 0 && e.clientX > boundaryElRect.right) ||\n // or skip if we are moving to the right and the cursor\n // is to the left of the right side anchor\n (diff > 0 && e.clientX < boundaryElRect.right));\n }\n }\n return skipX;\n };\n PositionableFeature.prototype.shouldSkipY = function (e, isTop, topBuffer, diff) {\n if (topBuffer === void 0) { topBuffer = 0; }\n var elRect = this.element.getBoundingClientRect();\n var parentRect = this.offsetParent.getBoundingClientRect();\n var boundaryElRect = this.boundaryEl.getBoundingClientRect();\n var yPosition = this.config.popup ? this.position.y : elRect.top;\n // skip if cursor is outside of popupParent vertically\n var skipY = ((yPosition <= 0 && parentRect.top >= e.clientY) ||\n (parentRect.bottom <= e.clientY && parentRect.bottom <= boundaryElRect.bottom));\n if (skipY) {\n return true;\n }\n if (isTop) {\n skipY = (\n // skip if we are moving to towards top and the cursor is\n // below the top anchor + topBuffer\n // note: topBuffer is used when moving the dialog using the title bar\n (diff < 0 && e.clientY > yPosition + parentRect.top + topBuffer) ||\n // skip if we are moving to the bottom and the cursor is\n // above the top anchor\n (diff > 0 && e.clientY < yPosition + parentRect.top));\n }\n else {\n skipY = (\n // skip if we are moving towards the top and the cursor\n // is below the bottom anchor\n (diff < 0 && e.clientY > boundaryElRect.bottom) ||\n // skip if we are moving towards the bottom and the cursor\n // is above the bottom anchor\n (diff > 0 && e.clientY < boundaryElRect.bottom));\n }\n return skipY;\n };\n PositionableFeature.prototype.createResizeMap = function () {\n var eGui = this.element;\n this.resizerMap = {\n topLeft: { element: eGui.querySelector('[ref=eTopLeftResizer]') },\n top: { element: eGui.querySelector('[ref=eTopResizer]') },\n topRight: { element: eGui.querySelector('[ref=eTopRightResizer]') },\n right: { element: eGui.querySelector('[ref=eRightResizer]') },\n bottomRight: { element: eGui.querySelector('[ref=eBottomRightResizer]') },\n bottom: { element: eGui.querySelector('[ref=eBottomResizer]') },\n bottomLeft: { element: eGui.querySelector('[ref=eBottomLeftResizer]') },\n left: { element: eGui.querySelector('[ref=eLeftResizer]') }\n };\n };\n PositionableFeature.prototype.addResizers = function () {\n if (this.resizersAdded) {\n return;\n }\n var eGui = this.element;\n if (!eGui) {\n return;\n }\n var parser = new DOMParser();\n var resizers = parser.parseFromString(RESIZE_TEMPLATE, 'text/html').body;\n eGui.appendChild(resizers.firstChild);\n this.createResizeMap();\n this.resizersAdded = true;\n };\n PositionableFeature.prototype.removeResizers = function () {\n this.resizerMap = undefined;\n var resizerEl = this.element.querySelector(\".\" + RESIZE_CONTAINER_STYLE);\n if (resizerEl) {\n this.element.removeChild(resizerEl);\n }\n this.resizersAdded = false;\n };\n PositionableFeature.prototype.getResizerElement = function (side) {\n return this.resizerMap[side].element;\n };\n PositionableFeature.prototype.onResizeStart = function (e, side) {\n this.boundaryEl = this.findBoundaryElement();\n if (!this.positioned) {\n this.initialisePosition();\n }\n this.currentResizer = {\n isTop: !!side.match(/top/i),\n isRight: !!side.match(/right/i),\n isBottom: !!side.match(/bottom/i),\n isLeft: !!side.match(/left/i),\n };\n this.element.classList.add('ag-resizing');\n this.resizerMap[side].element.classList.add('ag-active');\n var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;\n if (!popup && !forcePopupParentAsOffsetParent) {\n this.applySizeToSiblings(this.currentResizer.isBottom || this.currentResizer.isTop);\n }\n this.isResizing = true;\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n PositionableFeature.prototype.getSiblings = function () {\n var element = this.element;\n var parent = element.parentElement;\n if (!parent) {\n return null;\n }\n return Array.prototype.slice.call(parent.children).filter(function (el) { return !el.classList.contains('ag-hidden'); });\n };\n PositionableFeature.prototype.getMinSizeOfSiblings = function () {\n var siblings = this.getSiblings() || [];\n var height = 0;\n var width = 0;\n for (var i = 0; i < siblings.length; i++) {\n var currentEl = siblings[i];\n var isFlex = !!currentEl.style.flex && currentEl.style.flex !== '0 0 auto';\n if (currentEl === this.element) {\n continue;\n }\n var nextHeight = this.minHeight || 0;\n var nextWidth = this.minWidth || 0;\n if (isFlex) {\n var computedStyle = window.getComputedStyle(currentEl);\n if (computedStyle.minHeight) {\n nextHeight = parseInt(computedStyle.minHeight, 10);\n }\n if (computedStyle.minWidth) {\n nextWidth = parseInt(computedStyle.minWidth, 10);\n }\n }\n else {\n nextHeight = currentEl.offsetHeight;\n nextWidth = currentEl.offsetWidth;\n }\n height += nextHeight;\n width += nextWidth;\n }\n return { height: height, width: width };\n };\n PositionableFeature.prototype.applySizeToSiblings = function (vertical) {\n var containerToFlex = null;\n var siblings = this.getSiblings();\n if (!siblings) {\n return;\n }\n for (var i = 0; i < siblings.length; i++) {\n var el = siblings[i];\n if (el === containerToFlex) {\n continue;\n }\n if (vertical) {\n el.style.height = el.offsetHeight + \"px\";\n }\n else {\n el.style.width = el.offsetWidth + \"px\";\n }\n el.style.flex = '0 0 auto';\n if (el === this.element) {\n containerToFlex = siblings[i + 1];\n }\n }\n if (containerToFlex) {\n containerToFlex.style.removeProperty('height');\n containerToFlex.style.removeProperty('min-height');\n containerToFlex.style.removeProperty('max-height');\n containerToFlex.style.flex = '1 1 auto';\n }\n };\n PositionableFeature.prototype.isResizable = function () {\n return Object.values(this.resizable).some(function (value) { return value; });\n };\n PositionableFeature.prototype.onResize = function (e) {\n if (!this.isResizing || !this.currentResizer) {\n return;\n }\n var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;\n var _b = this.currentResizer, isTop = _b.isTop, isRight = _b.isRight, isBottom = _b.isBottom, isLeft = _b.isLeft;\n var isHorizontal = isRight || isLeft;\n var isVertical = isBottom || isTop;\n var _c = this.calculateMouseMovement({ e: e, isLeft: isLeft, isTop: isTop }), movementX = _c.movementX, movementY = _c.movementY;\n var xPosition = this.position.x;\n var yPosition = this.position.y;\n var offsetLeft = 0;\n var offsetTop = 0;\n if (isHorizontal && movementX) {\n var direction = isLeft ? -1 : 1;\n var oldWidth = this.getWidth();\n var newWidth = oldWidth + (movementX * direction);\n var skipWidth = false;\n if (isLeft) {\n offsetLeft = oldWidth - newWidth;\n if (xPosition + offsetLeft <= 0 || newWidth <= this.minWidth) {\n skipWidth = true;\n offsetLeft = 0;\n }\n }\n if (!skipWidth) {\n this.setWidth(newWidth);\n }\n }\n if (isVertical && movementY) {\n var direction = isTop ? -1 : 1;\n var oldHeight = this.getHeight();\n var newHeight = oldHeight + (movementY * direction);\n var skipHeight = false;\n if (isTop) {\n offsetTop = oldHeight - newHeight;\n if (yPosition + offsetTop <= 0 || newHeight <= this.minHeight) {\n skipHeight = true;\n offsetTop = 0;\n }\n }\n else {\n // do not let the size of all siblings be higher than the parent container\n if (!this.config.popup &&\n !this.config.forcePopupParentAsOffsetParent &&\n oldHeight < newHeight &&\n (this.getMinSizeOfSiblings().height + newHeight) > this.element.parentElement.offsetHeight) {\n skipHeight = true;\n }\n }\n if (!skipHeight) {\n this.setHeight(newHeight);\n }\n }\n this.updateDragStartPosition(e.clientX, e.clientY);\n if ((popup || forcePopupParentAsOffsetParent) && offsetLeft || offsetTop) {\n this.offsetElement(xPosition + offsetLeft, yPosition + offsetTop);\n }\n };\n PositionableFeature.prototype.onResizeEnd = function (e, side) {\n this.isResizing = false;\n this.currentResizer = null;\n this.boundaryEl = null;\n var params = {\n type: 'resize',\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n this.element.classList.remove('ag-resizing');\n this.resizerMap[side].element.classList.remove('ag-active');\n this.dispatchEvent(params);\n };\n PositionableFeature.prototype.refreshSize = function () {\n var eGui = this.element;\n if (this.config.popup) {\n if (!this.config.width) {\n this.setWidth(eGui.offsetWidth);\n }\n if (!this.config.height) {\n this.setHeight(eGui.offsetHeight);\n }\n }\n };\n PositionableFeature.prototype.onMoveStart = function (e) {\n this.boundaryEl = this.findBoundaryElement();\n if (!this.positioned) {\n this.initialisePosition();\n }\n this.isMoving = true;\n this.element.classList.add('ag-moving');\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n PositionableFeature.prototype.onMove = function (e) {\n if (!this.isMoving) {\n return;\n }\n var _a = this.position, x = _a.x, y = _a.y;\n var topBuffer;\n if (this.config.calculateTopBuffer) {\n topBuffer = this.config.calculateTopBuffer();\n }\n var _b = this.calculateMouseMovement({\n e: e,\n isTop: true,\n anywhereWithin: true,\n topBuffer: topBuffer\n }), movementX = _b.movementX, movementY = _b.movementY;\n this.offsetElement(x + movementX, y + movementY);\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n PositionableFeature.prototype.onMoveEnd = function () {\n this.isMoving = false;\n this.boundaryEl = null;\n this.element.classList.remove('ag-moving');\n };\n PositionableFeature.prototype.setOffsetParent = function () {\n if (this.config.forcePopupParentAsOffsetParent) {\n this.offsetParent = this.popupService.getPopupParent();\n }\n else {\n this.offsetParent = this.element.offsetParent;\n }\n };\n PositionableFeature.prototype.findBoundaryElement = function () {\n var el = this.element;\n while (el) {\n if (window.getComputedStyle(el).position !== 'static') {\n return el;\n }\n el = el.parentElement;\n }\n return this.element;\n };\n PositionableFeature.prototype.clearResizeListeners = function () {\n while (this.resizeListeners.length) {\n var params = this.resizeListeners.pop();\n this.dragService.removeDragSource(params);\n }\n };\n PositionableFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.moveElementDragListener) {\n this.dragService.removeDragSource(this.moveElementDragListener);\n }\n this.clearResizeListeners();\n this.removeResizers();\n };\n __decorate$16([\n Autowired('popupService')\n ], PositionableFeature.prototype, \"popupService\", void 0);\n __decorate$16([\n Autowired('dragService')\n ], PositionableFeature.prototype, \"dragService\", void 0);\n return PositionableFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$15 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AutoWidthCalculator = /** @class */ (function (_super) {\n __extends$1c(AutoWidthCalculator, _super);\n function AutoWidthCalculator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AutoWidthCalculator.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.centerRowContainerCtrl = p.centerRowContainerCtrl;\n });\n };\n // this is the trick: we create a dummy container and clone all the cells\n // into the dummy, then check the dummy's width. then destroy the dummy\n // as we don't need it any more.\n // drawback: only the cells visible on the screen are considered\n AutoWidthCalculator.prototype.getPreferredWidthForColumn = function (column, skipHeader) {\n var eHeaderCell = this.getHeaderCellForColumn(column);\n // cell isn't visible\n if (!eHeaderCell) {\n return -1;\n }\n var elements = this.rowRenderer.getAllCellsForColumn(column);\n if (!skipHeader) {\n // we only consider the lowest level cell, not the group cell. in 99% of the time, this\n // will be enough. if we consider groups, then it gets too complicated for what it's worth,\n // as the groups can span columns and this class only considers one column at a time.\n elements.push(eHeaderCell);\n }\n return this.addElementsToContainerAndGetWidth(elements);\n };\n AutoWidthCalculator.prototype.getPreferredWidthForColumnGroup = function (columnGroup) {\n var eHeaderCell = this.getHeaderCellForColumn(columnGroup);\n if (!eHeaderCell) {\n return -1;\n }\n return this.addElementsToContainerAndGetWidth([eHeaderCell]);\n };\n AutoWidthCalculator.prototype.addElementsToContainerAndGetWidth = function (elements) {\n var _this = this;\n // this element has to be a form, otherwise form elements within a cell\n // will be validated while being cloned. This can cause issues such as \n // radio buttons being reset and losing their values.\n var eDummyContainer = document.createElement('form');\n // position fixed, so it isn't restricted to the boundaries of the parent\n eDummyContainer.style.position = 'fixed';\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n var eBodyContainer = this.centerRowContainerCtrl.getContainerElement();\n eBodyContainer.appendChild(eDummyContainer);\n elements.forEach(function (el) { return _this.cloneItemIntoDummy(el, eDummyContainer); });\n // at this point, all the clones are lined up vertically with natural widths. the dummy\n // container will have a width wide enough just to fit the largest.\n var dummyContainerWidth = eDummyContainer.offsetWidth;\n // we are finished with the dummy container, so get rid of it\n eBodyContainer.removeChild(eDummyContainer);\n // we add padding as I found sometimes the gui still put '...' after some of the texts. so the\n // user can configure the grid to add a few more pixels after the calculated width\n var autoSizePadding = this.gridOptionsWrapper.getAutoSizePadding();\n return dummyContainerWidth + autoSizePadding;\n };\n AutoWidthCalculator.prototype.getHeaderCellForColumn = function (column) {\n /* tslint:enable */\n var element = null;\n this.ctrlsService.getHeaderRowContainerCtrls().forEach(function (container) {\n var res = container.getHtmlElementForColumnHeader(column);\n if (res != null) {\n element = res;\n }\n });\n return element;\n };\n AutoWidthCalculator.prototype.cloneItemIntoDummy = function (eCell, eDummyContainer) {\n // make a deep clone of the cell\n var eCellClone = eCell.cloneNode(true);\n // the original has a fixed width, we remove this to allow the natural width based on content\n eCellClone.style.width = '';\n // the original has position = absolute, we need to remove this so it's positioned normally\n eCellClone.style.position = 'static';\n eCellClone.style.left = '';\n // we put the cell into a containing div, as otherwise the cells would just line up\n // on the same line, standard flow layout, by putting them into divs, they are laid\n // out one per line\n var eCloneParent = document.createElement('div');\n var eCloneParentClassList = eCloneParent.classList;\n var isHeader = ['ag-header-cell', 'ag-header-group-cell'].some(function (cls) { return eCellClone.classList.contains(cls); });\n if (isHeader) {\n eCloneParentClassList.add('ag-header', 'ag-header-row');\n eCloneParent.style.position = 'static';\n }\n else {\n eCloneParentClassList.add('ag-row');\n }\n // find parent using classes (headers have ag-header-cell, rows have ag-row), and copy classes from it.\n // if we didn't do this, things like ag-row-level-2 would be missing if present, which sets indents\n // onto group items.\n var pointer = eCell.parentElement;\n while (pointer) {\n var isRow = ['ag-header-row', 'ag-row'].some(function (cls) { return pointer.classList.contains(cls); });\n if (isRow) {\n for (var i = 0; i < pointer.classList.length; i++) {\n var item = pointer.classList[i];\n // we skip ag-row-position-absolute, as this has structural CSS applied that stops the\n // element from fitting into it's parent, and we need the element to stretch the parent\n // as we are measuring the parents width\n if (item != 'ag-row-position-absolute') {\n eCloneParentClassList.add(item);\n }\n }\n break;\n }\n pointer = pointer.parentElement;\n }\n // the twig on the branch, the branch on the tree, the tree in the hole,\n // the hole in the bog, the bog in the clone, the clone in the parent,\n // the parent in the dummy, and the dummy down in the vall-e-ooo, OOOOOOOOO! Oh row the rattling bog....\n eCloneParent.appendChild(eCellClone);\n eDummyContainer.appendChild(eCloneParent);\n };\n __decorate$15([\n Autowired('rowRenderer')\n ], AutoWidthCalculator.prototype, \"rowRenderer\", void 0);\n __decorate$15([\n Autowired('ctrlsService')\n ], AutoWidthCalculator.prototype, \"ctrlsService\", void 0);\n __decorate$15([\n Autowired('rowCssClassCalculator')\n ], AutoWidthCalculator.prototype, \"rowCssClassCalculator\", void 0);\n __decorate$15([\n PostConstruct\n ], AutoWidthCalculator.prototype, \"postConstruct\", null);\n AutoWidthCalculator = __decorate$15([\n Bean('autoWidthCalculator')\n ], AutoWidthCalculator);\n return AutoWidthCalculator;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$14 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values$1 = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read$b = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$9 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$b(arguments[i]));\n return ar;\n};\nvar StickyRowFeature = /** @class */ (function (_super) {\n __extends$1b(StickyRowFeature, _super);\n function StickyRowFeature(createRowCon, destroyRowCtrls) {\n var _this = _super.call(this) || this;\n _this.createRowCon = createRowCon;\n _this.destroyRowCtrls = destroyRowCtrls;\n _this.stickyRowCtrls = [];\n _this.containerHeight = 0;\n return _this;\n }\n StickyRowFeature.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (params) {\n _this.gridBodyCtrl = params.gridBodyCtrl;\n });\n };\n StickyRowFeature.prototype.getStickyRowCtrls = function () {\n return this.stickyRowCtrls;\n };\n StickyRowFeature.prototype.checkStickyRows = function () {\n var height = 0;\n if (!this.gridOptionsWrapper.isGroupRowsSticky()) {\n this.refreshNodesAndContainerHeight([], height);\n return;\n }\n var stickyRows = [];\n var firstPixel = this.rowRenderer.getFirstVisibleVerticalPixel();\n var addStickyRow = function (stickyRow) {\n stickyRows.push(stickyRow);\n var lastAncester = stickyRow;\n while (lastAncester.expanded) {\n lastAncester = last(lastAncester.childrenAfterSort);\n }\n var lastChildBottom = lastAncester.rowTop + lastAncester.rowHeight;\n var stickRowBottom = firstPixel + height + stickyRow.rowHeight;\n if (lastChildBottom < stickRowBottom) {\n stickyRow.stickyRowTop = height + (lastChildBottom - stickRowBottom);\n }\n else {\n stickyRow.stickyRowTop = height;\n }\n height = 0;\n stickyRows.forEach(function (rowNode) {\n var thisRowLastPx = rowNode.stickyRowTop + rowNode.rowHeight;\n if (height < thisRowLastPx) {\n height = thisRowLastPx;\n }\n });\n };\n while (true) {\n var firstPixelAfterStickyRows = firstPixel + height;\n var firstIndex = this.rowModel.getRowIndexAtPixel(firstPixelAfterStickyRows);\n var firstRow = this.rowModel.getRow(firstIndex);\n if (firstRow == null) {\n break;\n }\n // only happens when pivoting, and we are showing root node\n if (firstRow.level < 0) {\n break;\n }\n var parents = [];\n var p = firstRow.parent;\n while (p.level >= 0) {\n parents.push(p);\n p = p.parent;\n }\n var firstMissingParent = parents.reverse().find(function (parent) { return stickyRows.indexOf(parent) < 0 && parent.displayed; });\n if (firstMissingParent) {\n addStickyRow(firstMissingParent);\n continue;\n }\n // if first row is an open group, and practically shown, it needs\n // to be stuck\n if (firstRow.group && firstRow.expanded && !firstRow.footer && firstRow.rowTop < firstPixelAfterStickyRows) {\n addStickyRow(firstRow);\n continue;\n }\n break;\n }\n this.refreshNodesAndContainerHeight(stickyRows, height);\n };\n StickyRowFeature.prototype.refreshNodesAndContainerHeight = function (allStickyNodes, height) {\n var e_1, _a, _b;\n var _this = this;\n var removedCtrls = this.stickyRowCtrls.filter(function (ctrl) { return allStickyNodes.indexOf(ctrl.getRowNode()) === -1; });\n var addedNodes = allStickyNodes.filter(function (rowNode) { return _this.stickyRowCtrls.findIndex(function (ctrl) { return ctrl.getRowNode() === rowNode; }) === -1; });\n var ctrlsToDestroy = {};\n removedCtrls.forEach(function (removedCtrl) {\n ctrlsToDestroy[removedCtrl.getRowNode().id] = removedCtrl;\n _this.stickyRowCtrls = _this.stickyRowCtrls.filter(function (ctrl) { return ctrl !== removedCtrl; });\n });\n try {\n for (var _c = __values$1(Object.values(ctrlsToDestroy)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var ctrl = _d.value;\n ctrl.getRowNode().sticky = false;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.destroyRowCtrls(ctrlsToDestroy, false);\n var newCtrls = addedNodes.map(function (rowNode) {\n rowNode.sticky = true;\n return _this.createRowCon(rowNode, false, false);\n });\n (_b = this.stickyRowCtrls).push.apply(_b, __spread$9(newCtrls));\n this.stickyRowCtrls.forEach(function (ctrl) { return ctrl.setRowTop(ctrl.getRowNode().stickyRowTop); });\n this.stickyRowCtrls.sort(function (a, b) { return b.getRowNode().rowIndex - a.getRowNode().rowIndex; });\n if (this.containerHeight !== height) {\n this.containerHeight = height;\n this.gridBodyCtrl.setStickyTopHeight(height);\n }\n };\n __decorate$14([\n Autowired(\"rowModel\")\n ], StickyRowFeature.prototype, \"rowModel\", void 0);\n __decorate$14([\n Autowired(\"rowRenderer\")\n ], StickyRowFeature.prototype, \"rowRenderer\", void 0);\n __decorate$14([\n Autowired(\"ctrlsService\")\n ], StickyRowFeature.prototype, \"ctrlsService\", void 0);\n __decorate$14([\n PostConstruct\n ], StickyRowFeature.prototype, \"postConstruct\", null);\n return StickyRowFeature;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$1a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$13 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$a = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$8 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$a(arguments[i]));\n return ar;\n};\nvar RowRenderer = /** @class */ (function (_super) {\n __extends$1a(RowRenderer, _super);\n function RowRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.destroyFuncsForColumnListeners = [];\n // map of row ids to row objects. keeps track of which elements\n // are rendered for which rows in the dom.\n _this.rowCtrlsByRowIndex = {};\n _this.zombieRowCtrls = {};\n _this.allRowCtrls = [];\n _this.topRowCtrls = [];\n _this.bottomRowCtrls = [];\n // we only allow one refresh at a time, otherwise the internal memory structure here\n // will get messed up. this can happen if the user has a cellRenderer, and inside the\n // renderer they call an API method that results in another pass of the refresh,\n // then it will be trying to draw rows in the middle of a refresh.\n _this.refreshInProgress = false;\n _this.dataFirstRenderedFired = false;\n return _this;\n }\n RowRenderer.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n _this.initialise();\n });\n };\n RowRenderer.prototype.initialise = function () {\n this.addManagedListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPageLoaded.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, this.redrawAfterScroll.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.redrawAfterScroll.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_ROW_CLASS, this.redrawRows.bind(this));\n if (this.gridOptionsWrapper.isGroupRowsSticky()) {\n if (this.rowModel.getType() != Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n doOnce(function () { return console.warn('AG Grid: The feature Sticky Row Groups only works with the Client Side Row Model'); }, 'rowRenderer.stickyWorksWithCsrmOnly');\n }\n else if (this.gridOptionsWrapper.isTreeData()) {\n doOnce(function () { return console.warn('AG Grid: The feature Sticky Row Groups does not work with Tree Data.'); }, 'rowRenderer.stickyDoesNotWorkWithTreeData');\n }\n else {\n this.stickyRowFeature = this.createManagedBean(new StickyRowFeature(this.createRowCon.bind(this), this.destroyRowCtrls.bind(this)));\n }\n }\n this.registerCellEventListeners();\n this.initialiseCache();\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n this.embedFullWidthRows = this.printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();\n this.redrawAfterModelUpdate();\n };\n RowRenderer.prototype.initialiseCache = function () {\n if (this.gridOptionsWrapper.isKeepDetailRows()) {\n var countProp = this.gridOptionsWrapper.getKeepDetailRowsCount();\n var count = countProp != null ? countProp : 3;\n this.cachedRowCtrls = new RowCtrlCache(count);\n }\n };\n RowRenderer.prototype.getRowCtrls = function () {\n return this.allRowCtrls;\n };\n RowRenderer.prototype.getStickyTopRowCtrls = function () {\n if (!this.stickyRowFeature) {\n return [];\n }\n return this.stickyRowFeature.getStickyRowCtrls();\n };\n RowRenderer.prototype.updateAllRowCtrls = function () {\n var liveList = getAllValuesInObject(this.rowCtrlsByRowIndex);\n if (this.gridOptionsWrapper.isEnsureDomOrder()) {\n liveList.sort(function (a, b) { return a.getRowNode().rowIndex - b.getRowNode.rowIndex; });\n }\n var zombieList = getAllValuesInObject(this.zombieRowCtrls);\n var cachedList = this.cachedRowCtrls ? this.cachedRowCtrls.getEntries() : [];\n this.allRowCtrls = __spread$8(liveList, zombieList, cachedList);\n };\n // in a clean design, each cell would register for each of these events. however when scrolling, all the cells\n // registering and de-registering for events is a performance bottleneck. so we register here once and inform\n // all active cells.\n RowRenderer.prototype.registerCellEventListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_CELL_FOCUSED, function (event) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onCellFocused(event); });\n _this.getFullWidthRowCtrls().forEach(function (rowCtrl) {\n rowCtrl.onFullWidthRowFocused(event);\n });\n });\n this.addManagedListener(this.eventService, Events.EVENT_FLASH_CELLS, function (event) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onFlashCells(event); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onColumnHover(); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onDisplayedColumnsChanged(); });\n });\n // only for printLayout - because we are rendering all the cells in the same row, regardless of pinned state,\n // then changing the width of the containers will impact left position. eg the center cols all have their\n // left position adjusted by the width of the left pinned column, so if the pinned left column width changes,\n // all the center cols need to be shifted to accommodate this. when in normal layout, the pinned cols are\n // in different containers so doesn't impact.\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function () {\n if (_this.printLayout) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onLeftChanged(); });\n }\n });\n var rangeSelectionEnabled = this.gridOptionsWrapper.isEnableRangeSelection();\n if (rangeSelectionEnabled) {\n this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onRangeSelectionChanged(); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });\n });\n }\n // add listeners to the grid columns\n this.refreshListenersToColumnsForCellComps();\n // if the grid columns change, then refresh the listeners again\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.refreshListenersToColumnsForCellComps.bind(this));\n this.addDestroyFunc(this.removeGridColumnListeners.bind(this));\n };\n // executes all functions in destroyFuncsForColumnListeners and then clears the list\n RowRenderer.prototype.removeGridColumnListeners = function () {\n this.destroyFuncsForColumnListeners.forEach(function (func) { return func(); });\n this.destroyFuncsForColumnListeners.length = 0;\n };\n // this function adds listeners onto all the grid columns, which are the column that we could have cellComps for.\n // when the grid columns change, we add listeners again. in an ideal design, each CellComp would just register to\n // the column it belongs to on creation, however this was a bottleneck with the number of cells, so do it here\n // once instead.\n RowRenderer.prototype.refreshListenersToColumnsForCellComps = function () {\n var _this = this;\n this.removeGridColumnListeners();\n var cols = this.columnModel.getAllGridColumns();\n if (!cols) {\n return;\n }\n cols.forEach(function (col) {\n var forEachCellWithThisCol = function (callback) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) {\n if (cellCtrl.getColumn() === col) {\n callback(cellCtrl);\n }\n });\n };\n var leftChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onLeftChanged(); });\n };\n var widthChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onWidthChanged(); });\n };\n var firstRightPinnedChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onFirstRightPinnedChanged(); });\n };\n var lastLeftPinnedChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onLastLeftPinnedChanged(); });\n };\n var colDefChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onColDefChanged(); });\n };\n col.addEventListener(Column.EVENT_LEFT_CHANGED, leftChangedListener);\n col.addEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n col.addEventListener(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, firstRightPinnedChangedListener);\n col.addEventListener(Column.EVENT_LAST_LEFT_PINNED_CHANGED, lastLeftPinnedChangedListener);\n col.addEventListener(Column.EVENT_COL_DEF_CHANGED, colDefChangedListener);\n _this.destroyFuncsForColumnListeners.push(function () {\n col.removeEventListener(Column.EVENT_LEFT_CHANGED, leftChangedListener);\n col.removeEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n col.removeEventListener(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, firstRightPinnedChangedListener);\n col.removeEventListener(Column.EVENT_LAST_LEFT_PINNED_CHANGED, lastLeftPinnedChangedListener);\n col.removeEventListener(Column.EVENT_COL_DEF_CHANGED, colDefChangedListener);\n });\n });\n };\n RowRenderer.prototype.onDomLayoutChanged = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n var embedFullWidthRows = printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();\n // if moving towards or away from print layout, means we need to destroy all rows, as rows are not laid\n // out using absolute positioning when doing print layout\n var destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;\n this.printLayout = printLayout;\n this.embedFullWidthRows = embedFullWidthRows;\n if (destroyRows) {\n this.redrawAfterModelUpdate();\n }\n };\n // for row models that have datasources, when we update the datasource, we need to force the rowRenderer\n // to redraw all rows. otherwise the old rows from the old datasource will stay displayed.\n RowRenderer.prototype.datasourceChanged = function () {\n this.firstRenderedRow = 0;\n this.lastRenderedRow = -1;\n var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n this.removeRowCtrls(rowIndexesToRemove);\n };\n RowRenderer.prototype.onPageLoaded = function (event) {\n var params = {\n recycleRows: event.keepRenderedRows,\n animate: event.animate,\n newData: event.newData,\n newPage: event.newPage,\n // because this is a model updated event (not pinned rows), we\n // can skip updating the pinned rows. this is needed so that if user\n // is doing transaction updates, the pinned rows are not getting constantly\n // trashed - or editing cells in pinned rows are not refreshed and put into read mode\n onlyBody: true\n };\n this.redrawAfterModelUpdate(params);\n };\n RowRenderer.prototype.getAllCellsForColumn = function (column) {\n var res = [];\n this.getAllRowCtrls().forEach(function (rowCtrl) {\n var eCell = rowCtrl.getCellElement(column);\n if (eCell) {\n res.push(eCell);\n }\n });\n return res;\n };\n RowRenderer.prototype.refreshFloatingRowComps = function () {\n this.refreshFloatingRows(this.topRowCtrls, this.pinnedRowModel.getPinnedTopRowData());\n this.refreshFloatingRows(this.bottomRowCtrls, this.pinnedRowModel.getPinnedBottomRowData());\n };\n RowRenderer.prototype.getTopRowCtrls = function () {\n return this.topRowCtrls;\n };\n RowRenderer.prototype.getBottomRowCtrls = function () {\n return this.bottomRowCtrls;\n };\n RowRenderer.prototype.refreshFloatingRows = function (rowComps, rowNodes) {\n var _this = this;\n rowComps.forEach(function (row) {\n row.destroyFirstPass();\n row.destroySecondPass();\n });\n rowComps.length = 0;\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var rowCtrl = new RowCtrl(rowNode, _this.beans, false, false, _this.printLayout);\n rowComps.push(rowCtrl);\n });\n };\n RowRenderer.prototype.onPinnedRowDataChanged = function () {\n // recycling rows in order to ensure cell editing is not cancelled\n var params = {\n recycleRows: true\n };\n this.redrawAfterModelUpdate(params);\n };\n // if the row nodes are not rendered, no index is returned\n RowRenderer.prototype.getRenderedIndexesForRowNodes = function (rowNodes) {\n var result = [];\n if (missing(rowNodes)) {\n return result;\n }\n iterateObject(this.rowCtrlsByRowIndex, function (index, renderedRow) {\n var rowNode = renderedRow.getRowNode();\n if (rowNodes.indexOf(rowNode) >= 0) {\n result.push(index);\n }\n });\n return result;\n };\n RowRenderer.prototype.redrawRows = function (rowNodes) {\n // if no row nodes provided, then refresh everything\n var partialRefresh = rowNodes != null && rowNodes.length > 0;\n if (partialRefresh) {\n var indexesToRemove = this.getRenderedIndexesForRowNodes(rowNodes);\n // remove the rows\n this.removeRowCtrls(indexesToRemove);\n }\n // add draw them again\n this.redrawAfterModelUpdate({\n recycleRows: partialRefresh\n });\n };\n RowRenderer.prototype.getCellToRestoreFocusToAfterRefresh = function (params) {\n var _a;\n var focusedCell = ((_a = params) === null || _a === void 0 ? void 0 : _a.suppressKeepFocus) ? null : this.focusService.getFocusCellToUseAfterRefresh();\n if (focusedCell == null) {\n return null;\n }\n // if the dom is not actually focused on a cell, then we don't try to refocus. the problem this\n // solves is with editing - if the user is editing, eg focus is on a text field, and not on the\n // cell itself, then the cell can be registered as having focus, however it's the text field that\n // has the focus and not the cell div. therefore, when the refresh is finished, the grid will focus\n // the cell, and not the textfield. that means if the user is in a text field, and the grid refreshes,\n // the focus is lost from the text field. we do not want this.\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeElement = eDocument.activeElement;\n var cellDomData = this.gridOptionsWrapper.getDomData(activeElement, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n var rowDomData = this.gridOptionsWrapper.getDomData(activeElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL);\n var gridElementFocused = cellDomData || rowDomData;\n return gridElementFocused ? focusedCell : null;\n };\n // gets called from:\n // +) initialisation (in registerGridComp) params = null\n // +) onDomLayoutChanged, params = null\n // +) onPageLoaded, recycleRows, animate, newData, newPage from event, onlyBody=true\n // +) onPinnedRowDataChanged, recycleRows = true\n // +) redrawRows (from Grid API), recycleRows = true/false\n RowRenderer.prototype.redrawAfterModelUpdate = function (params) {\n if (params === void 0) { params = {}; }\n this.getLockOnRefresh();\n var focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);\n this.updateContainerHeights();\n this.scrollToTopIfNewData(params);\n // never recycle rows when print layout, we draw each row again from scratch. this is because print layout\n // uses normal dom layout to put cells into dom - it doesn't allow reordering rows.\n var recycleRows = !this.printLayout && !!params.recycleRows;\n var animate = params.animate && this.gridOptionsWrapper.isAnimateRows();\n // after modelUpdate, row indexes can change, so we clear out the rowsByIndex map,\n // however we can reuse the rows, so we keep them but index by rowNode.id\n var rowsToRecycle = recycleRows ? this.recycleRows() : null;\n if (!recycleRows) {\n this.removeAllRowComps();\n }\n var isFocusedCellGettingRecycled = function () {\n if (focusedCell == null || rowsToRecycle == null) {\n return false;\n }\n var res = false;\n iterateObject(rowsToRecycle, function (key, rowComp) {\n var rowNode = rowComp.getRowNode();\n var rowIndexEqual = rowNode.rowIndex == focusedCell.rowIndex;\n var pinnedEqual = rowNode.rowPinned == focusedCell.rowPinned;\n if (rowIndexEqual && pinnedEqual) {\n res = true;\n }\n });\n return res;\n };\n var focusedCellRecycled = isFocusedCellGettingRecycled();\n this.redraw(rowsToRecycle, animate);\n this.gridBodyCtrl.updateRowCount();\n if (!params.onlyBody) {\n this.refreshFloatingRowComps();\n }\n this.dispatchDisplayedRowsChanged();\n // if we focus a cell that's already focused, then we get an unnecessary 'cellFocused' event fired.\n // this was happening when user clicked 'expand' on a rowGroup, then cellFocused was getting fired twice.\n if (!focusedCellRecycled) {\n this.restoreFocusedCell(focusedCell);\n }\n this.releaseLockOnRefresh();\n };\n RowRenderer.prototype.scrollToTopIfNewData = function (params) {\n var scrollToTop = params.newData || params.newPage;\n var suppressScrollToTop = this.gridOptionsWrapper.isSuppressScrollOnNewData();\n if (scrollToTop && !suppressScrollToTop) {\n this.gridBodyCtrl.getScrollFeature().scrollToTop();\n }\n };\n RowRenderer.prototype.updateContainerHeights = function () {\n // when doing print layout, we don't explicitly set height on the containers\n if (this.printLayout) {\n this.rowContainerHeightService.setModelHeight(null);\n return;\n }\n var containerHeight = this.paginationProxy.getCurrentPageHeight();\n // we need at least 1 pixel for the horizontal scroll to work. so if there are now rows,\n // we still want the scroll to be present, otherwise there would be no way to scroll the header\n // which might be needed us user wants to access columns\n // on the RHS - and if that was where the filter was that cause no rows to be presented, there\n // is no way to remove the filter.\n if (containerHeight === 0) {\n containerHeight = 1;\n }\n this.rowContainerHeightService.setModelHeight(containerHeight);\n };\n RowRenderer.prototype.getLockOnRefresh = function () {\n if (this.refreshInProgress) {\n throw new Error(\"AG Grid: cannot get grid to draw rows when it is in the middle of drawing rows. \" +\n \"Your code probably called a grid API method while the grid was in the render stage. To overcome \" +\n \"this, put the API call into a timeout, e.g. instead of api.redrawRows(), \" +\n \"call setTimeout(function() { api.redrawRows(); }, 0). To see what part of your code \" +\n \"that caused the refresh check this stacktrace.\");\n }\n this.refreshInProgress = true;\n };\n RowRenderer.prototype.releaseLockOnRefresh = function () {\n this.refreshInProgress = false;\n };\n RowRenderer.prototype.isRefreshInProgress = function () {\n return this.refreshInProgress;\n };\n // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without\n // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits\n // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the\n // edited cell).\n RowRenderer.prototype.restoreFocusedCell = function (cellPosition) {\n if (cellPosition) {\n this.focusService.setFocusedCell({\n rowIndex: cellPosition.rowIndex,\n column: cellPosition.column,\n rowPinned: cellPosition.rowPinned,\n forceBrowserFocus: true,\n preventScrollOnBrowserFocus: true\n });\n }\n };\n RowRenderer.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.getAllRowCtrls().forEach(function (rowCtrl) {\n rowCtrl.stopEditing(cancel);\n });\n };\n RowRenderer.prototype.getAllCellCtrls = function () {\n var res = [];\n this.getAllRowCtrls().forEach(function (rowCtrl) { return res = res.concat(rowCtrl.getAllCellCtrls()); });\n return res;\n };\n RowRenderer.prototype.getAllRowCtrls = function () {\n var _this = this;\n var stickyRowCtrls = (this.stickyRowFeature && this.stickyRowFeature.getStickyRowCtrls()) || [];\n var res = __spread$8(this.topRowCtrls, this.bottomRowCtrls, stickyRowCtrls);\n Object.keys(this.rowCtrlsByRowIndex).forEach(function (key) { return res.push(_this.rowCtrlsByRowIndex[key]); });\n return res;\n };\n RowRenderer.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n var rowComp = this.rowCtrlsByRowIndex[rowIndex];\n if (rowComp) {\n rowComp.addEventListener(eventName, callback);\n }\n };\n RowRenderer.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n var flashDelay = params.flashDelay, fadeDelay = params.fadeDelay;\n this.getCellCtrls(params.rowNodes, params.columns)\n .forEach(function (cellCtrl) { return cellCtrl.flashCell({ flashDelay: flashDelay, fadeDelay: fadeDelay }); });\n };\n RowRenderer.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n var refreshCellParams = {\n forceRefresh: params.force,\n newData: false,\n suppressFlash: params.suppressFlash\n };\n this.getCellCtrls(params.rowNodes, params.columns)\n .forEach(function (cellCtrl) {\n if (cellCtrl.refreshShouldDestroy()) {\n var rowCtrl = cellCtrl.getRowCtrl();\n if (rowCtrl) {\n rowCtrl.refreshCell(cellCtrl);\n }\n }\n else {\n cellCtrl.refreshCell(refreshCellParams);\n }\n });\n this.getFullWidthRowCtrls(params.rowNodes).forEach(function (fullWidthRowCtrl) {\n fullWidthRowCtrl.refreshFullWidth();\n });\n };\n RowRenderer.prototype.getCellRendererInstances = function (params) {\n var res = this.getCellCtrls(params.rowNodes, params.columns)\n .map(function (cellCtrl) { return cellCtrl.getCellRenderer(); })\n .filter(function (renderer) { return renderer != null; });\n return res;\n };\n RowRenderer.prototype.getCellEditorInstances = function (params) {\n var res = [];\n this.getCellCtrls(params.rowNodes, params.columns).forEach(function (cellCtrl) {\n var cellEditor = cellCtrl.getCellEditor();\n if (cellEditor) {\n res.push(cellEditor);\n }\n });\n return res;\n };\n RowRenderer.prototype.getEditingCells = function () {\n var res = [];\n this.getAllCellCtrls().forEach(function (cellCtrl) {\n if (cellCtrl.isEditing()) {\n var cellPosition = cellCtrl.getCellPosition();\n res.push(cellPosition);\n }\n });\n return res;\n };\n RowRenderer.prototype.mapRowNodes = function (rowNodes) {\n if (!rowNodes) {\n return;\n }\n var res = {\n top: {},\n bottom: {},\n normal: {}\n };\n rowNodes.forEach(function (rowNode) {\n var id = rowNode.id;\n if (rowNode.rowPinned === Constants.PINNED_TOP) {\n res.top[id] = rowNode;\n }\n else if (rowNode.rowPinned === Constants.PINNED_BOTTOM) {\n res.bottom[id] = rowNode;\n }\n else {\n res.normal[id] = rowNode;\n }\n });\n return res;\n };\n RowRenderer.prototype.isRowInMap = function (rowNode, rowIdsMap) {\n // skip this row if it is missing from the provided list\n var id = rowNode.id;\n var floating = rowNode.rowPinned;\n if (floating === Constants.PINNED_BOTTOM) {\n return rowIdsMap.bottom[id] != null;\n }\n if (floating === Constants.PINNED_TOP) {\n return rowIdsMap.top[id] != null;\n }\n return rowIdsMap.normal[id] != null;\n };\n // returns CellCtrl's that match the provided rowNodes and columns. eg if one row node\n // and two columns provided, that identifies 4 cells, so 4 CellCtrl's returned.\n RowRenderer.prototype.getCellCtrls = function (rowNodes, columns) {\n var _this = this;\n var rowIdsMap = this.mapRowNodes(rowNodes);\n var res = [];\n var colIdsMap;\n if (exists(columns)) {\n colIdsMap = {};\n columns.forEach(function (colKey) {\n var column = _this.columnModel.getGridColumn(colKey);\n if (exists(column)) {\n colIdsMap[column.getId()] = true;\n }\n });\n }\n var processRow = function (rowComp) {\n var rowNode = rowComp.getRowNode();\n // skip this row if it is missing from the provided list\n if (rowIdsMap != null && !_this.isRowInMap(rowNode, rowIdsMap)) {\n return;\n }\n rowComp.getAllCellCtrls().forEach(function (cellCtrl) {\n var colId = cellCtrl.getColumn().getId();\n var excludeColFromRefresh = colIdsMap && !colIdsMap[colId];\n if (excludeColFromRefresh) {\n return;\n }\n res.push(cellCtrl);\n });\n };\n iterateObject(this.rowCtrlsByRowIndex, function (index, rowComp) {\n processRow(rowComp);\n });\n if (this.topRowCtrls) {\n this.topRowCtrls.forEach(processRow);\n }\n if (this.bottomRowCtrls) {\n this.bottomRowCtrls.forEach(processRow);\n }\n return res;\n };\n RowRenderer.prototype.destroy = function () {\n this.removeAllRowComps();\n _super.prototype.destroy.call(this);\n };\n RowRenderer.prototype.removeAllRowComps = function () {\n var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n this.removeRowCtrls(rowIndexesToRemove);\n };\n RowRenderer.prototype.recycleRows = function () {\n // remove all stub nodes, they can't be reused, as no rowNode id\n var stubNodeIndexes = [];\n iterateObject(this.rowCtrlsByRowIndex, function (index, rowComp) {\n var stubNode = rowComp.getRowNode().id == null;\n if (stubNode) {\n stubNodeIndexes.push(index);\n }\n });\n this.removeRowCtrls(stubNodeIndexes);\n // then clear out rowCompsByIndex, but before that take a copy, but index by id, not rowIndex\n var ctrlsByIdMap = {};\n iterateObject(this.rowCtrlsByRowIndex, function (index, rowComp) {\n var rowNode = rowComp.getRowNode();\n ctrlsByIdMap[rowNode.id] = rowComp;\n });\n this.rowCtrlsByRowIndex = {};\n return ctrlsByIdMap;\n };\n // takes array of row indexes\n RowRenderer.prototype.removeRowCtrls = function (rowsToRemove) {\n var _this = this;\n // if no fromIndex then set to -1, which will refresh everything\n // let realFromIndex = -1;\n rowsToRemove.forEach(function (indexToRemove) {\n var rowCtrl = _this.rowCtrlsByRowIndex[indexToRemove];\n if (rowCtrl) {\n rowCtrl.destroyFirstPass();\n rowCtrl.destroySecondPass();\n }\n delete _this.rowCtrlsByRowIndex[indexToRemove];\n });\n };\n // gets called when rows don't change, but viewport does, so after:\n // 1) height of grid body changes, ie number of displayed rows has changed\n // 2) grid scrolled to new position\n // 3) ensure index visible (which is a scroll)\n RowRenderer.prototype.redrawAfterScroll = function () {\n var cellFocused;\n // only try to refocus cells shifting in and out of sticky container\n // if the browser supports focus ({ preventScroll })\n if (this.stickyRowFeature && browserSupportsPreventScroll()) {\n cellFocused = this.getCellToRestoreFocusToAfterRefresh() || undefined;\n }\n this.getLockOnRefresh();\n this.redraw(null, false, true);\n this.releaseLockOnRefresh();\n this.dispatchDisplayedRowsChanged();\n if (cellFocused != null) {\n var newFocusedCell = this.getCellToRestoreFocusToAfterRefresh();\n if (cellFocused != null && newFocusedCell == null) {\n this.animationFrameService.flushAllFrames();\n this.restoreFocusedCell(cellFocused);\n }\n }\n };\n RowRenderer.prototype.removeRowCompsNotToDraw = function (indexesToDraw) {\n // for speedy lookup, dump into map\n var indexesToDrawMap = {};\n indexesToDraw.forEach(function (index) { return (indexesToDrawMap[index] = true); });\n var existingIndexes = Object.keys(this.rowCtrlsByRowIndex);\n var indexesNotToDraw = existingIndexes.filter(function (index) { return !indexesToDrawMap[index]; });\n this.removeRowCtrls(indexesNotToDraw);\n };\n RowRenderer.prototype.calculateIndexesToDraw = function (rowsToRecycle) {\n var _this = this;\n // all in all indexes in the viewport\n var indexesToDraw = createArrayOfNumbers(this.firstRenderedRow, this.lastRenderedRow);\n var checkRowToDraw = function (indexStr, rowComp) {\n var index = rowComp.getRowNode().rowIndex;\n if (index == null) {\n return;\n }\n if (index < _this.firstRenderedRow || index > _this.lastRenderedRow) {\n if (_this.doNotUnVirtualiseRow(rowComp)) {\n indexesToDraw.push(index);\n }\n }\n };\n // if we are redrawing due to scrolling change, then old rows are in this.rowCompsByIndex\n iterateObject(this.rowCtrlsByRowIndex, checkRowToDraw);\n // if we are redrawing due to model update, then old rows are in rowsToRecycle\n iterateObject(rowsToRecycle, checkRowToDraw);\n indexesToDraw.sort(function (a, b) { return a - b; });\n indexesToDraw = indexesToDraw.filter(function (index) {\n var rowNode = _this.paginationProxy.getRow(index);\n return rowNode && !rowNode.sticky;\n });\n return indexesToDraw;\n };\n RowRenderer.prototype.redraw = function (rowsToRecycle, animate, afterScroll) {\n var _this = this;\n if (animate === void 0) { animate = false; }\n if (afterScroll === void 0) { afterScroll = false; }\n this.rowContainerHeightService.updateOffset();\n this.workOutFirstAndLastRowsToRender();\n if (this.stickyRowFeature) {\n this.stickyRowFeature.checkStickyRows();\n }\n // the row can already exist and be in the following:\n // rowsToRecycle -> if model change, then the index may be different, however row may\n // exist here from previous time (mapped by id).\n // this.rowCompsByIndex -> if just a scroll, then this will contain what is currently in the viewport\n // this is all the indexes we want, including those that already exist, so this method\n // will end up going through each index and drawing only if the row doesn't already exist\n var indexesToDraw = this.calculateIndexesToDraw(rowsToRecycle);\n this.removeRowCompsNotToDraw(indexesToDraw);\n // never animate when doing print layout - as we want to get things ready to print as quickly as possible,\n // otherwise we risk the printer printing a row that's half faded (half way through fading in)\n if (this.printLayout) {\n animate = false;\n }\n indexesToDraw.forEach(function (rowIndex) {\n var rowCtrl = _this.createOrUpdateRowCtrl(rowIndex, rowsToRecycle, animate, afterScroll);\n if (exists(rowCtrl)) ;\n });\n if (rowsToRecycle) {\n var useAnimationFrame = afterScroll && !this.gridOptionsWrapper.isSuppressAnimationFrame() && !this.printLayout;\n if (useAnimationFrame) {\n this.beans.animationFrameService.addDestroyTask(function () {\n _this.destroyRowCtrls(rowsToRecycle, animate);\n _this.updateAllRowCtrls();\n _this.dispatchDisplayedRowsChanged();\n });\n }\n else {\n this.destroyRowCtrls(rowsToRecycle, animate);\n }\n }\n this.updateAllRowCtrls();\n };\n RowRenderer.prototype.dispatchDisplayedRowsChanged = function () {\n var event = { type: Events.EVENT_DISPLAYED_ROWS_CHANGED };\n this.eventService.dispatchEvent(event);\n };\n RowRenderer.prototype.onDisplayedColumnsChanged = function () {\n var pinningLeft = this.columnModel.isPinningLeft();\n var pinningRight = this.columnModel.isPinningRight();\n var atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;\n if (atLeastOneChanged) {\n this.pinningLeft = pinningLeft;\n this.pinningRight = pinningRight;\n if (this.embedFullWidthRows) {\n this.redrawFullWidthEmbeddedRows();\n }\n }\n };\n // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,\n // then it should go into the pinned left area if pinning left, or the center area if not pinning.\n RowRenderer.prototype.redrawFullWidthEmbeddedRows = function () {\n // if either of the pinned panels has shown / hidden, then need to redraw the fullWidth bits when\n // embedded, as what appears in each section depends on whether we are pinned or not\n var rowsToRemove = [];\n this.getFullWidthRowCtrls().forEach(function (fullWidthCtrl) {\n var rowIndex = fullWidthCtrl.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n });\n this.refreshFloatingRowComps();\n this.removeRowCtrls(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.getFullWidthRowCtrls = function (rowNodes) {\n var _this = this;\n var rowNodesMap = this.mapRowNodes(rowNodes);\n return getAllValuesInObject(this.rowCtrlsByRowIndex).filter(function (rowCtrl) {\n // include just full width\n if (!rowCtrl.isFullWidth()) {\n return false;\n }\n // if Row Nodes provided, we exclude where Row Node is missing\n var rowNode = rowCtrl.getRowNode();\n if (rowNodesMap != null && !_this.isRowInMap(rowNode, rowNodesMap)) {\n return false;\n }\n return true;\n });\n };\n RowRenderer.prototype.refreshFullWidthRows = function (rowNodesToRefresh) {\n var rowsToRemove = [];\n var selectivelyRefreshing = !!rowNodesToRefresh;\n var idsToRefresh = selectivelyRefreshing ? {} : undefined;\n if (selectivelyRefreshing && idsToRefresh) {\n rowNodesToRefresh.forEach(function (r) { return idsToRefresh[r.id] = true; });\n }\n this.getFullWidthRowCtrls().forEach(function (fullWidthRowCtrl) {\n var rowNode = fullWidthRowCtrl.getRowNode();\n if (selectivelyRefreshing && idsToRefresh) {\n // we refresh if a) this node is present or b) this parents nodes is present. checking parent\n // node is important for master/detail, as we want detail to refresh on changes to parent node.\n // it's also possible, if user is provider their own fullWidth, that details panels contain\n // some info on the parent, eg if in tree data and child row shows some data from parent row also.\n var parentId = (rowNode.level > 0 && rowNode.parent) ? rowNode.parent.id : undefined;\n var skipThisNode = !idsToRefresh[rowNode.id] && !idsToRefresh[parentId];\n if (skipThisNode) {\n return;\n }\n }\n var fullWidthRowsRefreshed = fullWidthRowCtrl.refreshFullWidth();\n if (!fullWidthRowsRefreshed) {\n var rowIndex = fullWidthRowCtrl.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n }\n });\n this.removeRowCtrls(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.createOrUpdateRowCtrl = function (rowIndex, rowsToRecycle, animate, afterScroll) {\n var rowNode;\n var rowCtrl = this.rowCtrlsByRowIndex[rowIndex];\n // if no row comp, see if we can get it from the previous rowComps\n if (!rowCtrl) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n if (exists(rowNode) && exists(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {\n rowCtrl = rowsToRecycle[rowNode.id];\n rowsToRecycle[rowNode.id] = null;\n }\n }\n var creatingNewRowCtrl = !rowCtrl;\n if (creatingNewRowCtrl) {\n // create a new one\n if (!rowNode) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n }\n if (exists(rowNode)) {\n rowCtrl = this.createRowCon(rowNode, animate, afterScroll);\n }\n else {\n // this should never happen - if somehow we are trying to create\n // a row for a rowNode that does not exist.\n return;\n }\n }\n if (rowNode) {\n // set node as 'alreadyRendered' to ensure we only recycle rowComps that have been rendered, this ensures\n // we don't reuse rowComps that have been removed and then re-added in the same batch transaction.\n rowNode.alreadyRendered = true;\n }\n this.rowCtrlsByRowIndex[rowIndex] = rowCtrl;\n return rowCtrl;\n };\n RowRenderer.prototype.destroyRowCtrls = function (rowCtrlsMap, animate) {\n var _this = this;\n var executeInAWhileFuncs = [];\n iterateObject(rowCtrlsMap, function (nodeId, rowCtrl) {\n // if row was used, then it's null\n if (!rowCtrl) {\n return;\n }\n if (_this.cachedRowCtrls && rowCtrl.isCacheable()) {\n _this.cachedRowCtrls.addRow(rowCtrl);\n return;\n }\n rowCtrl.destroyFirstPass();\n if (animate) {\n _this.zombieRowCtrls[rowCtrl.getInstanceId()] = rowCtrl;\n executeInAWhileFuncs.push(function () {\n rowCtrl.destroySecondPass();\n delete _this.zombieRowCtrls[rowCtrl.getInstanceId()];\n });\n }\n else {\n rowCtrl.destroySecondPass();\n }\n });\n if (animate) {\n // this ensures we fire displayedRowsChanged AFTER all the 'executeInAWhileFuncs' get\n // executed, as we added it to the end of the list.\n executeInAWhileFuncs.push(function () {\n _this.updateAllRowCtrls();\n _this.dispatchDisplayedRowsChanged();\n });\n executeInAWhile(executeInAWhileFuncs);\n }\n };\n RowRenderer.prototype.workOutFirstAndLastRowsToRender = function () {\n var newFirst;\n var newLast;\n if (!this.paginationProxy.isRowsToRender()) {\n newFirst = 0;\n newLast = -1; // setting to -1 means nothing in range\n }\n else if (this.printLayout) {\n newFirst = this.paginationProxy.getPageFirstRow();\n newLast = this.paginationProxy.getPageLastRow();\n }\n else {\n var bufferPixels = this.gridOptionsWrapper.getRowBufferInPixels();\n var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();\n var suppressRowVirtualisation = this.gridOptionsWrapper.isSuppressRowVirtualisation();\n var rowHeightsChanged = false;\n var firstPixel = void 0;\n var lastPixel = void 0;\n do {\n var paginationOffset = this.paginationProxy.getPixelOffset();\n var _a = this.paginationProxy.getCurrentPagePixelRange(), pageFirstPixel = _a.pageFirstPixel, pageLastPixel = _a.pageLastPixel;\n var divStretchOffset = this.rowContainerHeightService.getDivStretchOffset();\n var bodyVRange = gridBodyCtrl.getScrollFeature().getVScrollPosition();\n var bodyTopPixel = bodyVRange.top;\n var bodyBottomPixel = bodyVRange.bottom;\n if (suppressRowVirtualisation) {\n firstPixel = pageFirstPixel + divStretchOffset;\n lastPixel = pageLastPixel + divStretchOffset;\n }\n else {\n firstPixel = Math.max(bodyTopPixel + paginationOffset - bufferPixels, pageFirstPixel) + divStretchOffset;\n lastPixel = Math.min(bodyBottomPixel + paginationOffset + bufferPixels, pageLastPixel) + divStretchOffset;\n }\n this.firstVisibleVPixel = Math.max(bodyTopPixel + paginationOffset, pageFirstPixel) + divStretchOffset;\n // if the rows we are about to display get their heights changed, then that upsets the calcs from above.\n rowHeightsChanged = this.ensureAllRowsInRangeHaveHeightsCalculated(firstPixel, lastPixel);\n } while (rowHeightsChanged);\n var firstRowIndex = this.paginationProxy.getRowIndexAtPixel(firstPixel);\n var lastRowIndex = this.paginationProxy.getRowIndexAtPixel(lastPixel);\n var pageFirstRow = this.paginationProxy.getPageFirstRow();\n var pageLastRow = this.paginationProxy.getPageLastRow();\n // adjust, in case buffer extended actual size\n if (firstRowIndex < pageFirstRow) {\n firstRowIndex = pageFirstRow;\n }\n if (lastRowIndex > pageLastRow) {\n lastRowIndex = pageLastRow;\n }\n newFirst = firstRowIndex;\n newLast = lastRowIndex;\n }\n // sometimes user doesn't set CSS right and ends up with grid with no height and grid ends up\n // trying to render all the rows, eg 10,000+ rows. this will kill the browser. so instead of\n // killing the browser, we limit the number of rows. just in case some use case we didn't think\n // of, we also have a property to not do this operation.\n var rowLayoutNormal = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_NORMAL;\n var suppressRowCountRestriction = this.gridOptionsWrapper.isSuppressMaxRenderedRowRestriction();\n var rowBufferMaxSize = Math.max(this.gridOptionsWrapper.getRowBuffer(), 500);\n if (rowLayoutNormal && !suppressRowCountRestriction) {\n if (newLast - newFirst > rowBufferMaxSize) {\n newLast = newFirst + rowBufferMaxSize;\n }\n }\n var firstDiffers = newFirst !== this.firstRenderedRow;\n var lastDiffers = newLast !== this.lastRenderedRow;\n if (firstDiffers || lastDiffers) {\n this.firstRenderedRow = newFirst;\n this.lastRenderedRow = newLast;\n var event_1 = {\n type: Events.EVENT_VIEWPORT_CHANGED,\n firstRow: newFirst,\n lastRow: newLast\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n /**\n * This event will only be fired once, and is queued until after the browser next renders.\n * This allows us to fire an event during the start of the render cycle, when we first see data being rendered\n * but not execute the event until all of the data has finished being rendered to the dom.\n */\n RowRenderer.prototype.dispatchFirstDataRenderedEvent = function () {\n var _this = this;\n if (this.dataFirstRenderedFired) {\n return;\n }\n this.dataFirstRenderedFired = true;\n var event = {\n type: Events.EVENT_FIRST_DATA_RENDERED,\n firstRow: this.firstRenderedRow,\n lastRow: this.lastRenderedRow,\n };\n // See AG-7018\n window.requestAnimationFrame(function () {\n _this.beans.eventService.dispatchEvent(event);\n });\n };\n RowRenderer.prototype.ensureAllRowsInRangeHaveHeightsCalculated = function (topPixel, bottomPixel) {\n // ensureRowHeightsVisible only works with CSRM, as it's the only row model that allows lazy row height calcs.\n // all the other row models just hard code so the method just returns back false\n var res = this.paginationProxy.ensureRowHeightsValid(topPixel, bottomPixel, -1, -1);\n if (res) {\n this.updateContainerHeights();\n }\n return res;\n };\n RowRenderer.prototype.getFirstVisibleVerticalPixel = function () {\n return this.firstVisibleVPixel;\n };\n RowRenderer.prototype.getFirstVirtualRenderedRow = function () {\n return this.firstRenderedRow;\n };\n RowRenderer.prototype.getLastVirtualRenderedRow = function () {\n return this.lastRenderedRow;\n };\n // check that none of the rows to remove are editing or focused as:\n // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,\n // eg user starts editing, enters some text, then scrolls down and then up, next time row rendered\n // the edit is reset - so we want to keep it rendered.\n // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,\n // otherwise the user can range select and drag (with focus cell going out of the viewport)\n // and then ctrl+c, nothing will happen if cell is removed from dom.\n // c) if detail record of master detail, as users complained that the context of detail rows\n // was getting lost when detail row out of view. eg user expands to show detail row,\n // then manipulates the detail panel (eg sorts the detail grid), then context is lost\n // after detail panel is scrolled out of / into view.\n RowRenderer.prototype.doNotUnVirtualiseRow = function (rowComp) {\n var REMOVE_ROW = false;\n var KEEP_ROW = true;\n var rowNode = rowComp.getRowNode();\n var rowHasFocus = this.focusService.isRowNodeFocused(rowNode);\n var rowIsEditing = rowComp.isEditing();\n var rowIsDetail = rowNode.detail;\n var mightWantToKeepRow = rowHasFocus || rowIsEditing || rowIsDetail;\n // if we deffo don't want to keep it,\n if (!mightWantToKeepRow) {\n return REMOVE_ROW;\n }\n // editing row, only remove if it is no longer rendered, eg filtered out or new data set.\n // the reason we want to keep is if user is scrolling up and down, we don't want to loose\n // the context of the editing in process.\n var rowNodePresent = this.paginationProxy.isRowPresent(rowNode);\n return rowNodePresent ? KEEP_ROW : REMOVE_ROW;\n };\n RowRenderer.prototype.createRowCon = function (rowNode, animate, afterScroll) {\n var rowCtrlFromCache = this.cachedRowCtrls ? this.cachedRowCtrls.getRow(rowNode) : null;\n if (rowCtrlFromCache) {\n return rowCtrlFromCache;\n }\n // we don't use animations frames for printing, so the user can put the grid into print mode\n // and immediately print - otherwise the user would have to wait for the rows to draw in the background\n // (via the animation frames) which is awkward to do from code.\n // we only do the animation frames after scrolling, as this is where we want the smooth user experience.\n // having animation frames for other times makes the grid look 'jumpy'.\n var suppressAnimationFrame = this.gridOptionsWrapper.isSuppressAnimationFrame();\n var useAnimationFrameForCreate = afterScroll && !suppressAnimationFrame && !this.printLayout;\n var res = new RowCtrl(rowNode, this.beans, animate, useAnimationFrameForCreate, this.printLayout);\n return res;\n };\n RowRenderer.prototype.getRenderedNodes = function () {\n var renderedRows = this.rowCtrlsByRowIndex;\n return Object.keys(renderedRows).map(function (key) { return renderedRows[key].getRowNode(); });\n };\n RowRenderer.prototype.getRowByPosition = function (rowPosition) {\n var rowCtrl;\n var rowIndex = rowPosition.rowIndex;\n switch (rowPosition.rowPinned) {\n case Constants.PINNED_TOP:\n rowCtrl = this.topRowCtrls[rowIndex];\n break;\n case Constants.PINNED_BOTTOM:\n rowCtrl = this.bottomRowCtrls[rowIndex];\n break;\n default:\n rowCtrl = this.rowCtrlsByRowIndex[rowIndex];\n if (!rowCtrl) {\n rowCtrl = this.getStickyTopRowCtrls().find(function (ctrl) { return ctrl.getRowNode().rowIndex === rowIndex; }) || null;\n }\n break;\n }\n return rowCtrl;\n };\n RowRenderer.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case Constants.PINNED_TOP:\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case Constants.PINNED_BOTTOM:\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n // returns true if any row between startIndex and endIndex is rendered. used by\n // SSRM or IRM, as they don't want to purge visible blocks from cache.\n RowRenderer.prototype.isRangeInRenderedViewport = function (startIndex, endIndex) {\n // parent closed means the parent node is not expanded, thus these blocks are not visible\n var parentClosed = startIndex == null || endIndex == null;\n if (parentClosed) {\n return false;\n }\n var blockAfterViewport = startIndex > this.lastRenderedRow;\n var blockBeforeViewport = endIndex < this.firstRenderedRow;\n var blockInsideViewport = !blockBeforeViewport && !blockAfterViewport;\n return blockInsideViewport;\n };\n __decorate$13([\n Autowired(\"animationFrameService\")\n ], RowRenderer.prototype, \"animationFrameService\", void 0);\n __decorate$13([\n Autowired(\"paginationProxy\")\n ], RowRenderer.prototype, \"paginationProxy\", void 0);\n __decorate$13([\n Autowired(\"columnModel\")\n ], RowRenderer.prototype, \"columnModel\", void 0);\n __decorate$13([\n Autowired(\"pinnedRowModel\")\n ], RowRenderer.prototype, \"pinnedRowModel\", void 0);\n __decorate$13([\n Autowired(\"rowModel\")\n ], RowRenderer.prototype, \"rowModel\", void 0);\n __decorate$13([\n Autowired(\"focusService\")\n ], RowRenderer.prototype, \"focusService\", void 0);\n __decorate$13([\n Autowired(\"beans\")\n ], RowRenderer.prototype, \"beans\", void 0);\n __decorate$13([\n Autowired(\"rowContainerHeightService\")\n ], RowRenderer.prototype, \"rowContainerHeightService\", void 0);\n __decorate$13([\n Autowired(\"ctrlsService\")\n ], RowRenderer.prototype, \"ctrlsService\", void 0);\n __decorate$13([\n PostConstruct\n ], RowRenderer.prototype, \"postConstruct\", null);\n RowRenderer = __decorate$13([\n Bean(\"rowRenderer\")\n ], RowRenderer);\n return RowRenderer;\n}(BeanStub));\nvar RowCtrlCache = /** @class */ (function () {\n function RowCtrlCache(maxCount) {\n // map for fast access\n this.entriesMap = {};\n // list for keeping order\n this.entriesList = [];\n this.maxCount = maxCount;\n }\n RowCtrlCache.prototype.addRow = function (rowCtrl) {\n this.entriesMap[rowCtrl.getRowNode().id] = rowCtrl;\n this.entriesList.push(rowCtrl);\n rowCtrl.setCached(true);\n if (this.entriesList.length > this.maxCount) {\n var rowCtrlToDestroy = this.entriesList[0];\n rowCtrlToDestroy.destroyFirstPass();\n rowCtrlToDestroy.destroySecondPass();\n this.removeFromCache(rowCtrlToDestroy);\n }\n };\n RowCtrlCache.prototype.getRow = function (rowNode) {\n if (rowNode == null || rowNode.id == null) {\n return null;\n }\n var res = this.entriesMap[rowNode.id];\n if (!res) {\n return null;\n }\n this.removeFromCache(res);\n res.setCached(false);\n // this can happen if user reloads data, and a new RowNode is reusing\n // the same ID as the old one\n var rowNodeMismatch = res.getRowNode() != rowNode;\n return rowNodeMismatch ? null : res;\n };\n RowCtrlCache.prototype.removeFromCache = function (rowCtrl) {\n var rowNodeId = rowCtrl.getRowNode().id;\n delete this.entriesMap[rowNodeId];\n removeFromArray(this.entriesList, rowCtrl);\n };\n RowCtrlCache.prototype.getEntries = function () {\n return this.entriesList;\n };\n return RowCtrlCache;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$19 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$12 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValueFormatterService = /** @class */ (function (_super) {\n __extends$19(ValueFormatterService, _super);\n function ValueFormatterService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ValueFormatterService.prototype.formatValue = function (column, node, value, suppliedFormatter, useFormatterFromColumn) {\n if (useFormatterFromColumn === void 0) { useFormatterFromColumn = true; }\n var result = null;\n var formatter;\n var colDef = column.getColDef();\n if (suppliedFormatter) {\n // use supplied formatter if provided, e.g. set filter items can have their own value formatters\n formatter = suppliedFormatter;\n }\n else if (useFormatterFromColumn) {\n // if row is pinned, give preference to the pinned formatter\n formatter = node && node.rowPinned && colDef.pinnedRowValueFormatter ?\n colDef.pinnedRowValueFormatter : colDef.valueFormatter;\n }\n if (formatter) {\n var params = {\n value: value,\n node: node,\n data: node ? node.data : null,\n colDef: colDef,\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n result = this.expressionService.evaluate(formatter, params);\n }\n else if (colDef.refData) {\n return colDef.refData[value] || '';\n }\n // if we don't do this, then arrays get displayed as 1,2,3, but we want 1, 2, 3 (i.e. with spaces)\n if (result == null && Array.isArray(value)) {\n result = value.join(', ');\n }\n return result;\n };\n __decorate$12([\n Autowired('expressionService')\n ], ValueFormatterService.prototype, \"expressionService\", void 0);\n ValueFormatterService = __decorate$12([\n Bean('valueFormatterService')\n ], ValueFormatterService);\n return ValueFormatterService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$18 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$11 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PinnedRowModel = /** @class */ (function (_super) {\n __extends$18(PinnedRowModel, _super);\n function PinnedRowModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PinnedRowModel.prototype.init = function () {\n this.setPinnedTopRowData(this.gridOptionsWrapper.getPinnedTopRowData());\n this.setPinnedBottomRowData(this.gridOptionsWrapper.getPinnedBottomRowData());\n };\n PinnedRowModel.prototype.isEmpty = function (floating) {\n var rows = floating === Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n return missingOrEmpty(rows);\n };\n PinnedRowModel.prototype.isRowsToRender = function (floating) {\n return !this.isEmpty(floating);\n };\n PinnedRowModel.prototype.getRowAtPixel = function (pixel, floating) {\n var rows = floating === Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n if (missingOrEmpty(rows)) {\n return 0; // this should never happen, just in case, 0 is graceful failure\n }\n for (var i = 0; i < rows.length; i++) {\n var rowNode = rows[i];\n var rowTopPixel = rowNode.rowTop + rowNode.rowHeight - 1;\n // only need to range check against the top pixel, as we are going through the list\n // in order, first row to hit the pixel wins\n if (rowTopPixel >= pixel) {\n return i;\n }\n }\n return rows.length - 1;\n };\n PinnedRowModel.prototype.setPinnedTopRowData = function (rowData) {\n this.pinnedTopRows = this.createNodesFromData(rowData, true);\n var event = {\n type: Events.EVENT_PINNED_ROW_DATA_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.setPinnedBottomRowData = function (rowData) {\n this.pinnedBottomRows = this.createNodesFromData(rowData, false);\n var event = {\n type: Events.EVENT_PINNED_ROW_DATA_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.createNodesFromData = function (allData, isTop) {\n var _this = this;\n var rowNodes = [];\n if (allData) {\n var nextRowTop_1 = 0;\n allData.forEach(function (dataItem, index) {\n var rowNode = new RowNode(_this.beans);\n rowNode.data = dataItem;\n var idPrefix = isTop ? RowNode.ID_PREFIX_TOP_PINNED : RowNode.ID_PREFIX_BOTTOM_PINNED;\n rowNode.id = idPrefix + index;\n rowNode.rowPinned = isTop ? Constants.PINNED_TOP : Constants.PINNED_BOTTOM;\n rowNode.setRowTop(nextRowTop_1);\n rowNode.setRowHeight(_this.gridOptionsWrapper.getRowHeightForNode(rowNode).height);\n rowNode.setRowIndex(index);\n nextRowTop_1 += rowNode.rowHeight;\n rowNodes.push(rowNode);\n });\n }\n return rowNodes;\n };\n PinnedRowModel.prototype.getPinnedTopRowData = function () {\n return this.pinnedTopRows;\n };\n PinnedRowModel.prototype.getPinnedBottomRowData = function () {\n return this.pinnedBottomRows;\n };\n PinnedRowModel.prototype.getPinnedTopTotalHeight = function () {\n return this.getTotalHeight(this.pinnedTopRows);\n };\n PinnedRowModel.prototype.getPinnedTopRowCount = function () {\n return this.pinnedTopRows ? this.pinnedTopRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedBottomRowCount = function () {\n return this.pinnedBottomRows ? this.pinnedBottomRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedTopRow = function (index) {\n return this.pinnedTopRows[index];\n };\n PinnedRowModel.prototype.getPinnedBottomRow = function (index) {\n return this.pinnedBottomRows[index];\n };\n PinnedRowModel.prototype.forEachPinnedTopRow = function (callback) {\n if (missingOrEmpty(this.pinnedTopRows)) {\n return;\n }\n this.pinnedTopRows.forEach(callback);\n };\n PinnedRowModel.prototype.forEachPinnedBottomRow = function (callback) {\n if (missingOrEmpty(this.pinnedBottomRows)) {\n return;\n }\n this.pinnedBottomRows.forEach(callback);\n };\n PinnedRowModel.prototype.getPinnedBottomTotalHeight = function () {\n return this.getTotalHeight(this.pinnedBottomRows);\n };\n PinnedRowModel.prototype.getTotalHeight = function (rowNodes) {\n if (!rowNodes || rowNodes.length === 0) {\n return 0;\n }\n var lastNode = last(rowNodes);\n return lastNode.rowTop + lastNode.rowHeight;\n };\n __decorate$11([\n Autowired('beans')\n ], PinnedRowModel.prototype, \"beans\", void 0);\n __decorate$11([\n PostConstruct\n ], PinnedRowModel.prototype, \"init\", null);\n PinnedRowModel = __decorate$11([\n Bean('pinnedRowModel')\n ], PinnedRowModel);\n return PinnedRowModel;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar ServerSideTransactionResultStatus;\n(function (ServerSideTransactionResultStatus) {\n /** Transaction was successfully applied */\n ServerSideTransactionResultStatus[\"Applied\"] = \"Applied\";\n /**\n * Store was not found, transaction not applied.\n * Either invalid route, or the parent row has not yet been expanded.\n */\n ServerSideTransactionResultStatus[\"StoreNotFound\"] = \"StoreNotFound\";\n /**\n * Store is loading, transaction not applied.\n */\n ServerSideTransactionResultStatus[\"StoreLoading\"] = \"StoreLoading\";\n /**\n * Store is loading (as max loads exceeded), transaction not applied.\n */\n ServerSideTransactionResultStatus[\"StoreWaitingToLoad\"] = \"StoreWaitingToLoad\";\n /**\n * Store load attempt failed, transaction not applied.\n */\n ServerSideTransactionResultStatus[\"StoreLoadingFailed\"] = \"StoreLoadingFailed\";\n /**\n * Store is type Partial, which doesn't accept transactions\n */\n ServerSideTransactionResultStatus[\"StoreWrongType\"] = \"StoreWrongType\";\n /**\n * Transaction was cancelled, due to grid.\n * Callback isApplyServerSideTransaction() returning false\n */\n ServerSideTransactionResultStatus[\"Cancelled\"] = \"Cancelled\";\n})(ServerSideTransactionResultStatus || (ServerSideTransactionResultStatus = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\n// when doing transactions, or change detection, and grouping is present\n// in the data, there is no need for the ClientSideRowModel to update each\n// group after an update, ony parts that were impacted by the change.\n// this class keeps track of all groups that were impacted by a transaction.\n// the the different CSRM operations (filter, sort etc) use the forEach method\n// to visit each group that was changed.\nvar ChangedPath = /** @class */ (function () {\n function ChangedPath(keepingColumns, rootNode) {\n // whether changed path is active of not. it is active when a) doing\n // a transaction update or b) doing change detection. if we are doing\n // a CSRM refresh for other reasons (after sort or filter, or user calling\n // setRowData() without delta mode) then we are not active. we are also\n // marked as not active if secondary columns change in pivot (as this impacts\n // aggregations)\n this.active = true;\n // for each node in the change path, we also store which columns need\n // to be re-aggregated.\n this.nodeIdsToColumns = {};\n // for quick lookup, all items in the change path are mapped by nodeId\n this.mapToItems = {};\n this.keepingColumns = keepingColumns;\n this.pathRoot = {\n rowNode: rootNode,\n children: null\n };\n this.mapToItems[rootNode.id] = this.pathRoot;\n }\n // can be set inactive by:\n // a) ClientSideRowModel, if no transactions or\n // b) PivotService, if secondary columns changed\n ChangedPath.prototype.setInactive = function () {\n this.active = false;\n };\n ChangedPath.prototype.isActive = function () {\n return this.active;\n };\n ChangedPath.prototype.depthFirstSearchChangedPath = function (pathItem, callback) {\n if (pathItem.children) {\n for (var i = 0; i < pathItem.children.length; i++) {\n this.depthFirstSearchChangedPath(pathItem.children[i], callback);\n }\n }\n callback(pathItem.rowNode);\n };\n ChangedPath.prototype.depthFirstSearchEverything = function (rowNode, callback, traverseEverything) {\n if (rowNode.childrenAfterGroup) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n var childNode = rowNode.childrenAfterGroup[i];\n if (childNode.childrenAfterGroup) {\n this.depthFirstSearchEverything(rowNode.childrenAfterGroup[i], callback, traverseEverything);\n }\n else if (traverseEverything) {\n callback(childNode);\n }\n }\n }\n callback(rowNode);\n };\n // traverseLeafNodes -> used when NOT doing changed path, ie traversing everything. the callback\n // will be called for child nodes in addition to parent nodes.\n ChangedPath.prototype.forEachChangedNodeDepthFirst = function (callback, traverseLeafNodes, includeUnchangedNodes) {\n if (traverseLeafNodes === void 0) { traverseLeafNodes = false; }\n if (includeUnchangedNodes === void 0) { includeUnchangedNodes = false; }\n if (this.active && !includeUnchangedNodes) {\n // if we are active, then use the change path to callback\n // only for updated groups\n this.depthFirstSearchChangedPath(this.pathRoot, callback);\n }\n else {\n // we are not active, so callback for everything, walk the entire path\n this.depthFirstSearchEverything(this.pathRoot.rowNode, callback, traverseLeafNodes);\n }\n };\n ChangedPath.prototype.executeFromRootNode = function (callback) {\n callback(this.pathRoot.rowNode);\n };\n ChangedPath.prototype.createPathItems = function (rowNode) {\n var pointer = rowNode;\n var newEntryCount = 0;\n while (!this.mapToItems[pointer.id]) {\n var newEntry = {\n rowNode: pointer,\n children: null\n };\n this.mapToItems[pointer.id] = newEntry;\n newEntryCount++;\n pointer = pointer.parent;\n }\n return newEntryCount;\n };\n ChangedPath.prototype.populateColumnsMap = function (rowNode, columns) {\n var _this = this;\n if (!this.keepingColumns || !columns) {\n return;\n }\n var pointer = rowNode;\n while (pointer) {\n // if columns, add the columns in all the way to parent, merging\n // in any other columns that might be there already\n if (!this.nodeIdsToColumns[pointer.id]) {\n this.nodeIdsToColumns[pointer.id] = {};\n }\n columns.forEach(function (col) { return _this.nodeIdsToColumns[pointer.id][col.getId()] = true; });\n pointer = pointer.parent;\n }\n };\n ChangedPath.prototype.linkPathItems = function (rowNode, newEntryCount) {\n var pointer = rowNode;\n for (var i = 0; i < newEntryCount; i++) {\n var thisItem = this.mapToItems[pointer.id];\n var parentItem = this.mapToItems[pointer.parent.id];\n if (!parentItem.children) {\n parentItem.children = [];\n }\n parentItem.children.push(thisItem);\n pointer = pointer.parent;\n }\n };\n // called by\n // 1) change detection (provides cols) and\n // 2) groupStage if doing transaction update (doesn't provide cols)\n ChangedPath.prototype.addParentNode = function (rowNode, columns) {\n if (!rowNode || rowNode.isRowPinned()) {\n return;\n }\n // we cannot do both steps below in the same loop as\n // the second loop has a dependency on the first loop.\n // ie the hierarchy cannot be stitched up yet because\n // we don't have it built yet\n // create the new PathItem objects.\n var newEntryCount = this.createPathItems(rowNode);\n // link in the node items\n this.linkPathItems(rowNode, newEntryCount);\n // update columns\n this.populateColumnsMap(rowNode, columns);\n };\n ChangedPath.prototype.canSkip = function (rowNode) {\n return this.active && !this.mapToItems[rowNode.id];\n };\n ChangedPath.prototype.getValueColumnsForNode = function (rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return valueColumns;\n }\n var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n var result = valueColumns.filter(function (col) { return colsForThisNode[col.getId()]; });\n return result;\n };\n ChangedPath.prototype.getNotValueColumnsForNode = function (rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return null;\n }\n var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n var result = valueColumns.filter(function (col) { return !colsForThisNode[col.getId()]; });\n return result;\n };\n return ChangedPath;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$17 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RowNodeBlock = /** @class */ (function (_super) {\n __extends$17(RowNodeBlock, _super);\n function RowNodeBlock(id) {\n var _this = _super.call(this) || this;\n _this.state = RowNodeBlock.STATE_WAITING_TO_LOAD;\n _this.version = 0;\n _this.id = id;\n return _this;\n }\n RowNodeBlock.prototype.getId = function () {\n return this.id;\n };\n RowNodeBlock.prototype.load = function () {\n this.state = RowNodeBlock.STATE_LOADING;\n this.loadFromDatasource();\n };\n RowNodeBlock.prototype.getVersion = function () {\n return this.version;\n };\n RowNodeBlock.prototype.setStateWaitingToLoad = function () {\n // in case any current loads in progress, this will have their results ignored\n this.version++;\n this.state = RowNodeBlock.STATE_WAITING_TO_LOAD;\n };\n RowNodeBlock.prototype.getState = function () {\n return this.state;\n };\n RowNodeBlock.prototype.pageLoadFailed = function (version) {\n var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n if (requestMostRecentAndLive) {\n this.state = RowNodeBlock.STATE_FAILED;\n this.processServerFail();\n }\n this.dispatchLoadCompleted(false);\n };\n RowNodeBlock.prototype.success = function (version, params) {\n this.successCommon(version, params);\n };\n RowNodeBlock.prototype.pageLoaded = function (version, rows, lastRow) {\n this.successCommon(version, { rowData: rows, rowCount: lastRow });\n };\n RowNodeBlock.prototype.isRequestMostRecentAndLive = function (version) {\n // thisIsMostRecentRequest - if block was refreshed, then another request\n // could of been sent after this one.\n var thisIsMostRecentRequest = version === this.version;\n // weAreNotDestroyed - if InfiniteStore is purged, then blocks are destroyed\n // and new blocks created. so data loads of old blocks are discarded.\n var weAreNotDestroyed = this.isAlive();\n return thisIsMostRecentRequest && weAreNotDestroyed;\n };\n RowNodeBlock.prototype.successCommon = function (version, params) {\n // need to dispatch load complete before processing the data, as PaginationComp checks\n // RowNodeBlockLoader to see if it is still loading, so the RowNodeBlockLoader needs to\n // be updated first (via LoadComplete event) before PaginationComp updates (via processServerResult method)\n this.dispatchLoadCompleted();\n var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n if (requestMostRecentAndLive) {\n this.state = RowNodeBlock.STATE_LOADED;\n this.processServerResult(params);\n }\n };\n RowNodeBlock.prototype.dispatchLoadCompleted = function (success) {\n if (success === void 0) { success = true; }\n // we fire event regardless of processing data or now, as we want\n // the concurrentLoadRequests count to be reduced in BlockLoader\n var event = {\n type: RowNodeBlock.EVENT_LOAD_COMPLETE,\n success: success,\n block: this\n };\n this.dispatchEvent(event);\n };\n RowNodeBlock.EVENT_LOAD_COMPLETE = 'loadComplete';\n RowNodeBlock.STATE_WAITING_TO_LOAD = 'needsLoading';\n RowNodeBlock.STATE_LOADING = 'loading';\n RowNodeBlock.STATE_LOADED = 'loaded';\n RowNodeBlock.STATE_FAILED = 'failed';\n return RowNodeBlock;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$16 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$10 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$6 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar RowNodeBlockLoader = /** @class */ (function (_super) {\n __extends$16(RowNodeBlockLoader, _super);\n function RowNodeBlockLoader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeBlockLoadsCount = 0;\n _this.blocks = [];\n _this.active = true;\n return _this;\n }\n RowNodeBlockLoader_1 = RowNodeBlockLoader;\n RowNodeBlockLoader.prototype.postConstruct = function () {\n this.maxConcurrentRequests = this.gridOptionsWrapper.getMaxConcurrentDatasourceRequests();\n var blockLoadDebounceMillis = this.gridOptionsWrapper.getBlockLoadDebounceMillis();\n if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {\n this.checkBlockToLoadDebounce = _.debounce(this.performCheckBlocksToLoad.bind(this), blockLoadDebounceMillis);\n }\n };\n RowNodeBlockLoader.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('RowNodeBlockLoader');\n };\n RowNodeBlockLoader.prototype.addBlock = function (block) {\n this.blocks.push(block);\n // note that we do not remove this listener when removing the block. this is because the\n // cache can get destroyed (and containing blocks) when a block is loading. however the loading block\n // is still counted as an active loading block and we must decrement activeBlockLoadsCount when it finishes.\n block.addEventListener(RowNodeBlock.EVENT_LOAD_COMPLETE, this.loadComplete.bind(this));\n this.checkBlockToLoad();\n };\n RowNodeBlockLoader.prototype.removeBlock = function (block) {\n _.removeFromArray(this.blocks, block);\n };\n RowNodeBlockLoader.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.active = false;\n };\n RowNodeBlockLoader.prototype.loadComplete = function () {\n this.activeBlockLoadsCount--;\n this.checkBlockToLoad();\n if (this.activeBlockLoadsCount == 0) {\n this.dispatchEvent({ type: RowNodeBlockLoader_1.BLOCK_LOADER_FINISHED_EVENT });\n }\n };\n RowNodeBlockLoader.prototype.checkBlockToLoad = function () {\n if (this.checkBlockToLoadDebounce) {\n this.checkBlockToLoadDebounce();\n }\n else {\n this.performCheckBlocksToLoad();\n }\n };\n RowNodeBlockLoader.prototype.performCheckBlocksToLoad = function () {\n if (!this.active) {\n return;\n }\n this.printCacheStatus();\n if (this.maxConcurrentRequests != null && this.activeBlockLoadsCount >= this.maxConcurrentRequests) {\n this.logger.log(\"checkBlockToLoad: max loads exceeded\");\n return;\n }\n var loadAvailability = this.maxConcurrentRequests !== undefined ? this.maxConcurrentRequests - this.activeBlockLoadsCount : undefined;\n var blocksToLoad = this.blocks.filter(function (block) { return (block.getState() === RowNodeBlock.STATE_WAITING_TO_LOAD); }).slice(0, loadAvailability);\n this.activeBlockLoadsCount += blocksToLoad.length;\n blocksToLoad.forEach(function (block) { return block.load(); });\n this.printCacheStatus();\n };\n RowNodeBlockLoader.prototype.getBlockState = function () {\n var result = {};\n this.blocks.forEach(function (block) {\n var _a = block.getBlockStateJson(), id = _a.id, state = _a.state;\n result[id] = state;\n });\n return result;\n };\n RowNodeBlockLoader.prototype.printCacheStatus = function () {\n if (this.logger.isLogging()) {\n this.logger.log(\"printCacheStatus: activePageLoadsCount = \" + this.activeBlockLoadsCount + \",\"\n + (\" blocks = \" + JSON.stringify(this.getBlockState())));\n }\n };\n RowNodeBlockLoader.prototype.isLoading = function () {\n return this.activeBlockLoadsCount > 0;\n };\n var RowNodeBlockLoader_1;\n RowNodeBlockLoader.BLOCK_LOADER_FINISHED_EVENT = 'blockLoaderFinished';\n __decorate$10([\n PostConstruct\n ], RowNodeBlockLoader.prototype, \"postConstruct\", null);\n __decorate$10([\n __param$6(0, Qualifier('loggerFactory'))\n ], RowNodeBlockLoader.prototype, \"setBeans\", null);\n RowNodeBlockLoader = RowNodeBlockLoader_1 = __decorate$10([\n Bean('rowNodeBlockLoader')\n ], RowNodeBlockLoader);\n return RowNodeBlockLoader;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$15 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$$ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationProxy = /** @class */ (function (_super) {\n __extends$15(PaginationProxy, _super);\n function PaginationProxy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.currentPage = 0;\n _this.topDisplayedRowIndex = 0;\n _this.bottomDisplayedRowIndex = 0;\n _this.pixelOffset = 0;\n _this.masterRowCount = 0;\n return _this;\n }\n PaginationProxy.prototype.postConstruct = function () {\n this.active = this.gridOptionsWrapper.isPagination();\n this.paginateChildRows = this.gridOptionsWrapper.isPaginateChildRows();\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, 'paginationPageSize', this.onPaginationPageSizeChanged.bind(this));\n this.onModelUpdated();\n };\n PaginationProxy.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var res = this.rowModel.ensureRowHeightsValid(startPixel, endPixel, this.getPageFirstRow(), this.getPageLastRow());\n if (res) {\n this.calculatePages();\n }\n return res;\n };\n PaginationProxy.prototype.onModelUpdated = function (modelUpdatedEvent) {\n this.calculatePages();\n var paginationChangedEvent = {\n type: Events.EVENT_PAGINATION_CHANGED,\n animate: modelUpdatedEvent ? modelUpdatedEvent.animate : false,\n newData: modelUpdatedEvent ? modelUpdatedEvent.newData : false,\n newPage: modelUpdatedEvent ? modelUpdatedEvent.newPage : false,\n keepRenderedRows: modelUpdatedEvent ? modelUpdatedEvent.keepRenderedRows : false\n };\n this.eventService.dispatchEvent(paginationChangedEvent);\n };\n PaginationProxy.prototype.onPaginationPageSizeChanged = function () {\n this.calculatePages();\n var paginationChangedEvent = {\n type: Events.EVENT_PAGINATION_CHANGED,\n animate: false,\n newData: false,\n newPage: false,\n // important to keep rendered rows, otherwise every time grid is resized,\n // we would destroy all the rows.\n keepRenderedRows: true\n };\n this.eventService.dispatchEvent(paginationChangedEvent);\n };\n PaginationProxy.prototype.goToPage = function (page) {\n if (!this.active || this.currentPage === page) {\n return;\n }\n this.currentPage = page;\n var event = {\n type: Events.EVENT_MODEL_UPDATED,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: true\n };\n this.onModelUpdated(event);\n };\n PaginationProxy.prototype.getPixelOffset = function () {\n return this.pixelOffset;\n };\n PaginationProxy.prototype.getRow = function (index) {\n return this.rowModel.getRow(index);\n };\n PaginationProxy.prototype.getRowNode = function (id) {\n return this.rowModel.getRowNode(id);\n };\n PaginationProxy.prototype.getRowIndexAtPixel = function (pixel) {\n return this.rowModel.getRowIndexAtPixel(pixel);\n };\n PaginationProxy.prototype.getCurrentPageHeight = function () {\n if (missing(this.topRowBounds) || missing(this.bottomRowBounds)) {\n return 0;\n }\n return Math.max(this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight - this.topRowBounds.rowTop, 0);\n };\n PaginationProxy.prototype.getCurrentPagePixelRange = function () {\n var pageFirstPixel = this.topRowBounds ? this.topRowBounds.rowTop : 0;\n var pageLastPixel = this.bottomRowBounds ? this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight : 0;\n return { pageFirstPixel: pageFirstPixel, pageLastPixel: pageLastPixel };\n };\n PaginationProxy.prototype.isRowPresent = function (rowNode) {\n if (!this.rowModel.isRowPresent(rowNode)) {\n return false;\n }\n var nodeIsInPage = rowNode.rowIndex >= this.topDisplayedRowIndex && rowNode.rowIndex <= this.bottomDisplayedRowIndex;\n return nodeIsInPage;\n };\n PaginationProxy.prototype.isEmpty = function () {\n return this.rowModel.isEmpty();\n };\n PaginationProxy.prototype.isRowsToRender = function () {\n return this.rowModel.isRowsToRender();\n };\n PaginationProxy.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n return this.rowModel.getNodesInRangeForSelection(firstInRange, lastInRange);\n };\n PaginationProxy.prototype.forEachNode = function (callback) {\n return this.rowModel.forEachNode(callback);\n };\n PaginationProxy.prototype.getType = function () {\n return this.rowModel.getType();\n };\n PaginationProxy.prototype.getRowBounds = function (index) {\n var res = this.rowModel.getRowBounds(index);\n res.rowIndex = index;\n return res;\n };\n PaginationProxy.prototype.getPageFirstRow = function () {\n return this.topRowBounds ? this.topRowBounds.rowIndex : -1;\n };\n PaginationProxy.prototype.getPageLastRow = function () {\n return this.bottomRowBounds ? this.bottomRowBounds.rowIndex : -1;\n };\n PaginationProxy.prototype.getRowCount = function () {\n return this.rowModel.getRowCount();\n };\n PaginationProxy.prototype.getPageForIndex = function (index) {\n return Math.floor(index / this.pageSize);\n };\n PaginationProxy.prototype.goToPageWithIndex = function (index) {\n if (!this.active) {\n return;\n }\n var pageNumber = this.getPageForIndex(index);\n this.goToPage(pageNumber);\n };\n PaginationProxy.prototype.isRowInPage = function (row) {\n if (!this.active) {\n return true;\n }\n var rowPage = this.getPageForIndex(row.rowIndex);\n return rowPage === this.currentPage;\n };\n PaginationProxy.prototype.isLastPageFound = function () {\n return this.rowModel.isLastRowIndexKnown();\n };\n PaginationProxy.prototype.getCurrentPage = function () {\n return this.currentPage;\n };\n PaginationProxy.prototype.goToNextPage = function () {\n this.goToPage(this.currentPage + 1);\n };\n PaginationProxy.prototype.goToPreviousPage = function () {\n this.goToPage(this.currentPage - 1);\n };\n PaginationProxy.prototype.goToFirstPage = function () {\n this.goToPage(0);\n };\n PaginationProxy.prototype.goToLastPage = function () {\n var rowCount = this.rowModel.getRowCount();\n var lastPage = Math.floor(rowCount / this.pageSize);\n this.goToPage(lastPage);\n };\n PaginationProxy.prototype.getPageSize = function () {\n return this.pageSize;\n };\n PaginationProxy.prototype.getTotalPages = function () {\n return this.totalPages;\n };\n PaginationProxy.prototype.setPageSize = function () {\n // show put this into super class\n this.pageSize = this.gridOptionsWrapper.getPaginationPageSize();\n if (this.pageSize == null || this.pageSize < 1) {\n this.pageSize = 100;\n }\n };\n PaginationProxy.prototype.calculatePages = function () {\n if (this.active) {\n this.setPageSize();\n if (this.paginateChildRows) {\n this.calculatePagesAllRows();\n }\n else {\n this.calculatePagesMasterRowsOnly();\n }\n }\n else {\n this.calculatedPagesNotActive();\n }\n this.topRowBounds = this.rowModel.getRowBounds(this.topDisplayedRowIndex);\n if (this.topRowBounds) {\n this.topRowBounds.rowIndex = this.topDisplayedRowIndex;\n }\n this.bottomRowBounds = this.rowModel.getRowBounds(this.bottomDisplayedRowIndex);\n if (this.bottomRowBounds) {\n this.bottomRowBounds.rowIndex = this.bottomDisplayedRowIndex;\n }\n this.setPixelOffset(exists(this.topRowBounds) ? this.topRowBounds.rowTop : 0);\n };\n PaginationProxy.prototype.setPixelOffset = function (value) {\n if (this.pixelOffset === value) {\n return;\n }\n this.pixelOffset = value;\n this.eventService.dispatchEvent({ type: Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED });\n };\n PaginationProxy.prototype.setZeroRows = function () {\n this.masterRowCount = 0;\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = -1;\n this.currentPage = 0;\n this.totalPages = 0;\n };\n PaginationProxy.prototype.calculatePagesMasterRowsOnly = function () {\n // const csrm = this.rowModel;\n // const rootNode = csrm.getRootNode();\n // const masterRows = rootNode.childrenAfterSort;\n this.masterRowCount = this.rowModel.getTopLevelRowCount();\n // we say <=0 (rather than =0) as viewport returns -1 when no rows\n if (this.masterRowCount <= 0) {\n this.setZeroRows();\n return;\n }\n var masterLastRowIndex = this.masterRowCount - 1;\n this.totalPages = Math.floor((masterLastRowIndex) / this.pageSize) + 1;\n if (this.currentPage >= this.totalPages) {\n this.currentPage = this.totalPages - 1;\n }\n if (!isNumeric(this.currentPage) || this.currentPage < 0) {\n this.currentPage = 0;\n }\n var masterPageStartIndex = this.pageSize * this.currentPage;\n var masterPageEndIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n if (masterPageEndIndex > masterLastRowIndex) {\n masterPageEndIndex = masterLastRowIndex;\n }\n this.topDisplayedRowIndex = this.rowModel.getTopLevelRowDisplayedIndex(masterPageStartIndex);\n // masterRows[masterPageStartIndex].rowIndex;\n if (masterPageEndIndex === masterLastRowIndex) {\n // if showing the last master row, then we want to show the very last row of the model\n this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;\n }\n else {\n var firstIndexNotToShow = this.rowModel.getTopLevelRowDisplayedIndex(masterPageEndIndex + 1);\n //masterRows[masterPageEndIndex + 1].rowIndex;\n // this gets the index of the last child - eg current row is open, we want to display all children,\n // the index of the last child is one less than the index of the next parent row.\n this.bottomDisplayedRowIndex = firstIndexNotToShow - 1;\n }\n };\n PaginationProxy.prototype.getMasterRowCount = function () {\n return this.masterRowCount;\n };\n PaginationProxy.prototype.calculatePagesAllRows = function () {\n this.masterRowCount = this.rowModel.getRowCount();\n if (this.masterRowCount === 0) {\n this.setZeroRows();\n return;\n }\n var maxRowIndex = this.masterRowCount - 1;\n this.totalPages = Math.floor((maxRowIndex) / this.pageSize) + 1;\n if (this.currentPage >= this.totalPages) {\n this.currentPage = this.totalPages - 1;\n }\n if (!isNumeric(this.currentPage) || this.currentPage < 0) {\n this.currentPage = 0;\n }\n this.topDisplayedRowIndex = this.pageSize * this.currentPage;\n this.bottomDisplayedRowIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n if (this.bottomDisplayedRowIndex > maxRowIndex) {\n this.bottomDisplayedRowIndex = maxRowIndex;\n }\n };\n PaginationProxy.prototype.calculatedPagesNotActive = function () {\n this.pageSize = this.rowModel.getRowCount();\n this.totalPages = 1;\n this.currentPage = 0;\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;\n };\n __decorate$$([\n Autowired('rowModel')\n ], PaginationProxy.prototype, \"rowModel\", void 0);\n __decorate$$([\n PostConstruct\n ], PaginationProxy.prototype, \"postConstruct\", null);\n PaginationProxy = __decorate$$([\n Bean('paginationProxy')\n ], PaginationProxy);\n return PaginationProxy;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$14 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$_ = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar StylingService = /** @class */ (function (_super) {\n __extends$14(StylingService, _super);\n function StylingService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StylingService.prototype.processAllCellClasses = function (colDef, params, onApplicableClass, onNotApplicableClass) {\n this.processClassRules(colDef.cellClassRules, params, onApplicableClass, onNotApplicableClass);\n this.processStaticCellClasses(colDef, params, onApplicableClass);\n };\n StylingService.prototype.processClassRules = function (classRules, params, onApplicableClass, onNotApplicableClass) {\n if (classRules == null) {\n return;\n }\n var classNames = Object.keys(classRules);\n var classesToApply = {};\n var classesToRemove = {};\n var _loop_1 = function (i) {\n var className = classNames[i];\n var rule = classRules[className];\n var resultOfRule;\n if (typeof rule === 'string') {\n resultOfRule = this_1.expressionService.evaluate(rule, params);\n }\n else if (typeof rule === 'function') {\n resultOfRule = rule(params);\n }\n // in case className = 'my-class1 my-class2', we need to split into individual class names\n className.split(' ').forEach(function (singleClass) {\n if (singleClass == null || singleClass.trim() == '') {\n return;\n }\n resultOfRule ? classesToApply[singleClass] = true : classesToRemove[singleClass] = true;\n });\n };\n var this_1 = this;\n for (var i = 0; i < classNames.length; i++) {\n _loop_1(i);\n }\n // we remove all classes first, then add all classes second,\n // in case a class appears in more than one rule, this means it will be added\n // if appears in at least one truthy rule\n if (onNotApplicableClass) {\n Object.keys(classesToRemove).forEach(onNotApplicableClass);\n }\n Object.keys(classesToApply).forEach(onApplicableClass);\n };\n StylingService.prototype.getStaticCellClasses = function (colDef, params) {\n var cellClass = colDef.cellClass;\n if (!cellClass) {\n return [];\n }\n var classOrClasses;\n if (typeof cellClass === 'function') {\n var cellClassFunc = cellClass;\n classOrClasses = cellClassFunc(params);\n }\n else {\n classOrClasses = cellClass;\n }\n if (typeof classOrClasses === 'string') {\n classOrClasses = [classOrClasses];\n }\n return classOrClasses || [];\n };\n StylingService.prototype.processStaticCellClasses = function (colDef, params, onApplicableClass) {\n var classOrClasses = this.getStaticCellClasses(colDef, params);\n classOrClasses.forEach(function (cssClassItem) {\n onApplicableClass(cssClassItem);\n });\n };\n __decorate$_([\n Autowired('expressionService')\n ], StylingService.prototype, \"expressionService\", void 0);\n StylingService = __decorate$_([\n Bean('stylingService')\n ], StylingService);\n return StylingService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$13 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgRadioButton = /** @class */ (function (_super) {\n __extends$13(AgRadioButton, _super);\n function AgRadioButton(config) {\n return _super.call(this, config, 'ag-radio-button', 'radio') || this;\n }\n AgRadioButton.prototype.isSelected = function () {\n return this.eInput.checked;\n };\n AgRadioButton.prototype.toggle = function () {\n if (this.eInput.disabled) {\n return;\n }\n // do not allow an active radio button to be deselected\n if (!this.isSelected()) {\n this.setValue(true);\n }\n };\n AgRadioButton.prototype.addInputListeners = function () {\n _super.prototype.addInputListeners.call(this);\n this.addManagedListener(this.eventService, Events.EVENT_CHECKBOX_CHANGED, this.onChange.bind(this));\n };\n /**\n * This ensures that if another radio button in the same named group is selected, we deselect this radio button.\n * By default the browser does this for you, but we are managing classes ourselves in order to ensure input\n * elements are styled correctly in IE11, and the DOM 'changed' event is only fired when a button is selected,\n * not deselected, so we need to use our own event.\n */\n AgRadioButton.prototype.onChange = function (event) {\n if (event.selected &&\n event.name &&\n this.eInput.name &&\n this.eInput.name === event.name &&\n event.id &&\n this.eInput.id !== event.id) {\n this.setValue(false, true);\n }\n };\n return AgRadioButton;\n}(AgCheckbox));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$12 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgToggleButton = /** @class */ (function (_super) {\n __extends$12(AgToggleButton, _super);\n function AgToggleButton(config) {\n return _super.call(this, config, 'ag-toggle-button') || this;\n }\n AgToggleButton.prototype.setValue = function (value, silent) {\n _super.prototype.setValue.call(this, value, silent);\n this.addOrRemoveCssClass('ag-selected', this.getValue());\n return this;\n };\n return AgToggleButton;\n}(AgCheckbox));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$11 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgInputTextField = /** @class */ (function (_super) {\n __extends$11(AgInputTextField, _super);\n function AgInputTextField(config, className, inputType) {\n if (className === void 0) { className = 'ag-text-field'; }\n if (inputType === void 0) { inputType = 'text'; }\n return _super.call(this, config, className, inputType) || this;\n }\n AgInputTextField.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n if (this.config.allowedCharPattern) {\n this.preventDisallowedCharacters();\n }\n };\n AgInputTextField.prototype.setValue = function (value, silent) {\n var ret = _super.prototype.setValue.call(this, value, silent);\n if (this.eInput.value !== value) {\n this.eInput.value = exists(value) ? value : '';\n }\n return ret;\n };\n AgInputTextField.prototype.preventDisallowedCharacters = function () {\n var pattern = new RegExp(\"[\" + this.config.allowedCharPattern + \"]\");\n var preventDisallowedCharacters = function (event) {\n if (event.key && !pattern.test(event.key)) {\n event.preventDefault();\n }\n };\n this.addManagedListener(this.eInput, 'keypress', preventDisallowedCharacters);\n this.addManagedListener(this.eInput, 'paste', function (e) {\n var _a;\n var text = (_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text');\n if (text && text.split('').some(function (c) { return !pattern.test(c); })) {\n e.preventDefault();\n }\n });\n };\n return AgInputTextField;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$10 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgInputTextArea = /** @class */ (function (_super) {\n __extends$10(AgInputTextArea, _super);\n function AgInputTextArea(config) {\n return _super.call(this, config, 'ag-text-area', null, 'textarea') || this;\n }\n AgInputTextArea.prototype.setValue = function (value, silent) {\n var ret = _super.prototype.setValue.call(this, value, silent);\n this.eInput.value = value;\n return ret;\n };\n AgInputTextArea.prototype.setCols = function (cols) {\n this.eInput.cols = cols;\n return this;\n };\n AgInputTextArea.prototype.setRows = function (rows) {\n this.eInput.rows = rows;\n return this;\n };\n return AgInputTextArea;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$$ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgInputNumberField = /** @class */ (function (_super) {\n __extends$$(AgInputNumberField, _super);\n function AgInputNumberField(config) {\n return _super.call(this, config, 'ag-number-field', 'number') || this;\n }\n AgInputNumberField.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n this.addManagedListener(this.eInput, 'blur', function () {\n var floatedValue = parseFloat(_this.eInput.value);\n var value = isNaN(floatedValue) ? '' : _this.normalizeValue(floatedValue.toString());\n if (_this.value !== value) {\n _this.setValue(value);\n }\n });\n this.addManagedListener(this.eInput, 'wheel', this.onWheel.bind(this));\n this.eInput.step = 'any';\n };\n AgInputNumberField.prototype.onWheel = function (e) {\n // Prevent default scroll events from incrementing / decrementing the input, since its inconsistent between browsers\n if (document.activeElement === this.eInput) {\n e.preventDefault();\n }\n };\n AgInputNumberField.prototype.normalizeValue = function (value) {\n if (value === '') {\n return '';\n }\n if (this.precision) {\n value = this.adjustPrecision(value);\n }\n var val = parseFloat(value);\n if (this.min != null && val < this.min) {\n value = this.min.toString();\n }\n else if (this.max != null && val > this.max) {\n value = this.max.toString();\n }\n return value;\n };\n AgInputNumberField.prototype.adjustPrecision = function (value) {\n if (this.precision) {\n var floatString = parseFloat(value).toFixed(this.precision);\n value = parseFloat(floatString).toString();\n }\n return value;\n };\n AgInputNumberField.prototype.setMin = function (min) {\n if (this.min === min) {\n return this;\n }\n this.min = min;\n addOrRemoveAttribute(this.eInput, 'min', min);\n return this;\n };\n AgInputNumberField.prototype.setMax = function (max) {\n if (this.max === max) {\n return this;\n }\n this.max = max;\n addOrRemoveAttribute(this.eInput, 'max', max);\n return this;\n };\n AgInputNumberField.prototype.setPrecision = function (precision) {\n this.precision = precision;\n return this;\n };\n AgInputNumberField.prototype.setStep = function (step) {\n if (this.step === step) {\n return this;\n }\n this.step = step;\n addOrRemoveAttribute(this.eInput, 'step', step);\n return this;\n };\n AgInputNumberField.prototype.setValue = function (value, silent) {\n value = this.adjustPrecision(value);\n var normalizedValue = this.normalizeValue(value);\n if (value != normalizedValue) {\n return this;\n }\n return _super.prototype.setValue.call(this, value, silent);\n };\n return AgInputNumberField;\n}(AgInputTextField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$_ = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgInputRange = /** @class */ (function (_super) {\n __extends$_(AgInputRange, _super);\n function AgInputRange(config) {\n return _super.call(this, config, 'ag-range-field', 'range') || this;\n }\n AgInputRange.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n var _a = this.config, min = _a.min, max = _a.max, step = _a.step;\n if (min != null) {\n this.setMinValue(min);\n }\n if (max != null) {\n this.setMaxValue(max);\n }\n this.setStep(step || 1);\n };\n AgInputRange.prototype.addInputListeners = function () {\n var _this = this;\n this.addManagedListener(this.eInput, 'input', function (e) {\n var value = e.target.value;\n _this.setValue(value);\n });\n };\n AgInputRange.prototype.setMinValue = function (value) {\n this.min = value;\n this.eInput.setAttribute('min', value.toString());\n return this;\n };\n AgInputRange.prototype.setMaxValue = function (value) {\n this.max = value;\n this.eInput.setAttribute('max', value.toString());\n return this;\n };\n AgInputRange.prototype.setStep = function (value) {\n this.eInput.setAttribute('step', value.toString());\n return this;\n };\n AgInputRange.prototype.setValue = function (value, silent) {\n if (this.min != null) {\n value = Math.max(parseFloat(value), this.min).toString();\n }\n if (this.max != null) {\n value = Math.min(parseFloat(value), this.max).toString();\n }\n var ret = _super.prototype.setValue.call(this, value, silent);\n this.eInput.value = value;\n return ret;\n };\n return AgInputRange;\n}(AgAbstractInputField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$Z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$Z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgSlider = /** @class */ (function (_super) {\n __extends$Z(AgSlider, _super);\n function AgSlider(config) {\n var _this = _super.call(this, config, AgSlider.TEMPLATE) || this;\n _this.labelAlignment = 'top';\n return _this;\n }\n AgSlider.prototype.init = function () {\n this.eSlider.addCssClass('ag-slider-field');\n };\n AgSlider.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n var eventChanged = AgAbstractField.EVENT_CHANGED;\n this.addManagedListener(this.eText, eventChanged, function () {\n var textValue = parseFloat(_this.eText.getValue());\n _this.eSlider.setValue(textValue.toString(), true);\n callbackFn(textValue || 0);\n });\n this.addManagedListener(this.eSlider, eventChanged, function () {\n var sliderValue = _this.eSlider.getValue();\n _this.eText.setValue(sliderValue, true);\n callbackFn(parseFloat(sliderValue));\n });\n return this;\n };\n AgSlider.prototype.setSliderWidth = function (width) {\n this.eSlider.setWidth(width);\n return this;\n };\n AgSlider.prototype.setTextFieldWidth = function (width) {\n this.eText.setWidth(width);\n return this;\n };\n AgSlider.prototype.setMinValue = function (minValue) {\n this.eSlider.setMinValue(minValue);\n this.eText.setMin(minValue);\n return this;\n };\n AgSlider.prototype.setMaxValue = function (maxValue) {\n this.eSlider.setMaxValue(maxValue);\n this.eText.setMax(maxValue);\n return this;\n };\n AgSlider.prototype.getValue = function () {\n return this.eText.getValue();\n };\n AgSlider.prototype.setValue = function (value) {\n if (this.getValue() === value) {\n return this;\n }\n this.eText.setValue(value, true);\n this.eSlider.setValue(value, true);\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n return this;\n };\n AgSlider.prototype.setStep = function (step) {\n this.eSlider.setStep(step);\n this.eText.setStep(step);\n return this;\n };\n AgSlider.TEMPLATE = \"
\\n \\n
\\n \\n \\n
\\n
\";\n __decorate$Z([\n RefSelector('eLabel')\n ], AgSlider.prototype, \"eLabel\", void 0);\n __decorate$Z([\n RefSelector('eSlider')\n ], AgSlider.prototype, \"eSlider\", void 0);\n __decorate$Z([\n RefSelector('eText')\n ], AgSlider.prototype, \"eText\", void 0);\n __decorate$Z([\n PostConstruct\n ], AgSlider.prototype, \"init\", null);\n return AgSlider;\n}(AgAbstractLabel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$Y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$Y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgAngleSelect = /** @class */ (function (_super) {\n __extends$Y(AgAngleSelect, _super);\n function AgAngleSelect(config) {\n var _this = _super.call(this, config, AgAngleSelect.TEMPLATE) || this;\n _this.radius = 0;\n _this.offsetX = 0;\n _this.offsetY = 0;\n return _this;\n }\n AgAngleSelect.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n this.dragListener = {\n eElement: this.eParentCircle,\n dragStartPixels: 0,\n onDragStart: function (e) {\n _this.parentCircleRect = _this.eParentCircle.getBoundingClientRect();\n },\n onDragging: function (e) { return _this.calculateAngleDrag(e); },\n onDragStop: function () { }\n };\n this.dragService.addDragSource(this.dragListener);\n this.eAngleValue\n .setLabel('')\n .setLabelWidth(5)\n .setInputWidth(45)\n .setMin(0)\n .setMax(360)\n .setValue(\"\" + this.degrees)\n .onValueChange(function (value) {\n if (value == null || value === '') {\n value = '0';\n }\n value = _this.eAngleValue.normalizeValue(value);\n var floatValue = parseFloat(value);\n if (floatValue > 180) {\n floatValue = floatValue - 360;\n }\n _this.setValue(floatValue);\n });\n this.updateNumberInput();\n if (exists(this.getValue())) {\n this.eAngleValue.setValue(this.normalizeNegativeValue(this.getValue()).toString());\n }\n this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () {\n var eDocument = _this.gridOptionsWrapper.getDocument();\n if (_this.eAngleValue.getInputElement().contains(eDocument.activeElement)) {\n return;\n }\n _this.updateNumberInput();\n });\n };\n AgAngleSelect.prototype.updateNumberInput = function () {\n var normalizedValue = this.normalizeNegativeValue(this.getValue());\n this.eAngleValue.setValue(normalizedValue.toString());\n };\n AgAngleSelect.prototype.positionChildCircle = function (radians) {\n var rect = this.parentCircleRect || { width: 24, height: 24 };\n var eChildCircle = this.eChildCircle;\n var centerX = rect.width / 2;\n var centerY = rect.height / 2;\n eChildCircle.style.left = centerX + Math.cos(radians) * 8 + \"px\";\n eChildCircle.style.top = centerY + Math.sin(radians) * 8 + \"px\";\n };\n AgAngleSelect.prototype.calculatePolar = function () {\n var x = this.offsetX;\n var y = this.offsetY;\n var radians = Math.atan2(y, x);\n this.degrees = this.toDegrees(radians);\n this.radius = Math.sqrt((x * x) + (y * y));\n this.positionChildCircle(radians);\n };\n AgAngleSelect.prototype.calculateCartesian = function () {\n var radians = this.toRadians(this.getValue());\n var radius = this.getRadius();\n this\n .setOffsetX(Math.cos(radians) * radius)\n .setOffsetY(Math.sin(radians) * radius);\n };\n AgAngleSelect.prototype.setOffsetX = function (offset) {\n if (this.offsetX !== offset) {\n this.offsetX = offset;\n this.calculatePolar();\n }\n return this;\n };\n AgAngleSelect.prototype.setOffsetY = function (offset) {\n if (this.offsetY !== offset) {\n this.offsetY = offset;\n this.calculatePolar();\n }\n return this;\n };\n AgAngleSelect.prototype.calculateAngleDrag = function (e) {\n var rect = this.parentCircleRect;\n var centerX = rect.width / 2;\n var centerY = rect.height / 2;\n var x = e.clientX - rect.left;\n var y = e.clientY - rect.top;\n var dx = x - centerX;\n var dy = y - centerY;\n var radians = Math.atan2(dy, dx);\n this.setValue(radians, true);\n };\n AgAngleSelect.prototype.toDegrees = function (radians) {\n return radians / Math.PI * 180;\n };\n AgAngleSelect.prototype.toRadians = function (degrees) {\n return degrees / 180 * Math.PI;\n };\n AgAngleSelect.prototype.normalizeNegativeValue = function (degrees) {\n return degrees < 0 ? 360 + degrees : degrees;\n };\n AgAngleSelect.prototype.normalizeAngle180 = function (radians) {\n radians %= Math.PI * 2;\n if (radians < -Math.PI) {\n radians += Math.PI * 2;\n }\n else if (radians >= Math.PI) {\n radians -= Math.PI * 2;\n }\n return radians;\n };\n AgAngleSelect.prototype.getRadius = function () {\n return this.radius;\n };\n AgAngleSelect.prototype.setRadius = function (r) {\n if (this.radius === r) {\n return this;\n }\n this.radius = r;\n this.calculateCartesian();\n return this;\n };\n AgAngleSelect.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () {\n callbackFn(_this.degrees);\n });\n return this;\n };\n AgAngleSelect.prototype.getValue = function (radians) {\n return radians ? this.toRadians(this.degrees) : this.degrees;\n };\n AgAngleSelect.prototype.setValue = function (degrees, radians) {\n var radiansValue;\n if (!radians) {\n radiansValue = this.normalizeAngle180(this.toRadians(degrees));\n }\n else {\n radiansValue = degrees;\n }\n degrees = this.toDegrees(radiansValue);\n if (this.degrees !== degrees) {\n this.degrees = Math.floor(degrees);\n this.calculateCartesian();\n this.positionChildCircle(radiansValue);\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n }\n return this;\n };\n AgAngleSelect.prototype.setWidth = function (width) {\n setFixedWidth(this.getGui(), width);\n return this;\n };\n AgAngleSelect.prototype.setDisabled = function (disabled) {\n _super.prototype.setDisabled.call(this, disabled);\n this.eAngleValue.setDisabled(disabled);\n return this;\n };\n AgAngleSelect.prototype.destroy = function () {\n this.dragService.removeDragSource(this.dragListener);\n _super.prototype.destroy.call(this);\n };\n AgAngleSelect.TEMPLATE = \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\";\n __decorate$Y([\n RefSelector('eLabel')\n ], AgAngleSelect.prototype, \"eLabel\", void 0);\n __decorate$Y([\n RefSelector('eParentCircle')\n ], AgAngleSelect.prototype, \"eParentCircle\", void 0);\n __decorate$Y([\n RefSelector('eChildCircle')\n ], AgAngleSelect.prototype, \"eChildCircle\", void 0);\n __decorate$Y([\n RefSelector('eAngleValue')\n ], AgAngleSelect.prototype, \"eAngleValue\", void 0);\n __decorate$Y([\n Autowired('dragService')\n ], AgAngleSelect.prototype, \"dragService\", void 0);\n return AgAngleSelect;\n}(AgAbstractLabel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$X = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$X = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$9 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar AgColorPanel = /** @class */ (function (_super) {\n __extends$X(AgColorPanel, _super);\n function AgColorPanel(config) {\n var _this = _super.call(this, AgColorPanel.TEMPLATE) || this;\n _this.H = 1; // in the [0, 1] range\n _this.S = 1; // in the [0, 1] range\n _this.B = 1; // in the [0, 1] range\n _this.A = 1; // in the [0, 1] range\n _this.isSpectrumDragging = false;\n _this.isSpectrumHueDragging = false;\n _this.isSpectrumAlphaDragging = false;\n _this.colorChanged = false;\n _this.picker = config.picker;\n return _this;\n }\n AgColorPanel.prototype.postConstruct = function () {\n var eGui = this.getGui();\n this.initRecentColors();\n this.addManagedListener(this.spectrumVal, 'mousedown', this.onSpectrumDraggerDown.bind(this));\n this.addManagedListener(eGui, 'mousemove', this.onSpectrumDraggerMove.bind(this));\n this.addManagedListener(this.spectrumHue, 'mousedown', this.onSpectrumHueDown.bind(this));\n this.addManagedListener(eGui, 'mousemove', this.onSpectrumHueMove.bind(this));\n this.addManagedListener(this.spectrumAlpha, 'mousedown', this.onSpectrumAlphaDown.bind(this));\n this.addManagedListener(eGui, 'mousemove', this.onSpectrumAlphaMove.bind(this));\n // Listening to `mouseup` on the document on purpose. The user might release the mouse button\n // outside the UI control. When the mouse returns back to the control's area, the dragging\n // of the thumb is not expected and seen as a bug.\n this.addManagedListener(document, 'mouseup', this.onMouseUp.bind(this));\n this.addManagedListener(this.recentColors, 'click', this.onRecentColorClick.bind(this));\n };\n AgColorPanel.prototype.refreshSpectrumRect = function () {\n return this.spectrumValRect = this.spectrumVal.getBoundingClientRect();\n };\n AgColorPanel.prototype.refreshHueRect = function () {\n return this.spectrumHueRect = this.spectrumHue.getBoundingClientRect();\n };\n AgColorPanel.prototype.refreshAlphaRect = function () {\n return this.spectrumAlphaRect = this.spectrumAlpha.getBoundingClientRect();\n };\n AgColorPanel.prototype.onSpectrumDraggerDown = function (e) {\n this.refreshSpectrumRect();\n this.isSpectrumDragging = true;\n this.moveDragger(e);\n };\n AgColorPanel.prototype.onSpectrumDraggerMove = function (e) {\n if (this.isSpectrumDragging) {\n this.moveDragger(e);\n }\n };\n AgColorPanel.prototype.onSpectrumHueDown = function (e) {\n this.refreshHueRect();\n this.isSpectrumHueDragging = true;\n this.moveHueSlider(e);\n };\n AgColorPanel.prototype.onSpectrumHueMove = function (e) {\n if (this.isSpectrumHueDragging) {\n this.moveHueSlider(e);\n }\n };\n AgColorPanel.prototype.onSpectrumAlphaDown = function (e) {\n this.refreshAlphaRect();\n this.isSpectrumAlphaDragging = true;\n this.moveAlphaSlider(e);\n };\n AgColorPanel.prototype.onSpectrumAlphaMove = function (e) {\n if (this.isSpectrumAlphaDragging) {\n this.moveAlphaSlider(e);\n }\n };\n AgColorPanel.prototype.onMouseUp = function () {\n this.isSpectrumDragging = false;\n this.isSpectrumHueDragging = false;\n this.isSpectrumAlphaDragging = false;\n };\n AgColorPanel.prototype.moveDragger = function (e) {\n var valRect = this.spectrumValRect;\n if (valRect) {\n var x = e.clientX - valRect.left;\n var y = e.clientY - valRect.top;\n x = Math.max(x, 0);\n x = Math.min(x, valRect.width);\n y = Math.max(y, 0);\n y = Math.min(y, valRect.height);\n this.setSpectrumValue(x / valRect.width, 1 - y / valRect.height);\n }\n };\n AgColorPanel.prototype.moveHueSlider = function (e) {\n var hueRect = this.spectrumHueRect;\n if (hueRect) {\n var slider = this.spectrumHueSlider;\n var sliderRect = slider.getBoundingClientRect();\n var x = e.clientX - hueRect.left;\n x = Math.max(x, 0);\n x = Math.min(x, hueRect.width);\n this.H = 1 - x / hueRect.width;\n slider.style.left = (x + sliderRect.width / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.moveAlphaSlider = function (e) {\n var alphaRect = this.spectrumAlphaRect;\n if (alphaRect) {\n var slider = this.spectrumAlphaSlider;\n var sliderRect = slider.getBoundingClientRect();\n var x = e.clientX - alphaRect.left;\n x = Math.max(x, 0);\n x = Math.min(x, alphaRect.width);\n this.A = x / alphaRect.width;\n slider.style.left = (x + sliderRect.width / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.update = function () {\n var color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n var spectrumColor = Color.fromHSB(this.H * 360, 1, 1);\n var rgbaColor = color.toRgbaString();\n // the recent color list needs to know color has actually changed\n var colorPicker = this.picker;\n var existingColor = Color.fromString(colorPicker.getValue());\n if (existingColor.toRgbaString() !== rgbaColor) {\n this.colorChanged = true;\n }\n colorPicker.setValue(rgbaColor);\n this.spectrumColor.style.backgroundColor = spectrumColor.toRgbaString();\n this.spectrumDragger.style.backgroundColor = rgbaColor;\n };\n /**\n * @param saturation In the [0, 1] interval.\n * @param brightness In the [0, 1] interval.\n */\n AgColorPanel.prototype.setSpectrumValue = function (saturation, brightness) {\n var valRect = this.spectrumValRect || this.refreshSpectrumRect();\n if (valRect) {\n var dragger = this.spectrumDragger;\n var draggerRect = dragger.getBoundingClientRect();\n saturation = Math.max(0, saturation);\n saturation = Math.min(1, saturation);\n brightness = Math.max(0, brightness);\n brightness = Math.min(1, brightness);\n this.S = saturation;\n this.B = brightness;\n dragger.style.left = (saturation * valRect.width - draggerRect.width / 2) + 'px';\n dragger.style.top = ((1 - brightness) * valRect.height - draggerRect.height / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.initRecentColors = function () {\n var recentColors = AgColorPanel.recentColors;\n var innerHtml = recentColors.map(function (color, index) {\n return \"
\";\n });\n this.recentColors.innerHTML = innerHtml.join('');\n };\n AgColorPanel.prototype.setValue = function (val) {\n var color = Color.fromString(val);\n var _a = __read$9(color.toHSB(), 3), h = _a[0], s = _a[1], b = _a[2];\n this.H = (isNaN(h) ? 0 : h) / 360;\n this.A = color.a;\n var spectrumHueRect = this.spectrumHueRect || this.refreshHueRect();\n var spectrumAlphaRect = this.spectrumAlphaRect || this.refreshAlphaRect();\n this.spectrumHueSlider.style.left = ((this.H - 1) * -spectrumHueRect.width) + \"px\";\n this.spectrumAlphaSlider.style.left = (this.A * spectrumAlphaRect.width) + \"px\";\n this.setSpectrumValue(s, b);\n };\n AgColorPanel.prototype.onRecentColorClick = function (e) {\n var target = e.target;\n if (!exists(target.id)) {\n return;\n }\n var id = parseInt(target.id, 10);\n this.setValue(AgColorPanel.recentColors[id]);\n this.destroy();\n };\n AgColorPanel.prototype.addRecentColor = function () {\n var color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n var rgbaColor = color.toRgbaString();\n var recentColors = AgColorPanel.recentColors;\n if (!this.colorChanged || recentColors[0] === rgbaColor) {\n return;\n }\n // remove duplicate color\n recentColors = recentColors.filter(function (currentColor) { return currentColor != rgbaColor; });\n // add color to head\n recentColors = [rgbaColor].concat(recentColors);\n // ensure we don't exceed max number of recent colors\n if (recentColors.length > AgColorPanel.maxRecentColors) {\n recentColors = recentColors.slice(0, AgColorPanel.maxRecentColors);\n }\n AgColorPanel.recentColors = recentColors;\n };\n AgColorPanel.prototype.destroy = function () {\n this.addRecentColor();\n _super.prototype.destroy.call(this);\n };\n AgColorPanel.maxRecentColors = 8;\n AgColorPanel.recentColors = [];\n AgColorPanel.TEMPLATE = \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\";\n __decorate$X([\n RefSelector('spectrumColor')\n ], AgColorPanel.prototype, \"spectrumColor\", void 0);\n __decorate$X([\n RefSelector('spectrumVal')\n ], AgColorPanel.prototype, \"spectrumVal\", void 0);\n __decorate$X([\n RefSelector('spectrumDragger')\n ], AgColorPanel.prototype, \"spectrumDragger\", void 0);\n __decorate$X([\n RefSelector('spectrumHue')\n ], AgColorPanel.prototype, \"spectrumHue\", void 0);\n __decorate$X([\n RefSelector('spectrumHueSlider')\n ], AgColorPanel.prototype, \"spectrumHueSlider\", void 0);\n __decorate$X([\n RefSelector('spectrumAlpha')\n ], AgColorPanel.prototype, \"spectrumAlpha\", void 0);\n __decorate$X([\n RefSelector('spectrumAlphaSlider')\n ], AgColorPanel.prototype, \"spectrumAlphaSlider\", void 0);\n __decorate$X([\n RefSelector('recentColors')\n ], AgColorPanel.prototype, \"recentColors\", void 0);\n __decorate$X([\n PostConstruct\n ], AgColorPanel.prototype, \"postConstruct\", null);\n return AgColorPanel;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$W = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$W = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgPanel = /** @class */ (function (_super) {\n __extends$W(AgPanel, _super);\n function AgPanel(config) {\n var _this = _super.call(this, AgPanel.getTemplate(config)) || this;\n _this.closable = true;\n _this.config = config;\n return _this;\n }\n AgPanel.getTemplate = function (config) {\n var cssIdentifier = (config && config.cssIdentifier) || 'default';\n return /* html */ \"
\\n
\\n \\n
\\n
\\n
\\n
\";\n };\n AgPanel.prototype.postConstruct = function () {\n var _this = this;\n var _a = this.config, component = _a.component, closable = _a.closable, hideTitleBar = _a.hideTitleBar, title = _a.title, _b = _a.minWidth, minWidth = _b === void 0 ? 250 : _b, width = _a.width, _c = _a.minHeight, minHeight = _c === void 0 ? 250 : _c, height = _a.height, centered = _a.centered, popup = _a.popup, x = _a.x, y = _a.y;\n this.positionableFeature = new PositionableFeature(this.getGui(), {\n minWidth: minWidth, width: width, minHeight: minHeight, height: height, centered: centered, x: x, y: y, popup: popup,\n calculateTopBuffer: function () { return _this.positionableFeature.getHeight() - _this.getBodyHeight(); }\n });\n this.createManagedBean(this.positionableFeature);\n var eGui = this.getGui();\n if (component) {\n this.setBodyComponent(component);\n }\n if (!hideTitleBar) {\n if (title) {\n this.setTitle(title);\n }\n this.setClosable(closable != null ? closable : this.closable);\n }\n else {\n this.eTitleBar.classList.add('ag-hidden');\n }\n this.addManagedListener(this.eTitleBar, 'mousedown', function (e) {\n var eDocument = _this.gridOptionsWrapper.getDocument();\n if (eGui.contains(e.relatedTarget) ||\n eGui.contains(eDocument.activeElement) ||\n _this.eTitleBarButtons.contains(e.target)) {\n e.preventDefault();\n return;\n }\n var focusEl = _this.eContentWrapper.querySelector('button, [href], input, select, textarea, [tabindex]');\n if (focusEl) {\n focusEl.focus();\n }\n });\n if (popup && this.positionableFeature.isPositioned()) {\n return;\n }\n if (this.renderComponent) {\n this.renderComponent();\n }\n this.positionableFeature.initialisePosition();\n this.eContentWrapper.style.height = '0';\n };\n AgPanel.prototype.renderComponent = function () {\n var _this = this;\n var eGui = this.getGui();\n eGui.focus();\n this.close = function () {\n eGui.parentElement.removeChild(eGui);\n _this.destroy();\n };\n };\n AgPanel.prototype.getHeight = function () {\n return this.positionableFeature.getHeight();\n };\n AgPanel.prototype.setHeight = function (height) {\n this.positionableFeature.setHeight(height);\n };\n AgPanel.prototype.getWidth = function () {\n return this.positionableFeature.getWidth();\n };\n AgPanel.prototype.setWidth = function (width) {\n this.positionableFeature.setWidth(width);\n };\n AgPanel.prototype.setClosable = function (closable) {\n if (closable !== this.closable) {\n this.closable = closable;\n }\n if (closable) {\n var closeButtonComp = this.closeButtonComp = new Component(AgPanel.CLOSE_BTN_TEMPLATE);\n this.getContext().createBean(closeButtonComp);\n var eGui = closeButtonComp.getGui();\n var child = createIconNoSpan('close', this.gridOptionsWrapper);\n child.classList.add('ag-panel-title-bar-button-icon');\n eGui.appendChild(child);\n this.addTitleBarButton(closeButtonComp);\n closeButtonComp.addManagedListener(eGui, 'click', this.onBtClose.bind(this));\n }\n else if (this.closeButtonComp) {\n var eGui = this.closeButtonComp.getGui();\n eGui.parentElement.removeChild(eGui);\n this.closeButtonComp = this.destroyBean(this.closeButtonComp);\n }\n };\n AgPanel.prototype.setBodyComponent = function (bodyComponent) {\n bodyComponent.setParentComponent(this);\n this.eContentWrapper.appendChild(bodyComponent.getGui());\n };\n AgPanel.prototype.addTitleBarButton = function (button, position) {\n var eTitleBarButtons = this.eTitleBarButtons;\n var buttons = eTitleBarButtons.children;\n var len = buttons.length;\n if (position == null) {\n position = len;\n }\n position = Math.max(0, Math.min(position, len));\n button.addCssClass('ag-panel-title-bar-button');\n var eGui = button.getGui();\n if (position === 0) {\n eTitleBarButtons.insertAdjacentElement('afterbegin', eGui);\n }\n else if (position === len) {\n eTitleBarButtons.insertAdjacentElement('beforeend', eGui);\n }\n else {\n buttons[position - 1].insertAdjacentElement('afterend', eGui);\n }\n button.setParentComponent(this);\n };\n AgPanel.prototype.getBodyHeight = function () {\n return getInnerHeight(this.eContentWrapper);\n };\n AgPanel.prototype.getBodyWidth = function () {\n return getInnerWidth(this.eContentWrapper);\n };\n AgPanel.prototype.setTitle = function (title) {\n this.eTitle.innerText = title;\n };\n // called when user hits the 'x' in the top right\n AgPanel.prototype.onBtClose = function () {\n this.close();\n };\n AgPanel.prototype.destroy = function () {\n if (this.closeButtonComp) {\n this.closeButtonComp = this.destroyBean(this.closeButtonComp);\n }\n var eGui = this.getGui();\n if (eGui && eGui.offsetParent) {\n this.close();\n }\n _super.prototype.destroy.call(this);\n };\n AgPanel.CLOSE_BTN_TEMPLATE = \"
\";\n __decorate$W([\n RefSelector('eContentWrapper')\n ], AgPanel.prototype, \"eContentWrapper\", void 0);\n __decorate$W([\n RefSelector('eTitleBar')\n ], AgPanel.prototype, \"eTitleBar\", void 0);\n __decorate$W([\n RefSelector('eTitleBarButtons')\n ], AgPanel.prototype, \"eTitleBarButtons\", void 0);\n __decorate$W([\n RefSelector('eTitle')\n ], AgPanel.prototype, \"eTitle\", void 0);\n __decorate$W([\n PostConstruct\n ], AgPanel.prototype, \"postConstruct\", null);\n return AgPanel;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$V = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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$2 = (undefined && undefined.__assign) || function () {\n __assign$2 = 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$2.apply(this, arguments);\n};\nvar __decorate$V = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgDialog = /** @class */ (function (_super) {\n __extends$V(AgDialog, _super);\n function AgDialog(config) {\n var _this = _super.call(this, __assign$2(__assign$2({}, config), { popup: true })) || this;\n _this.isMaximizable = false;\n _this.isMaximized = false;\n _this.maximizeListeners = [];\n _this.resizeListenerDestroy = null;\n _this.lastPosition = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n return _this;\n }\n AgDialog.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var _a = this.config, movable = _a.movable, resizable = _a.resizable, maximizable = _a.maximizable;\n this.addCssClass('ag-dialog');\n _super.prototype.postConstruct.call(this);\n this.addManagedListener(eGui, 'focusin', function (e) {\n if (eGui.contains(e.relatedTarget)) {\n return;\n }\n _this.popupService.bringPopupToFront(eGui);\n });\n if (movable) {\n this.setMovable(movable);\n }\n if (maximizable) {\n this.setMaximizable(maximizable);\n }\n if (resizable) {\n this.setResizable(resizable);\n }\n };\n AgDialog.prototype.renderComponent = function () {\n var eGui = this.getGui();\n var _a = this.config, alwaysOnTop = _a.alwaysOnTop, modal = _a.modal, title = _a.title;\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: modal,\n eChild: eGui,\n closeOnEsc: true,\n closedCallback: this.destroy.bind(this),\n alwaysOnTop: alwaysOnTop,\n ariaLabel: title || translate('ariaLabelDialog', 'Dialog')\n });\n if (addPopupRes) {\n this.close = addPopupRes.hideFunc;\n }\n };\n AgDialog.prototype.toggleMaximize = function () {\n var position = this.positionableFeature.getPosition();\n if (this.isMaximized) {\n var _a = this.lastPosition, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n this.setWidth(width);\n this.setHeight(height);\n this.positionableFeature.offsetElement(x, y);\n }\n else {\n this.lastPosition.width = this.getWidth();\n this.lastPosition.height = this.getHeight();\n this.lastPosition.x = position.x;\n this.lastPosition.y = position.y;\n this.positionableFeature.offsetElement(0, 0);\n this.setHeight('100%');\n this.setWidth('100%');\n }\n this.isMaximized = !this.isMaximized;\n this.refreshMaximizeIcon();\n };\n AgDialog.prototype.refreshMaximizeIcon = function () {\n setDisplayed(this.maximizeIcon, !this.isMaximized);\n setDisplayed(this.minimizeIcon, this.isMaximized);\n };\n AgDialog.prototype.clearMaximizebleListeners = function () {\n if (this.maximizeListeners.length) {\n this.maximizeListeners.forEach(function (destroyListener) { return destroyListener(); });\n this.maximizeListeners.length = 0;\n }\n if (this.resizeListenerDestroy) {\n this.resizeListenerDestroy();\n this.resizeListenerDestroy = null;\n }\n };\n AgDialog.prototype.destroy = function () {\n this.maximizeButtonComp = this.destroyBean(this.maximizeButtonComp);\n this.clearMaximizebleListeners();\n _super.prototype.destroy.call(this);\n };\n AgDialog.prototype.setResizable = function (resizable) {\n this.positionableFeature.setResizable(resizable);\n };\n AgDialog.prototype.setMovable = function (movable) {\n this.positionableFeature.setMovable(movable, this.eTitleBar);\n };\n AgDialog.prototype.setMaximizable = function (maximizable) {\n var _this = this;\n if (!maximizable) {\n this.clearMaximizebleListeners();\n if (this.maximizeButtonComp) {\n this.destroyBean(this.maximizeButtonComp);\n this.maximizeButtonComp = this.maximizeIcon = this.minimizeIcon = undefined;\n }\n return;\n }\n var eTitleBar = this.eTitleBar;\n if (!eTitleBar || maximizable === this.isMaximizable) {\n return;\n }\n var maximizeButtonComp = this.maximizeButtonComp =\n this.createBean(new Component(/* html */ \"
\"));\n var eGui = maximizeButtonComp.getGui();\n eGui.appendChild(this.maximizeIcon = createIconNoSpan('maximize', this.gridOptionsWrapper));\n this.maximizeIcon.classList.add('ag-panel-title-bar-button-icon');\n eGui.appendChild(this.minimizeIcon = createIconNoSpan('minimize', this.gridOptionsWrapper));\n this.minimizeIcon.classList.add('ag-panel-title-bar-button-icon', 'ag-hidden');\n maximizeButtonComp.addManagedListener(eGui, 'click', this.toggleMaximize.bind(this));\n this.addTitleBarButton(maximizeButtonComp, 0);\n this.maximizeListeners.push(this.addManagedListener(eTitleBar, 'dblclick', this.toggleMaximize.bind(this)));\n this.resizeListenerDestroy = this.addManagedListener(this, 'resize', function () {\n _this.isMaximized = false;\n _this.refreshMaximizeIcon();\n });\n };\n __decorate$V([\n Autowired('popupService')\n ], AgDialog.prototype, \"popupService\", void 0);\n return AgDialog;\n}(AgPanel));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$U = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AgColorPicker = /** @class */ (function (_super) {\n __extends$U(AgColorPicker, _super);\n function AgColorPicker(config) {\n var _this = _super.call(this, config, 'ag-color-picker', 'colorPicker') || this;\n if (config && config.color) {\n _this.value = config.color;\n }\n return _this;\n }\n AgColorPicker.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n if (this.value) {\n this.setValue(this.value);\n }\n };\n AgColorPicker.prototype.showPicker = function () {\n var _this = this;\n var eGuiRect = this.getGui().getBoundingClientRect();\n var colorDialog = this.createBean(new AgDialog({\n closable: false,\n modal: true,\n hideTitleBar: true,\n minWidth: 190,\n width: 190,\n height: 250,\n x: eGuiRect.right - 190,\n y: eGuiRect.top - 250\n }));\n this.isPickerDisplayed = true;\n colorDialog.addCssClass('ag-color-dialog');\n setAriaExpanded(this.eWrapper, true);\n var colorPanel = this.createBean(new AgColorPanel({ picker: this }));\n colorPanel.addDestroyFunc(function () {\n if (colorDialog.isAlive()) {\n _this.destroyBean(colorDialog);\n }\n });\n colorDialog.setParentComponent(this);\n colorDialog.setBodyComponent(colorPanel);\n colorPanel.setValue(this.getValue());\n colorDialog.addDestroyFunc(function () {\n // here we check if the picker was already being\n // destroyed to avoid a stack overflow\n if (!_this.isDestroyingPicker) {\n _this.isDestroyingPicker = true;\n if (colorPanel.isAlive()) {\n _this.destroyBean(colorPanel);\n }\n }\n else {\n _this.isDestroyingPicker = false;\n }\n if (_this.isAlive()) {\n setAriaExpanded(_this.eWrapper, false);\n _this.getFocusableElement().focus();\n }\n _this.isPickerDisplayed = false;\n });\n return colorDialog;\n };\n AgColorPicker.prototype.setValue = function (color) {\n if (this.value === color) {\n return this;\n }\n this.eDisplayField.style.backgroundColor = color;\n return _super.prototype.setValue.call(this, color);\n };\n AgColorPicker.prototype.getValue = function () {\n return this.value;\n };\n return AgColorPicker;\n}(AgPickerField));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$T = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$U = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgGroupComponent = /** @class */ (function (_super) {\n __extends$T(AgGroupComponent, _super);\n function AgGroupComponent(params) {\n if (params === void 0) { params = {}; }\n var _this = _super.call(this, AgGroupComponent.getTemplate(params)) || this;\n _this.suppressEnabledCheckbox = true;\n _this.suppressOpenCloseIcons = false;\n var title = params.title, enabled = params.enabled, items = params.items, suppressEnabledCheckbox = params.suppressEnabledCheckbox, suppressOpenCloseIcons = params.suppressOpenCloseIcons;\n _this.title = title;\n _this.cssIdentifier = params.cssIdentifier || 'default';\n _this.enabled = enabled != null ? enabled : true;\n _this.items = items || [];\n _this.alignItems = params.alignItems || 'center';\n if (suppressEnabledCheckbox != null) {\n _this.suppressEnabledCheckbox = suppressEnabledCheckbox;\n }\n if (suppressOpenCloseIcons != null) {\n _this.suppressOpenCloseIcons = suppressOpenCloseIcons;\n }\n return _this;\n }\n AgGroupComponent.getTemplate = function (params) {\n var cssIdentifier = params.cssIdentifier || 'default';\n var direction = params.direction || 'vertical';\n return /* html */ \"
\\n
\\n \\n \\n \\n
\\n
\\n \\n
\\n
\\n
\";\n };\n AgGroupComponent.prototype.postConstruct = function () {\n if (this.items.length) {\n var initialItems = this.items;\n this.items = [];\n this.addItems(initialItems);\n }\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.cbGroupEnabled.setLabel(localeTextFunc('enabled', 'Enabled'));\n if (this.title) {\n this.setTitle(this.title);\n }\n if (this.enabled) {\n this.setEnabled(this.enabled);\n }\n this.setAlignItems(this.alignItems);\n this.hideEnabledCheckbox(this.suppressEnabledCheckbox);\n this.hideOpenCloseIcons(this.suppressOpenCloseIcons);\n this.setupExpandContract();\n this.refreshAriaStatus();\n this.refreshChildDisplay();\n };\n AgGroupComponent.prototype.setupExpandContract = function () {\n var _this = this;\n this.eGroupClosedIcon.appendChild(createIcon('columnSelectClosed', this.gridOptionsWrapper, null));\n this.eGroupOpenedIcon.appendChild(createIcon('columnSelectOpen', this.gridOptionsWrapper, null));\n this.addManagedListener(this.eTitleBar, 'click', function () { return _this.toggleGroupExpand(); });\n this.addManagedListener(this.eTitleBar, 'keydown', function (e) {\n switch (e.key) {\n case KeyCode.ENTER:\n case KeyCode.SPACE:\n e.preventDefault();\n _this.toggleGroupExpand();\n break;\n case KeyCode.RIGHT:\n case KeyCode.LEFT:\n e.preventDefault();\n _this.toggleGroupExpand(e.key === KeyCode.RIGHT);\n break;\n }\n });\n };\n AgGroupComponent.prototype.refreshAriaStatus = function () {\n if (!this.suppressOpenCloseIcons) {\n setAriaExpanded(this.eTitleBar, this.expanded);\n }\n };\n AgGroupComponent.prototype.refreshChildDisplay = function () {\n var showIcon = !this.suppressOpenCloseIcons;\n setDisplayed(this.eToolbar, this.expanded && !this.suppressEnabledCheckbox);\n setDisplayed(this.eGroupOpenedIcon, showIcon && this.expanded);\n setDisplayed(this.eGroupClosedIcon, showIcon && !this.expanded);\n };\n AgGroupComponent.prototype.isExpanded = function () {\n return this.expanded;\n };\n AgGroupComponent.prototype.setAlignItems = function (alignment) {\n if (this.alignItems !== alignment) {\n this.removeCssClass(\"ag-group-item-alignment-\" + this.alignItems);\n }\n this.alignItems = alignment;\n var newCls = \"ag-group-item-alignment-\" + this.alignItems;\n this.addCssClass(newCls);\n return this;\n };\n AgGroupComponent.prototype.toggleGroupExpand = function (expanded) {\n if (this.suppressOpenCloseIcons) {\n this.expanded = true;\n this.refreshChildDisplay();\n setDisplayed(this.eContainer, true);\n return this;\n }\n expanded = expanded != null ? expanded : !this.expanded;\n if (this.expanded === expanded) {\n return this;\n }\n this.expanded = expanded;\n this.refreshAriaStatus();\n this.refreshChildDisplay();\n setDisplayed(this.eContainer, expanded);\n this.dispatchEvent({ type: this.expanded ? AgGroupComponent.EVENT_EXPANDED : AgGroupComponent.EVENT_COLLAPSED });\n return this;\n };\n AgGroupComponent.prototype.addItems = function (items) {\n var _this = this;\n items.forEach(function (item) { return _this.addItem(item); });\n };\n AgGroupComponent.prototype.addItem = function (item) {\n var container = this.eContainer;\n var el = item instanceof Component ? item.getGui() : item;\n el.classList.add('ag-group-item', \"ag-\" + this.cssIdentifier + \"-group-item\");\n container.appendChild(el);\n this.items.push(el);\n };\n AgGroupComponent.prototype.hideItem = function (hide, index) {\n var itemToHide = this.items[index];\n itemToHide.classList.toggle('ag-hidden', hide);\n };\n AgGroupComponent.prototype.setTitle = function (title) {\n this.eTitle.innerText = title;\n return this;\n };\n AgGroupComponent.prototype.addCssClassToTitleBar = function (cssClass) {\n this.eTitleBar.classList.add(cssClass);\n };\n AgGroupComponent.prototype.setEnabled = function (enabled, skipToggle) {\n this.enabled = enabled;\n this.refreshDisabledStyles();\n this.toggleGroupExpand(enabled);\n if (!skipToggle) {\n this.cbGroupEnabled.setValue(enabled);\n }\n return this;\n };\n AgGroupComponent.prototype.isEnabled = function () {\n return this.enabled;\n };\n AgGroupComponent.prototype.onEnableChange = function (callbackFn) {\n var _this = this;\n this.cbGroupEnabled.onValueChange(function (newSelection) {\n _this.setEnabled(newSelection, true);\n callbackFn(newSelection);\n });\n return this;\n };\n AgGroupComponent.prototype.hideEnabledCheckbox = function (hide) {\n this.suppressEnabledCheckbox = hide;\n this.refreshChildDisplay();\n this.refreshDisabledStyles();\n return this;\n };\n AgGroupComponent.prototype.hideOpenCloseIcons = function (hide) {\n this.suppressOpenCloseIcons = hide;\n if (hide) {\n this.toggleGroupExpand(true);\n }\n return this;\n };\n AgGroupComponent.prototype.refreshDisabledStyles = function () {\n this.addOrRemoveCssClass('ag-disabled', !this.enabled);\n if (this.suppressEnabledCheckbox && !this.enabled) {\n this.eTitleBar.classList.add('ag-disabled-group-title-bar');\n this.eTitleBar.removeAttribute('tabindex');\n }\n else {\n this.eTitleBar.classList.remove('ag-disabled-group-title-bar');\n this.eTitleBar.setAttribute('tabindex', '0');\n }\n this.eContainer.classList.toggle('ag-disabled-group-container', !this.enabled);\n };\n AgGroupComponent.EVENT_EXPANDED = 'expanded';\n AgGroupComponent.EVENT_COLLAPSED = 'collapsed';\n __decorate$U([\n RefSelector('eTitleBar')\n ], AgGroupComponent.prototype, \"eTitleBar\", void 0);\n __decorate$U([\n RefSelector('eGroupOpenedIcon')\n ], AgGroupComponent.prototype, \"eGroupOpenedIcon\", void 0);\n __decorate$U([\n RefSelector('eGroupClosedIcon')\n ], AgGroupComponent.prototype, \"eGroupClosedIcon\", void 0);\n __decorate$U([\n RefSelector('eToolbar')\n ], AgGroupComponent.prototype, \"eToolbar\", void 0);\n __decorate$U([\n RefSelector('cbGroupEnabled')\n ], AgGroupComponent.prototype, \"cbGroupEnabled\", void 0);\n __decorate$U([\n RefSelector('eTitle')\n ], AgGroupComponent.prototype, \"eTitle\", void 0);\n __decorate$U([\n RefSelector('eContainer')\n ], AgGroupComponent.prototype, \"eContainer\", void 0);\n __decorate$U([\n PostConstruct\n ], AgGroupComponent.prototype, \"postConstruct\", null);\n return AgGroupComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$S = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$T = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TabGuardCtrl = /** @class */ (function (_super) {\n __extends$S(TabGuardCtrl, _super);\n function TabGuardCtrl(params) {\n var _this = _super.call(this) || this;\n _this.skipTabGuardFocus = false;\n var comp = params.comp, eTopGuard = params.eTopGuard, eBottomGuard = params.eBottomGuard, focusInnerElement = params.focusInnerElement, onFocusIn = params.onFocusIn, onFocusOut = params.onFocusOut, shouldStopEventPropagation = params.shouldStopEventPropagation, onTabKeyDown = params.onTabKeyDown, handleKeyDown = params.handleKeyDown, eFocusableElement = params.eFocusableElement;\n _this.comp = comp;\n _this.eTopGuard = eTopGuard;\n _this.eBottomGuard = eBottomGuard;\n _this.providedFocusInnerElement = focusInnerElement;\n _this.eFocusableElement = eFocusableElement;\n _this.providedFocusIn = onFocusIn;\n _this.providedFocusOut = onFocusOut;\n _this.providedShouldStopEventPropagation = shouldStopEventPropagation;\n _this.providedOnTabKeyDown = onTabKeyDown;\n _this.providedHandleKeyDown = handleKeyDown;\n return _this;\n }\n TabGuardCtrl.prototype.postConstruct = function () {\n var _this = this;\n this.createManagedBean(new ManagedFocusFeature(this.eFocusableElement, {\n shouldStopEventPropagation: function () { return _this.shouldStopEventPropagation(); },\n onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n handleKeyDown: function (e) { return _this.handleKeyDown(e); },\n onFocusIn: function (e) { return _this.onFocusIn(e); },\n onFocusOut: function (e) { return _this.onFocusOut(e); }\n }));\n this.activateTabGuards();\n [this.eTopGuard, this.eBottomGuard].forEach(function (guard) { return _this.addManagedListener(guard, 'focus', _this.onFocus.bind(_this)); });\n };\n TabGuardCtrl.prototype.handleKeyDown = function (e) {\n if (this.providedHandleKeyDown) {\n this.providedHandleKeyDown(e);\n }\n };\n TabGuardCtrl.prototype.tabGuardsAreActive = function () {\n return !!this.eTopGuard && this.eTopGuard.hasAttribute('tabIndex');\n };\n TabGuardCtrl.prototype.shouldStopEventPropagation = function () {\n if (this.providedShouldStopEventPropagation) {\n return this.providedShouldStopEventPropagation();\n }\n return false;\n };\n TabGuardCtrl.prototype.activateTabGuards = function () {\n this.comp.setTabIndex(this.getGridTabIndex());\n };\n TabGuardCtrl.prototype.deactivateTabGuards = function () {\n this.comp.setTabIndex();\n };\n TabGuardCtrl.prototype.onFocus = function (e) {\n if (this.skipTabGuardFocus) {\n this.skipTabGuardFocus = false;\n return;\n }\n var fromBottom = e.target === this.eBottomGuard;\n if (this.providedFocusInnerElement) {\n this.providedFocusInnerElement(fromBottom);\n }\n else {\n this.focusInnerElement(fromBottom);\n }\n };\n TabGuardCtrl.prototype.onFocusIn = function (e) {\n if (this.providedFocusIn && this.providedFocusIn(e)) {\n return;\n }\n this.deactivateTabGuards();\n };\n TabGuardCtrl.prototype.onFocusOut = function (e) {\n if (this.providedFocusOut && this.providedFocusOut(e)) {\n return;\n }\n if (!this.eFocusableElement.contains(e.relatedTarget)) {\n this.activateTabGuards();\n }\n };\n TabGuardCtrl.prototype.onTabKeyDown = function (e) {\n var _this = this;\n if (this.providedOnTabKeyDown) {\n this.providedOnTabKeyDown(e);\n return;\n }\n if (e.defaultPrevented) {\n return;\n }\n var tabGuardsAreActive = this.tabGuardsAreActive();\n if (tabGuardsAreActive) {\n this.deactivateTabGuards();\n }\n var nextRoot = this.getNextFocusableElement(e.shiftKey);\n if (tabGuardsAreActive) {\n // ensure the tab guards are only re-instated once the event has finished processing, to avoid the browser\n // tabbing to the tab guard from inside the component\n setTimeout(function () { return _this.activateTabGuards(); }, 0);\n }\n if (!nextRoot) {\n return;\n }\n nextRoot.focus();\n e.preventDefault();\n };\n TabGuardCtrl.prototype.getGridTabIndex = function () {\n return this.gridOptionsWrapper.getGridTabIndex();\n };\n TabGuardCtrl.prototype.focusInnerElement = function (fromBottom) {\n if (fromBottom === void 0) { fromBottom = false; }\n var focusable = this.focusService.findFocusableElements(this.eFocusableElement);\n if (this.tabGuardsAreActive()) {\n // remove tab guards from this component from list of focusable elements\n focusable.splice(0, 1);\n focusable.splice(focusable.length - 1, 1);\n }\n if (!focusable.length) {\n return;\n }\n focusable[fromBottom ? focusable.length - 1 : 0].focus();\n };\n TabGuardCtrl.prototype.getNextFocusableElement = function (backwards) {\n return this.focusService.findNextFocusableElement(this.eFocusableElement, false, backwards);\n };\n TabGuardCtrl.prototype.forceFocusOutOfContainer = function (up) {\n if (up === void 0) { up = false; }\n var tabGuardToFocus = up ? this.eTopGuard : this.eBottomGuard;\n this.activateTabGuards();\n this.skipTabGuardFocus = true;\n tabGuardToFocus.focus();\n };\n __decorate$T([\n Autowired('focusService')\n ], TabGuardCtrl.prototype, \"focusService\", void 0);\n __decorate$T([\n PostConstruct\n ], TabGuardCtrl.prototype, \"postConstruct\", null);\n return TabGuardCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$R = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read$8 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$7 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$8(arguments[i]));\n return ar;\n};\nvar TabGuardComp = /** @class */ (function (_super) {\n __extends$R(TabGuardComp, _super);\n function TabGuardComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TabGuardComp.prototype.initialiseTabGuard = function (params) {\n this.eTopGuard = this.createTabGuard('top');\n this.eBottomGuard = this.createTabGuard('bottom');\n this.eFocusableElement = this.getFocusableElement();\n var tabGuards = [this.eTopGuard, this.eBottomGuard];\n var compProxy = {\n setTabIndex: function (tabIndex) {\n tabGuards.forEach(function (tabGuard) { return tabIndex != null ? tabGuard.setAttribute('tabIndex', tabIndex) : tabGuard.removeAttribute('tabIndex'); });\n }\n };\n this.addTabGuards(this.eTopGuard, this.eBottomGuard);\n this.tabGuardCtrl = this.createManagedBean(new TabGuardCtrl({\n comp: compProxy,\n eTopGuard: this.eTopGuard,\n eBottomGuard: this.eBottomGuard,\n eFocusableElement: this.eFocusableElement,\n onFocusIn: params.onFocusIn,\n onFocusOut: params.onFocusOut,\n focusInnerElement: params.focusInnerElement,\n handleKeyDown: params.handleKeyDown,\n onTabKeyDown: params.onTabKeyDown,\n shouldStopEventPropagation: params.shouldStopEventPropagation\n }));\n };\n TabGuardComp.prototype.createTabGuard = function (side) {\n var tabGuard = document.createElement('div');\n tabGuard.classList.add('ag-tab-guard', \"ag-tab-guard-\" + side);\n setAriaRole(tabGuard, 'presentation');\n return tabGuard;\n };\n TabGuardComp.prototype.addTabGuards = function (topTabGuard, bottomTabGuard) {\n this.eFocusableElement.insertAdjacentElement('afterbegin', topTabGuard);\n this.eFocusableElement.insertAdjacentElement('beforeend', bottomTabGuard);\n };\n TabGuardComp.prototype.removeAllChildrenExceptTabGuards = function () {\n var tabGuards = [this.eTopGuard, this.eBottomGuard];\n clearElement(this.getFocusableElement());\n this.addTabGuards.apply(this, __spread$7(tabGuards));\n };\n TabGuardComp.prototype.forceFocusOutOfContainer = function (up) {\n if (up === void 0) { up = false; }\n this.tabGuardCtrl.forceFocusOutOfContainer(up);\n };\n TabGuardComp.prototype.appendChild = function (newChild, container) {\n if (!isNodeOrElement(newChild)) {\n newChild = newChild.getGui();\n }\n var bottomTabGuard = this.eBottomGuard;\n if (bottomTabGuard) {\n bottomTabGuard.insertAdjacentElement('beforebegin', newChild);\n }\n else {\n _super.prototype.appendChild.call(this, newChild, container);\n }\n };\n return TabGuardComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$Q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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$1 = (undefined && undefined.__assign) || function () {\n __assign$1 = 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$1.apply(this, arguments);\n};\nvar __decorate$S = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgMenuList = /** @class */ (function (_super) {\n __extends$Q(AgMenuList, _super);\n function AgMenuList(level) {\n if (level === void 0) { level = 1; }\n var _this = _super.call(this, /* html */ \"
\") || this;\n _this.level = level;\n _this.menuItems = [];\n return _this;\n }\n AgMenuList.prototype.postConstruct = function () {\n var _this = this;\n this.initialiseTabGuard({\n onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n handleKeyDown: function (e) { return _this.handleKeyDown(e); }\n });\n };\n AgMenuList.prototype.onTabKeyDown = function (e) {\n var parent = this.getParentComponent();\n var parentGui = parent && parent.getGui();\n var isManaged = parentGui && parentGui.classList.contains('ag-focus-managed');\n if (!isManaged) {\n e.preventDefault();\n }\n if (e.shiftKey) {\n this.closeIfIsChild(e);\n }\n };\n AgMenuList.prototype.handleKeyDown = function (e) {\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.RIGHT:\n case KeyCode.DOWN:\n case KeyCode.LEFT:\n e.preventDefault();\n this.handleNavKey(e.key);\n break;\n case KeyCode.ESCAPE:\n var topMenu = this.findTopMenu();\n if (topMenu) {\n this.focusService.focusInto(topMenu.getGui());\n }\n break;\n }\n };\n AgMenuList.prototype.clearActiveItem = function () {\n if (this.activeMenuItem) {\n this.activeMenuItem.deactivate();\n this.activeMenuItem = null;\n }\n };\n AgMenuList.prototype.addMenuItems = function (menuItems) {\n var _this = this;\n if (menuItems == null) {\n return;\n }\n menuItems.forEach(function (menuItemOrString) {\n if (menuItemOrString === 'separator') {\n _this.addSeparator();\n }\n else if (typeof menuItemOrString === 'string') {\n console.warn(\"AG Grid: unrecognised menu item \" + menuItemOrString);\n }\n else {\n _this.addItem(menuItemOrString);\n }\n });\n };\n AgMenuList.prototype.addItem = function (menuItemDef) {\n var _this = this;\n var menuItem = this.createManagedBean(new AgMenuItemComponent(__assign$1(__assign$1({}, menuItemDef), { isAnotherSubMenuOpen: function () { return _this.menuItems.some(function (m) { return m.isSubMenuOpen(); }); } })));\n menuItem.setParentComponent(this);\n setAriaLevel(menuItem.getGui(), this.level);\n this.menuItems.push(menuItem);\n this.appendChild(menuItem.getGui());\n this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (event) {\n _this.dispatchEvent(event);\n });\n this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED, function (event) {\n if (_this.activeMenuItem && _this.activeMenuItem !== event.menuItem) {\n _this.activeMenuItem.deactivate();\n }\n _this.activeMenuItem = event.menuItem;\n });\n };\n AgMenuList.prototype.activateFirstItem = function () {\n var item = this.menuItems.filter(function (currentItem) { return !currentItem.isDisabled(); })[0];\n if (!item) {\n return;\n }\n item.activate();\n };\n AgMenuList.prototype.addSeparator = function () {\n var separatorHtml = /* html */ \"\\n
\\n
\\n
\\n
\\n
\\n
\";\n this.appendChild(loadTemplate(separatorHtml));\n };\n AgMenuList.prototype.findTopMenu = function () {\n var parent = this.getParentComponent();\n if (!parent && this instanceof AgMenuList) {\n return this;\n }\n while (true) {\n var nextParent = parent && parent.getParentComponent && parent.getParentComponent();\n if (!nextParent || (!(nextParent instanceof AgMenuList || nextParent instanceof AgMenuItemComponent))) {\n break;\n }\n parent = nextParent;\n }\n return parent instanceof AgMenuList ? parent : undefined;\n };\n AgMenuList.prototype.handleNavKey = function (key) {\n switch (key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n var nextItem = this.findNextItem(key === KeyCode.UP);\n if (nextItem && nextItem !== this.activeMenuItem) {\n nextItem.activate();\n }\n return;\n }\n var left = this.gridOptionsWrapper.isEnableRtl() ? KeyCode.RIGHT : KeyCode.LEFT;\n if (key === left) {\n this.closeIfIsChild();\n }\n else {\n this.openChild();\n }\n };\n AgMenuList.prototype.closeIfIsChild = function (e) {\n var parentItem = this.getParentComponent();\n if (parentItem && parentItem instanceof AgMenuItemComponent) {\n if (e) {\n e.preventDefault();\n }\n parentItem.closeSubMenu();\n parentItem.getGui().focus();\n }\n };\n AgMenuList.prototype.openChild = function () {\n if (this.activeMenuItem) {\n this.activeMenuItem.openSubMenu(true);\n }\n };\n AgMenuList.prototype.findNextItem = function (up) {\n var items = this.menuItems.filter(function (item) { return !item.isDisabled(); });\n if (!items.length) {\n return;\n }\n if (!this.activeMenuItem) {\n return up ? last(items) : items[0];\n }\n if (up) {\n items.reverse();\n }\n var nextItem;\n var foundCurrent = false;\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n if (!foundCurrent) {\n if (item === this.activeMenuItem) {\n foundCurrent = true;\n }\n continue;\n }\n nextItem = item;\n break;\n }\n return nextItem || this.activeMenuItem;\n };\n AgMenuList.prototype.destroy = function () {\n this.clearActiveItem();\n _super.prototype.destroy.call(this);\n };\n __decorate$S([\n Autowired('focusService')\n ], AgMenuList.prototype, \"focusService\", void 0);\n __decorate$S([\n PostConstruct\n ], AgMenuList.prototype, \"postConstruct\", null);\n return AgMenuList;\n}(TabGuardComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$P = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$R = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgMenuPanel = /** @class */ (function (_super) {\n __extends$P(AgMenuPanel, _super);\n function AgMenuPanel(wrappedComponent) {\n var _this = _super.call(this) || this;\n _this.wrappedComponent = wrappedComponent;\n _this.setTemplateFromElement(wrappedComponent.getGui());\n return _this;\n }\n AgMenuPanel.prototype.postConstruct = function () {\n var _this = this;\n this.initialiseTabGuard({\n onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n handleKeyDown: function (e) { return _this.handleKeyDown(e); }\n });\n };\n AgMenuPanel.prototype.handleKeyDown = function (e) {\n if (e.key === KeyCode.ESCAPE) {\n this.closePanel();\n }\n };\n AgMenuPanel.prototype.onTabKeyDown = function (e) {\n if (e.defaultPrevented) {\n return;\n }\n this.closePanel();\n e.preventDefault();\n };\n AgMenuPanel.prototype.closePanel = function () {\n var menuItem = this.parentComponent;\n menuItem.closeSubMenu();\n setTimeout(function () { return menuItem.getGui().focus(); }, 0);\n };\n __decorate$R([\n PostConstruct\n ], AgMenuPanel.prototype, \"postConstruct\", null);\n return AgMenuPanel;\n}(TabGuardComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$O = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$Q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgMenuItemComponent = /** @class */ (function (_super) {\n __extends$O(AgMenuItemComponent, _super);\n function AgMenuItemComponent(params) {\n var _this = _super.call(this) || this;\n _this.params = params;\n _this.isActive = false;\n _this.subMenuIsOpen = false;\n _this.setTemplate(/* html */ \"
\");\n return _this;\n }\n AgMenuItemComponent.prototype.init = function () {\n var _this = this;\n this.addIcon();\n this.addName();\n this.addShortcut();\n this.addSubMenu();\n this.addTooltip();\n var eGui = this.getGui();\n if (this.params.disabled) {\n this.addCssClass(this.getClassName('disabled'));\n setAriaDisabled(eGui, true);\n }\n else {\n this.addGuiEventListener('click', function (e) { return _this.onItemSelected(e); });\n this.addGuiEventListener('keydown', function (e) {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n e.preventDefault();\n _this.onItemSelected(e);\n }\n });\n this.addGuiEventListener('mousedown', function (e) {\n // Prevent event bubbling to other event handlers such as PopupService triggering\n // premature closing of any open sub-menu popup.\n e.stopPropagation();\n e.preventDefault();\n });\n this.addGuiEventListener('mouseenter', function () { return _this.onMouseEnter(); });\n this.addGuiEventListener('mouseleave', function () { return _this.onMouseLeave(); });\n }\n if (this.params.cssClasses) {\n this.params.cssClasses.forEach(function (it) { return _this.addCssClass(it); });\n }\n };\n AgMenuItemComponent.prototype.isDisabled = function () {\n return !!this.params.disabled;\n };\n AgMenuItemComponent.prototype.openSubMenu = function (activateFirstItem) {\n var _this = this;\n if (activateFirstItem === void 0) { activateFirstItem = false; }\n this.closeSubMenu();\n if (!this.params.subMenu) {\n return;\n }\n var ePopup = loadTemplate(/* html */ \"
\");\n var destroySubMenu;\n if (this.params.subMenu instanceof Array) {\n var currentLevel = getAriaLevel(this.getGui());\n var nextLevel = isNaN(currentLevel) ? 1 : (currentLevel + 1);\n var childMenu_1 = this.createBean(new AgMenuList(nextLevel));\n childMenu_1.setParentComponent(this);\n childMenu_1.addMenuItems(this.params.subMenu);\n ePopup.appendChild(childMenu_1.getGui());\n // bubble menu item selected events\n this.addManagedListener(childMenu_1, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (e) { return _this.dispatchEvent(e); });\n childMenu_1.addGuiEventListener('mouseenter', function () { return _this.cancelDeactivate(); });\n destroySubMenu = function () { return _this.destroyBean(childMenu_1); };\n if (activateFirstItem) {\n setTimeout(function () { return childMenu_1.activateFirstItem(); }, 0);\n }\n }\n else {\n var subMenu_1 = this.params.subMenu;\n var menuPanel = this.createBean(new AgMenuPanel(subMenu_1));\n menuPanel.setParentComponent(this);\n var subMenuGui_1 = menuPanel.getGui();\n var mouseEvent_1 = 'mouseenter';\n var mouseEnterListener_1 = function () { return _this.cancelDeactivate(); };\n subMenuGui_1.addEventListener(mouseEvent_1, mouseEnterListener_1);\n destroySubMenu = function () { return subMenuGui_1.removeEventListener(mouseEvent_1, mouseEnterListener_1); };\n ePopup.appendChild(subMenuGui_1);\n if (subMenu_1.afterGuiAttached) {\n setTimeout(function () { return subMenu_1.afterGuiAttached(); }, 0);\n }\n }\n var eGui = this.getGui();\n var positionCallback = this.popupService.positionPopupForMenu.bind(this.popupService, { eventSource: eGui, ePopup: ePopup });\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: ePopup,\n positionCallback: positionCallback,\n anchorToElement: eGui,\n ariaLabel: translate('ariaLabelSubMenu', 'SubMenu')\n });\n this.subMenuIsOpen = true;\n setAriaExpanded(eGui, true);\n this.hideSubMenu = function () {\n if (addPopupRes) {\n addPopupRes.hideFunc();\n }\n _this.subMenuIsOpen = false;\n setAriaExpanded(eGui, false);\n destroySubMenu();\n };\n };\n AgMenuItemComponent.prototype.closeSubMenu = function () {\n if (!this.hideSubMenu) {\n return;\n }\n this.hideSubMenu();\n this.hideSubMenu = null;\n setAriaExpanded(this.getGui(), false);\n };\n AgMenuItemComponent.prototype.isSubMenuOpen = function () {\n return this.subMenuIsOpen;\n };\n AgMenuItemComponent.prototype.activate = function (openSubMenu) {\n var _this = this;\n this.cancelActivate();\n if (this.params.disabled) {\n return;\n }\n this.isActive = true;\n this.addCssClass(this.getClassName('active'));\n this.getGui().focus();\n if (openSubMenu && this.params.subMenu) {\n window.setTimeout(function () {\n if (_this.isAlive() && _this.isActive) {\n _this.openSubMenu();\n }\n }, 300);\n }\n this.onItemActivated();\n };\n AgMenuItemComponent.prototype.deactivate = function () {\n this.cancelDeactivate();\n this.removeCssClass(this.getClassName('active'));\n this.isActive = false;\n if (this.subMenuIsOpen) {\n this.hideSubMenu();\n }\n };\n AgMenuItemComponent.prototype.addIcon = function () {\n if (!this.params.checked && !this.params.icon && this.params.isCompact) {\n return;\n }\n var icon = loadTemplate(/* html */ \"\");\n if (this.params.checked) {\n icon.appendChild(createIconNoSpan('check', this.gridOptionsWrapper));\n }\n else if (this.params.icon) {\n if (isNodeOrElement(this.params.icon)) {\n icon.appendChild(this.params.icon);\n }\n else if (typeof this.params.icon === 'string') {\n icon.innerHTML = this.params.icon;\n }\n else {\n console.warn('AG Grid: menu item icon must be DOM node or string');\n }\n }\n this.getGui().appendChild(icon);\n };\n AgMenuItemComponent.prototype.addName = function () {\n if (!this.params.name && this.params.isCompact) {\n return;\n }\n var name = loadTemplate(/* html */ \"\" + (this.params.name || '') + \"\");\n this.getGui().appendChild(name);\n };\n AgMenuItemComponent.prototype.addTooltip = function () {\n if (!this.params.tooltip) {\n return;\n }\n this.tooltip = this.params.tooltip;\n if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.getGui().setAttribute('title', this.tooltip);\n }\n else {\n this.createManagedBean(new CustomTooltipFeature(this));\n }\n };\n AgMenuItemComponent.prototype.getTooltipParams = function () {\n return {\n location: 'menu',\n value: this.tooltip\n };\n };\n AgMenuItemComponent.prototype.addShortcut = function () {\n if (!this.params.shortcut && this.params.isCompact) {\n return;\n }\n var shortcut = loadTemplate(/* html */ \"\" + (this.params.shortcut || '') + \"\");\n this.getGui().appendChild(shortcut);\n };\n AgMenuItemComponent.prototype.addSubMenu = function () {\n if (!this.params.subMenu && this.params.isCompact) {\n return;\n }\n var pointer = loadTemplate(/* html */ \"\");\n var eGui = this.getGui();\n if (this.params.subMenu) {\n var iconName = this.gridOptionsWrapper.isEnableRtl() ? 'smallLeft' : 'smallRight';\n setAriaExpanded(eGui, false);\n pointer.appendChild(createIconNoSpan(iconName, this.gridOptionsWrapper));\n }\n eGui.appendChild(pointer);\n };\n AgMenuItemComponent.prototype.onItemSelected = function (event) {\n if (this.params.action) {\n this.params.action();\n }\n else {\n this.openSubMenu(event && event.type === 'keydown');\n }\n if (this.params.subMenu && !this.params.action) {\n return;\n }\n var e = {\n type: AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED,\n action: this.params.action,\n checked: this.params.checked,\n cssClasses: this.params.cssClasses,\n disabled: this.params.disabled,\n icon: this.params.icon,\n name: this.params.name,\n shortcut: this.params.shortcut,\n subMenu: this.params.subMenu,\n tooltip: this.params.tooltip,\n event: event\n };\n this.dispatchEvent(e);\n };\n AgMenuItemComponent.prototype.onItemActivated = function () {\n var event = {\n type: AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED,\n menuItem: this,\n };\n this.dispatchEvent(event);\n };\n AgMenuItemComponent.prototype.cancelActivate = function () {\n if (this.activateTimeoutId) {\n window.clearTimeout(this.activateTimeoutId);\n this.activateTimeoutId = 0;\n }\n };\n AgMenuItemComponent.prototype.cancelDeactivate = function () {\n if (this.deactivateTimeoutId) {\n window.clearTimeout(this.deactivateTimeoutId);\n this.deactivateTimeoutId = 0;\n }\n };\n AgMenuItemComponent.prototype.onMouseEnter = function () {\n var _this = this;\n this.cancelDeactivate();\n if (this.params.isAnotherSubMenuOpen()) {\n // wait to see if the user enters the open sub-menu\n this.activateTimeoutId = window.setTimeout(function () { return _this.activate(true); }, AgMenuItemComponent.ACTIVATION_DELAY);\n }\n else {\n // activate immediately\n this.activate(true);\n }\n };\n AgMenuItemComponent.prototype.onMouseLeave = function () {\n var _this = this;\n this.cancelActivate();\n if (this.isSubMenuOpen()) {\n // wait to see if the user enters the sub-menu\n this.deactivateTimeoutId = window.setTimeout(function () { return _this.deactivate(); }, AgMenuItemComponent.ACTIVATION_DELAY);\n }\n else {\n // de-activate immediately\n this.deactivate();\n }\n };\n AgMenuItemComponent.prototype.getClassName = function (suffix) {\n var prefix = this.params.isCompact ? 'ag-compact-menu-option' : 'ag-menu-option';\n return suffix ? prefix + \"-\" + suffix : prefix;\n };\n AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED = 'menuItemSelected';\n AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED = 'menuItemActivated';\n AgMenuItemComponent.ACTIVATION_DELAY = 80;\n __decorate$Q([\n Autowired('popupService')\n ], AgMenuItemComponent.prototype, \"popupService\", void 0);\n __decorate$Q([\n PostConstruct\n ], AgMenuItemComponent.prototype, \"init\", null);\n return AgMenuItemComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$N = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$P = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$7 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$6 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$7(arguments[i]));\n return ar;\n};\nvar FocusService = /** @class */ (function (_super) {\n __extends$N(FocusService, _super);\n function FocusService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FocusService_1 = FocusService;\n /**\n * Adds a gridCore to the list of the gridCores monitoring Keyboard Mode\n * in a specific HTMLDocument.\n *\n * @param doc {Document} - The Document containing the gridCore.\n * @param gridCore {GridComp} - The GridCore to be monitored.\n */\n FocusService.addKeyboardModeEvents = function (doc, controller) {\n var docControllers = FocusService_1.instancesMonitored.get(doc);\n if (docControllers && docControllers.length > 0) {\n if (docControllers.indexOf(controller) === -1) {\n docControllers.push(controller);\n }\n }\n else {\n FocusService_1.instancesMonitored.set(doc, [controller]);\n doc.addEventListener('keydown', FocusService_1.toggleKeyboardMode);\n doc.addEventListener('mousedown', FocusService_1.toggleKeyboardMode);\n }\n };\n /**\n * Removes a gridCore from the list of the gridCores monitoring Keyboard Mode\n * in a specific HTMLDocument.\n *\n * @param doc {Document} - The Document containing the gridCore.\n * @param gridCore {GridComp} - The GridCore to be removed.\n */\n FocusService.removeKeyboardModeEvents = function (doc, controller) {\n var docControllers = FocusService_1.instancesMonitored.get(doc);\n var newControllers = [];\n if (docControllers && docControllers.length) {\n newControllers = __spread$6(docControllers).filter(function (currentGridCore) { return currentGridCore !== controller; });\n FocusService_1.instancesMonitored.set(doc, newControllers);\n }\n if (newControllers.length === 0) {\n doc.removeEventListener('keydown', FocusService_1.toggleKeyboardMode);\n doc.removeEventListener('mousedown', FocusService_1.toggleKeyboardMode);\n }\n };\n /**\n * This method will be called by `keydown` and `mousedown` events on all Documents monitoring\n * KeyboardMode. It will then fire a KEYBOARD_FOCUS, MOUSE_FOCUS on each gridCore present in\n * the Document allowing each gridCore to maintain a state for KeyboardMode.\n *\n * @param event {KeyboardEvent | MouseEvent | TouchEvent} - The event triggered.\n */\n FocusService.toggleKeyboardMode = function (event) {\n var isKeyboardActive = FocusService_1.keyboardModeActive;\n var isKeyboardEvent = event.type === 'keydown';\n if (isKeyboardEvent) {\n // the following keys should not toggle keyboard mode.\n if (event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n }\n if (isKeyboardActive && isKeyboardEvent || !isKeyboardActive && !isKeyboardEvent) {\n return;\n }\n FocusService_1.keyboardModeActive = isKeyboardEvent;\n var doc = event.target.ownerDocument;\n if (!doc) {\n return;\n }\n var controllersForDoc = FocusService_1.instancesMonitored.get(doc);\n if (controllersForDoc) {\n controllersForDoc.forEach(function (controller) {\n controller.dispatchEvent({ type: isKeyboardEvent ? Events.EVENT_KEYBOARD_FOCUS : Events.EVENT_MOUSE_FOCUS });\n });\n }\n };\n FocusService.prototype.init = function () {\n var _this = this;\n var clearFocusedCellListener = this.clearFocusedCell.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, clearFocusedCellListener);\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnEverythingChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, clearFocusedCellListener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, clearFocusedCellListener);\n this.ctrlsService.whenReady(function (p) {\n _this.gridCtrl = p.gridCtrl;\n var doc = _this.gridOptionsWrapper.getDocument();\n FocusService_1.addKeyboardModeEvents(doc, _this.gridCtrl);\n _this.addDestroyFunc(function () { return _this.unregisterGridCompController(_this.gridCtrl); });\n });\n };\n FocusService.prototype.unregisterGridCompController = function (gridCompController) {\n var doc = this.gridOptionsWrapper.getDocument();\n FocusService_1.removeKeyboardModeEvents(doc, gridCompController);\n };\n FocusService.prototype.onColumnEverythingChanged = function () {\n // if the columns change, check and see if this column still exists. if it does, then\n // we can keep the focused cell. if it doesn't, then we need to drop the focused cell.\n if (!this.focusedCellPosition) {\n return;\n }\n var col = this.focusedCellPosition.column;\n var colFromColumnModel = this.columnModel.getGridColumn(col.getId());\n if (col !== colFromColumnModel) {\n this.clearFocusedCell();\n }\n };\n FocusService.prototype.isKeyboardMode = function () {\n return FocusService_1.keyboardModeActive;\n };\n // we check if the browser is focusing something, and if it is, and\n // it's the cell we think is focused, then return the cell. so this\n // methods returns the cell if a) we think it has focus and b) the\n // browser thinks it has focus. this then returns nothing if we\n // first focus a cell, then second click outside the grid, as then the\n // grid cell will still be focused as far as the grid is concerned,\n // however the browser focus will have moved somewhere else.\n FocusService.prototype.getFocusCellToUseAfterRefresh = function () {\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh() || !this.focusedCellPosition) {\n return null;\n }\n // we check that the browser is actually focusing on the grid, if it is not, then\n // we have nothing to worry about. we check for ROW data, as this covers both focused Rows (for Full Width Rows)\n // and Cells (covers cells as cells live in rows)\n if (this.isDomDataMissingInHierarchy(eDocument.activeElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL)) {\n return null;\n }\n return this.focusedCellPosition;\n };\n FocusService.prototype.getFocusHeaderToUseAfterRefresh = function () {\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh() || !this.focusedHeaderPosition) {\n return null;\n }\n // we check that the browser is actually focusing on the grid, if it is not, then\n // we have nothing to worry about\n if (this.isDomDataMissingInHierarchy(eDocument.activeElement, AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL)) {\n return null;\n }\n return this.focusedHeaderPosition;\n };\n FocusService.prototype.isDomDataMissingInHierarchy = function (eBrowserCell, key) {\n var ePointer = eBrowserCell;\n while (ePointer) {\n var data = this.gridOptionsWrapper.getDomData(ePointer, key);\n if (data) {\n return false;\n }\n ePointer = ePointer.parentNode;\n }\n return true;\n };\n FocusService.prototype.clearFocusedCell = function () {\n this.focusedCellPosition = null;\n this.onCellFocused(false, false);\n };\n FocusService.prototype.getFocusedCell = function () {\n return this.focusedCellPosition;\n };\n FocusService.prototype.setFocusedCell = function (params) {\n var column = params.column, rowIndex = params.rowIndex, rowPinned = params.rowPinned, _a = params.forceBrowserFocus, forceBrowserFocus = _a === void 0 ? false : _a, _b = params.preventScrollOnBrowserFocus, preventScrollOnBrowserFocus = _b === void 0 ? false : _b;\n var gridColumn = this.columnModel.getGridColumn(column);\n // if column doesn't exist, then blank the focused cell and return. this can happen when user sets new columns,\n // and the focused cell is in a column that no longer exists. after columns change, the grid refreshes and tries\n // to re-focus the focused cell.\n if (!gridColumn) {\n this.focusedCellPosition = null;\n return;\n }\n this.focusedCellPosition = gridColumn ? {\n rowIndex: rowIndex,\n rowPinned: makeNull(rowPinned),\n column: gridColumn\n } : null;\n this.onCellFocused(forceBrowserFocus, preventScrollOnBrowserFocus);\n };\n FocusService.prototype.isCellFocused = function (cellPosition) {\n if (this.focusedCellPosition == null) {\n return false;\n }\n return this.focusedCellPosition.column === cellPosition.column &&\n this.isRowFocused(cellPosition.rowIndex, cellPosition.rowPinned);\n };\n FocusService.prototype.isRowNodeFocused = function (rowNode) {\n return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\n };\n FocusService.prototype.isHeaderWrapperFocused = function (headerCtrl) {\n if (this.focusedHeaderPosition == null) {\n return false;\n }\n var column = headerCtrl.getColumnGroupChild();\n var headerRowIndex = headerCtrl.getRowIndex();\n var pinned = headerCtrl.getPinned();\n var _a = this.focusedHeaderPosition, focusedColumn = _a.column, focusedHeaderRowIndex = _a.headerRowIndex;\n return column === focusedColumn &&\n headerRowIndex === focusedHeaderRowIndex &&\n pinned == focusedColumn.getPinned();\n };\n FocusService.prototype.clearFocusedHeader = function () {\n this.focusedHeaderPosition = null;\n };\n FocusService.prototype.getFocusedHeader = function () {\n return this.focusedHeaderPosition;\n };\n FocusService.prototype.setFocusedHeader = function (headerRowIndex, column) {\n this.focusedHeaderPosition = { headerRowIndex: headerRowIndex, column: column };\n };\n FocusService.prototype.focusHeaderPosition = function (params) {\n var direction = params.direction, fromTab = params.fromTab, allowUserOverride = params.allowUserOverride, event = params.event;\n var headerPosition = params.headerPosition;\n if (allowUserOverride) {\n var gridOptionsWrapper = this.gridOptionsWrapper;\n var currentPosition = this.getFocusedHeader();\n var headerRowCount = this.headerNavigationService.getHeaderRowCount();\n if (fromTab) {\n var userFunc = gridOptionsWrapper.getTabToNextHeaderFunc();\n if (userFunc) {\n var params_1 = {\n backwards: direction === 'Before',\n previousHeaderPosition: currentPosition,\n nextHeaderPosition: headerPosition,\n headerRowCount: headerRowCount,\n };\n headerPosition = userFunc(params_1);\n }\n }\n else {\n var userFunc = gridOptionsWrapper.getNavigateToNextHeaderFunc();\n if (userFunc && event) {\n var params_2 = {\n key: event.key,\n previousHeaderPosition: currentPosition,\n nextHeaderPosition: headerPosition,\n headerRowCount: headerRowCount,\n event: event,\n };\n headerPosition = userFunc(params_2);\n }\n }\n }\n if (!headerPosition) {\n return false;\n }\n if (headerPosition.headerRowIndex === -1) {\n return this.focusGridView(headerPosition.column);\n }\n this.headerNavigationService.scrollToColumn(headerPosition.column, direction);\n var headerRowContainerCtrl = this.ctrlsService.getHeaderRowContainerCtrl(headerPosition.column.getPinned());\n // this will automatically call the setFocusedHeader method above\n var focusSuccess = headerRowContainerCtrl.focusHeader(headerPosition.headerRowIndex, headerPosition.column, event);\n return focusSuccess;\n };\n FocusService.prototype.focusFirstHeader = function () {\n var firstColumn = this.columnModel.getAllDisplayedColumns()[0];\n if (!firstColumn) {\n return false;\n }\n if (firstColumn.getParent()) {\n firstColumn = this.columnModel.getColumnGroupAtLevel(firstColumn, 0);\n }\n return this.focusHeaderPosition({\n headerPosition: { headerRowIndex: 0, column: firstColumn }\n });\n };\n FocusService.prototype.focusLastHeader = function (event) {\n var headerRowIndex = this.headerNavigationService.getHeaderRowCount() - 1;\n var column = last(this.columnModel.getAllDisplayedColumns());\n return this.focusHeaderPosition({\n headerPosition: { headerRowIndex: headerRowIndex, column: column },\n event: event\n });\n };\n FocusService.prototype.isAnyCellFocused = function () {\n return !!this.focusedCellPosition;\n };\n FocusService.prototype.isRowFocused = function (rowIndex, floating) {\n if (this.focusedCellPosition == null) {\n return false;\n }\n return this.focusedCellPosition.rowIndex === rowIndex && this.focusedCellPosition.rowPinned === makeNull(floating);\n };\n FocusService.prototype.findFocusableElements = function (rootNode, exclude, onlyUnmanaged) {\n if (onlyUnmanaged === void 0) { onlyUnmanaged = false; }\n var focusableString = Constants.FOCUSABLE_SELECTOR;\n var excludeString = Constants.FOCUSABLE_EXCLUDE;\n if (exclude) {\n excludeString += ', ' + exclude;\n }\n if (onlyUnmanaged) {\n excludeString += ', [tabindex=\"-1\"]';\n }\n var nodes = Array.prototype.slice.apply(rootNode.querySelectorAll(focusableString));\n var excludeNodes = Array.prototype.slice.apply(rootNode.querySelectorAll(excludeString));\n if (!excludeNodes.length) {\n return nodes;\n }\n var diff = function (a, b) { return a.filter(function (element) { return b.indexOf(element) === -1; }); };\n return diff(nodes, excludeNodes);\n };\n FocusService.prototype.focusInto = function (rootNode, up, onlyUnmanaged) {\n if (up === void 0) { up = false; }\n if (onlyUnmanaged === void 0) { onlyUnmanaged = false; }\n var focusableElements = this.findFocusableElements(rootNode, null, onlyUnmanaged);\n var toFocus = up ? last(focusableElements) : focusableElements[0];\n if (toFocus) {\n toFocus.focus();\n return true;\n }\n return false;\n };\n FocusService.prototype.findNextFocusableElement = function (rootNode, onlyManaged, backwards) {\n if (rootNode === void 0) { rootNode = this.eGridDiv; }\n var focusable = this.findFocusableElements(rootNode, onlyManaged ? ':not([tabindex=\"-1\"])' : null);\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeEl = eDocument.activeElement;\n var currentIndex;\n if (onlyManaged) {\n currentIndex = focusable.findIndex(function (el) { return el.contains(activeEl); });\n }\n else {\n currentIndex = focusable.indexOf(activeEl);\n }\n var nextIndex = currentIndex + (backwards ? -1 : 1);\n if (nextIndex < 0 || nextIndex >= focusable.length) {\n return null;\n }\n return focusable[nextIndex];\n };\n FocusService.prototype.isFocusUnderManagedComponent = function (rootNode) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var managedContainers = rootNode.querySelectorAll(\".\" + ManagedFocusFeature.FOCUS_MANAGED_CLASS);\n if (!managedContainers.length) {\n return false;\n }\n for (var i = 0; i < managedContainers.length; i++) {\n if (managedContainers[i].contains(eDocument.activeElement)) {\n return true;\n }\n }\n return false;\n };\n FocusService.prototype.findTabbableParent = function (node, limit) {\n if (limit === void 0) { limit = 5; }\n var counter = 0;\n while (node && getTabIndex(node) === null && ++counter <= limit) {\n node = node.parentElement;\n }\n if (getTabIndex(node) === null) {\n return null;\n }\n return node;\n };\n FocusService.prototype.onCellFocused = function (forceBrowserFocus, preventScrollOnBrowserFocus) {\n var event = {\n type: Events.EVENT_CELL_FOCUSED,\n forceBrowserFocus: forceBrowserFocus,\n preventScrollOnBrowserFocus: preventScrollOnBrowserFocus,\n rowIndex: null,\n column: null,\n floating: null,\n rowPinned: null,\n isFullWidthCell: false\n };\n if (this.focusedCellPosition) {\n var rowIndex = event.rowIndex = this.focusedCellPosition.rowIndex;\n var rowPinned = event.rowPinned = this.focusedCellPosition.rowPinned;\n event.column = this.focusedCellPosition.column;\n var rowCtrl = this.rowRenderer.getRowByPosition({ rowIndex: rowIndex, rowPinned: rowPinned });\n if (rowCtrl) {\n event.isFullWidthCell = rowCtrl.isFullWidth();\n }\n }\n this.eventService.dispatchEvent(event);\n };\n FocusService.prototype.focusGridView = function (column, backwards) {\n // if suppressCellFocus is `true`, it means the user does not want to\n // navigate between the cells using tab. Instead, we put focus on either\n // the header or after the grid, depending on whether tab or shift-tab was pressed.\n if (this.gridOptionsWrapper.isSuppressCellFocus()) {\n if (backwards) {\n return this.focusLastHeader();\n }\n return this.focusNextGridCoreContainer(false);\n }\n var nextRow = backwards\n ? this.rowPositionUtils.getLastRow()\n : this.rowPositionUtils.getFirstRow();\n if (!nextRow) {\n return false;\n }\n var rowIndex = nextRow.rowIndex, rowPinned = nextRow.rowPinned;\n var focusedHeader = this.getFocusedHeader();\n if (!column && focusedHeader) {\n column = focusedHeader.column;\n }\n if (rowIndex == null || !column) {\n return false;\n }\n this.navigationService.ensureCellVisible({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n this.setFocusedCell({\n rowIndex: rowIndex,\n column: column,\n rowPinned: makeNull(rowPinned),\n forceBrowserFocus: true\n });\n if (this.rangeService) {\n var cellPosition = { rowIndex: rowIndex, rowPinned: rowPinned, column: column };\n this.rangeService.setRangeToCell(cellPosition);\n }\n return true;\n };\n FocusService.prototype.focusNextGridCoreContainer = function (backwards) {\n if (this.gridCtrl.focusNextInnerContainer(backwards)) {\n return true;\n }\n if (!backwards && !this.gridCtrl.isDetailGrid()) {\n this.gridCtrl.forceFocusOutOfContainer();\n }\n return false;\n };\n var FocusService_1;\n FocusService.AG_KEYBOARD_FOCUS = 'ag-keyboard-focus';\n FocusService.keyboardModeActive = false;\n FocusService.instancesMonitored = new Map();\n __decorate$P([\n Autowired('eGridDiv')\n ], FocusService.prototype, \"eGridDiv\", void 0);\n __decorate$P([\n Autowired('columnModel')\n ], FocusService.prototype, \"columnModel\", void 0);\n __decorate$P([\n Autowired('headerNavigationService')\n ], FocusService.prototype, \"headerNavigationService\", void 0);\n __decorate$P([\n Autowired('rowRenderer')\n ], FocusService.prototype, \"rowRenderer\", void 0);\n __decorate$P([\n Autowired('rowPositionUtils')\n ], FocusService.prototype, \"rowPositionUtils\", void 0);\n __decorate$P([\n Optional('rangeService')\n ], FocusService.prototype, \"rangeService\", void 0);\n __decorate$P([\n Autowired('navigationService')\n ], FocusService.prototype, \"navigationService\", void 0);\n __decorate$P([\n Autowired('ctrlsService')\n ], FocusService.prototype, \"ctrlsService\", void 0);\n __decorate$P([\n PostConstruct\n ], FocusService.prototype, \"init\", null);\n FocusService = FocusService_1 = __decorate$P([\n Bean('focusService')\n ], FocusService);\n return FocusService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$M = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$O = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$6 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$5 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$6(arguments[i]));\n return ar;\n};\nvar DIRECTION;\n(function (DIRECTION) {\n DIRECTION[DIRECTION[\"vertical\"] = 0] = \"vertical\";\n DIRECTION[DIRECTION[\"horizontal\"] = 1] = \"horizontal\";\n})(DIRECTION || (DIRECTION = {}));\nvar instanceIdSeq = 0;\nvar PopupService = /** @class */ (function (_super) {\n __extends$M(PopupService, _super);\n function PopupService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.popupList = [];\n return _this;\n }\n PopupService_1 = PopupService;\n PopupService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.gridCtrl = p.gridCtrl;\n _this.addManagedListener(_this.gridCtrl, Events.EVENT_KEYBOARD_FOCUS, function () {\n _this.popupList.forEach(function (popup) { return popup.element.classList.add(FocusService.AG_KEYBOARD_FOCUS); });\n });\n _this.addManagedListener(_this.gridCtrl, Events.EVENT_MOUSE_FOCUS, function () {\n _this.popupList.forEach(function (popup) { return popup.element.classList.remove(FocusService.AG_KEYBOARD_FOCUS); });\n });\n });\n };\n PopupService.prototype.getPopupParent = function () {\n var ePopupParent = this.gridOptionsWrapper.getPopupParent();\n if (ePopupParent) {\n return ePopupParent;\n }\n return this.gridCtrl.getGui();\n };\n PopupService.prototype.positionPopupForMenu = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var parentRect = this.getParentRect();\n var y = this.keepXYWithinBounds(params.ePopup, sourceRect.top - parentRect.top, DIRECTION.vertical);\n var minWidth = (params.ePopup.clientWidth > 0) ? params.ePopup.clientWidth : 200;\n params.ePopup.style.minWidth = minWidth + \"px\";\n var widthOfParent = parentRect.right - parentRect.left;\n var maxX = widthOfParent - minWidth;\n // the x position of the popup depends on RTL or LTR. for normal cases, LTR, we put the child popup\n // to the right, unless it doesn't fit and we then put it to the left. for RTL it's the other way around,\n // we try place it first to the left, and then if not to the right.\n var x;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, try left first\n x = xLeftPosition();\n if (x < 0) {\n x = xRightPosition();\n }\n if (x > maxX) {\n x = 0;\n }\n }\n else {\n // for LTR, try right first\n x = xRightPosition();\n if (x > maxX) {\n x = xLeftPosition();\n }\n if (x < 0) {\n x = 0;\n }\n }\n params.ePopup.style.left = x + \"px\";\n params.ePopup.style.top = y + \"px\";\n function xRightPosition() {\n return sourceRect.right - parentRect.left - 2;\n }\n function xLeftPosition() {\n return sourceRect.left - parentRect.left - minWidth;\n }\n };\n PopupService.prototype.positionPopupUnderMouseEvent = function (params) {\n var ePopup = params.ePopup, nudgeX = params.nudgeX, nudgeY = params.nudgeY, skipObserver = params.skipObserver;\n var _a = this.calculatePointerAlign(params.mouseEvent), x = _a.x, y = _a.y;\n this.positionPopup({\n ePopup: ePopup,\n x: x,\n y: y,\n nudgeX: nudgeX,\n nudgeY: nudgeY,\n keepWithinBounds: true,\n skipObserver: skipObserver\n });\n this.callPostProcessPopup(params.type, params.ePopup, null, params.mouseEvent, params.column, params.rowNode);\n };\n PopupService.prototype.calculatePointerAlign = function (e) {\n var parentRect = this.getParentRect();\n return {\n x: e.clientX - parentRect.left,\n y: e.clientY - parentRect.top\n };\n };\n PopupService.prototype.positionPopupUnderComponent = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var alignSide = params.alignSide || 'left';\n var parentRect = this.getParentRect();\n var x = sourceRect.left - parentRect.left;\n if (alignSide === 'right') {\n x -= (params.ePopup.offsetWidth - sourceRect.width);\n }\n this.positionPopup({\n ePopup: params.ePopup,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n x: x,\n y: sourceRect.top - parentRect.top + sourceRect.height,\n keepWithinBounds: params.keepWithinBounds\n });\n this.callPostProcessPopup(params.type, params.ePopup, params.eventSource, null, params.column, params.rowNode);\n };\n PopupService.prototype.positionPopupOverComponent = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var parentRect = this.getParentRect();\n this.positionPopup({\n ePopup: params.ePopup,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n x: sourceRect.left - parentRect.left,\n y: sourceRect.top - parentRect.top,\n keepWithinBounds: params.keepWithinBounds\n });\n this.callPostProcessPopup(params.type, params.ePopup, params.eventSource, null, params.column, params.rowNode);\n };\n PopupService.prototype.callPostProcessPopup = function (type, ePopup, eventSource, mouseEvent, column, rowNode) {\n var callback = this.gridOptionsWrapper.getPostProcessPopupFunc();\n if (callback) {\n var params = {\n column: column,\n rowNode: rowNode,\n ePopup: ePopup,\n type: type,\n eventSource: eventSource,\n mouseEvent: mouseEvent\n };\n callback(params);\n }\n };\n PopupService.prototype.positionPopup = function (params) {\n var _this = this;\n var x = params.x, y = params.y, ePopup = params.ePopup, keepWithinBounds = params.keepWithinBounds, nudgeX = params.nudgeX, nudgeY = params.nudgeY, skipObserver = params.skipObserver;\n var currentX = x;\n var currentY = y;\n if (nudgeX) {\n currentX += nudgeX;\n }\n if (nudgeY) {\n currentY += nudgeY;\n }\n var updatePosition = function () {\n // if popup is overflowing to the bottom, move it up\n if (keepWithinBounds) {\n currentX = _this.keepXYWithinBounds(ePopup, currentX, DIRECTION.horizontal);\n currentY = _this.keepXYWithinBounds(ePopup, currentY, DIRECTION.vertical);\n }\n ePopup.style.left = currentX + \"px\";\n ePopup.style.top = currentY + \"px\";\n };\n updatePosition();\n // Mouse tracking will recalculate positioning when moving, so won't need to recalculate here\n if (!skipObserver) {\n // Since rendering popup contents can be asynchronous, use a resize observer to\n // reposition the popup after initial updates to the size of the contents\n var resizeObserverDestroyFunc_1 = this.resizeObserverService.observeResize(ePopup, updatePosition);\n // Only need to reposition when first open, so can clean up after a bit of time\n setTimeout(function () { return resizeObserverDestroyFunc_1(); }, PopupService_1.WAIT_FOR_POPUP_CONTENT_RESIZE);\n }\n };\n PopupService.prototype.getActivePopups = function () {\n return this.popupList.map(function (popup) { return popup.element; });\n };\n PopupService.prototype.getPopupList = function () {\n return this.popupList;\n };\n PopupService.prototype.getParentRect = function () {\n // subtract the popup parent borders, because popupParent.getBoundingClientRect\n // returns the rect outside the borders, but the 0,0 coordinate for absolute\n // positioning is inside the border, leading the popup to be off by the width\n // of the border\n var eDocument = this.gridOptionsWrapper.getDocument();\n var popupParent = this.getPopupParent();\n if (popupParent === eDocument.body) {\n popupParent = eDocument.documentElement;\n }\n else if (getComputedStyle(popupParent).position === 'static') {\n popupParent = popupParent.offsetParent;\n }\n var style = getComputedStyle(popupParent);\n var bounds = popupParent.getBoundingClientRect();\n return {\n top: bounds.top + parseFloat(style.borderTopWidth) || 0,\n left: bounds.left + parseFloat(style.borderLeftWidth) || 0,\n right: bounds.right + parseFloat(style.borderRightWidth) || 0,\n bottom: bounds.bottom + parseFloat(style.borderBottomWidth) || 0,\n };\n };\n PopupService.prototype.keepXYWithinBounds = function (ePopup, position, direction) {\n var isVertical = direction === DIRECTION.vertical;\n var sizeProperty = isVertical ? 'clientHeight' : 'clientWidth';\n var anchorProperty = isVertical ? 'top' : 'left';\n var offsetProperty = isVertical ? 'offsetHeight' : 'offsetWidth';\n var scrollPositionProperty = isVertical ? 'scrollTop' : 'scrollLeft';\n var eDocument = this.gridOptionsWrapper.getDocument();\n var docElement = eDocument.documentElement;\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n var isBody = popupParent === eDocument.body;\n var offsetSize = ePopup[offsetProperty];\n var getSize = isVertical ? getAbsoluteHeight : getAbsoluteWidth;\n var sizeOfParent = isBody ? (getSize(docElement) + docElement[scrollPositionProperty]) : popupParent[sizeProperty];\n if (isBody) {\n sizeOfParent -= Math.abs(documentRect[anchorProperty] - parentRect[anchorProperty]);\n }\n var max = sizeOfParent - offsetSize;\n return Math.min(Math.max(position, 0), Math.abs(max));\n };\n PopupService.prototype.keepPopupPositionedRelativeTo = function (params) {\n var _this = this;\n var eParent = this.getPopupParent();\n var parentRect = eParent.getBoundingClientRect();\n var sourceRect = params.element.getBoundingClientRect();\n var initialDiffTop = parentRect.top - sourceRect.top;\n var initialDiffLeft = parentRect.left - sourceRect.left;\n var lastDiffTop = initialDiffTop;\n var lastDiffLeft = initialDiffLeft;\n var topPx = params.ePopup.style.top;\n var top = parseInt(topPx.substring(0, topPx.length - 1), 10);\n var leftPx = params.ePopup.style.left;\n var left = parseInt(leftPx.substring(0, leftPx.length - 1), 10);\n return new AgPromise(function (resolve) {\n _this.getFrameworkOverrides().setInterval(function () {\n var pRect = eParent.getBoundingClientRect();\n var sRect = params.element.getBoundingClientRect();\n var elementNotInDom = sRect.top == 0 && sRect.left == 0 && sRect.height == 0 && sRect.width == 0;\n if (elementNotInDom) {\n params.hidePopup();\n return;\n }\n var currentDiffTop = pRect.top - sRect.top;\n if (currentDiffTop != lastDiffTop) {\n var newTop = _this.keepXYWithinBounds(params.ePopup, top + initialDiffTop - currentDiffTop, DIRECTION.vertical);\n params.ePopup.style.top = newTop + \"px\";\n }\n lastDiffTop = currentDiffTop;\n var currentDiffLeft = pRect.left - sRect.left;\n if (currentDiffLeft != lastDiffLeft) {\n var newLeft = _this.keepXYWithinBounds(params.ePopup, left + initialDiffLeft - currentDiffLeft, DIRECTION.horizontal);\n params.ePopup.style.left = newLeft + \"px\";\n }\n lastDiffLeft = currentDiffLeft;\n }, 200).then(function (intervalId) {\n var result = function () {\n if (intervalId != null) {\n window.clearInterval(intervalId);\n }\n };\n resolve(result);\n });\n });\n };\n PopupService.prototype.addPopup = function (params) {\n var _a;\n var _this = this;\n var modal = params.modal, eChild = params.eChild, closeOnEsc = params.closeOnEsc, closedCallback = params.closedCallback, click = params.click, alwaysOnTop = params.alwaysOnTop, afterGuiAttached = params.afterGuiAttached, positionCallback = params.positionCallback, anchorToElement = params.anchorToElement, ariaLabel = params.ariaLabel;\n var eDocument = this.gridOptionsWrapper.getDocument();\n var destroyPositionTracker = new AgPromise(function (resolve) { return resolve(function () { }); });\n if (!eDocument) {\n console.warn('ag-grid: could not find the document, document is empty');\n return { hideFunc: function () { }, stopAnchoringPromise: destroyPositionTracker };\n }\n var pos = this.popupList.findIndex(function (popup) { return popup.element === eChild; });\n if (pos !== -1) {\n var popup = this.popupList[pos];\n return { hideFunc: popup.hideFunc, stopAnchoringPromise: popup.stopAnchoringPromise };\n }\n var ePopupParent = this.getPopupParent();\n if (eChild.style.top == null) {\n eChild.style.top = '0px';\n }\n if (eChild.style.left == null) {\n eChild.style.left = '0px';\n }\n // add env CSS class to child, in case user provided a popup parent, which means\n // theme class may be missing\n var eWrapper = document.createElement('div');\n var allThemes = this.environment.getTheme().allThemes;\n if (allThemes.length) {\n (_a = eWrapper.classList).add.apply(_a, __spread$5(allThemes));\n }\n eWrapper.classList.add('ag-popup');\n eChild.classList.add(this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr', 'ag-popup-child');\n if (!eChild.hasAttribute('role')) {\n setAriaRole(eChild, 'dialog');\n }\n setAriaLabel(eChild, ariaLabel);\n if (this.focusService.isKeyboardMode()) {\n eChild.classList.add(FocusService.AG_KEYBOARD_FOCUS);\n }\n eWrapper.appendChild(eChild);\n ePopupParent.appendChild(eWrapper);\n if (alwaysOnTop) {\n this.setAlwaysOnTop(eWrapper, true);\n }\n else {\n this.bringPopupToFront(eWrapper);\n }\n var popupHidden = false;\n var hidePopupOnKeyboardEvent = function (event) {\n if (!eWrapper.contains(eDocument.activeElement)) {\n return;\n }\n var key = event.key;\n if (key === KeyCode.ESCAPE) {\n hidePopup({ keyboardEvent: event });\n }\n };\n var hidePopupOnMouseEvent = function (event) { return hidePopup({ mouseEvent: event }); };\n var hidePopupOnTouchEvent = function (event) { return hidePopup({ touchEvent: event }); };\n var hidePopup = function (popupParams) {\n if (popupParams === void 0) { popupParams = {}; }\n var mouseEvent = popupParams.mouseEvent, touchEvent = popupParams.touchEvent, keyboardEvent = popupParams.keyboardEvent;\n if (\n // we don't hide popup if the event was on the child, or any\n // children of this child\n _this.isEventFromCurrentPopup({ mouseEvent: mouseEvent, touchEvent: touchEvent }, eChild) ||\n // if the event to close is actually the open event, then ignore it\n _this.isEventSameChainAsOriginalEvent({ originalMouseEvent: click, mouseEvent: mouseEvent, touchEvent: touchEvent }) ||\n // this method should only be called once. the client can have different\n // paths, each one wanting to close, so this method may be called multiple times.\n popupHidden) {\n return;\n }\n popupHidden = true;\n ePopupParent.removeChild(eWrapper);\n eDocument.removeEventListener('keydown', hidePopupOnKeyboardEvent);\n eDocument.removeEventListener('mousedown', hidePopupOnMouseEvent);\n eDocument.removeEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.removeEventListener('contextmenu', hidePopupOnMouseEvent);\n _this.eventService.removeEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n if (closedCallback) {\n closedCallback(mouseEvent || touchEvent || keyboardEvent);\n }\n _this.popupList = _this.popupList.filter(function (popup) { return popup.element !== eChild; });\n if (destroyPositionTracker) {\n destroyPositionTracker.then(function (destroyFunc) { return destroyFunc && destroyFunc(); });\n }\n };\n if (afterGuiAttached) {\n afterGuiAttached({ hidePopup: hidePopup });\n }\n // if we add these listeners now, then the current mouse\n // click will be included, which we don't want\n window.setTimeout(function () {\n if (closeOnEsc) {\n eDocument.addEventListener('keydown', hidePopupOnKeyboardEvent);\n }\n if (modal) {\n eDocument.addEventListener('mousedown', hidePopupOnMouseEvent);\n _this.eventService.addEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n eDocument.addEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.addEventListener('contextmenu', hidePopupOnMouseEvent);\n }\n }, 0);\n if (positionCallback) {\n positionCallback();\n }\n if (anchorToElement) {\n // keeps popup positioned under created, eg if context menu, if user scrolls\n // using touchpad and the cell moves, it moves the popup to keep it with the cell.\n destroyPositionTracker = this.keepPopupPositionedRelativeTo({\n element: anchorToElement,\n ePopup: eChild,\n hidePopup: hidePopup\n });\n }\n this.popupList.push({\n element: eChild,\n wrapper: eWrapper,\n hideFunc: hidePopup,\n stopAnchoringPromise: destroyPositionTracker,\n instanceId: instanceIdSeq++,\n isAnchored: !!anchorToElement\n });\n return {\n hideFunc: hidePopup,\n stopAnchoringPromise: destroyPositionTracker\n };\n };\n PopupService.prototype.hasAnchoredPopup = function () {\n return this.popupList.some(function (popup) { return popup.isAnchored; });\n };\n PopupService.prototype.isEventFromCurrentPopup = function (params, target) {\n var mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;\n var event = mouseEvent ? mouseEvent : touchEvent;\n if (!event) {\n return false;\n }\n var indexOfThisChild = this.popupList.findIndex(function (popup) { return popup.element === target; });\n if (indexOfThisChild === -1) {\n return false;\n }\n for (var i = indexOfThisChild; i < this.popupList.length; i++) {\n var popup = this.popupList[i];\n if (isElementInEventPath(popup.element, event)) {\n return true;\n }\n }\n // if the user did not write their own Custom Element to be rendered as popup\n // and this component has an additional popup element, they should have the\n // `ag-custom-component-popup` class to be detected as part of the Custom Component\n return this.isElementWithinCustomPopup(event.target);\n };\n PopupService.prototype.isElementWithinCustomPopup = function (el) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n while (el && el !== eDocument.body) {\n if (el.classList.contains('ag-custom-component-popup') || el.parentElement === null) {\n return true;\n }\n el = el.parentElement;\n }\n return false;\n };\n // in some browsers, the context menu event can be fired before the click event, which means\n // the context menu event could open the popup, but then the click event closes it straight away.\n PopupService.prototype.isEventSameChainAsOriginalEvent = function (params) {\n var originalMouseEvent = params.originalMouseEvent, mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;\n // we check the coordinates of the event, to see if it's the same event. there is a 1 / 1000 chance that\n // the event is a different event, however that is an edge case that is not very relevant (the user clicking\n // twice on the same location isn't a normal path).\n // event could be mouse event or touch event.\n var mouseEventOrTouch = null;\n if (mouseEvent) {\n // mouse event can be used direction, it has coordinates\n mouseEventOrTouch = mouseEvent;\n }\n else if (touchEvent) {\n // touch event doesn't have coordinates, need it's touch object\n mouseEventOrTouch = touchEvent.touches[0];\n }\n if (mouseEventOrTouch && originalMouseEvent) {\n // for x, allow 4px margin, to cover iPads, where touch (which opens menu) is followed\n // by browser click (when you finger up, touch is interrupted as click in browser)\n var screenX_1 = mouseEvent ? mouseEvent.screenX : 0;\n var screenY_1 = mouseEvent ? mouseEvent.screenY : 0;\n var xMatch = Math.abs(originalMouseEvent.screenX - screenX_1) < 5;\n var yMatch = Math.abs(originalMouseEvent.screenY - screenY_1) < 5;\n if (xMatch && yMatch) {\n return true;\n }\n }\n return false;\n };\n PopupService.prototype.getWrapper = function (ePopup) {\n while (!ePopup.classList.contains('ag-popup') && ePopup.parentElement) {\n ePopup = ePopup.parentElement;\n }\n return ePopup.classList.contains('ag-popup') ? ePopup : null;\n };\n PopupService.prototype.setAlwaysOnTop = function (ePopup, alwaysOnTop) {\n var eWrapper = this.getWrapper(ePopup);\n if (!eWrapper) {\n return;\n }\n eWrapper.classList.toggle('ag-always-on-top', !!alwaysOnTop);\n if (alwaysOnTop) {\n this.bringPopupToFront(eWrapper);\n }\n };\n PopupService.prototype.bringPopupToFront = function (ePopup) {\n var parent = this.getPopupParent();\n var popupList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup'));\n var popupLen = popupList.length;\n var alwaysOnTopList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup.ag-always-on-top'));\n var onTopLength = alwaysOnTopList.length;\n var eWrapper = this.getWrapper(ePopup);\n if (!eWrapper || popupLen <= 1 || !parent.contains(ePopup)) {\n return;\n }\n var pos = popupList.indexOf(eWrapper);\n var innerEls = eWrapper.querySelectorAll('div');\n var innerElsScrollMap = [];\n innerEls.forEach(function (el) {\n if (el.scrollTop !== 0) {\n innerElsScrollMap.push([el, el.scrollTop]);\n }\n });\n if (onTopLength) {\n var isPopupAlwaysOnTop = eWrapper.classList.contains('ag-always-on-top');\n if (isPopupAlwaysOnTop) {\n if (pos !== popupLen - 1) {\n last(alwaysOnTopList).insertAdjacentElement('afterend', eWrapper);\n }\n }\n else if (pos !== popupLen - onTopLength - 1) {\n alwaysOnTopList[0].insertAdjacentElement('beforebegin', eWrapper);\n }\n }\n else if (pos !== popupLen - 1) {\n last(popupList).insertAdjacentElement('afterend', eWrapper);\n }\n while (innerElsScrollMap.length) {\n var currentEl = innerElsScrollMap.pop();\n currentEl[0].scrollTop = currentEl[1];\n }\n var params = {\n type: 'popupToFront',\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n eWrapper: eWrapper\n };\n this.eventService.dispatchEvent(params);\n };\n var PopupService_1;\n PopupService.WAIT_FOR_POPUP_CONTENT_RESIZE = 200;\n __decorate$O([\n Autowired('environment')\n ], PopupService.prototype, \"environment\", void 0);\n __decorate$O([\n Autowired('focusService')\n ], PopupService.prototype, \"focusService\", void 0);\n __decorate$O([\n Autowired('ctrlsService')\n ], PopupService.prototype, \"ctrlsService\", void 0);\n __decorate$O([\n Autowired('resizeObserverService')\n ], PopupService.prototype, \"resizeObserverService\", void 0);\n __decorate$O([\n Autowired('gridOptionsWrapper')\n ], PopupService.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$O([\n PostConstruct\n ], PopupService.prototype, \"postConstruct\", null);\n PopupService = PopupService_1 = __decorate$O([\n Bean('popupService')\n ], PopupService);\n return PopupService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$L = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$N = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar VirtualList = /** @class */ (function (_super) {\n __extends$L(VirtualList, _super);\n function VirtualList(cssIdentifier, ariaRole, listName) {\n if (cssIdentifier === void 0) { cssIdentifier = 'default'; }\n if (ariaRole === void 0) { ariaRole = 'listbox'; }\n var _this = _super.call(this, VirtualList.getTemplate(cssIdentifier)) || this;\n _this.cssIdentifier = cssIdentifier;\n _this.ariaRole = ariaRole;\n _this.listName = listName;\n _this.renderedRows = new Map();\n _this.rowHeight = 20;\n return _this;\n }\n VirtualList.prototype.postConstruct = function () {\n var _this = this;\n this.addScrollListener();\n this.rowHeight = this.getItemHeight();\n this.addResizeObserver();\n this.initialiseTabGuard({\n onFocusIn: function (e) { return _this.onFocusIn(e); },\n onFocusOut: function (e) { return _this.onFocusOut(e); },\n focusInnerElement: function (fromBottom) { return _this.focusInnerElement(fromBottom); },\n onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n handleKeyDown: function (e) { return _this.handleKeyDown(e); }\n });\n this.setAriaProperties();\n };\n VirtualList.prototype.setAriaProperties = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var listName = translate('ariaDefaultListName', this.listName || 'List');\n var ariaEl = this.eContainer;\n setAriaRole(ariaEl, this.ariaRole);\n setAriaLabel(ariaEl, listName);\n };\n VirtualList.prototype.addResizeObserver = function () {\n var listener = this.drawVirtualRows.bind(this);\n var destroyObserver = this.resizeObserverService.observeResize(this.getGui(), listener);\n this.addDestroyFunc(destroyObserver);\n };\n VirtualList.prototype.focusInnerElement = function (fromBottom) {\n this.focusRow(fromBottom ? this.model.getRowCount() - 1 : 0);\n };\n VirtualList.prototype.onFocusIn = function (e) {\n var target = e.target;\n if (target.classList.contains('ag-virtual-list-item')) {\n this.lastFocusedRowIndex = getAriaPosInSet(target) - 1;\n }\n return false;\n };\n VirtualList.prototype.onFocusOut = function (e) {\n if (!this.getFocusableElement().contains(e.relatedTarget)) {\n this.lastFocusedRowIndex = null;\n }\n return false;\n };\n VirtualList.prototype.handleKeyDown = function (e) {\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n if (this.navigate(e.key === KeyCode.UP)) {\n e.preventDefault();\n }\n break;\n }\n };\n VirtualList.prototype.onTabKeyDown = function (e) {\n if (this.navigate(e.shiftKey)) {\n e.preventDefault();\n }\n else {\n // focus on the first or last focusable element to ensure that any other handlers start from there\n this.focusService.focusInto(this.getGui(), !e.shiftKey);\n }\n };\n VirtualList.prototype.navigate = function (up) {\n if (this.lastFocusedRowIndex == null) {\n return false;\n }\n var nextRow = this.lastFocusedRowIndex + (up ? -1 : 1);\n if (nextRow < 0 || nextRow >= this.model.getRowCount()) {\n return false;\n }\n this.focusRow(nextRow);\n return true;\n };\n VirtualList.prototype.getLastFocusedRow = function () {\n return this.lastFocusedRowIndex;\n };\n VirtualList.prototype.focusRow = function (rowNumber) {\n var _this = this;\n this.ensureIndexVisible(rowNumber);\n window.setTimeout(function () {\n if (!_this.isAlive()) {\n return;\n }\n var renderedRow = _this.renderedRows.get(rowNumber);\n if (renderedRow) {\n renderedRow.eDiv.focus();\n }\n }, 10);\n };\n VirtualList.prototype.getComponentAt = function (rowIndex) {\n var comp = this.renderedRows.get(rowIndex);\n return comp && comp.rowComponent;\n };\n VirtualList.prototype.forEachRenderedRow = function (func) {\n this.renderedRows.forEach(function (value, key) { return func(value.rowComponent, key); });\n };\n VirtualList.getTemplate = function (cssIdentifier) {\n return /* html */ \"\\n
\\n
\\n
\";\n };\n VirtualList.prototype.getItemHeight = function () {\n return this.gridOptionsWrapper.getListItemHeight();\n };\n VirtualList.prototype.ensureIndexVisible = function (index) {\n var lastRow = this.model.getRowCount();\n if (typeof index !== 'number' || index < 0 || index >= lastRow) {\n console.warn('AG Grid: invalid row index for ensureIndexVisible: ' + index);\n return;\n }\n var rowTopPixel = index * this.rowHeight;\n var rowBottomPixel = rowTopPixel + this.rowHeight;\n var eGui = this.getGui();\n var viewportTopPixel = eGui.scrollTop;\n var viewportHeight = eGui.offsetHeight;\n var viewportBottomPixel = viewportTopPixel + viewportHeight;\n var viewportScrolledPastRow = viewportTopPixel > rowTopPixel;\n var viewportScrolledBeforeRow = viewportBottomPixel < rowBottomPixel;\n if (viewportScrolledPastRow) {\n // if row is before, scroll up with row at top\n eGui.scrollTop = rowTopPixel;\n }\n else if (viewportScrolledBeforeRow) {\n // if row is below, scroll down with row at bottom\n var newScrollPosition = rowBottomPixel - viewportHeight;\n eGui.scrollTop = newScrollPosition;\n }\n };\n VirtualList.prototype.setComponentCreator = function (componentCreator) {\n this.componentCreator = componentCreator;\n };\n VirtualList.prototype.getRowHeight = function () {\n return this.rowHeight;\n };\n VirtualList.prototype.getScrollTop = function () {\n return this.getGui().scrollTop;\n };\n VirtualList.prototype.setRowHeight = function (rowHeight) {\n this.rowHeight = rowHeight;\n this.refresh();\n };\n VirtualList.prototype.refresh = function () {\n var _this = this;\n if (this.model == null || !this.isAlive()) {\n return;\n }\n var rowCount = this.model.getRowCount();\n this.eContainer.style.height = rowCount * this.rowHeight + \"px\";\n // ensure height is applied before attempting to redraw rows\n waitUntil(function () { return _this.eContainer.clientHeight >= rowCount * _this.rowHeight; }, function () {\n if (!_this.isAlive()) {\n return;\n }\n _this.clearVirtualRows();\n _this.drawVirtualRows();\n });\n };\n VirtualList.prototype.clearVirtualRows = function () {\n var _this = this;\n this.renderedRows.forEach(function (_, rowIndex) { return _this.removeRow(rowIndex); });\n };\n VirtualList.prototype.drawVirtualRows = function () {\n if (!this.isAlive()) {\n return;\n }\n var gui = this.getGui();\n var topPixel = gui.scrollTop;\n var bottomPixel = topPixel + gui.offsetHeight;\n var firstRow = Math.floor(topPixel / this.rowHeight);\n var lastRow = Math.floor(bottomPixel / this.rowHeight);\n this.ensureRowsRendered(firstRow, lastRow);\n };\n VirtualList.prototype.ensureRowsRendered = function (start, finish) {\n var _this = this;\n // remove any rows that are no longer required\n this.renderedRows.forEach(function (_, rowIndex) {\n if ((rowIndex < start || rowIndex > finish) && rowIndex !== _this.lastFocusedRowIndex) {\n _this.removeRow(rowIndex);\n }\n });\n // insert any required new rows\n for (var rowIndex = start; rowIndex <= finish; rowIndex++) {\n if (this.renderedRows.has(rowIndex)) {\n continue;\n }\n // check this row actually exists (in case overflow buffer window exceeds real data)\n if (rowIndex < this.model.getRowCount()) {\n this.insertRow(rowIndex);\n }\n }\n };\n VirtualList.prototype.insertRow = function (rowIndex) {\n var _this = this;\n var value = this.model.getRow(rowIndex);\n var eDiv = document.createElement('div');\n eDiv.classList.add('ag-virtual-list-item', \"ag-\" + this.cssIdentifier + \"-virtual-list-item\");\n setAriaRole(eDiv, this.ariaRole === 'tree' ? 'treeitem' : 'option');\n setAriaSetSize(eDiv, this.model.getRowCount());\n setAriaPosInSet(eDiv, rowIndex + 1);\n eDiv.setAttribute('tabindex', '-1');\n if (typeof this.model.isRowSelected === 'function') {\n var isSelected = this.model.isRowSelected(rowIndex);\n setAriaSelected(eDiv, !!isSelected);\n setAriaChecked(eDiv, isSelected);\n }\n eDiv.style.height = this.rowHeight + \"px\";\n eDiv.style.top = this.rowHeight * rowIndex + \"px\";\n var rowComponent = this.componentCreator(value, eDiv);\n rowComponent.addGuiEventListener('focusin', function () { return _this.lastFocusedRowIndex = rowIndex; });\n eDiv.appendChild(rowComponent.getGui());\n // keep the DOM order consistent with the order of the rows\n if (this.renderedRows.has(rowIndex - 1)) {\n this.renderedRows.get(rowIndex - 1).eDiv.insertAdjacentElement('afterend', eDiv);\n }\n else if (this.renderedRows.has(rowIndex + 1)) {\n this.renderedRows.get(rowIndex + 1).eDiv.insertAdjacentElement('beforebegin', eDiv);\n }\n else {\n this.eContainer.appendChild(eDiv);\n }\n this.renderedRows.set(rowIndex, { rowComponent: rowComponent, eDiv: eDiv });\n };\n VirtualList.prototype.removeRow = function (rowIndex) {\n var component = this.renderedRows.get(rowIndex);\n this.eContainer.removeChild(component.eDiv);\n this.destroyBean(component.rowComponent);\n this.renderedRows.delete(rowIndex);\n };\n VirtualList.prototype.addScrollListener = function () {\n var _this = this;\n this.addGuiEventListener('scroll', function () { return _this.drawVirtualRows(); });\n };\n VirtualList.prototype.setModel = function (model) {\n this.model = model;\n };\n VirtualList.prototype.destroy = function () {\n if (!this.isAlive()) {\n return;\n }\n this.clearVirtualRows();\n _super.prototype.destroy.call(this);\n };\n __decorate$N([\n Autowired('resizeObserverService')\n ], VirtualList.prototype, \"resizeObserverService\", void 0);\n __decorate$N([\n Autowired('focusService')\n ], VirtualList.prototype, \"focusService\", void 0);\n __decorate$N([\n RefSelector('eContainer')\n ], VirtualList.prototype, \"eContainer\", void 0);\n __decorate$N([\n PostConstruct\n ], VirtualList.prototype, \"postConstruct\", null);\n return VirtualList;\n}(TabGuardComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar OUTSIDE_ANGULAR_EVENTS = ['mouseover', 'mouseout', 'mouseenter', 'mouseleave'];\nvar PASSIVE_EVENTS = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];\n/** The base frameworks, eg React & Angular, override this bean with implementations specific to their requirement. */\nvar VanillaFrameworkOverrides = /** @class */ (function () {\n function VanillaFrameworkOverrides() {\n this.isOutsideAngular = function (eventType) { return includes(OUTSIDE_ANGULAR_EVENTS, eventType); };\n }\n // for Vanilla JS, we use simple timeout\n VanillaFrameworkOverrides.prototype.setTimeout = function (action, timeout) {\n window.setTimeout(action, timeout);\n };\n VanillaFrameworkOverrides.prototype.setInterval = function (action, timeout) {\n return new AgPromise(function (resolve) {\n resolve(window.setInterval(action, timeout));\n });\n };\n // for Vanilla JS, we just add the event to the element\n VanillaFrameworkOverrides.prototype.addEventListener = function (element, type, listener, useCapture) {\n var isPassive = includes(PASSIVE_EVENTS, type);\n element.addEventListener(type, listener, { capture: !!useCapture, passive: isPassive });\n };\n // for Vanilla JS, we just execute the listener\n VanillaFrameworkOverrides.prototype.dispatchEvent = function (eventType, listener, global) {\n listener();\n };\n VanillaFrameworkOverrides.prototype.frameworkComponent = function (name) {\n return null;\n };\n VanillaFrameworkOverrides.prototype.isFrameworkComponent = function (comp) {\n return false;\n };\n return VanillaFrameworkOverrides;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$K = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$M = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$5 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$4 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$5(arguments[i]));\n return ar;\n};\nvar CellNavigationService = /** @class */ (function (_super) {\n __extends$K(CellNavigationService, _super);\n function CellNavigationService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // returns null if no cell to focus on, ie at the end of the grid\n CellNavigationService.prototype.getNextCellToFocus = function (key, focusedCell, ctrlPressed) {\n if (ctrlPressed === void 0) { ctrlPressed = false; }\n if (ctrlPressed) {\n return this.getNextCellToFocusWithCtrlPressed(key, focusedCell);\n }\n return this.getNextCellToFocusWithoutCtrlPressed(key, focusedCell);\n };\n CellNavigationService.prototype.getNextCellToFocusWithCtrlPressed = function (key, focusedCell) {\n var upKey = key === KeyCode.UP;\n var downKey = key === KeyCode.DOWN;\n var leftKey = key === KeyCode.LEFT;\n var column;\n var rowIndex;\n if (upKey || downKey) {\n rowIndex = upKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();\n column = focusedCell.column;\n }\n else {\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n rowIndex = focusedCell.rowIndex;\n column = leftKey !== isRtl ? allColumns[0] : last(allColumns);\n }\n return {\n rowIndex: rowIndex,\n rowPinned: null,\n column: column\n };\n };\n CellNavigationService.prototype.getNextCellToFocusWithoutCtrlPressed = function (key, focusedCell) {\n // starting with the provided cell, we keep moving until we find a cell we can\n // focus on.\n var pointer = focusedCell;\n var finished = false;\n // finished will be true when either:\n // a) cell found that we can focus on\n // b) run out of cells (ie the method returns null)\n while (!finished) {\n switch (key) {\n case KeyCode.UP:\n pointer = this.getCellAbove(pointer);\n break;\n case KeyCode.DOWN:\n pointer = this.getCellBelow(pointer);\n break;\n case KeyCode.RIGHT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToLeft(pointer);\n }\n else {\n pointer = this.getCellToRight(pointer);\n }\n break;\n case KeyCode.LEFT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToRight(pointer);\n }\n else {\n pointer = this.getCellToLeft(pointer);\n }\n break;\n default:\n pointer = null;\n console.warn('AG Grid: unknown key for navigation ' + key);\n break;\n }\n if (pointer) {\n finished = this.isCellGoodToFocusOn(pointer);\n }\n else {\n finished = true;\n }\n }\n return pointer;\n };\n CellNavigationService.prototype.isCellGoodToFocusOn = function (gridCell) {\n var column = gridCell.column;\n var rowNode;\n switch (gridCell.rowPinned) {\n case Constants.PINNED_TOP:\n rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);\n break;\n case Constants.PINNED_BOTTOM:\n rowNode = this.pinnedRowModel.getPinnedBottomRow(gridCell.rowIndex);\n break;\n default:\n rowNode = this.rowModel.getRow(gridCell.rowIndex);\n break;\n }\n if (!rowNode) {\n return false;\n }\n var suppressNavigable = column.isSuppressNavigable(rowNode);\n return !suppressNavigable;\n };\n CellNavigationService.prototype.getCellToLeft = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToLeft = this.columnModel.getDisplayedColBefore(lastCell.column);\n if (!colToLeft) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToLeft,\n rowPinned: lastCell.rowPinned\n };\n };\n CellNavigationService.prototype.getCellToRight = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToRight = this.columnModel.getDisplayedColAfter(lastCell.column);\n // if already on right, do nothing\n if (!colToRight) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToRight,\n rowPinned: lastCell.rowPinned\n };\n };\n CellNavigationService.prototype.getRowBelow = function (rowPosition) {\n // if already on top row, do nothing\n var index = rowPosition.rowIndex;\n var pinned = rowPosition.rowPinned;\n if (this.isLastRowInContainer(rowPosition)) {\n switch (pinned) {\n case Constants.PINNED_BOTTOM:\n // never any rows after pinned bottom\n return null;\n case Constants.PINNED_TOP:\n // if on last row of pinned top, then next row is main body (if rows exist),\n // otherwise it's the pinned bottom\n if (this.rowModel.isRowsToRender()) {\n return { rowIndex: this.paginationProxy.getPageFirstRow(), rowPinned: null };\n }\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_BOTTOM)) {\n return { rowIndex: 0, rowPinned: Constants.PINNED_BOTTOM };\n }\n return null;\n default:\n // if in the main body, then try pinned bottom, otherwise return nothing\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_BOTTOM)) {\n return { rowIndex: 0, rowPinned: Constants.PINNED_BOTTOM };\n }\n return null;\n }\n }\n var rowNode = this.rowModel.getRow(rowPosition.rowIndex);\n var nextStickyPosition = this.getNextStickyPosition(rowNode);\n if (nextStickyPosition) {\n return nextStickyPosition;\n }\n return { rowIndex: index + 1, rowPinned: pinned };\n };\n CellNavigationService.prototype.getNextStickyPosition = function (rowNode, up) {\n if (!this.gridOptionsWrapper.isGroupRowsSticky() || !rowNode || !rowNode.sticky) {\n return;\n }\n var stickyRowCtrls = __spread$4(this.rowRenderer.getStickyTopRowCtrls()).sort(function (a, b) { return a.getRowNode().rowIndex - b.getRowNode().rowIndex; });\n var diff = up ? -1 : 1;\n var idx = stickyRowCtrls.findIndex(function (ctrl) { return ctrl.getRowNode().rowIndex === rowNode.rowIndex; });\n var nextCtrl = stickyRowCtrls[idx + diff];\n if (nextCtrl) {\n return { rowIndex: nextCtrl.getRowNode().rowIndex, rowPinned: null };\n }\n };\n CellNavigationService.prototype.getCellBelow = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowBelow = this.getRowBelow(lastCell);\n if (rowBelow) {\n return {\n rowIndex: rowBelow.rowIndex,\n column: lastCell.column,\n rowPinned: rowBelow.rowPinned\n };\n }\n return null;\n };\n CellNavigationService.prototype.isLastRowInContainer = function (rowPosition) {\n var pinned = rowPosition.rowPinned;\n var index = rowPosition.rowIndex;\n if (pinned === Constants.PINNED_TOP) {\n var lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return lastTopIndex <= index;\n }\n if (pinned === Constants.PINNED_BOTTOM) {\n var lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;\n return lastBottomIndex <= index;\n }\n var lastBodyIndex = this.paginationProxy.getPageLastRow();\n return lastBodyIndex <= index;\n };\n CellNavigationService.prototype.getRowAbove = function (rowPosition) {\n // if already on top row, do nothing\n var index = rowPosition.rowIndex;\n var pinned = rowPosition.rowPinned;\n var isFirstRow = pinned ? index === 0 : index === this.paginationProxy.getPageFirstRow();\n // if already on top row, do nothing\n if (isFirstRow) {\n if (pinned === Constants.PINNED_TOP) {\n return null;\n }\n if (!pinned) {\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n return null;\n }\n // last floating bottom\n if (this.rowModel.isRowsToRender()) {\n return this.getLastBodyCell();\n }\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n return null;\n }\n var rowNode = this.rowModel.getRow(rowPosition.rowIndex);\n var nextStickyPosition = this.getNextStickyPosition(rowNode, true);\n if (nextStickyPosition) {\n return nextStickyPosition;\n }\n return { rowIndex: index - 1, rowPinned: pinned };\n };\n CellNavigationService.prototype.getCellAbove = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowAbove = this.getRowAbove({ rowIndex: lastCell.rowIndex, rowPinned: lastCell.rowPinned });\n if (rowAbove) {\n return {\n rowIndex: rowAbove.rowIndex,\n column: lastCell.column,\n rowPinned: rowAbove.rowPinned\n };\n }\n return null;\n };\n CellNavigationService.prototype.getLastBodyCell = function () {\n var lastBodyRow = this.paginationProxy.getPageLastRow();\n return { rowIndex: lastBodyRow, rowPinned: null };\n };\n CellNavigationService.prototype.getLastFloatingTopRow = function () {\n var lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return { rowIndex: lastFloatingRow, rowPinned: Constants.PINNED_TOP };\n };\n CellNavigationService.prototype.getNextTabbedCell = function (gridCell, backwards) {\n if (backwards) {\n return this.getNextTabbedCellBackwards(gridCell);\n }\n return this.getNextTabbedCellForwards(gridCell);\n };\n CellNavigationService.prototype.getNextTabbedCellForwards = function (gridCell) {\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.rowPinned;\n // move along to the next cell\n var newColumn = this.columnModel.getDisplayedColAfter(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = displayedColumns[0];\n var rowBelow = this.getRowBelow(gridCell);\n if (missing(rowBelow)) {\n return null;\n }\n // If we are tabbing and there is a paging panel present, tabbing should go\n // to the paging panel instead of loading the next page.\n if (!rowBelow.rowPinned && !this.paginationProxy.isRowInPage(rowBelow)) {\n return null;\n }\n newRowIndex = rowBelow ? rowBelow.rowIndex : null;\n newFloating = rowBelow ? rowBelow.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n };\n CellNavigationService.prototype.getNextTabbedCellBackwards = function (gridCell) {\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.rowPinned;\n // move along to the next cell\n var newColumn = this.columnModel.getDisplayedColBefore(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = last(displayedColumns);\n var rowAbove = this.getRowAbove({ rowIndex: gridCell.rowIndex, rowPinned: gridCell.rowPinned });\n if (missing(rowAbove)) {\n return null;\n }\n // If we are tabbing and there is a paging panel present, tabbing should go\n // to the paging panel instead of loading the next page.\n if (!rowAbove.rowPinned && !this.paginationProxy.isRowInPage(rowAbove)) {\n return null;\n }\n newRowIndex = rowAbove ? rowAbove.rowIndex : null;\n newFloating = rowAbove ? rowAbove.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n };\n __decorate$M([\n Autowired('columnModel')\n ], CellNavigationService.prototype, \"columnModel\", void 0);\n __decorate$M([\n Autowired('rowModel')\n ], CellNavigationService.prototype, \"rowModel\", void 0);\n __decorate$M([\n Autowired('rowRenderer')\n ], CellNavigationService.prototype, \"rowRenderer\", void 0);\n __decorate$M([\n Autowired('pinnedRowModel')\n ], CellNavigationService.prototype, \"pinnedRowModel\", void 0);\n __decorate$M([\n Autowired('paginationProxy')\n ], CellNavigationService.prototype, \"paginationProxy\", void 0);\n CellNavigationService = __decorate$M([\n Bean('cellNavigationService')\n ], CellNavigationService);\n return CellNavigationService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$J = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$L = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$5 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar AlignedGridsService = /** @class */ (function (_super) {\n __extends$J(AlignedGridsService, _super);\n function AlignedGridsService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master\n // while processing a master event) we mark this if consuming an event, and if we are, then\n // we don't fire back any events.\n _this.consuming = false;\n return _this;\n }\n AlignedGridsService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('AlignedGridsService');\n };\n AlignedGridsService.prototype.init = function () {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, this.fireScrollEvent.bind(this));\n };\n // common logic across all the fire methods\n AlignedGridsService.prototype.fireEvent = function (callback) {\n // if we are already consuming, then we are acting on an event from a master,\n // so we don't cause a cyclic firing of events\n if (this.consuming) {\n return;\n }\n // iterate through the aligned grids, and pass each aligned grid service to the callback\n var otherGrids = this.gridOptionsWrapper.getAlignedGrids();\n if (otherGrids) {\n otherGrids.forEach(function (otherGridOptions) {\n if (otherGridOptions.api) {\n var alignedGridService = otherGridOptions.api.__getAlignedGridService();\n callback(alignedGridService);\n }\n });\n }\n };\n // common logic across all consume methods. very little common logic, however extracting\n // guarantees consistency across the methods.\n AlignedGridsService.prototype.onEvent = function (callback) {\n this.consuming = true;\n callback();\n this.consuming = false;\n };\n AlignedGridsService.prototype.fireColumnEvent = function (event) {\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onColumnEvent(event);\n });\n };\n AlignedGridsService.prototype.fireScrollEvent = function (event) {\n if (event.direction !== 'horizontal') {\n return;\n }\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onScrollEvent(event);\n });\n };\n AlignedGridsService.prototype.onScrollEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n gridBodyCon.getScrollFeature().setHorizontalScrollPosition(event.left);\n });\n };\n AlignedGridsService.prototype.getMasterColumns = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column);\n });\n }\n else if (event.column) {\n result.push(event.column);\n }\n return result;\n };\n AlignedGridsService.prototype.getColumnIds = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column.getColId());\n });\n }\n else if (event.column) {\n result.push(event.column.getColId());\n }\n return result;\n };\n AlignedGridsService.prototype.onColumnEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n switch (event.type) {\n case Events.EVENT_COLUMN_MOVED:\n case Events.EVENT_COLUMN_VISIBLE:\n case Events.EVENT_COLUMN_PINNED:\n case Events.EVENT_COLUMN_RESIZED:\n var colEvent = event;\n _this.processColumnEvent(colEvent);\n break;\n case Events.EVENT_COLUMN_GROUP_OPENED:\n var groupOpenedEvent = event;\n _this.processGroupOpenedEvent(groupOpenedEvent);\n break;\n case Events.EVENT_COLUMN_PIVOT_CHANGED:\n // we cannot support pivoting with aligned grids as the columns will be out of sync as the\n // grids will have columns created based on the row data of the grid.\n console.warn('AG Grid: pivoting is not supported with aligned grids. ' +\n 'You can only use one of these features at a time in a grid.');\n break;\n }\n });\n };\n AlignedGridsService.prototype.processGroupOpenedEvent = function (groupOpenedEvent) {\n // likewise for column group\n var masterColumnGroup = groupOpenedEvent.columnGroup;\n var otherColumnGroup = null;\n if (masterColumnGroup) {\n var groupId = masterColumnGroup.getGroupId();\n otherColumnGroup = this.columnModel.getProvidedColumnGroup(groupId);\n }\n if (masterColumnGroup && !otherColumnGroup) {\n return;\n }\n this.logger.log('onColumnEvent-> processing ' + groupOpenedEvent + ' expanded = ' + masterColumnGroup.isExpanded());\n this.columnModel.setColumnGroupOpened(otherColumnGroup, masterColumnGroup.isExpanded(), \"alignedGridChanged\");\n };\n AlignedGridsService.prototype.processColumnEvent = function (colEvent) {\n var _this = this;\n var _a;\n // the column in the event is from the master grid. need to\n // look up the equivalent from this (other) grid\n var masterColumn = colEvent.column;\n var otherColumn = null;\n if (masterColumn) {\n otherColumn = this.columnModel.getPrimaryColumn(masterColumn.getColId());\n }\n // if event was with respect to a master column, that is not present in this\n // grid, then we ignore the event\n if (masterColumn && !otherColumn) {\n return;\n }\n // in time, all the methods below should use the column ids, it's a more generic way\n // of handling columns, and also allows for single or multi column events\n var masterColumns = this.getMasterColumns(colEvent);\n switch (colEvent.type) {\n case Events.EVENT_COLUMN_MOVED:\n // when the user moves columns via setColumnState, we can't depend on moving specific columns\n // to an index, as there maybe be many indexes columns moved to (as wasn't result of a mouse drag).\n // so only way to be sure is match the order of all columns using Column State.\n {\n var movedEvent = colEvent;\n var srcColState = colEvent.columnApi.getColumnState();\n var destColState = srcColState.map(function (s) { return ({ colId: s.colId }); });\n this.columnModel.applyColumnState({ state: destColState, applyOrder: true }, \"alignedGridChanged\");\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" toIndex = \" + movedEvent.toIndex);\n }\n break;\n case Events.EVENT_COLUMN_VISIBLE:\n // when the user changes visibility via setColumnState, we can't depend on visibility flag in event\n // as there maybe be mix of true/false (as wasn't result of a mouse click to set visiblity).\n // so only way to be sure is match the visibility of all columns using Column State.\n {\n var visibleEvent = colEvent;\n var srcColState = colEvent.columnApi.getColumnState();\n var destColState = srcColState.map(function (s) { return ({ colId: s.colId, hide: s.hide }); });\n this.columnModel.applyColumnState({ state: destColState }, \"alignedGridChanged\");\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" visible = \" + visibleEvent.visible);\n }\n break;\n case Events.EVENT_COLUMN_PINNED:\n {\n var pinnedEvent = colEvent;\n var srcColState = colEvent.columnApi.getColumnState();\n var destColState = srcColState.map(function (s) { return ({ colId: s.colId, pinned: s.pinned }); });\n this.columnModel.applyColumnState({ state: destColState }, \"alignedGridChanged\");\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" pinned = \" + pinnedEvent.pinned);\n }\n break;\n case Events.EVENT_COLUMN_RESIZED:\n var resizedEvent = colEvent;\n var columnWidths_1 = {};\n masterColumns.forEach(function (column) {\n _this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" actualWidth = \" + column.getActualWidth());\n columnWidths_1[column.getId()] = { key: column.getColId(), newWidth: column.getActualWidth() };\n });\n // don't set flex columns width\n (_a = resizedEvent.flexColumns) === null || _a === void 0 ? void 0 : _a.forEach(function (col) {\n if (columnWidths_1[col.getId()]) {\n delete columnWidths_1[col.getId()];\n }\n });\n this.columnModel.setColumnWidths(Object.values(columnWidths_1), false, resizedEvent.finished, \"alignedGridChanged\");\n break;\n }\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var isVerticalScrollShowing = gridBodyCon.isVerticalScrollShowing();\n var alignedGrids = this.gridOptionsWrapper.getAlignedGrids();\n if (alignedGrids) {\n alignedGrids.forEach(function (grid) {\n if (grid.api) {\n grid.api.setAlwaysShowVerticalScroll(isVerticalScrollShowing);\n }\n });\n }\n };\n __decorate$L([\n Autowired('columnModel')\n ], AlignedGridsService.prototype, \"columnModel\", void 0);\n __decorate$L([\n Autowired('ctrlsService')\n ], AlignedGridsService.prototype, \"ctrlsService\", void 0);\n __decorate$L([\n __param$5(0, Qualifier('loggerFactory'))\n ], AlignedGridsService.prototype, \"setBeans\", null);\n __decorate$L([\n PostConstruct\n ], AlignedGridsService.prototype, \"init\", null);\n AlignedGridsService = __decorate$L([\n Bean('alignedGridsService')\n ], AlignedGridsService);\n return AlignedGridsService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$I = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$K = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$4 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar SelectionService = /** @class */ (function (_super) {\n __extends$I(SelectionService, _super);\n function SelectionService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectionService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('selectionService');\n this.reset();\n };\n SelectionService.prototype.init = function () {\n this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.addManagedListener(this.eventService, Events.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n };\n SelectionService.prototype.setLastSelectedNode = function (rowNode) {\n this.lastSelectedNode = rowNode;\n };\n SelectionService.prototype.getLastSelectedNode = function () {\n return this.lastSelectedNode;\n };\n SelectionService.prototype.getSelectedNodes = function () {\n var selectedNodes = [];\n iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode) {\n selectedNodes.push(rowNode);\n }\n });\n return selectedNodes;\n };\n SelectionService.prototype.getSelectedRows = function () {\n var selectedRows = [];\n iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.data) {\n selectedRows.push(rowNode.data);\n }\n });\n return selectedRows;\n };\n SelectionService.prototype.removeGroupsFromSelection = function () {\n var _this = this;\n iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.group) {\n _this.selectedNodes[rowNode.id] = undefined;\n }\n });\n };\n // should only be called if groupSelectsChildren=true\n SelectionService.prototype.updateGroupsFromChildrenSelections = function (changedPath) {\n // we only do this when group selection state depends on selected children\n if (!this.gridOptionsWrapper.isGroupSelectsChildren()) {\n return;\n }\n // also only do it if CSRM (code should never allow this anyway)\n if (this.rowModel.getType() !== Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n return;\n }\n var clientSideRowModel = this.rowModel;\n var rootNode = clientSideRowModel.getRootNode();\n if (!changedPath) {\n changedPath = new ChangedPath(true, rootNode);\n changedPath.setInactive();\n }\n changedPath.forEachChangedNodeDepthFirst(function (rowNode) {\n if (rowNode !== rootNode) {\n var selected = rowNode.calculateSelectedFromChildren();\n rowNode.selectThisNode(selected === null ? false : selected);\n }\n });\n // clientSideRowModel.getTopLevelNodes()!.forEach((rowNode: RowNode) => {\n // rowNode.depthFirstSearch((node) => {\n // if (node.group) {\n // }\n // });\n // });\n };\n SelectionService.prototype.getNodeForIdIfSelected = function (id) {\n return this.selectedNodes[id];\n };\n SelectionService.prototype.clearOtherNodes = function (rowNodeToKeepSelected) {\n var _this = this;\n var groupsToRefresh = {};\n var updatedCount = 0;\n iterateObject(this.selectedNodes, function (key, otherRowNode) {\n if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {\n var rowNode = _this.selectedNodes[otherRowNode.id];\n updatedCount += rowNode.setSelectedParams({\n newValue: false,\n clearSelection: false,\n suppressFinishActions: true\n });\n if (_this.groupSelectsChildren && otherRowNode.parent) {\n groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;\n }\n }\n });\n iterateObject(groupsToRefresh, function (key, group) {\n var selected = group.calculateSelectedFromChildren();\n group.selectThisNode(selected === null ? false : selected);\n });\n return updatedCount;\n };\n SelectionService.prototype.onRowSelected = function (event) {\n var rowNode = event.node;\n // we do not store the group rows when the groups select children\n if (this.groupSelectsChildren && rowNode.group) {\n return;\n }\n if (rowNode.isSelected()) {\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n this.selectedNodes[rowNode.id] = undefined;\n }\n };\n SelectionService.prototype.syncInRowNode = function (rowNode, oldNode) {\n this.syncInOldRowNode(rowNode, oldNode);\n this.syncInNewRowNode(rowNode);\n };\n // if the id has changed for the node, then this means the rowNode\n // is getting used for a different data item, which breaks\n // our selectedNodes, as the node now is mapped by the old id\n // which is inconsistent. so to keep the old node as selected,\n // we swap in the clone (with the old id and old data). this means\n // the oldNode is effectively a daemon we keep a reference to,\n // so if client calls api.getSelectedNodes(), it gets the daemon\n // in the result. when the client un-selects, the reference to the\n // daemon is removed. the daemon, because it's an oldNode, is not\n // used by the grid for rendering, it's a copy of what the node used\n // to be like before the id was changed.\n SelectionService.prototype.syncInOldRowNode = function (rowNode, oldNode) {\n var oldNodeHasDifferentId = exists(oldNode) && (rowNode.id !== oldNode.id);\n if (oldNodeHasDifferentId && oldNode) {\n var id = oldNode.id;\n var oldNodeSelected = this.selectedNodes[id] == rowNode;\n if (oldNodeSelected) {\n this.selectedNodes[oldNode.id] = oldNode;\n }\n }\n };\n SelectionService.prototype.syncInNewRowNode = function (rowNode) {\n if (exists(this.selectedNodes[rowNode.id])) {\n rowNode.setSelectedInitialValue(true);\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n rowNode.setSelectedInitialValue(false);\n }\n };\n SelectionService.prototype.reset = function () {\n this.logger.log('reset');\n this.selectedNodes = {};\n this.lastSelectedNode = null;\n };\n // returns a list of all nodes at 'best cost' - a feature to be used\n // with groups / trees. if a group has all it's children selected,\n // then the group appears in the result, but not the children.\n // Designed for use with 'children' as the group selection type,\n // where groups don't actually appear in the selection normally.\n SelectionService.prototype.getBestCostNodeSelection = function () {\n if (this.rowModel.getType() !== Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n console.warn('AG Grid: `getBestCostNodeSelection` is only available when using normal row model');\n return;\n }\n var clientSideRowModel = this.rowModel;\n var topLevelNodes = clientSideRowModel.getTopLevelNodes();\n if (topLevelNodes === null) {\n console.warn('AG Grid: `selectAll` not available doing `rowModel=virtual`');\n return;\n }\n var result = [];\n // recursive function, to find the selected nodes\n function traverse(nodes) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n var node = nodes[i];\n if (node.isSelected()) {\n result.push(node);\n }\n else {\n // if not selected, then if it's a group, and the group\n // has children, continue to search for selections\n var maybeGroup = node;\n if (maybeGroup.group && maybeGroup.children) {\n traverse(maybeGroup.children);\n }\n }\n }\n }\n traverse(topLevelNodes);\n return result;\n };\n SelectionService.prototype.setRowModel = function (rowModel) {\n this.rowModel = rowModel;\n };\n SelectionService.prototype.isEmpty = function () {\n var count = 0;\n iterateObject(this.selectedNodes, function (nodeId, rowNode) {\n if (rowNode) {\n count++;\n }\n });\n return count === 0;\n };\n SelectionService.prototype.deselectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n var callback = function (rowNode) { return rowNode.selectThisNode(false); };\n var rowModelClientSide = this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (justFiltered) {\n if (!rowModelClientSide) {\n console.error('AG Grid: selecting just filtered only works with In Memory Row Model');\n return;\n }\n var clientSideRowModel = this.rowModel;\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n iterateObject(this.selectedNodes, function (id, rowNode) {\n // remember the reference can be to null, as we never 'delete' from the map\n if (rowNode) {\n callback(rowNode);\n }\n });\n // this clears down the map (whereas above only sets the items in map to 'undefined')\n this.reset();\n }\n // the above does not clean up the parent rows if they are selected\n if (rowModelClientSide && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n };\n this.eventService.dispatchEvent(event);\n };\n SelectionService.prototype.selectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n if (this.rowModel.getType() !== Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n throw new Error(\"selectAll only available with normal row model, ie not \" + this.rowModel.getType());\n }\n var clientSideRowModel = this.rowModel;\n var callback = function (rowNode) { return rowNode.selectThisNode(true); };\n if (justFiltered) {\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n clientSideRowModel.forEachNode(callback);\n }\n // the above does not clean up the parent rows if they are selected\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n };\n this.eventService.dispatchEvent(event);\n };\n /**\n * @method\n * @deprecated\n */\n SelectionService.prototype.selectNode = function (rowNode, tryMulti) {\n if (rowNode) {\n rowNode.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n }\n };\n /**\n * @method\n * @deprecated\n */\n SelectionService.prototype.deselectIndex = function (rowIndex) {\n var node = this.rowModel.getRow(rowIndex);\n this.deselectNode(node);\n };\n /**\n * @method\n * @deprecated\n */\n SelectionService.prototype.deselectNode = function (rowNode) {\n if (rowNode) {\n rowNode.setSelectedParams({ newValue: false, clearSelection: false });\n }\n };\n /**\n * @method\n * @deprecated\n */\n SelectionService.prototype.selectIndex = function (index, tryMulti) {\n var node = this.rowModel.getRow(index);\n this.selectNode(node, tryMulti);\n };\n __decorate$K([\n Autowired('rowModel')\n ], SelectionService.prototype, \"rowModel\", void 0);\n __decorate$K([\n __param$4(0, Qualifier('loggerFactory'))\n ], SelectionService.prototype, \"setBeans\", null);\n __decorate$K([\n PostConstruct\n ], SelectionService.prototype, \"init\", null);\n SelectionService = __decorate$K([\n Bean('selectionService')\n ], SelectionService);\n return SelectionService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$J = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnApi = /** @class */ (function () {\n function ColumnApi() {\n }\n /** Gets the grid to size the columns to the specified width in pixels, e.g. `sizeColumnsToFit(900)`. To have the grid fit the columns to the grid's width, use the Grid API `gridApi.sizeColumnsToFit()` instead. */\n ColumnApi.prototype.sizeColumnsToFit = function (gridWidth) {\n // AG-3403 validate that gridWidth is provided because this method has the same name as\n // a method on the grid API that takes no arguments, and it's easy to confuse the two\n if (typeof gridWidth === \"undefined\") {\n console.error('AG Grid: missing parameter to columnApi.sizeColumnsToFit(gridWidth)');\n }\n this.columnModel.sizeColumnsToFit(gridWidth, 'api');\n };\n /** Call this if you want to open or close a column group. */\n ColumnApi.prototype.setColumnGroupOpened = function (group, newValue) { this.columnModel.setColumnGroupOpened(group, newValue, 'api'); };\n /** Returns the column group with the given name. */\n ColumnApi.prototype.getColumnGroup = function (name, instanceId) { return this.columnModel.getColumnGroup(name, instanceId); };\n /** Returns the provided column group with the given name. */\n ColumnApi.prototype.getProvidedColumnGroup = function (name) { return this.columnModel.getProvidedColumnGroup(name); };\n /** Returns the display name for a column. Useful if you are doing your own header rendering and want the grid to work out if `headerValueGetter` is used, or if you are doing your own column management GUI, to know what to show as the column name. */\n ColumnApi.prototype.getDisplayNameForColumn = function (column, location) { return this.columnModel.getDisplayNameForColumn(column, location) || ''; };\n /** Returns the display name for a column group (when grouping columns). */\n ColumnApi.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) { return this.columnModel.getDisplayNameForColumnGroup(columnGroup, location) || ''; };\n /** Returns the column with the given `colKey`, which can either be the `colId` (a string) or the `colDef` (an object). */\n ColumnApi.prototype.getColumn = function (key) { return this.columnModel.getPrimaryColumn(key); };\n /** Returns all the columns, regardless of visible or not. */\n ColumnApi.prototype.getColumns = function () { return this.columnModel.getAllPrimaryColumns(); };\n /** Applies the state of the columns from a previous state. Returns `false` if one or more columns could not be found. */\n ColumnApi.prototype.applyColumnState = function (params) { return this.columnModel.applyColumnState(params, 'api'); };\n /** Gets the state of the columns. Typically used when saving column state. */\n ColumnApi.prototype.getColumnState = function () { return this.columnModel.getColumnState(); };\n /** Sets the state back to match the originally provided column definitions. */\n ColumnApi.prototype.resetColumnState = function () { this.columnModel.resetColumnState('api'); };\n /** Gets the state of the column groups. Typically used when saving column group state. */\n ColumnApi.prototype.getColumnGroupState = function () { return this.columnModel.getColumnGroupState(); };\n /** Sets the state of the column group state from a previous state. */\n ColumnApi.prototype.setColumnGroupState = function (stateItems) { this.columnModel.setColumnGroupState(stateItems, 'api'); };\n /** Sets the state back to match the originally provided column definitions. */\n ColumnApi.prototype.resetColumnGroupState = function () { this.columnModel.resetColumnGroupState('api'); };\n /** Returns `true` if pinning left or right, otherwise `false`. */\n ColumnApi.prototype.isPinning = function () { return this.columnModel.isPinningLeft() || this.columnModel.isPinningRight(); };\n /** Returns `true` if pinning left, otherwise `false`. */\n ColumnApi.prototype.isPinningLeft = function () { return this.columnModel.isPinningLeft(); };\n /** Returns `true` if pinning right, otherwise `false`. */\n ColumnApi.prototype.isPinningRight = function () { return this.columnModel.isPinningRight(); };\n /** Returns the column to the right of the provided column, taking into consideration open / closed column groups and visible columns. This is useful if you need to know what column is beside yours e.g. if implementing your own cell navigation. */\n ColumnApi.prototype.getDisplayedColAfter = function (col) { return this.columnModel.getDisplayedColAfter(col); };\n /** Same as `getVisibleColAfter` except gives column to the left. */\n ColumnApi.prototype.getDisplayedColBefore = function (col) { return this.columnModel.getDisplayedColBefore(col); };\n /** Sets the visibility of a column. Key can be the column ID or `Column` object. */\n ColumnApi.prototype.setColumnVisible = function (key, visible) { this.columnModel.setColumnVisible(key, visible, 'api'); };\n /** Same as `setColumnVisible`, but provide a list of column keys. */\n ColumnApi.prototype.setColumnsVisible = function (keys, visible) { this.columnModel.setColumnsVisible(keys, visible, 'api'); };\n /** Sets the column pinned / unpinned. Key can be the column ID, field, `ColDef` object or `Column` object. */\n ColumnApi.prototype.setColumnPinned = function (key, pinned) { this.columnModel.setColumnPinned(key, pinned, 'api'); };\n /** Same as `setColumnPinned`, but provide a list of column keys. */\n ColumnApi.prototype.setColumnsPinned = function (keys, pinned) { this.columnModel.setColumnsPinned(keys, pinned, 'api'); };\n /**\n * Returns all the grid columns, same as `getColumns()`, except\n *\n * a) it has the order of the columns that are presented in the grid\n *\n * b) it's after the 'pivot' step, so if pivoting, has the value columns for the pivot.\n */\n ColumnApi.prototype.getAllGridColumns = function () { return this.columnModel.getAllGridColumns(); };\n /** Same as `getAllDisplayedColumns` but just for the pinned left portion of the grid. */\n ColumnApi.prototype.getDisplayedLeftColumns = function () { return this.columnModel.getDisplayedLeftColumns(); };\n /** Same as `getAllDisplayedColumns` but just for the center portion of the grid. */\n ColumnApi.prototype.getDisplayedCenterColumns = function () { return this.columnModel.getDisplayedCenterColumns(); };\n /** Same as `getAllDisplayedColumns` but just for the pinned right portion of the grid. */\n ColumnApi.prototype.getDisplayedRightColumns = function () { return this.columnModel.getDisplayedRightColumns(); };\n /** Returns all columns currently displayed (e.g. are visible and if in a group, the group is showing the columns) for the pinned left, centre and pinned right portions of the grid. */\n ColumnApi.prototype.getAllDisplayedColumns = function () { return this.columnModel.getAllDisplayedColumns(); };\n /** Same as `getAllGridColumns()`, except only returns rendered columns, i.e. columns that are not within the viewport and therefore not rendered, due to column virtualisation, are not displayed. */\n ColumnApi.prototype.getAllDisplayedVirtualColumns = function () { return this.columnModel.getViewportColumns(); };\n /** Moves a column to `toIndex`. The column is first removed, then added at the `toIndex` location, thus index locations will change to the right of the column after the removal. */\n ColumnApi.prototype.moveColumn = function (key, toIndex) {\n if (typeof key === 'number') {\n // moveColumn used to take indexes, so this is advising user who hasn't moved to new method name\n console.warn('AG Grid: you are using moveColumn(fromIndex, toIndex) - moveColumn takes a column key and a destination index, not two indexes, to move with indexes use moveColumnByIndex(from,to) instead');\n this.columnModel.moveColumnByIndex(key, toIndex, 'api');\n }\n else {\n this.columnModel.moveColumn(key, toIndex, 'api');\n }\n };\n /** Same as `moveColumn` but works on index locations. */\n ColumnApi.prototype.moveColumnByIndex = function (fromIndex, toIndex) { this.columnModel.moveColumnByIndex(fromIndex, toIndex, 'api'); };\n /** Same as `moveColumn` but works on list. */\n ColumnApi.prototype.moveColumns = function (columnsToMoveKeys, toIndex) { this.columnModel.moveColumns(columnsToMoveKeys, toIndex, 'api'); };\n /** Move the column to a new position in the row grouping order. */\n ColumnApi.prototype.moveRowGroupColumn = function (fromIndex, toIndex) { this.columnModel.moveRowGroupColumn(fromIndex, toIndex); };\n /** Sets the agg function for a column. `aggFunc` can be one of the built-in aggregations or a custom aggregation by name or direct function. */\n ColumnApi.prototype.setColumnAggFunc = function (key, aggFunc) { this.columnModel.setColumnAggFunc(key, aggFunc); };\n /** Sets the column width on a single column. The finished flag gets included in the resulting event and not used internally by the grid. The finished flag is intended for dragging, where a dragging action will produce many `columnWidth` events, so the consumer of events knows when it receives the last event in a stream. The finished parameter is optional, and defaults to `true`. */\n ColumnApi.prototype.setColumnWidth = function (key, newWidth, finished, source) {\n if (finished === void 0) { finished = true; }\n this.columnModel.setColumnWidths([{ key: key, newWidth: newWidth }], false, finished, source);\n };\n /** Sets the column widths on multiple columns. This method offers better performance than calling `setColumnWidth` multiple times. The finished flag gets included in the resulting event and not used internally by the grid. The finished flag is intended for dragging, where a dragging action will produce many `columnWidth` events, so the consumer of events knows when it receives the last event in a stream. The finished parameter is optional, and defaults to `true`. */\n ColumnApi.prototype.setColumnWidths = function (columnWidths, finished, source) {\n if (finished === void 0) { finished = true; }\n this.columnModel.setColumnWidths(columnWidths, false, finished, source);\n };\n /** Set the pivot mode. */\n ColumnApi.prototype.setPivotMode = function (pivotMode) { this.columnModel.setPivotMode(pivotMode); };\n /** Get the pivot mode. */\n ColumnApi.prototype.isPivotMode = function () { return this.columnModel.isPivotMode(); };\n /** @deprecated Use `getPivotResultColumn` instead */\n ColumnApi.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) {\n console.warn('AG Grid: since version 28.0.x getSecondaryPivotColumn has been renamed, please use getPivotResultColumn instead');\n return this.getPivotResultColumn(pivotKeys, valueColKey);\n };\n /** Returns the pivot result column for the given `pivotKeys` and `valueColId`. Useful to then call operations on the pivot column. */\n ColumnApi.prototype.getPivotResultColumn = function (pivotKeys, valueColKey) { return this.columnModel.getSecondaryPivotColumn(pivotKeys, valueColKey); };\n /** Set the value columns to the provided list of columns. */\n ColumnApi.prototype.setValueColumns = function (colKeys) { this.columnModel.setValueColumns(colKeys, 'api'); };\n /** Get a list of the existing value columns. */\n ColumnApi.prototype.getValueColumns = function () { return this.columnModel.getValueColumns(); };\n /** Remove the given column from the existing set of value columns. */\n ColumnApi.prototype.removeValueColumn = function (colKey) { this.columnModel.removeValueColumn(colKey, 'api'); };\n /** Like `removeValueColumn` but remove the given list of columns from the existing set of value columns. */\n ColumnApi.prototype.removeValueColumns = function (colKeys) { this.columnModel.removeValueColumns(colKeys, 'api'); };\n /** Add the given column to the set of existing value columns. */\n ColumnApi.prototype.addValueColumn = function (colKey) { this.columnModel.addValueColumn(colKey, 'api'); };\n /** Like `addValueColumn` but add the given list of columns to the existing set of value columns. */\n ColumnApi.prototype.addValueColumns = function (colKeys) { this.columnModel.addValueColumns(colKeys, 'api'); };\n /** Set the row group columns. */\n ColumnApi.prototype.setRowGroupColumns = function (colKeys) { this.columnModel.setRowGroupColumns(colKeys, 'api'); };\n /** Remove a column from the row groups. */\n ColumnApi.prototype.removeRowGroupColumn = function (colKey) { this.columnModel.removeRowGroupColumn(colKey, 'api'); };\n /** Same as `removeRowGroupColumn` but provide a list of columns. */\n ColumnApi.prototype.removeRowGroupColumns = function (colKeys) { this.columnModel.removeRowGroupColumns(colKeys, 'api'); };\n /** Add a column to the row groups. */\n ColumnApi.prototype.addRowGroupColumn = function (colKey) { this.columnModel.addRowGroupColumn(colKey, 'api'); };\n /** Same as `addRowGroupColumn` but provide a list of columns. */\n ColumnApi.prototype.addRowGroupColumns = function (colKeys) { this.columnModel.addRowGroupColumns(colKeys, 'api'); };\n /** Get row group columns. */\n ColumnApi.prototype.getRowGroupColumns = function () { return this.columnModel.getRowGroupColumns(); };\n /** Set the pivot columns. */\n ColumnApi.prototype.setPivotColumns = function (colKeys) { this.columnModel.setPivotColumns(colKeys, 'api'); };\n /** Remove a pivot column. */\n ColumnApi.prototype.removePivotColumn = function (colKey) { this.columnModel.removePivotColumn(colKey, 'api'); };\n /** Same as `removePivotColumn` but provide a list of columns. */\n ColumnApi.prototype.removePivotColumns = function (colKeys) { this.columnModel.removePivotColumns(colKeys, 'api'); };\n /** Add a pivot column. */\n ColumnApi.prototype.addPivotColumn = function (colKey) { this.columnModel.addPivotColumn(colKey, 'api'); };\n /** Same as `addPivotColumn` but provide a list of columns. */\n ColumnApi.prototype.addPivotColumns = function (colKeys) { this.columnModel.addPivotColumns(colKeys, 'api'); };\n /** Get the pivot columns. */\n ColumnApi.prototype.getPivotColumns = function () { return this.columnModel.getPivotColumns(); };\n /** Same as `getAllDisplayedColumnGroups` but just for the pinned left portion of the grid. */\n ColumnApi.prototype.getLeftDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeLeft(); };\n /** Same as `getAllDisplayedColumnGroups` but just for the center portion of the grid. */\n ColumnApi.prototype.getCenterDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeCentre(); };\n /** Same as `getAllDisplayedColumnGroups` but just for the pinned right portion of the grid. */\n ColumnApi.prototype.getRightDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeRight(); };\n /** Returns all 'root' column headers. If you are not grouping columns, these return the columns. If you are grouping, these return the top level groups - you can navigate down through each one to get the other lower level headers and finally the columns at the bottom. */\n ColumnApi.prototype.getAllDisplayedColumnGroups = function () { return this.columnModel.getAllDisplayedTrees(); };\n /** Auto-sizes a column based on its contents. */\n ColumnApi.prototype.autoSizeColumn = function (key, skipHeader) { return this.columnModel.autoSizeColumn(key, skipHeader, 'api'); };\n /** Same as `autoSizeColumn`, but provide a list of column keys. */\n ColumnApi.prototype.autoSizeColumns = function (keys, skipHeader) {\n this.columnModel.autoSizeColumns({ columns: keys, skipHeader: skipHeader });\n };\n /** Calls `autoSizeColumns` on all displayed columns. */\n ColumnApi.prototype.autoSizeAllColumns = function (skipHeader) { this.columnModel.autoSizeAllColumns(skipHeader, 'api'); };\n /** @deprecated Use `setPivotResultColumns` instead. */\n ColumnApi.prototype.setSecondaryColumns = function (colDefs) {\n console.warn('AG Grid: since version 28.0.x setSecondaryColumns has been renamed, please use setPivotResultColumns instead');\n this.setPivotResultColumns(colDefs);\n };\n /** Set the pivot result columns. */\n ColumnApi.prototype.setPivotResultColumns = function (colDefs) { this.columnModel.setSecondaryColumns(colDefs, 'api'); };\n /** @deprecated Use `getPivotResultColumns` instead. */\n ColumnApi.prototype.getSecondaryColumns = function () {\n console.warn('AG Grid: since version 28.0.x getSecondaryColumns has been renamed, please use getPivotResultColumns instead');\n return this.getPivotResultColumns();\n };\n /** Returns the grid's pivot result columns. */\n ColumnApi.prototype.getPivotResultColumns = function () { return this.columnModel.getSecondaryColumns(); };\n /** @deprecated Use `getColumns` instead. */\n ColumnApi.prototype.getPrimaryColumns = function () {\n console.warn('AG Grid: since version 28.0.x getPrimaryColumns has been renamed, please use getColumns instead');\n return this.getColumns();\n };\n ColumnApi.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function () {\n // some users were raising support issues with regards memory leaks. the problem was the customers applications\n // were keeping references to the API. trying to educate them all would be difficult, easier to just remove\n // all references in the API so at least the core grid can be garbage collected.\n //\n // wait about 100ms before clearing down the references, in case user has some cleanup to do,\n // and needs to deference the API first\n setTimeout(_.removeAllReferences.bind(window, this, 'Column API'), 100);\n };\n // below goes through deprecated items, prints message to user, then calls the new version of the same method\n // public getColumnDefs(): (ColDef | ColGroupDef)[] {\n // this.setColumnGroupOpened(group, newValue);\n // return null;\n // }\n /** @deprecated Use `getColumns` instead */\n ColumnApi.prototype.getAllColumns = function () {\n console.warn('AG Grid: since version 28.0.x getAllColumns has been renamed, please use getColumns instead');\n return this.getColumns();\n };\n /** @deprecated columnGroupOpened no longer exists, use setColumnGroupOpened */\n ColumnApi.prototype.columnGroupOpened = function (group, newValue) {\n console.error('AG Grid: columnGroupOpened no longer exists, use setColumnGroupOpened');\n this.setColumnGroupOpened(group, newValue);\n };\n /** @deprecated hideColumns is deprecated, use setColumnsVisible */\n ColumnApi.prototype.hideColumns = function (colIds, hide) {\n console.error('AG Grid: hideColumns is deprecated, use setColumnsVisible');\n this.columnModel.setColumnsVisible(colIds, !hide, 'api');\n };\n /** @deprecated hideColumn is deprecated, use setColumnVisible */\n ColumnApi.prototype.hideColumn = function (colId, hide) {\n console.error('AG Grid: hideColumn is deprecated, use setColumnVisible');\n this.columnModel.setColumnVisible(colId, !hide, 'api');\n };\n /** @deprecated setState is deprecated, use setColumnState */\n ColumnApi.prototype.setState = function (columnState) {\n console.error('AG Grid: setState is deprecated, use setColumnState');\n return this.setColumnState(columnState);\n };\n /** @deprecated getState is deprecated, use getColumnState */\n ColumnApi.prototype.getState = function () {\n console.error('AG Grid: getState is deprecated, use getColumnState');\n return this.getColumnState();\n };\n /** @deprecated resetState is deprecated, use resetColumnState */\n ColumnApi.prototype.resetState = function () {\n console.error('AG Grid: resetState is deprecated, use resetColumnState');\n this.resetColumnState();\n };\n /** @deprecated getAggregationColumns is deprecated, use getValueColumns */\n ColumnApi.prototype.getAggregationColumns = function () {\n console.error('AG Grid: getAggregationColumns is deprecated, use getValueColumns');\n return this.columnModel.getValueColumns();\n };\n /** @deprecated removeAggregationColumn is deprecated, use removeValueColumn */\n ColumnApi.prototype.removeAggregationColumn = function (colKey) {\n console.error('AG Grid: removeAggregationColumn is deprecated, use removeValueColumn');\n this.columnModel.removeValueColumn(colKey, 'api');\n };\n /** @deprecated removeAggregationColumns is deprecated, use removeValueColumns */\n ColumnApi.prototype.removeAggregationColumns = function (colKeys) {\n console.error('AG Grid: removeAggregationColumns is deprecated, use removeValueColumns');\n this.columnModel.removeValueColumns(colKeys, 'api');\n };\n /** @deprecated addAggregationColumn is deprecated, use addValueColumn */\n ColumnApi.prototype.addAggregationColumn = function (colKey) {\n console.error('AG Grid: addAggregationColumn is deprecated, use addValueColumn');\n this.columnModel.addValueColumn(colKey, 'api');\n };\n /** @deprecated addAggregationColumns is deprecated, use addValueColumns */\n ColumnApi.prototype.addAggregationColumns = function (colKeys) {\n console.error('AG Grid: addAggregationColumns is deprecated, use addValueColumns');\n this.columnModel.addValueColumns(colKeys, 'api');\n };\n /** @deprecated setColumnAggFunction is deprecated, use setColumnAggFunc */\n ColumnApi.prototype.setColumnAggFunction = function (column, aggFunc) {\n console.error('AG Grid: setColumnAggFunction is deprecated, use setColumnAggFunc');\n this.columnModel.setColumnAggFunc(column, aggFunc, 'api');\n };\n /** @deprecated getDisplayNameForCol is deprecated, use getDisplayNameForColumn */\n ColumnApi.prototype.getDisplayNameForCol = function (column) {\n console.error('AG Grid: getDisplayNameForCol is deprecated, use getDisplayNameForColumn');\n return this.getDisplayNameForColumn(column, null);\n };\n /** @deprecated setColumnState is deprecated, use applyColumnState. */\n ColumnApi.prototype.setColumnState = function (columnState) {\n console.error('AG Grid: setColumnState is deprecated, use applyColumnState');\n return this.columnModel.applyColumnState({ state: columnState, applyOrder: true }, 'api');\n };\n /** @deprecated getOriginalColumnGroup is deprecated, use getProvidedColumnGroup. */\n ColumnApi.prototype.getOriginalColumnGroup = function (name) {\n console.error('AG Grid: getOriginalColumnGroup is deprecated, use getProvidedColumnGroup');\n return this.columnModel.getProvidedColumnGroup(name);\n };\n __decorate$J([\n Autowired('columnModel')\n ], ColumnApi.prototype, \"columnModel\", void 0);\n __decorate$J([\n PreDestroy\n ], ColumnApi.prototype, \"cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid\", null);\n ColumnApi = __decorate$J([\n Bean('columnApi')\n ], ColumnApi);\n return ColumnApi;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$H = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValueService = /** @class */ (function (_super) {\n __extends$H(ValueService, _super);\n function ValueService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.initialised = false;\n return _this;\n }\n ValueService.prototype.init = function () {\n var _this = this;\n this.cellExpressions = this.gridOptionsWrapper.isEnableCellExpressions();\n this.initialised = true;\n // We listen to our own event and use it to call the columnSpecific callback,\n // this way the handler calls are correctly interleaved with other global events\n this.eventService.addEventListener(Events.EVENT_CELL_VALUE_CHANGED, function (event) { return _this.callColumnCellValueChangedHandler(event); }, this.gridOptionsWrapper.useAsyncEvents());\n };\n ValueService.prototype.getValue = function (column, rowNode, forFilter, ignoreAggData) {\n if (forFilter === void 0) { forFilter = false; }\n if (ignoreAggData === void 0) { ignoreAggData = false; }\n // hack - the grid is getting refreshed before this bean gets initialised, race condition.\n // really should have a way so they get initialised in the right order???\n if (!this.initialised) {\n this.init();\n }\n if (!rowNode) {\n return;\n }\n // pull these out to make code below easier to read\n var colDef = column.getColDef();\n var field = colDef.field;\n var colId = column.getId();\n var data = rowNode.data;\n var result;\n // if there is a value getter, this gets precedence over a field\n var groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== undefined;\n var aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== undefined;\n if (forFilter && colDef.filterValueGetter) {\n result = this.executeFilterValueGetter(colDef.filterValueGetter, data, column, rowNode);\n }\n else if (this.gridOptionsWrapper.isTreeData() && aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (this.gridOptionsWrapper.isTreeData() && colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (this.gridOptionsWrapper.isTreeData() && (field && data)) {\n result = getValueUsingField(data, field, column.isFieldContainsDots());\n }\n else if (groupDataExists) {\n result = rowNode.groupData[colId];\n }\n else if (aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (field && data) {\n result = getValueUsingField(data, field, column.isFieldContainsDots());\n }\n // the result could be an expression itself, if we are allowing cell values to be expressions\n if (this.cellExpressions && (typeof result === 'string') && result.indexOf('=') === 0) {\n var cellValueGetter = result.substring(1);\n result = this.executeValueGetter(cellValueGetter, data, column, rowNode);\n }\n if (result == null) {\n var openedGroup = this.getOpenedGroup(rowNode, column);\n if (openedGroup != null) {\n return openedGroup;\n }\n }\n return result;\n };\n ValueService.prototype.getOpenedGroup = function (rowNode, column) {\n if (!this.gridOptionsWrapper.isShowOpenedGroup()) {\n return;\n }\n var colDef = column.getColDef();\n if (!colDef.showRowGroup) {\n return;\n }\n var showRowGroup = column.getColDef().showRowGroup;\n var pointer = rowNode.parent;\n while (pointer != null) {\n if (pointer.rowGroupColumn && (showRowGroup === true || showRowGroup === pointer.rowGroupColumn.getId())) {\n return pointer.key;\n }\n pointer = pointer.parent;\n }\n return undefined;\n };\n /**\n * Sets the value of a GridCell\n * @param rowNode The `RowNode` to be updated\n * @param colKey The `Column` to be updated\n * @param newValue The new value to be set\n * @param eventSource The event source\n * @returns `True` if the value has been updated, otherwise`False`.\n */\n ValueService.prototype.setValue = function (rowNode, colKey, newValue, eventSource) {\n var column = this.columnModel.getPrimaryColumn(colKey);\n if (!rowNode || !column) {\n return false;\n }\n // this will only happen if user is trying to paste into a group row, which doesn't make sense\n // the user should not be trying to paste into group rows\n if (missing(rowNode.data)) {\n rowNode.data = {};\n }\n // for backwards compatibility we are also retrieving the newValueHandler as well as the valueSetter\n var _a = column.getColDef(), field = _a.field, newValueHandler = _a.newValueHandler, valueSetter = _a.valueSetter;\n // need either a field or a newValueHandler for this to work\n if (missing(field) && missing(newValueHandler) && missing(valueSetter)) {\n // we don't tell user about newValueHandler, as that is deprecated\n console.warn(\"AG Grid: you need either field or valueSetter set on colDef for editing to work\");\n return false;\n }\n var params = {\n node: rowNode,\n data: rowNode.data,\n oldValue: this.getValue(column, rowNode),\n newValue: newValue,\n colDef: column.getColDef(),\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n params.newValue = newValue;\n var valueWasDifferent;\n if (newValueHandler && exists(newValueHandler)) {\n valueWasDifferent = newValueHandler(params);\n }\n else if (exists(valueSetter)) {\n valueWasDifferent = this.expressionService.evaluate(valueSetter, params);\n }\n else {\n valueWasDifferent = this.setValueUsingField(rowNode.data, field, newValue, column.isFieldContainsDots());\n }\n // in case user forgot to return something (possible if they are not using TypeScript\n // and just forgot, or using an old newValueHandler we didn't always expect a return\n // value here), we default the return value to true, so we always refresh.\n if (valueWasDifferent === undefined) {\n valueWasDifferent = true;\n }\n // if no change to the value, then no need to do the updating, or notifying via events.\n // otherwise the user could be tabbing around the grid, and cellValueChange would get called\n // all the time.\n if (!valueWasDifferent) {\n return false;\n }\n // reset quick filter on this row\n rowNode.resetQuickFilterAggregateText();\n this.valueCache.onDataChanged();\n params.newValue = this.getValue(column, rowNode);\n var event = {\n type: Events.EVENT_CELL_VALUE_CHANGED,\n event: null,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n column: params.column,\n api: params.api,\n columnApi: params.columnApi,\n colDef: params.colDef,\n context: params.context,\n data: rowNode.data,\n node: rowNode,\n oldValue: params.oldValue,\n newValue: params.newValue,\n value: params.newValue,\n source: eventSource\n };\n this.eventService.dispatchEvent(event);\n return true;\n };\n ValueService.prototype.callColumnCellValueChangedHandler = function (event) {\n var onCellValueChanged = event.colDef.onCellValueChanged;\n if (typeof onCellValueChanged === 'function') {\n onCellValueChanged({\n node: event.node,\n data: event.data,\n oldValue: event.oldValue,\n newValue: event.newValue,\n colDef: event.colDef,\n column: event.column,\n api: event.api,\n columnApi: event.columnApi,\n context: event.context\n });\n }\n };\n ValueService.prototype.setValueUsingField = function (data, field, newValue, isFieldContainsDots) {\n if (!field) {\n return false;\n }\n // if no '.', then it's not a deep value\n var valuesAreSame = false;\n if (!isFieldContainsDots) {\n // soft comparison to match strings and numbers\n valuesAreSame = data[field] == newValue;\n if (!valuesAreSame) {\n data[field] = newValue;\n }\n }\n else {\n // otherwise it is a deep value, so need to dig for it\n var fieldPieces = field.split('.');\n var currentObject = data;\n while (fieldPieces.length > 0 && currentObject) {\n var fieldPiece = fieldPieces.shift();\n if (fieldPieces.length === 0) {\n // soft comparison to match strings and numbers\n valuesAreSame = currentObject[fieldPiece] == newValue;\n if (!valuesAreSame) {\n currentObject[fieldPiece] = newValue;\n }\n }\n else {\n currentObject = currentObject[fieldPiece];\n }\n }\n }\n return !valuesAreSame;\n };\n ValueService.prototype.executeFilterValueGetter = function (valueGetter, data, column, rowNode) {\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n return this.expressionService.evaluate(valueGetter, params);\n };\n ValueService.prototype.executeValueGetter = function (valueGetter, data, column, rowNode) {\n var colId = column.getId();\n // if inside the same turn, just return back the value we got last time\n var valueFromCache = this.valueCache.getValue(rowNode, colId);\n if (valueFromCache !== undefined) {\n return valueFromCache;\n }\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n var result = this.expressionService.evaluate(valueGetter, params);\n // if a turn is active, store the value in case the grid asks for it again\n this.valueCache.setValue(rowNode, colId, result);\n return result;\n };\n ValueService.prototype.getValueCallback = function (node, field) {\n var otherColumn = this.columnModel.getPrimaryColumn(field);\n if (otherColumn) {\n return this.getValue(otherColumn, node);\n }\n return null;\n };\n // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col\n ValueService.prototype.getKeyForNode = function (col, rowNode) {\n var value = this.getValue(col, rowNode);\n var keyCreator = col.getColDef().keyCreator;\n var result = value;\n if (keyCreator) {\n var keyParams = {\n value: value,\n colDef: col.getColDef(),\n column: col,\n node: rowNode,\n data: rowNode.data,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n result = keyCreator(keyParams);\n }\n // if already a string, or missing, just return it\n if (typeof result === 'string' || result == null) {\n return result;\n }\n result = String(result);\n if (result === '[object Object]') {\n doOnce(function () {\n console.warn('AG Grid: a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (se AG Grid docs) or b) to toString() on the object to return a key');\n }, 'getKeyForNode - warn about [object,object]');\n }\n return result;\n };\n __decorate$I([\n Autowired('expressionService')\n ], ValueService.prototype, \"expressionService\", void 0);\n __decorate$I([\n Autowired('columnModel')\n ], ValueService.prototype, \"columnModel\", void 0);\n __decorate$I([\n Autowired('valueCache')\n ], ValueService.prototype, \"valueCache\", void 0);\n __decorate$I([\n PostConstruct\n ], ValueService.prototype, \"init\", null);\n ValueService = __decorate$I([\n Bean('valueService')\n ], ValueService);\n return ValueService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$G = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$3 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar ExpressionService = /** @class */ (function (_super) {\n __extends$G(ExpressionService, _super);\n function ExpressionService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.expressionToFunctionCache = {};\n return _this;\n }\n ExpressionService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ExpressionService');\n };\n ExpressionService.prototype.evaluate = function (expressionOrFunc, params) {\n if (typeof expressionOrFunc === 'function') {\n // valueGetter is a function, so just call it\n var func = expressionOrFunc;\n return func(params);\n }\n else if (typeof expressionOrFunc === 'string') {\n // valueGetter is an expression, so execute the expression\n var expression = expressionOrFunc;\n return this.evaluateExpression(expression, params);\n }\n else {\n console.error('AG Grid: value should be either a string or a function', expressionOrFunc);\n }\n };\n ExpressionService.prototype.evaluateExpression = function (expression, params) {\n try {\n var javaScriptFunction = this.createExpressionFunction(expression);\n // the params don't have all these values, rather we add every possible\n // value a params can have, which makes whatever is in the params available.\n var result = javaScriptFunction(params.value, params.context, params.oldValue, params.newValue, params.value, params.node, params.data, params.colDef, params.rowIndex, params.api, params.columnApi, params.getValue, params.column, params.columnGroup);\n return result;\n }\n catch (e) {\n // the expression failed, which can happen, as it's the client that\n // provides the expression. so print a nice message\n // tslint:disable-next-line\n console.log('Processing of the expression failed');\n // tslint:disable-next-line\n console.log('Expression = ' + expression);\n // tslint:disable-next-line\n console.log('Params =', params);\n // tslint:disable-next-line\n console.log('Exception = ' + e);\n return null;\n }\n };\n ExpressionService.prototype.createExpressionFunction = function (expression) {\n // check cache first\n if (this.expressionToFunctionCache[expression]) {\n return this.expressionToFunctionCache[expression];\n }\n // if not found in cache, return the function\n var functionBody = this.createFunctionBody(expression);\n var theFunction = new Function('x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup', functionBody);\n // store in cache\n this.expressionToFunctionCache[expression] = theFunction;\n return theFunction;\n };\n ExpressionService.prototype.createFunctionBody = function (expression) {\n // if the expression has the 'return' word in it, then use as is,\n // if not, then wrap it with return and ';' to make a function\n if (expression.indexOf('return') >= 0) {\n return expression;\n }\n else {\n return 'return ' + expression + ';';\n }\n };\n __decorate$H([\n __param$3(0, Qualifier('loggerFactory'))\n ], ExpressionService.prototype, \"setBeans\", null);\n ExpressionService = __decorate$H([\n Bean('expressionService')\n ], ExpressionService);\n return ExpressionService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$F = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TemplateService = /** @class */ (function (_super) {\n __extends$F(TemplateService, _super);\n function TemplateService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateCache = {};\n _this.waitingCallbacks = {};\n return _this;\n }\n // returns the template if it is loaded, or null if it is not loaded\n // but will call the callback when it is loaded\n TemplateService.prototype.getTemplate = function (url, callback) {\n var templateFromCache = this.templateCache[url];\n if (templateFromCache) {\n return templateFromCache;\n }\n var callbackList = this.waitingCallbacks[url];\n var that = this;\n if (!callbackList) {\n // first time this was called, so need a new list for callbacks\n callbackList = [];\n this.waitingCallbacks[url] = callbackList;\n // and also need to do the http request\n var client = new XMLHttpRequest();\n client.onload = function () {\n that.handleHttpResult(this, url);\n };\n client.open(\"GET\", url);\n client.send();\n }\n // add this callback\n if (callback) {\n callbackList.push(callback);\n }\n // caller needs to wait for template to load, so return null\n return null;\n };\n TemplateService.prototype.handleHttpResult = function (httpResult, url) {\n if (httpResult.status !== 200 || httpResult.response === null) {\n console.warn(\"AG Grid: Unable to get template error \" + httpResult.status + \" - \" + url);\n return;\n }\n // response success, so process it\n // in IE9 the response is in - responseText\n this.templateCache[url] = httpResult.response || httpResult.responseText;\n // inform all listeners that this is now in the cache\n var callbacks = this.waitingCallbacks[url];\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i];\n // we could pass the callback the response, however we know the client of this code\n // is the cell renderer, and it passes the 'cellRefresh' method in as the callback\n // which doesn't take any parameters.\n callback();\n }\n };\n TemplateService = __decorate$G([\n Bean('templateService')\n ], TemplateService);\n return TemplateService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$E = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$2 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar LoggerFactory = /** @class */ (function (_super) {\n __extends$E(LoggerFactory, _super);\n function LoggerFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LoggerFactory.prototype.setBeans = function (gridOptionsWrapper) {\n this.logging = gridOptionsWrapper.isDebug();\n };\n LoggerFactory.prototype.create = function (name) {\n return new Logger(name, this.isLogging.bind(this));\n };\n LoggerFactory.prototype.isLogging = function () {\n return this.logging;\n };\n __decorate$F([\n __param$2(0, Qualifier('gridOptionsWrapper'))\n ], LoggerFactory.prototype, \"setBeans\", null);\n LoggerFactory = __decorate$F([\n Bean('loggerFactory')\n ], LoggerFactory);\n return LoggerFactory;\n}(BeanStub));\nvar Logger = /** @class */ (function () {\n function Logger(name, isLoggingFunc) {\n this.name = name;\n this.isLoggingFunc = isLoggingFunc;\n }\n Logger.prototype.isLogging = function () {\n return this.isLoggingFunc();\n };\n Logger.prototype.log = function (message) {\n if (this.isLoggingFunc()) {\n // tslint:disable-next-line\n console.log('AG Grid.' + this.name + ': ' + message);\n }\n };\n return Logger;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$D = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridCtrl = /** @class */ (function (_super) {\n __extends$D(GridCtrl, _super);\n function GridCtrl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridCtrl.prototype.setComp = function (view, eGridDiv, eGui) {\n var _this = this;\n this.view = view;\n this.eGridHostDiv = eGridDiv;\n this.eGui = eGui;\n // this drop target is just used to see if the drop event is inside the grid\n this.dragAndDropService.addDropTarget({\n getContainer: function () { return _this.eGui; },\n isInterestedIn: function (type) { return type === DragSourceType.HeaderCell || type === DragSourceType.ToolPanel; },\n getIconName: function () { return DragAndDropService.ICON_NOT_ALLOWED; },\n });\n this.mouseEventService.stampTopLevelGridCompWithGridInstance(eGridDiv);\n this.createManagedBean(new LayoutFeature(this.view));\n // important to set rtl before doLayout, as setting the RTL class impacts the scroll position,\n // which doLayout indirectly depends on\n this.addRtlSupport();\n this.addManagedListener(this, Events.EVENT_KEYBOARD_FOCUS, function () {\n _this.view.addOrRemoveKeyboardFocusClass(true);\n });\n this.addManagedListener(this, Events.EVENT_MOUSE_FOCUS, function () {\n _this.view.addOrRemoveKeyboardFocusClass(false);\n });\n var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eGridHostDiv, this.onGridSizeChanged.bind(this));\n this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n this.ctrlsService.registerGridCtrl(this);\n };\n GridCtrl.prototype.isDetailGrid = function () {\n var _a, _b;\n var el = this.focusService.findTabbableParent(this.getGui());\n return ((_b = (_a = el) === null || _a === void 0 ? void 0 : _a.getAttribute('row-id')) === null || _b === void 0 ? void 0 : _b.startsWith('detail')) || false;\n };\n GridCtrl.prototype.showDropZones = function () {\n return ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule);\n };\n GridCtrl.prototype.showSideBar = function () {\n return ModuleRegistry.isRegistered(ModuleNames.SideBarModule);\n };\n GridCtrl.prototype.showStatusBar = function () {\n return ModuleRegistry.isRegistered(ModuleNames.StatusBarModule);\n };\n GridCtrl.prototype.showWatermark = function () {\n return ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);\n };\n GridCtrl.prototype.onGridSizeChanged = function () {\n var event = {\n type: Events.EVENT_GRID_SIZE_CHANGED,\n clientWidth: this.eGridHostDiv.clientWidth,\n clientHeight: this.eGridHostDiv.clientHeight\n };\n this.eventService.dispatchEvent(event);\n };\n GridCtrl.prototype.addRtlSupport = function () {\n var cssClass = this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr';\n this.view.setRtlClass(cssClass);\n };\n GridCtrl.prototype.destroyGridUi = function () {\n this.view.destroyGridUi();\n };\n GridCtrl.prototype.getGui = function () {\n return this.eGui;\n };\n GridCtrl.prototype.setResizeCursor = function (on) {\n this.view.setCursor(on ? 'ew-resize' : null);\n };\n GridCtrl.prototype.disableUserSelect = function (on) {\n this.view.setUserSelect(on ? 'none' : null);\n };\n GridCtrl.prototype.focusNextInnerContainer = function (backwards) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var focusableContainers = this.view.getFocusableContainers();\n var idxWithFocus = focusableContainers.findIndex(function (container) { return container.contains(eDocument.activeElement); });\n var nextIdx = idxWithFocus + (backwards ? -1 : 1);\n if (nextIdx <= 0 || nextIdx >= focusableContainers.length) {\n return false;\n }\n return this.focusService.focusInto(focusableContainers[nextIdx]);\n };\n GridCtrl.prototype.focusInnerElement = function (fromBottom) {\n var focusableContainers = this.view.getFocusableContainers();\n if (fromBottom) {\n if (focusableContainers.length > 1) {\n return this.focusService.focusInto(last(focusableContainers), true);\n }\n var lastColumn = last(this.columnModel.getAllDisplayedColumns());\n if (this.focusService.focusGridView(lastColumn, true)) {\n return true;\n }\n }\n return this.focusService.focusFirstHeader();\n };\n GridCtrl.prototype.forceFocusOutOfContainer = function (up) {\n if (up === void 0) { up = false; }\n this.view.forceFocusOutOfContainer(up);\n };\n __decorate$E([\n Autowired('focusService')\n ], GridCtrl.prototype, \"focusService\", void 0);\n __decorate$E([\n Autowired('resizeObserverService')\n ], GridCtrl.prototype, \"resizeObserverService\", void 0);\n __decorate$E([\n Autowired('columnModel')\n ], GridCtrl.prototype, \"columnModel\", void 0);\n __decorate$E([\n Autowired('ctrlsService')\n ], GridCtrl.prototype, \"ctrlsService\", void 0);\n __decorate$E([\n Autowired('mouseEventService')\n ], GridCtrl.prototype, \"mouseEventService\", void 0);\n __decorate$E([\n Autowired('dragAndDropService')\n ], GridCtrl.prototype, \"dragAndDropService\", void 0);\n return GridCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$C = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar GridComp = /** @class */ (function (_super) {\n __extends$C(GridComp, _super);\n function GridComp(eGridDiv) {\n var _this = _super.call(this, undefined) || this;\n _this.eGridDiv = eGridDiv;\n return _this;\n }\n GridComp.prototype.postConstruct = function () {\n var _this = this;\n this.logger = this.loggerFactory.create('GridComp');\n var compProxy = {\n destroyGridUi: function () { return _this.destroyBean(_this); },\n setRtlClass: function (cssClass) { return _this.addCssClass(cssClass); },\n addOrRemoveKeyboardFocusClass: function (addOrRemove) { return _this.addOrRemoveCssClass(FocusService.AG_KEYBOARD_FOCUS, addOrRemove); },\n forceFocusOutOfContainer: this.forceFocusOutOfContainer.bind(this),\n updateLayoutClasses: this.updateLayoutClasses.bind(this),\n getFocusableContainers: this.getFocusableContainers.bind(this),\n setUserSelect: function (value) {\n _this.getGui().style.userSelect = value != null ? value : '';\n _this.getGui().style.webkitUserSelect = value != null ? value : '';\n },\n setCursor: function (value) {\n _this.getGui().style.cursor = value != null ? value : '';\n }\n };\n this.ctrl = this.createManagedBean(new GridCtrl());\n var template = this.createTemplate();\n this.setTemplate(template);\n this.ctrl.setComp(compProxy, this.eGridDiv, this.getGui());\n this.insertGridIntoDom();\n this.initialiseTabGuard({\n // we want to override the default behaviour to do nothing for onTabKeyDown\n onTabKeyDown: function () { return undefined; },\n focusInnerElement: function (fromBottom) { return _this.ctrl.focusInnerElement(fromBottom); }\n });\n };\n GridComp.prototype.insertGridIntoDom = function () {\n var _this = this;\n var eGui = this.getGui();\n this.eGridDiv.appendChild(eGui);\n this.addDestroyFunc(function () {\n _this.eGridDiv.removeChild(eGui);\n _this.logger.log('Grid removed from DOM');\n });\n };\n GridComp.prototype.updateLayoutClasses = function (cssClass, params) {\n var eRootWrapperBodyClassList = this.eRootWrapperBody.classList;\n eRootWrapperBodyClassList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n eRootWrapperBodyClassList.toggle(LayoutCssClasses.NORMAL, params.normal);\n eRootWrapperBodyClassList.toggle(LayoutCssClasses.PRINT, params.print);\n this.addOrRemoveCssClass(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n this.addOrRemoveCssClass(LayoutCssClasses.NORMAL, params.normal);\n this.addOrRemoveCssClass(LayoutCssClasses.PRINT, params.print);\n };\n GridComp.prototype.createTemplate = function () {\n var dropZones = this.ctrl.showDropZones() ? '' : '';\n var sideBar = this.ctrl.showSideBar() ? '' : '';\n var statusBar = this.ctrl.showStatusBar() ? '' : '';\n var watermark = this.ctrl.showWatermark() ? '' : '';\n var template = /* html */ \"
\\n \" + dropZones + \"\\n
\\n \\n \" + sideBar + \"\\n
\\n \" + statusBar + \"\\n \\n \" + watermark + \"\\n
\";\n return template;\n };\n GridComp.prototype.getFocusableElement = function () {\n return this.eRootWrapperBody;\n };\n GridComp.prototype.getFocusableContainers = function () {\n var focusableContainers = [\n this.gridBodyComp.getGui()\n ];\n if (this.sideBarComp) {\n focusableContainers.push(this.sideBarComp.getGui());\n }\n return focusableContainers.filter(function (el) { return isVisible(el); });\n };\n __decorate$D([\n Autowired('loggerFactory')\n ], GridComp.prototype, \"loggerFactory\", void 0);\n __decorate$D([\n RefSelector('gridBody')\n ], GridComp.prototype, \"gridBodyComp\", void 0);\n __decorate$D([\n RefSelector('sideBar')\n ], GridComp.prototype, \"sideBarComp\", void 0);\n __decorate$D([\n RefSelector('rootWrapperBody')\n ], GridComp.prototype, \"eRootWrapperBody\", void 0);\n __decorate$D([\n PostConstruct\n ], GridComp.prototype, \"postConstruct\", null);\n return GridComp;\n}(TabGuardComp));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$B = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$4 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$3 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$4(arguments[i]));\n return ar;\n};\nvar SortController = /** @class */ (function (_super) {\n __extends$B(SortController, _super);\n function SortController() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SortController_1 = SortController;\n SortController.prototype.progressSort = function (column, multiSort, source) {\n var nextDirection = this.getNextSortDirection(column);\n this.setSortForColumn(column, nextDirection, multiSort, source);\n };\n SortController.prototype.setSortForColumn = function (column, sort, multiSort, source) {\n var _a;\n // auto correct - if sort not legal value, then set it to 'no sort' (which is null)\n if (sort !== Constants.SORT_ASC && sort !== Constants.SORT_DESC) {\n sort = null;\n }\n var isColumnsSortingCoupledToGroup = this.gridOptionsWrapper.isColumnsSortingCoupledToGroup();\n var columnsToUpdate = [column];\n if (isColumnsSortingCoupledToGroup) {\n if (column.getColDef().showRowGroup) {\n var rowGroupColumns = this.columnModel.getSourceColumnsForGroupColumn(column);\n var sortableRowGroupColumns = (_a = rowGroupColumns) === null || _a === void 0 ? void 0 : _a.filter(function (col) { return col.getColDef().sortable; });\n if (sortableRowGroupColumns) {\n columnsToUpdate = __spread$3([column], sortableRowGroupColumns);\n }\n }\n }\n columnsToUpdate.forEach(function (col) { return col.setSort(sort, source); });\n var doingMultiSort = (multiSort || this.gridOptionsWrapper.isAlwaysMultiSort()) && !this.gridOptionsWrapper.isSuppressMultiSort();\n // clear sort on all columns except those changed, and update the icons\n if (!doingMultiSort) {\n this.clearSortBarTheseColumns(columnsToUpdate, source);\n }\n // sortIndex used for knowing order of cols when multi-col sort\n this.updateSortIndex(column);\n this.dispatchSortChangedEvents(source);\n };\n SortController.prototype.updateSortIndex = function (lastColToChange) {\n var isCoupled = this.gridOptionsWrapper.isColumnsSortingCoupledToGroup();\n var groupParent = this.columnModel.getGroupDisplayColumnForGroup(lastColToChange.getId());\n var lastSortIndexCol = isCoupled ? groupParent || lastColToChange : lastColToChange;\n var allSortedCols = this.getIndexableColumnsOrdered();\n // reset sort index on everything\n this.columnModel.getPrimaryAndSecondaryAndAutoColumns().forEach(function (col) { return col.setSortIndex(null); });\n var allSortedColsWithoutChanges = allSortedCols.filter(function (col) { return col !== lastSortIndexCol; });\n var sortedColsWithIndices = !!lastSortIndexCol.getSort() ? __spread$3(allSortedColsWithoutChanges, [lastSortIndexCol]) : allSortedColsWithoutChanges;\n sortedColsWithIndices.forEach(function (col, idx) { return (col.setSortIndex(idx)); });\n };\n // gets called by API, so if data changes, use can call this, which will end up\n // working out the sort order again of the rows.\n SortController.prototype.onSortChanged = function (source) {\n this.dispatchSortChangedEvents(source);\n };\n SortController.prototype.isSortActive = function () {\n // pull out all the columns that have sorting set\n var allCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();\n var sortedCols = allCols.filter(function (column) { return !!column.getSort(); });\n return sortedCols && sortedCols.length > 0;\n };\n SortController.prototype.dispatchSortChangedEvents = function (source) {\n var event = {\n type: Events.EVENT_SORT_CHANGED,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n SortController.prototype.clearSortBarTheseColumns = function (columnsToSkip, source) {\n this.columnModel.getPrimaryAndSecondaryAndAutoColumns().forEach(function (columnToClear) {\n // Do not clear if either holding shift, or if column in question was clicked\n if (!columnsToSkip.includes(columnToClear)) {\n // setting to 'undefined' as null means 'none' rather than cleared, otherwise issue will arise\n // if sort order is: ['desc', null , 'asc'], as it will start at null rather than 'desc'.\n columnToClear.setSort(undefined, source);\n }\n });\n };\n SortController.prototype.getNextSortDirection = function (column) {\n var sortingOrder;\n if (column.getColDef().sortingOrder) {\n sortingOrder = column.getColDef().sortingOrder;\n }\n else if (this.gridOptionsWrapper.getSortingOrder()) {\n sortingOrder = this.gridOptionsWrapper.getSortingOrder();\n }\n else {\n sortingOrder = SortController_1.DEFAULT_SORTING_ORDER;\n }\n if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {\n console.warn(\"AG Grid: sortingOrder must be an array with at least one element, currently it's \" + sortingOrder);\n return null;\n }\n var currentIndex = sortingOrder.indexOf(column.getSort());\n var notInArray = currentIndex < 0;\n var lastItemInArray = currentIndex == sortingOrder.length - 1;\n var result;\n if (notInArray || lastItemInArray) {\n result = sortingOrder[0];\n }\n else {\n result = sortingOrder[currentIndex + 1];\n }\n // verify the sort type exists, as the user could provide the sortingOrder, need to make sure it's valid\n if (SortController_1.DEFAULT_SORTING_ORDER.indexOf(result) < 0) {\n console.warn('AG Grid: invalid sort type ' + result);\n return null;\n }\n return result;\n };\n SortController.prototype.getColumnsOrderedForSort = function () {\n // pull out all the columns that have sorting set\n var allColumnsIncludingAuto = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();\n // when both cols are missing sortIndex, we use the position of the col in all cols list.\n // this means if colDefs only have sort, but no sortIndex, we deterministically pick which\n // cols is sorted by first.\n var allColsIndexes = {};\n allColumnsIncludingAuto.forEach(function (col, index) { return allColsIndexes[col.getId()] = index; });\n // put the columns in order of which one got sorted first\n allColumnsIncludingAuto.sort(function (a, b) {\n var iA = a.getSortIndex();\n var iB = b.getSortIndex();\n if (iA != null && iB != null) {\n return iA - iB; // both present, normal comparison\n }\n else if (iA == null && iB == null) {\n // both missing, compare using column positions\n var posA = allColsIndexes[a.getId()];\n var posB = allColsIndexes[b.getId()];\n return posA > posB ? 1 : -1;\n }\n else if (iB == null) {\n return -1; // iB missing\n }\n else {\n return 1; // iA missing\n }\n });\n return allColumnsIncludingAuto;\n };\n SortController.prototype.getIndexableColumnsOrdered = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isColumnsSortingCoupledToGroup()) {\n return this.getColumnsWithSortingOrdered();\n }\n return this.getColumnsOrderedForSort()\n .filter(function (col) {\n var _a;\n if (!!col.getColDef().showRowGroup) {\n if (col.getColDef().field && col.getSort()) {\n return true;\n }\n var sourceCols = _this.columnModel.getSourceColumnsForGroupColumn(col);\n return (_a = sourceCols) === null || _a === void 0 ? void 0 : _a.some(function (col) { return !!col.getSort(); });\n }\n return !!col.getSort();\n });\n };\n SortController.prototype.getColumnsWithSortingOrdered = function () {\n // pull out all the columns that have sorting set\n var orderedColumns = this.getColumnsOrderedForSort();\n return orderedColumns.filter(function (column) { return !!column.getSort(); });\n };\n // used by server side row models, to sent sort to server\n SortController.prototype.getSortModel = function () {\n return this.getColumnsWithSortingOrdered().map(function (column) { return ({\n sort: column.getSort(),\n colId: column.getId()\n }); });\n };\n SortController.prototype.getSortOptions = function () {\n return this.getColumnsWithSortingOrdered().map(function (column) { return ({\n sort: column.getSort(),\n column: column\n }); });\n };\n SortController.prototype.canColumnDisplayMixedSort = function (column) {\n var isColumnSortCouplingActive = this.gridOptionsWrapper.isColumnsSortingCoupledToGroup();\n var isGroupDisplayColumn = !!column.getColDef().showRowGroup;\n return isColumnSortCouplingActive && isGroupDisplayColumn;\n };\n SortController.prototype.getDisplaySortForColumn = function (column) {\n var _a;\n var linkedColumns = this.columnModel.getSourceColumnsForGroupColumn(column);\n if (!this.canColumnDisplayMixedSort(column) || !((_a = linkedColumns) === null || _a === void 0 ? void 0 : _a.length)) {\n return column.getSort();\n }\n // if column has unique data, its sorting is independent - but can still be mixed\n var columnHasUniqueData = !!column.getColDef().field;\n var sortableColumns = columnHasUniqueData ? __spread$3([column], linkedColumns) : linkedColumns;\n var firstSort = sortableColumns[0].getSort();\n // the == is intentional, as null and undefined both represent no sort, which means they are equivalent\n var allMatch = sortableColumns.every(function (col) { return col.getSort() == firstSort; });\n if (!allMatch) {\n return 'mixed';\n }\n return firstSort;\n };\n SortController.prototype.getDisplaySortIndexForColumn = function (column) {\n var _this = this;\n var isColumnSortCouplingActive = this.gridOptionsWrapper.isColumnsSortingCoupledToGroup();\n if (!isColumnSortCouplingActive) {\n return this.getColumnsWithSortingOrdered().indexOf(column);\n }\n var displayColumn = this.columnModel.getGroupDisplayColumnForGroup(column.getId());\n if (displayColumn) {\n if (!!column.getSort()) {\n return this.getDisplaySortIndexForColumn(displayColumn);\n }\n return null;\n }\n var allSortedCols = this.getIndexableColumnsOrdered()\n .filter(function (col) { return !_this.columnModel.getGroupDisplayColumnForGroup(col.getId()); });\n return allSortedCols.indexOf(column);\n };\n var SortController_1;\n SortController.DEFAULT_SORTING_ORDER = [Constants.SORT_ASC, Constants.SORT_DESC, null];\n __decorate$C([\n Autowired('columnModel')\n ], SortController.prototype, \"columnModel\", void 0);\n SortController = SortController_1 = __decorate$C([\n Bean('sortController')\n ], SortController);\n return SortController;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$A = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnHoverService = /** @class */ (function (_super) {\n __extends$A(ColumnHoverService, _super);\n function ColumnHoverService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnHoverService.prototype.setMouseOver = function (columns) {\n this.selectedColumns = columns;\n var event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.clearMouseOver = function () {\n this.selectedColumns = null;\n var event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.isHovered = function (column) {\n return !!this.selectedColumns && this.selectedColumns.indexOf(column) >= 0;\n };\n ColumnHoverService = __decorate$B([\n Bean('columnHoverService')\n ], ColumnHoverService);\n return ColumnHoverService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnAnimationService = /** @class */ (function (_super) {\n __extends$z(ColumnAnimationService, _super);\n function ColumnAnimationService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.executeNextFuncs = [];\n _this.executeLaterFuncs = [];\n _this.active = false;\n _this.animationThreadCount = 0;\n return _this;\n }\n ColumnAnimationService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) { return _this.gridBodyCtrl = p.gridBodyCtrl; });\n };\n ColumnAnimationService.prototype.isActive = function () {\n return this.active;\n };\n ColumnAnimationService.prototype.start = function () {\n if (this.active) {\n return;\n }\n if (this.gridOptionsWrapper.isSuppressColumnMoveAnimation()) {\n return;\n }\n // if doing RTL, we don't animate open / close as due to how the pixels are inverted,\n // the animation moves all the row the the right rather than to the left (ie it's the static\n // columns that actually get their coordinates updated)\n if (this.gridOptionsWrapper.isEnableRtl()) {\n return;\n }\n this.ensureAnimationCssClassPresent();\n this.active = true;\n };\n ColumnAnimationService.prototype.finish = function () {\n if (!this.active) {\n return;\n }\n this.flush();\n this.active = false;\n };\n ColumnAnimationService.prototype.executeNextVMTurn = function (func) {\n if (this.active) {\n this.executeNextFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.executeLaterVMTurn = function (func) {\n if (this.active) {\n this.executeLaterFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.ensureAnimationCssClassPresent = function () {\n var _this = this;\n // up the count, so we can tell if someone else has updated the count\n // by the time the 'wait' func executes\n this.animationThreadCount++;\n var animationThreadCountCopy = this.animationThreadCount;\n this.gridBodyCtrl.setColumnMovingCss(true);\n this.executeLaterFuncs.push(function () {\n // only remove the class if this thread was the last one to update it\n if (_this.animationThreadCount === animationThreadCountCopy) {\n _this.gridBodyCtrl.setColumnMovingCss(false);\n }\n });\n };\n ColumnAnimationService.prototype.flush = function () {\n var nowFuncs = this.executeNextFuncs;\n this.executeNextFuncs = [];\n var waitFuncs = this.executeLaterFuncs;\n this.executeLaterFuncs = [];\n if (nowFuncs.length === 0 && waitFuncs.length === 0) {\n return;\n }\n window.setTimeout(function () { return nowFuncs.forEach(function (func) { return func(); }); }, 0);\n window.setTimeout(function () { return waitFuncs.forEach(function (func) { return func(); }); }, 300);\n };\n __decorate$A([\n Autowired('ctrlsService')\n ], ColumnAnimationService.prototype, \"ctrlsService\", void 0);\n __decorate$A([\n PostConstruct\n ], ColumnAnimationService.prototype, \"postConstruct\", null);\n ColumnAnimationService = __decorate$A([\n Bean('columnAnimationService')\n ], ColumnAnimationService);\n return ColumnAnimationService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AutoGroupColService = /** @class */ (function (_super) {\n __extends$y(AutoGroupColService, _super);\n function AutoGroupColService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AutoGroupColService_1 = AutoGroupColService;\n AutoGroupColService.prototype.createAutoGroupColumns = function (existingCols, rowGroupColumns) {\n var _this = this;\n var groupAutoColumns = [];\n var doingTreeData = this.gridOptionsWrapper.isTreeData();\n var doingMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();\n if (doingTreeData && doingMultiAutoColumn) {\n console.warn('AG Grid: you cannot mix groupMultiAutoColumn with treeData, only one column can be used to display groups when doing tree data');\n doingMultiAutoColumn = false;\n }\n // if doing groupMultiAutoColumn, then we call the method multiple times, once\n // for each column we are grouping by\n if (doingMultiAutoColumn) {\n rowGroupColumns.forEach(function (rowGroupCol, index) {\n groupAutoColumns.push(_this.createOneAutoGroupColumn(existingCols, rowGroupCol, index));\n });\n }\n else {\n groupAutoColumns.push(this.createOneAutoGroupColumn(existingCols));\n }\n return groupAutoColumns;\n };\n // rowGroupCol and index are missing if groupMultiAutoColumn=false\n AutoGroupColService.prototype.createOneAutoGroupColumn = function (existingCols, rowGroupCol, index) {\n // if one provided by user, use it, otherwise create one\n var defaultAutoColDef = this.generateDefaultColDef(rowGroupCol);\n // if doing multi, set the field\n var colId;\n if (rowGroupCol) {\n colId = Constants.GROUP_AUTO_COLUMN_ID + \"-\" + rowGroupCol.getId();\n }\n else {\n colId = AutoGroupColService_1.GROUP_AUTO_COLUMN_BUNDLE_ID;\n }\n var userAutoColDef = this.gridOptionsWrapper.getAutoGroupColumnDef();\n mergeDeep(defaultAutoColDef, userAutoColDef);\n defaultAutoColDef = this.columnFactory.mergeColDefs(defaultAutoColDef);\n defaultAutoColDef.colId = colId;\n // For tree data the filter is always allowed\n if (!this.gridOptionsWrapper.isTreeData()) {\n // we would only allow filter if the user has provided field or value getter. otherwise the filter\n // would not be able to work.\n var noFieldOrValueGetter = missing(defaultAutoColDef.field) && missing(defaultAutoColDef.valueGetter) && missing(defaultAutoColDef.filterValueGetter);\n if (noFieldOrValueGetter) {\n defaultAutoColDef.filter = false;\n }\n }\n // if showing many cols, we don't want to show more than one with a checkbox for selection\n if (index && index > 0) {\n defaultAutoColDef.headerCheckboxSelection = false;\n }\n var existingCol = existingCols.find(function (col) { return col.getId() == colId; });\n if (existingCol) {\n existingCol.setColDef(defaultAutoColDef, null);\n this.columnFactory.applyColumnState(existingCol, defaultAutoColDef);\n return existingCol;\n }\n var newCol = new Column(defaultAutoColDef, null, colId, true);\n this.context.createBean(newCol);\n return newCol;\n };\n AutoGroupColService.prototype.generateDefaultColDef = function (rowGroupCol) {\n var userDef = this.gridOptionsWrapper.getAutoGroupColumnDef();\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var res = {\n headerName: localeTextFunc('group', 'Group')\n };\n var userHasProvidedGroupCellRenderer = userDef &&\n (userDef.cellRenderer || userDef.cellRendererFramework || userDef.cellRendererSelector);\n // only add the default group cell renderer if user hasn't provided one\n if (!userHasProvidedGroupCellRenderer) {\n res.cellRenderer = 'agGroupCellRenderer';\n }\n // we never allow moving the group column\n // defaultAutoColDef.suppressMovable = true;\n if (rowGroupCol) {\n var colDef = rowGroupCol.getColDef();\n Object.assign(res, {\n // cellRendererParams.groupKey: colDefToCopy.field;\n headerName: this.columnModel.getDisplayNameForColumn(rowGroupCol, 'header'),\n headerValueGetter: colDef.headerValueGetter\n });\n if (colDef.cellRenderer || colDef.cellRendererFramework) {\n Object.assign(res, {\n cellRendererParams: {\n innerRenderer: colDef.cellRenderer,\n innerRendererFramework: colDef.cellRendererFramework,\n innerRendererParams: colDef.cellRendererParams\n }\n });\n }\n res.showRowGroup = rowGroupCol.getColId();\n }\n else {\n res.showRowGroup = true;\n }\n return res;\n };\n var AutoGroupColService_1;\n AutoGroupColService.GROUP_AUTO_COLUMN_BUNDLE_ID = Constants.GROUP_AUTO_COLUMN_ID;\n __decorate$z([\n Autowired('columnModel')\n ], AutoGroupColService.prototype, \"columnModel\", void 0);\n __decorate$z([\n Autowired('columnFactory')\n ], AutoGroupColService.prototype, \"columnFactory\", void 0);\n AutoGroupColService = AutoGroupColService_1 = __decorate$z([\n Bean('autoGroupColService')\n ], AutoGroupColService);\n return AutoGroupColService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$x = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationAutoPageSizeService = /** @class */ (function (_super) {\n __extends$x(PaginationAutoPageSizeService, _super);\n function PaginationAutoPageSizeService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PaginationAutoPageSizeService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.centerRowContainerCon = p.centerRowContainerCtrl;\n _this.addManagedListener(_this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, _this.onBodyHeightChanged.bind(_this));\n _this.addManagedListener(_this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, _this.onScrollVisibilityChanged.bind(_this));\n _this.checkPageSize();\n });\n };\n PaginationAutoPageSizeService.prototype.notActive = function () {\n return !this.gridOptionsWrapper.isPaginationAutoPageSize();\n };\n PaginationAutoPageSizeService.prototype.onScrollVisibilityChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.onBodyHeightChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.checkPageSize = function () {\n if (this.notActive()) {\n return;\n }\n var rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n var bodyHeight = this.centerRowContainerCon.getViewportSizeFeature().getBodyHeight();\n if (bodyHeight > 0) {\n var newPageSize = Math.floor(bodyHeight / rowHeight);\n this.gridOptionsWrapper.setProperty('paginationPageSize', newPageSize);\n }\n };\n __decorate$y([\n Autowired('ctrlsService')\n ], PaginationAutoPageSizeService.prototype, \"ctrlsService\", void 0);\n __decorate$y([\n PostConstruct\n ], PaginationAutoPageSizeService.prototype, \"postConstruct\", null);\n PaginationAutoPageSizeService = __decorate$y([\n Bean('paginationAutoPageSizeService')\n ], PaginationAutoPageSizeService);\n return PaginationAutoPageSizeService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$w = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ValueCache = /** @class */ (function (_super) {\n __extends$w(ValueCache, _super);\n function ValueCache() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cacheVersion = 0;\n return _this;\n }\n ValueCache.prototype.init = function () {\n this.active = this.gridOptionsWrapper.isValueCache();\n this.neverExpires = this.gridOptionsWrapper.isValueCacheNeverExpires();\n };\n ValueCache.prototype.onDataChanged = function () {\n if (this.neverExpires) {\n return;\n }\n this.expire();\n };\n ValueCache.prototype.expire = function () {\n this.cacheVersion++;\n };\n ValueCache.prototype.setValue = function (rowNode, colId, value) {\n if (this.active) {\n if (rowNode.__cacheVersion !== this.cacheVersion) {\n rowNode.__cacheVersion = this.cacheVersion;\n rowNode.__cacheData = {};\n }\n rowNode.__cacheData[colId] = value;\n }\n };\n ValueCache.prototype.getValue = function (rowNode, colId) {\n if (!this.active || rowNode.__cacheVersion !== this.cacheVersion) {\n return undefined;\n }\n return rowNode.__cacheData[colId];\n };\n __decorate$x([\n PostConstruct\n ], ValueCache.prototype, \"init\", null);\n ValueCache = __decorate$x([\n Bean('valueCache')\n ], ValueCache);\n return ValueCache;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$v = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ChangeDetectionService = /** @class */ (function (_super) {\n __extends$v(ChangeDetectionService, _super);\n function ChangeDetectionService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChangeDetectionService.prototype.init = function () {\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));\n };\n ChangeDetectionService.prototype.onCellValueChanged = function (event) {\n // Clipboard service manages its own change detection, so no need to do it here.\n // The clipboard manages its own as otherwise this would happen once for every cell\n // that got updated as part of a paste operation, so e.g. if 100 cells in a paste operation,\n // this doChangeDetection would get called 100 times (once for each cell), instead clipboard\n // service executes the logic we have here once (in essence batching up all cell changes\n // into one change detection).\n if (event.source === Constants.SOURCE_PASTE) {\n return;\n }\n this.doChangeDetection(event.node, event.column);\n };\n ChangeDetectionService.prototype.doChangeDetection = function (rowNode, column) {\n if (this.gridOptionsWrapper.isSuppressChangeDetection()) {\n return;\n }\n // step 1 of change detection is to update the aggregated values\n if (this.clientSideRowModel && !rowNode.isRowPinned()) {\n var onlyChangedColumns = this.gridOptionsWrapper.isAggregateOnlyChangedColumns();\n var changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n changedPath.addParentNode(rowNode.parent, [column]);\n this.clientSideRowModel.doAggregate(changedPath);\n }\n // step 2 of change detection is to refresh the cells\n this.rowRenderer.refreshCells();\n };\n __decorate$w([\n Autowired('rowModel')\n ], ChangeDetectionService.prototype, \"rowModel\", void 0);\n __decorate$w([\n Autowired('rowRenderer')\n ], ChangeDetectionService.prototype, \"rowRenderer\", void 0);\n __decorate$w([\n PostConstruct\n ], ChangeDetectionService.prototype, \"init\", null);\n ChangeDetectionService = __decorate$w([\n Bean('changeDetectionService')\n ], ChangeDetectionService);\n return ChangeDetectionService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$u = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar AgComponentUtils = /** @class */ (function (_super) {\n __extends$u(AgComponentUtils, _super);\n function AgComponentUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AgComponentUtils.prototype.adaptFunction = function (propertyName, jsCompFunc) {\n var metadata = this.componentMetadataProvider.retrieve(propertyName);\n if (metadata && metadata.functionAdapter) {\n return metadata.functionAdapter(jsCompFunc);\n }\n return null;\n };\n AgComponentUtils.prototype.adaptCellRendererFunction = function (callback) {\n var Adapter = /** @class */ (function () {\n function Adapter() {\n }\n Adapter.prototype.refresh = function (params) {\n return false;\n };\n Adapter.prototype.getGui = function () {\n return this.eGui;\n };\n Adapter.prototype.init = function (params) {\n var callbackResult = callback(params);\n var type = typeof callbackResult;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n this.eGui = loadTemplate('' + callbackResult + '');\n return;\n }\n if (callbackResult == null) {\n this.eGui = loadTemplate('');\n return;\n }\n this.eGui = callbackResult;\n };\n return Adapter;\n }());\n return Adapter;\n };\n AgComponentUtils.prototype.doesImplementIComponent = function (candidate) {\n if (!candidate) {\n return false;\n }\n return candidate.prototype && 'getGui' in candidate.prototype;\n };\n __decorate$v([\n Autowired(\"componentMetadataProvider\")\n ], AgComponentUtils.prototype, \"componentMetadataProvider\", void 0);\n AgComponentUtils = __decorate$v([\n Bean(\"agComponentUtils\")\n ], AgComponentUtils);\n return AgComponentUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$t = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ComponentMetadataProvider = /** @class */ (function (_super) {\n __extends$t(ComponentMetadataProvider, _super);\n function ComponentMetadataProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComponentMetadataProvider.prototype.postConstruct = function () {\n this.componentMetaData = {\n dateComponent: {\n mandatoryMethodList: ['getDate', 'setDate'],\n optionalMethodList: ['afterGuiAttached', 'setInputPlaceholder', 'setInputAriaLabel']\n },\n detailCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n headerComponent: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh']\n },\n headerGroupComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n noRowsOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n floatingFilterComponent: {\n mandatoryMethodList: ['onParentModelChanged'],\n optionalMethodList: ['afterGuiAttached']\n },\n floatingFilterWrapperComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n cellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n cellEditor: {\n mandatoryMethodList: ['getValue'],\n optionalMethodList: ['isPopup', 'isCancelBeforeStart', 'isCancelAfterEnd', 'getPopupPosition', 'focusIn', 'focusOut', 'afterGuiAttached']\n },\n innerRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n fullWidthCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n pinnedRowCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n groupRowRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n filter: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged', 'onAnyFilterChanged']\n },\n filterComponent: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged', 'onAnyFilterChanged']\n },\n statusPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n },\n toolPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached']\n },\n tooltipComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n }\n };\n };\n ComponentMetadataProvider.prototype.retrieve = function (name) {\n return this.componentMetaData[name];\n };\n __decorate$u([\n Autowired(\"agComponentUtils\")\n ], ComponentMetadataProvider.prototype, \"agComponentUtils\", void 0);\n __decorate$u([\n PostConstruct\n ], ComponentMetadataProvider.prototype, \"postConstruct\", null);\n ComponentMetadataProvider = __decorate$u([\n Bean(\"componentMetadataProvider\")\n ], ComponentMetadataProvider);\n return ComponentMetadataProvider;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$s = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar MAT_GRID_SIZE = 8;\nvar BASE_GRID_SIZE = 4;\nvar BALHAM_GRID_SIZE = 4;\nvar ALPINE_GRID_SIZE = 6;\nvar HARD_CODED_SIZES = {\n // this item is required for custom themes\n 'ag-theme-custom': {\n headerHeight: 25,\n headerCellMinWidth: 24,\n listItemHeight: BASE_GRID_SIZE * 5,\n rowHeight: 25,\n chartMenuPanelWidth: 220\n },\n 'ag-theme-material': {\n headerHeight: MAT_GRID_SIZE * 7,\n headerCellMinWidth: 48,\n listItemHeight: MAT_GRID_SIZE * 4,\n rowHeight: MAT_GRID_SIZE * 6,\n chartMenuPanelWidth: 240\n },\n 'ag-theme-balham': {\n headerHeight: BALHAM_GRID_SIZE * 8,\n headerCellMinWidth: 24,\n listItemHeight: BALHAM_GRID_SIZE * 6,\n rowHeight: BALHAM_GRID_SIZE * 7,\n chartMenuPanelWidth: 220\n },\n 'ag-theme-alpine': {\n headerHeight: ALPINE_GRID_SIZE * 8,\n headerCellMinWidth: 36,\n listItemHeight: ALPINE_GRID_SIZE * 4,\n rowHeight: ALPINE_GRID_SIZE * 7,\n chartMenuPanelWidth: 240\n }\n};\n/**\n * this object contains a list of Sass variables and an array\n * of CSS styles required to get the correct value.\n * eg. $virtual-item-height requires a structure, so we can get its height.\n *
\n *
\n *
\n *
\n *
\n */\nvar SASS_PROPERTY_BUILDER = {\n headerHeight: ['ag-header-row'],\n headerCellMinWidth: ['ag-header-cell'],\n listItemHeight: ['ag-virtual-list-item'],\n rowHeight: ['ag-row'],\n chartMenuPanelWidth: ['ag-chart-docked-container']\n};\nvar CALCULATED_SIZES = {};\nvar Environment = /** @class */ (function (_super) {\n __extends$s(Environment, _super);\n function Environment() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Environment.prototype.getSassVariable = function (theme, key) {\n var useTheme = 'ag-theme-' + (theme.match('material') ? 'material' : theme.match('balham') ? 'balham' : theme.match('alpine') ? 'alpine' : 'custom');\n var defaultValue = HARD_CODED_SIZES[useTheme][key];\n var calculatedValue = 0;\n if (!CALCULATED_SIZES[theme]) {\n CALCULATED_SIZES[theme] = {};\n }\n var size = CALCULATED_SIZES[theme][key];\n if (size != null) {\n return size;\n }\n if (SASS_PROPERTY_BUILDER[key]) {\n var classList = SASS_PROPERTY_BUILDER[key];\n var div = document.createElement('div');\n div.classList.add(theme);\n div.style.position = 'absolute';\n var el = classList.reduce(function (prevEl, currentClass) {\n var currentDiv = document.createElement('div');\n currentDiv.style.position = 'static';\n currentDiv.classList.add(currentClass);\n prevEl.appendChild(currentDiv);\n return currentDiv;\n }, div);\n if (document.body) {\n document.body.appendChild(div);\n var sizeName = key.toLowerCase().indexOf('height') !== -1 ? 'height' : 'width';\n calculatedValue = parseInt(window.getComputedStyle(el)[sizeName], 10);\n document.body.removeChild(div);\n }\n }\n CALCULATED_SIZES[theme][key] = calculatedValue || defaultValue;\n return CALCULATED_SIZES[theme][key];\n };\n Environment.prototype.isThemeDark = function () {\n var theme = this.getTheme().theme;\n return !!theme && theme.indexOf('dark') >= 0;\n };\n Environment.prototype.chartMenuPanelWidth = function () {\n var theme = this.getTheme().themeFamily;\n return this.getSassVariable(theme, 'chartMenuPanelWidth');\n };\n Environment.prototype.getTheme = function () {\n var reg = /\\bag-(material|(?:theme-([\\w\\-]*)))\\b/g;\n var el = this.eGridDiv;\n var themeMatch = null;\n var allThemes = [];\n while (el) {\n themeMatch = reg.exec(el.className);\n if (!themeMatch) {\n el = el.parentElement || undefined;\n }\n else {\n var matched = el.className.match(reg);\n if (matched) {\n allThemes = matched;\n }\n break;\n }\n }\n if (!themeMatch) {\n return { allThemes: allThemes };\n }\n var theme = themeMatch[0];\n var usingOldTheme = themeMatch[2] === undefined;\n if (usingOldTheme) {\n var newTheme_1 = theme.replace('ag-', 'ag-theme-');\n doOnce(function () { return console.warn(\"AG Grid: As of v19 old theme are no longer provided. Please replace \" + theme + \" with \" + newTheme_1 + \".\"); }, 'using-old-theme');\n }\n return { theme: theme, el: el, themeFamily: theme.replace(/-dark$/, ''), allThemes: allThemes };\n };\n __decorate$t([\n Autowired('eGridDiv')\n ], Environment.prototype, \"eGridDiv\", void 0);\n Environment = __decorate$t([\n Bean('environment')\n ], Environment);\n return Environment;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$r = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param$1 = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\n/**\n * This class solves the 'max height' problem, where the user might want to show more data than\n * the max div height actually allows.\n */\nvar RowContainerHeightService = /** @class */ (function (_super) {\n __extends$r(RowContainerHeightService, _super);\n function RowContainerHeightService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // the scrollY position\n _this.scrollY = 0;\n // how tall the body is\n _this.uiBodyHeight = 0;\n return _this;\n }\n RowContainerHeightService.prototype.agWire = function (loggerFactory) {\n this.logger = loggerFactory.create(\"RowContainerHeightService\");\n };\n RowContainerHeightService.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.updateOffset.bind(this));\n this.maxDivHeight = getMaxDivHeight();\n this.logger.log('maxDivHeight = ' + this.maxDivHeight);\n };\n RowContainerHeightService.prototype.isStretching = function () {\n return this.stretching;\n };\n RowContainerHeightService.prototype.getDivStretchOffset = function () {\n return this.divStretchOffset;\n };\n RowContainerHeightService.prototype.updateOffset = function () {\n if (!this.stretching) {\n return;\n }\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var newScrollY = gridBodyCon.getScrollFeature().getVScrollPosition().top;\n var newBodyHeight = this.getUiBodyHeight();\n var atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;\n if (atLeastOneChanged) {\n this.scrollY = newScrollY;\n this.uiBodyHeight = newBodyHeight;\n this.calculateOffset();\n }\n };\n RowContainerHeightService.prototype.calculateOffset = function () {\n this.setUiContainerHeight(this.maxDivHeight);\n this.pixelsToShave = this.modelHeight - this.uiContainerHeight;\n this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;\n var scrollPercent = this.scrollY / this.maxScrollY;\n var divStretchOffset = scrollPercent * this.pixelsToShave;\n this.logger.log(\"Div Stretch Offset = \" + divStretchOffset + \" (\" + this.pixelsToShave + \" * \" + scrollPercent + \")\");\n this.setDivStretchOffset(divStretchOffset);\n };\n RowContainerHeightService.prototype.setUiContainerHeight = function (height) {\n if (height !== this.uiContainerHeight) {\n this.uiContainerHeight = height;\n this.eventService.dispatchEvent({ type: Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED });\n }\n };\n RowContainerHeightService.prototype.clearOffset = function () {\n this.setUiContainerHeight(this.modelHeight);\n this.pixelsToShave = 0;\n this.setDivStretchOffset(0);\n };\n RowContainerHeightService.prototype.setDivStretchOffset = function (newOffset) {\n // because we are talking pixels, no point in confusing things with half numbers\n var newOffsetFloor = typeof newOffset === 'number' ? Math.floor(newOffset) : null;\n if (this.divStretchOffset === newOffsetFloor) {\n return;\n }\n this.divStretchOffset = newOffsetFloor;\n this.eventService.dispatchEvent({ type: Events.EVENT_HEIGHT_SCALE_CHANGED });\n };\n RowContainerHeightService.prototype.setModelHeight = function (modelHeight) {\n this.modelHeight = modelHeight;\n this.stretching = modelHeight != null // null happens when in print layout\n && this.maxDivHeight > 0\n && modelHeight > this.maxDivHeight;\n if (this.stretching) {\n this.calculateOffset();\n }\n else {\n this.clearOffset();\n }\n };\n RowContainerHeightService.prototype.getUiContainerHeight = function () {\n return this.uiContainerHeight;\n };\n RowContainerHeightService.prototype.getRealPixelPosition = function (modelPixel) {\n return modelPixel - this.divStretchOffset;\n };\n RowContainerHeightService.prototype.getUiBodyHeight = function () {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var pos = gridBodyCon.getScrollFeature().getVScrollPosition();\n return pos.bottom - pos.top;\n };\n RowContainerHeightService.prototype.getScrollPositionForPixel = function (rowTop) {\n if (this.pixelsToShave <= 0) {\n return rowTop;\n }\n var modelMaxScroll = this.modelHeight - this.getUiBodyHeight();\n var scrollPercent = rowTop / modelMaxScroll;\n var scrollPixel = this.maxScrollY * scrollPercent;\n return scrollPixel;\n };\n __decorate$s([\n Autowired('ctrlsService')\n ], RowContainerHeightService.prototype, \"ctrlsService\", void 0);\n __decorate$s([\n __param$1(0, Qualifier(\"loggerFactory\"))\n ], RowContainerHeightService.prototype, \"agWire\", null);\n __decorate$s([\n PostConstruct\n ], RowContainerHeightService.prototype, \"postConstruct\", null);\n RowContainerHeightService = __decorate$s([\n Bean('rowContainerHeightService')\n ], RowContainerHeightService);\n return RowContainerHeightService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SelectableService = /** @class */ (function (_super) {\n __extends$q(SelectableService, _super);\n function SelectableService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectableService.prototype.init = function () {\n this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n };\n SelectableService.prototype.updateSelectableAfterGrouping = function (rowNode) {\n if (this.isRowSelectableFunc) {\n var nextChildrenFunc = function (node) { return node.childrenAfterGroup; };\n this.recurseDown(rowNode.childrenAfterGroup, nextChildrenFunc);\n }\n };\n SelectableService.prototype.recurseDown = function (children, nextChildrenFunc) {\n var _this = this;\n if (!children) {\n return;\n }\n children.forEach(function (child) {\n if (!child.group) {\n return;\n } // only interested in groups\n if (child.hasChildren()) {\n _this.recurseDown(nextChildrenFunc(child), nextChildrenFunc);\n }\n var rowSelectable;\n if (_this.groupSelectsChildren) {\n // have this group selectable if at least one direct child is selectable\n var firstSelectable = (nextChildrenFunc(child) || []).find(function (rowNode) { return rowNode.selectable === true; });\n rowSelectable = exists(firstSelectable);\n }\n else {\n // directly retrieve selectable value from user callback\n rowSelectable = _this.isRowSelectableFunc ? _this.isRowSelectableFunc(child) : false;\n }\n child.setRowSelectable(rowSelectable);\n });\n };\n __decorate$r([\n PostConstruct\n ], SelectableService.prototype, \"init\", null);\n SelectableService = __decorate$r([\n Bean('selectableService')\n ], SelectableService);\n return SelectableService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$p = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PaginationComp = /** @class */ (function (_super) {\n __extends$p(PaginationComp, _super);\n function PaginationComp() {\n var _this = _super.call(this) || this;\n _this.previousAndFirstButtonsDisabled = false;\n _this.nextButtonDisabled = false;\n _this.lastButtonDisabled = false;\n return _this;\n }\n PaginationComp.prototype.postConstruct = function () {\n var _this = this;\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n this.setTemplate(this.getTemplate());\n this.btFirst.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'last' : 'first', this.gridOptionsWrapper));\n this.btPrevious.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'next' : 'previous', this.gridOptionsWrapper));\n this.btNext.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'previous' : 'next', this.gridOptionsWrapper));\n this.btLast.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'first' : 'last', this.gridOptionsWrapper));\n var isPaging = this.gridOptionsWrapper.isPagination();\n var paginationPanelEnabled = isPaging && !this.gridOptionsWrapper.isSuppressPaginationPanel();\n if (!paginationPanelEnabled) {\n this.setDisplayed(false);\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n [\n { el: this.btFirst, fn: this.onBtFirst.bind(this) },\n { el: this.btPrevious, fn: this.onBtPrevious.bind(this) },\n { el: this.btNext, fn: this.onBtNext.bind(this) },\n { el: this.btLast, fn: this.onBtLast.bind(this) }\n ].forEach(function (item) {\n var el = item.el, fn = item.fn;\n _this.addManagedListener(el, 'click', fn);\n _this.addManagedListener(el, 'keydown', function (e) {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n e.preventDefault();\n fn();\n }\n });\n });\n this.onPaginationChanged();\n };\n PaginationComp.prototype.onPaginationChanged = function () {\n this.enableOrDisableButtons();\n this.updateRowLabels();\n this.setCurrentPageLabel();\n this.setTotalLabels();\n };\n PaginationComp.prototype.onBtFirst = function () {\n if (!this.previousAndFirstButtonsDisabled) {\n this.paginationProxy.goToFirstPage();\n }\n };\n PaginationComp.prototype.setCurrentPageLabel = function () {\n var pagesExist = this.paginationProxy.getTotalPages() > 0;\n var currentPage = this.paginationProxy.getCurrentPage();\n var toDisplay = pagesExist ? currentPage + 1 : 0;\n this.lbCurrent.innerHTML = this.formatNumber(toDisplay);\n };\n PaginationComp.prototype.formatNumber = function (value) {\n var userFunc = this.gridOptionsWrapper.getPaginationNumberFormatterFunc();\n if (userFunc) {\n var params = { value: value };\n return userFunc(params);\n }\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n return formatNumberCommas(value, thousandSeparator, decimalSeparator);\n };\n PaginationComp.prototype.getTemplate = function () {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var strPage = localeTextFunc('page', 'Page');\n var strTo = localeTextFunc('to', 'to');\n var strOf = localeTextFunc('of', 'of');\n var strFirst = localeTextFunc('firstPage', 'First Page');\n var strPrevious = localeTextFunc('previousPage', 'Previous Page');\n var strNext = localeTextFunc('nextPage', 'Next Page');\n var strLast = localeTextFunc('lastPage', 'Last Page');\n var compId = this.getCompId();\n return /* html */ \"
\\n \\n \\n \" + strTo + \"\\n \\n \" + strOf + \"\\n \\n \\n \\n
\\n
\\n \\n \" + strPage + \"\\n \\n \" + strOf + \"\\n \\n \\n
\\n
\\n
\\n
\";\n };\n PaginationComp.prototype.onBtNext = function () {\n if (!this.nextButtonDisabled) {\n this.paginationProxy.goToNextPage();\n }\n };\n PaginationComp.prototype.onBtPrevious = function () {\n if (!this.previousAndFirstButtonsDisabled) {\n this.paginationProxy.goToPreviousPage();\n }\n };\n PaginationComp.prototype.onBtLast = function () {\n if (!this.lastButtonDisabled) {\n this.paginationProxy.goToLastPage();\n }\n };\n PaginationComp.prototype.enableOrDisableButtons = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n this.previousAndFirstButtonsDisabled = currentPage === 0;\n this.toggleButtonDisabled(this.btFirst, this.previousAndFirstButtonsDisabled);\n this.toggleButtonDisabled(this.btPrevious, this.previousAndFirstButtonsDisabled);\n var zeroPagesToDisplay = this.isZeroPagesToDisplay();\n var onLastPage = maxRowFound && currentPage === (totalPages - 1);\n this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;\n this.lastButtonDisabled = !maxRowFound || zeroPagesToDisplay || currentPage === (totalPages - 1);\n this.toggleButtonDisabled(this.btNext, this.nextButtonDisabled);\n this.toggleButtonDisabled(this.btLast, this.lastButtonDisabled);\n };\n PaginationComp.prototype.toggleButtonDisabled = function (button, disabled) {\n setAriaDisabled(button, disabled);\n button.classList.toggle('ag-disabled', disabled);\n if (disabled) {\n button.removeAttribute('tabindex');\n }\n else {\n button.setAttribute('tabindex', '0');\n }\n };\n PaginationComp.prototype.updateRowLabels = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var pageSize = this.paginationProxy.getPageSize();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getMasterRowCount() : null;\n var startRow;\n var endRow;\n if (this.isZeroPagesToDisplay()) {\n startRow = endRow = 0;\n }\n else {\n startRow = (pageSize * currentPage) + 1;\n endRow = startRow + pageSize - 1;\n if (maxRowFound && endRow > rowCount) {\n endRow = rowCount;\n }\n }\n this.lbFirstRowOnPage.innerHTML = this.formatNumber(startRow);\n if (this.rowNodeBlockLoader.isLoading()) {\n this.lbLastRowOnPage.innerHTML = '?';\n }\n else {\n this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);\n }\n };\n PaginationComp.prototype.isZeroPagesToDisplay = function () {\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n return maxRowFound && totalPages === 0;\n };\n PaginationComp.prototype.setTotalLabels = function () {\n var lastPageFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n var rowCount = lastPageFound ? this.paginationProxy.getMasterRowCount() : null;\n // When `pivotMode=true` and no grouping or value columns exist, a single 'hidden' group row (root node) is in\n // the grid and the pagination totals will correctly display total = 1. However this is confusing to users as\n // they can't see it. To address this UX issue we simply set the totals to zero in the pagination panel.\n if (rowCount === 1) {\n var firstRow = this.paginationProxy.getRow(0);\n // a group node with no group or agg data will not be visible to users\n var hiddenGroupRow = firstRow && firstRow.group && !(firstRow.groupData || firstRow.aggData);\n if (hiddenGroupRow) {\n this.setTotalLabelsToZero();\n return;\n }\n }\n if (lastPageFound) {\n this.lbTotal.innerHTML = this.formatNumber(totalPages);\n this.lbRecordCount.innerHTML = this.formatNumber(rowCount);\n }\n else {\n var moreText = this.gridOptionsWrapper.getLocaleTextFunc()('more', 'more');\n this.lbTotal.innerHTML = moreText;\n this.lbRecordCount.innerHTML = moreText;\n }\n };\n PaginationComp.prototype.setTotalLabelsToZero = function () {\n this.lbFirstRowOnPage.innerHTML = this.formatNumber(0);\n this.lbCurrent.innerHTML = this.formatNumber(0);\n this.lbLastRowOnPage.innerHTML = this.formatNumber(0);\n this.lbTotal.innerHTML = this.formatNumber(0);\n this.lbRecordCount.innerHTML = this.formatNumber(0);\n };\n __decorate$q([\n Autowired('paginationProxy')\n ], PaginationComp.prototype, \"paginationProxy\", void 0);\n __decorate$q([\n Autowired('rowNodeBlockLoader')\n ], PaginationComp.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate$q([\n RefSelector('btFirst')\n ], PaginationComp.prototype, \"btFirst\", void 0);\n __decorate$q([\n RefSelector('btPrevious')\n ], PaginationComp.prototype, \"btPrevious\", void 0);\n __decorate$q([\n RefSelector('btNext')\n ], PaginationComp.prototype, \"btNext\", void 0);\n __decorate$q([\n RefSelector('btLast')\n ], PaginationComp.prototype, \"btLast\", void 0);\n __decorate$q([\n RefSelector('lbRecordCount')\n ], PaginationComp.prototype, \"lbRecordCount\", void 0);\n __decorate$q([\n RefSelector('lbFirstRowOnPage')\n ], PaginationComp.prototype, \"lbFirstRowOnPage\", void 0);\n __decorate$q([\n RefSelector('lbLastRowOnPage')\n ], PaginationComp.prototype, \"lbLastRowOnPage\", void 0);\n __decorate$q([\n RefSelector('lbCurrent')\n ], PaginationComp.prototype, \"lbCurrent\", void 0);\n __decorate$q([\n RefSelector('lbTotal')\n ], PaginationComp.prototype, \"lbTotal\", void 0);\n __decorate$q([\n PostConstruct\n ], PaginationComp.prototype, \"postConstruct\", null);\n return PaginationComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$o = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LoadingType;\n(function (LoadingType) {\n LoadingType[LoadingType[\"Loading\"] = 0] = \"Loading\";\n LoadingType[LoadingType[\"NoRows\"] = 1] = \"NoRows\";\n})(LoadingType || (LoadingType = {}));\nvar OverlayWrapperComponent = /** @class */ (function (_super) {\n __extends$o(OverlayWrapperComponent, _super);\n function OverlayWrapperComponent() {\n var _this = _super.call(this, OverlayWrapperComponent.TEMPLATE) || this;\n _this.inProgress = false;\n _this.destroyRequested = false;\n _this.manuallyDisplayed = false;\n return _this;\n }\n OverlayWrapperComponent.prototype.updateLayoutClasses = function (cssClass, params) {\n var overlayWrapperClassList = this.eOverlayWrapper.classList;\n overlayWrapperClassList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n overlayWrapperClassList.toggle(LayoutCssClasses.NORMAL, params.normal);\n overlayWrapperClassList.toggle(LayoutCssClasses.PRINT, params.print);\n };\n OverlayWrapperComponent.prototype.postConstruct = function () {\n this.createManagedBean(new LayoutFeature(this));\n this.setDisplayed(false);\n this.addManagedListener(this.eventService, Events.EVENT_ROW_DATA_UPDATED, this.onRowDataUpdated.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n if (this.gridOptionsWrapper.isRowModelDefault() && !this.gridOptionsWrapper.getRowData()) {\n this.showLoadingOverlay();\n }\n this.gridApi.registerOverlayWrapperComp(this);\n };\n OverlayWrapperComponent.prototype.setWrapperTypeClass = function (loadingType) {\n var overlayWrapperClassList = this.eOverlayWrapper.classList;\n overlayWrapperClassList.toggle('ag-overlay-loading-wrapper', loadingType === LoadingType.Loading);\n overlayWrapperClassList.toggle('ag-overlay-no-rows-wrapper', loadingType === LoadingType.NoRows);\n };\n OverlayWrapperComponent.prototype.showLoadingOverlay = function () {\n if (this.gridOptionsWrapper.isSuppressLoadingOverlay()) {\n return;\n }\n var params = {};\n var compDetails = this.userComponentFactory.getLoadingOverlayCompDetails(params);\n var promise = compDetails.newAgStackInstance();\n this.showOverlay(promise, LoadingType.Loading);\n };\n OverlayWrapperComponent.prototype.showNoRowsOverlay = function () {\n if (this.gridOptionsWrapper.isSuppressNoRowsOverlay()) {\n return;\n }\n var params = {};\n var compDetails = this.userComponentFactory.getNoRowsOverlayCompDetails(params);\n var promise = compDetails.newAgStackInstance();\n this.showOverlay(promise, LoadingType.NoRows);\n };\n OverlayWrapperComponent.prototype.showOverlay = function (workItem, type) {\n var _this = this;\n if (this.inProgress) {\n return;\n }\n this.setWrapperTypeClass(type);\n this.destroyActiveOverlay();\n this.inProgress = true;\n if (workItem) {\n workItem.then(function (comp) {\n _this.inProgress = false;\n _this.eOverlayWrapper.appendChild(comp.getGui());\n _this.activeOverlay = comp;\n if (_this.destroyRequested) {\n _this.destroyRequested = false;\n _this.destroyActiveOverlay();\n }\n });\n }\n this.manuallyDisplayed = this.columnModel.isReady() && !this.paginationProxy.isEmpty();\n this.setDisplayed(true);\n };\n OverlayWrapperComponent.prototype.destroyActiveOverlay = function () {\n if (this.inProgress) {\n this.destroyRequested = true;\n return;\n }\n if (!this.activeOverlay) {\n return;\n }\n this.activeOverlay = this.getContext().destroyBean(this.activeOverlay);\n clearElement(this.eOverlayWrapper);\n };\n OverlayWrapperComponent.prototype.hideOverlay = function () {\n this.manuallyDisplayed = false;\n this.destroyActiveOverlay();\n this.setDisplayed(false);\n };\n OverlayWrapperComponent.prototype.destroy = function () {\n this.destroyActiveOverlay();\n _super.prototype.destroy.call(this);\n };\n OverlayWrapperComponent.prototype.showOrHideOverlay = function () {\n var isEmpty = this.paginationProxy.isEmpty();\n var isSuppressNoRowsOverlay = this.gridOptionsWrapper.isSuppressNoRowsOverlay();\n if (isEmpty && !isSuppressNoRowsOverlay) {\n this.showNoRowsOverlay();\n }\n else {\n this.hideOverlay();\n }\n };\n OverlayWrapperComponent.prototype.onRowDataUpdated = function () {\n this.showOrHideOverlay();\n };\n OverlayWrapperComponent.prototype.onNewColumnsLoaded = function () {\n // hide overlay if columns and rows exist, this can happen if columns are loaded after data.\n // this problem exists before of the race condition between the services (column controller in this case)\n // and the view (grid panel). if the model beans were all initialised first, and then the view beans second,\n // this race condition would not happen.\n if (this.columnModel.isReady() && !this.paginationProxy.isEmpty() && !this.manuallyDisplayed) {\n this.hideOverlay();\n }\n };\n // wrapping in outer div, and wrapper, is needed to center the loading icon\n // The idea for centering came from here: http://www.vanseodesign.com/css/vertical-centering/\n OverlayWrapperComponent.TEMPLATE = \"\\n
\\n
\\n
\\n
\\n
\";\n __decorate$p([\n Autowired('userComponentFactory')\n ], OverlayWrapperComponent.prototype, \"userComponentFactory\", void 0);\n __decorate$p([\n Autowired('paginationProxy')\n ], OverlayWrapperComponent.prototype, \"paginationProxy\", void 0);\n __decorate$p([\n Autowired('gridApi')\n ], OverlayWrapperComponent.prototype, \"gridApi\", void 0);\n __decorate$p([\n Autowired('columnModel')\n ], OverlayWrapperComponent.prototype, \"columnModel\", void 0);\n __decorate$p([\n RefSelector('eOverlayWrapper')\n ], OverlayWrapperComponent.prototype, \"eOverlayWrapper\", void 0);\n __decorate$p([\n PostConstruct\n ], OverlayWrapperComponent.prototype, \"postConstruct\", null);\n return OverlayWrapperComponent;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$n = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowPositionUtils = /** @class */ (function (_super) {\n __extends$n(RowPositionUtils, _super);\n function RowPositionUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RowPositionUtils.prototype.getFirstRow = function () {\n var rowIndex = 0;\n var rowPinned;\n if (this.pinnedRowModel.getPinnedTopRowCount()) {\n rowPinned = Constants.PINNED_TOP;\n }\n else if (this.rowModel.getRowCount()) {\n rowPinned = null;\n rowIndex = this.paginationProxy.getPageFirstRow();\n }\n else if (this.pinnedRowModel.getPinnedBottomRowCount()) {\n rowPinned = Constants.PINNED_BOTTOM;\n }\n return rowPinned === undefined ? null : { rowIndex: rowIndex, rowPinned: rowPinned };\n };\n RowPositionUtils.prototype.getLastRow = function () {\n var rowIndex;\n var rowPinned = null;\n var pinnedBottomCount = this.pinnedRowModel.getPinnedBottomRowCount();\n var pinnedTopCount = this.pinnedRowModel.getPinnedTopRowCount();\n if (pinnedBottomCount) {\n rowPinned = Constants.PINNED_BOTTOM;\n rowIndex = pinnedBottomCount - 1;\n }\n else if (this.rowModel.getRowCount()) {\n rowPinned = null;\n rowIndex = this.paginationProxy.getPageLastRow();\n }\n else if (pinnedTopCount) {\n rowPinned = Constants.PINNED_TOP;\n rowIndex = pinnedTopCount - 1;\n }\n return rowIndex === undefined ? null : { rowIndex: rowIndex, rowPinned: rowPinned };\n };\n RowPositionUtils.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case Constants.PINNED_TOP:\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case Constants.PINNED_BOTTOM:\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n RowPositionUtils.prototype.sameRow = function (rowA, rowB) {\n // if both missing\n if (!rowA && !rowB) {\n return true;\n }\n // if only one missing\n if ((rowA && !rowB) || (!rowA && rowB)) {\n return false;\n }\n // otherwise compare (use == to compare rowPinned because it can be null or undefined)\n return rowA.rowIndex === rowB.rowIndex && rowA.rowPinned == rowB.rowPinned;\n };\n // tests if this row selection is before the other row selection\n RowPositionUtils.prototype.before = function (rowA, rowB) {\n switch (rowA.rowPinned) {\n case Constants.PINNED_TOP:\n // we we are floating top, and other isn't, then we are always before\n if (rowB.rowPinned !== Constants.PINNED_TOP) {\n return true;\n }\n break;\n case Constants.PINNED_BOTTOM:\n // if we are floating bottom, and the other isn't, then we are never before\n if (rowB.rowPinned !== Constants.PINNED_BOTTOM) {\n return false;\n }\n break;\n default:\n // if we are not floating, but the other one is floating...\n if (exists(rowB.rowPinned)) {\n return rowB.rowPinned !== Constants.PINNED_TOP;\n }\n break;\n }\n return rowA.rowIndex < rowB.rowIndex;\n };\n RowPositionUtils.prototype.rowMax = function (rows) {\n var _this = this;\n var max;\n rows.forEach(function (row) {\n if (max === undefined || _this.before(max, row)) {\n max = row;\n }\n });\n return max;\n };\n RowPositionUtils.prototype.rowMin = function (rows) {\n var _this = this;\n var min;\n rows.forEach(function (row) {\n if (min === undefined || _this.before(row, min)) {\n min = row;\n }\n });\n return min;\n };\n __decorate$o([\n Autowired('rowModel')\n ], RowPositionUtils.prototype, \"rowModel\", void 0);\n __decorate$o([\n Autowired('pinnedRowModel')\n ], RowPositionUtils.prototype, \"pinnedRowModel\", void 0);\n __decorate$o([\n Autowired('paginationProxy')\n ], RowPositionUtils.prototype, \"paginationProxy\", void 0);\n RowPositionUtils = __decorate$o([\n Bean('rowPositionUtils')\n ], RowPositionUtils);\n return RowPositionUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$m = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CellPositionUtils = /** @class */ (function (_super) {\n __extends$m(CellPositionUtils, _super);\n function CellPositionUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CellPositionUtils.prototype.createId = function (cellPosition) {\n var rowIndex = cellPosition.rowIndex, rowPinned = cellPosition.rowPinned, column = cellPosition.column;\n return this.createIdFromValues(rowIndex, column, rowPinned);\n };\n CellPositionUtils.prototype.createIdFromValues = function (rowIndex, column, rowPinned) {\n return rowIndex + \".\" + (rowPinned == null ? 'null' : rowPinned) + \".\" + column.getId();\n };\n CellPositionUtils.prototype.equals = function (cellA, cellB) {\n var colsMatch = cellA.column === cellB.column;\n var floatingMatch = cellA.rowPinned === cellB.rowPinned;\n var indexMatch = cellA.rowIndex === cellB.rowIndex;\n return colsMatch && floatingMatch && indexMatch;\n };\n CellPositionUtils = __decorate$n([\n Bean('cellPositionUtils')\n ], CellPositionUtils);\n return CellPositionUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$l = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar UndoRedoAction = /** @class */ (function () {\n function UndoRedoAction(cellValueChanges) {\n this.cellValueChanges = cellValueChanges;\n }\n return UndoRedoAction;\n}());\nvar RangeUndoRedoAction = /** @class */ (function (_super) {\n __extends$l(RangeUndoRedoAction, _super);\n function RangeUndoRedoAction(cellValueChanges, initialRange, finalRange, ranges) {\n var _this = _super.call(this, cellValueChanges) || this;\n _this.initialRange = initialRange;\n _this.finalRange = finalRange;\n _this.ranges = ranges;\n return _this;\n }\n return RangeUndoRedoAction;\n}(UndoRedoAction));\nvar UndoRedoStack = /** @class */ (function () {\n function UndoRedoStack(maxStackSize) {\n this.actionStack = [];\n this.maxStackSize = maxStackSize ? maxStackSize : UndoRedoStack.DEFAULT_STACK_SIZE;\n this.actionStack = new Array(this.maxStackSize);\n }\n UndoRedoStack.prototype.pop = function () {\n return this.actionStack.pop();\n };\n UndoRedoStack.prototype.push = function (item) {\n var shouldAddActions = item.cellValueChanges && item.cellValueChanges.length > 0;\n if (!shouldAddActions) {\n return;\n }\n if (this.actionStack.length === this.maxStackSize) {\n this.actionStack.shift();\n }\n this.actionStack.push(item);\n };\n UndoRedoStack.prototype.clear = function () {\n this.actionStack = [];\n };\n UndoRedoStack.prototype.getCurrentStackSize = function () {\n return this.actionStack.length;\n };\n UndoRedoStack.DEFAULT_STACK_SIZE = 10;\n return UndoRedoStack;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$k = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 = (undefined && undefined.__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$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read$3 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$2 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$3(arguments[i]));\n return ar;\n};\nvar UndoRedoService = /** @class */ (function (_super) {\n __extends$k(UndoRedoService, _super);\n function UndoRedoService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellValueChanges = [];\n _this.activeCellEdit = null;\n _this.activeRowEdit = null;\n _this.isPasting = false;\n _this.isRangeInAction = false;\n _this.onCellValueChanged = function (event) {\n var eventCell = { column: event.column, rowIndex: event.rowIndex, rowPinned: event.rowPinned };\n var isCellEditing = _this.activeCellEdit !== null && _this.cellPositionUtils.equals(_this.activeCellEdit, eventCell);\n var isRowEditing = _this.activeRowEdit !== null && _this.rowPositionUtils.sameRow(_this.activeRowEdit, eventCell);\n var shouldCaptureAction = isCellEditing || isRowEditing || _this.isPasting || _this.isRangeInAction;\n if (!shouldCaptureAction) {\n return;\n }\n var rowPinned = event.rowPinned, rowIndex = event.rowIndex, column = event.column, oldValue = event.oldValue, value = event.value;\n var cellValueChange = {\n rowPinned: rowPinned,\n rowIndex: rowIndex,\n columnId: column.getColId(),\n newValue: value,\n oldValue: oldValue\n };\n _this.cellValueChanges.push(cellValueChange);\n };\n _this.clearStacks = function () {\n _this.undoStack.clear();\n _this.redoStack.clear();\n };\n return _this;\n }\n UndoRedoService.prototype.init = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isUndoRedoCellEditing()) {\n return;\n }\n var undoRedoLimit = this.gridOptionsWrapper.getUndoRedoCellEditingLimit();\n if (undoRedoLimit <= 0) {\n return;\n }\n this.undoStack = new UndoRedoStack(undoRedoLimit);\n this.redoStack = new UndoRedoStack(undoRedoLimit);\n this.addRowEditingListeners();\n this.addCellEditingListeners();\n this.addPasteListeners();\n this.addFillListeners();\n this.addCellKeyListeners();\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged);\n // undo / redo is restricted to actual editing so we clear the stacks when other operations are\n // performed that change the order of the row / cols.\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, function (e) {\n if (!e.keepUndoRedoStack) {\n _this.clearStacks();\n }\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_ROW_DRAG_END, this.clearStacks);\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n });\n };\n UndoRedoService.prototype.getCurrentUndoStackSize = function () {\n return this.undoStack ? this.undoStack.getCurrentStackSize() : 0;\n };\n UndoRedoService.prototype.getCurrentRedoStackSize = function () {\n return this.redoStack ? this.redoStack.getCurrentStackSize() : 0;\n };\n UndoRedoService.prototype.undo = function () {\n if (!this.undoStack) {\n return;\n }\n var undoAction = this.undoStack.pop();\n if (!undoAction || !undoAction.cellValueChanges) {\n return;\n }\n this.processAction(undoAction, function (cellValueChange) { return cellValueChange.oldValue; });\n if (undoAction instanceof RangeUndoRedoAction) {\n this.processRange(undoAction.ranges || [undoAction.initialRange]);\n }\n else {\n this.processCell(undoAction.cellValueChanges);\n }\n this.redoStack.push(undoAction);\n };\n UndoRedoService.prototype.redo = function () {\n if (!this.redoStack) {\n return;\n }\n var redoAction = this.redoStack.pop();\n if (!redoAction || !redoAction.cellValueChanges) {\n return;\n }\n this.processAction(redoAction, function (cellValueChange) { return cellValueChange.newValue; });\n if (redoAction instanceof RangeUndoRedoAction) {\n this.processRange(redoAction.ranges || [redoAction.finalRange]);\n }\n else {\n this.processCell(redoAction.cellValueChanges);\n }\n this.undoStack.push(redoAction);\n };\n UndoRedoService.prototype.processAction = function (action, valueExtractor) {\n var _this = this;\n action.cellValueChanges.forEach(function (cellValueChange) {\n var _a;\n var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned, columnId = cellValueChange.columnId;\n var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };\n var currentRow = _this.getRowNode(rowPosition);\n // checks if the row has been filtered out\n if (!currentRow.displayed) {\n return;\n }\n var extractedValue = valueExtractor(cellValueChange);\n // when values are 'complex objects' we need to invoke their `toString()` to obtain value\n var value = (typeof ((_a = extractedValue) === null || _a === void 0 ? void 0 : _a.toString) === 'function') ? extractedValue.toString() : extractedValue;\n currentRow.setDataValue(columnId, value);\n });\n };\n UndoRedoService.prototype.processRange = function (ranges) {\n var _this = this;\n var lastFocusedCell;\n this.rangeService.removeAllCellRanges(true);\n ranges.forEach(function (range, idx) {\n if (!range) {\n return;\n }\n var startRow = range.startRow;\n var endRow = range.endRow;\n if (idx === ranges.length - 1) {\n lastFocusedCell = {\n rowPinned: startRow.rowPinned,\n rowIndex: startRow.rowIndex,\n columnId: range.startColumn.getColId()\n };\n _this.setLastFocusedCell(lastFocusedCell);\n }\n var cellRangeParams = {\n rowStartIndex: startRow.rowIndex,\n rowStartPinned: startRow.rowPinned,\n rowEndIndex: endRow.rowIndex,\n rowEndPinned: endRow.rowPinned,\n columnStart: range.startColumn,\n columns: range.columns\n };\n _this.rangeService.addCellRange(cellRangeParams);\n });\n };\n UndoRedoService.prototype.processCell = function (cellValueChanges) {\n var cellValueChange = cellValueChanges[0];\n var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned;\n var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };\n var row = this.getRowNode(rowPosition);\n var lastFocusedCell = {\n rowPinned: cellValueChange.rowPinned,\n rowIndex: row.rowIndex,\n columnId: cellValueChange.columnId\n };\n this.setLastFocusedCell(lastFocusedCell, true);\n };\n UndoRedoService.prototype.setLastFocusedCell = function (lastFocusedCell, setRangeToCell) {\n var rowIndex = lastFocusedCell.rowIndex, columnId = lastFocusedCell.columnId, rowPinned = lastFocusedCell.rowPinned;\n var scrollFeature = this.gridBodyCtrl.getScrollFeature();\n var column = this.columnModel.getGridColumn(columnId);\n if (!column) {\n return;\n }\n scrollFeature.ensureIndexVisible(rowIndex);\n scrollFeature.ensureColumnVisible(column);\n var cellPosition = { rowIndex: rowIndex, column: column, rowPinned: rowPinned };\n this.focusService.setFocusedCell(__assign(__assign({}, cellPosition), { forceBrowserFocus: true }));\n if (setRangeToCell) {\n this.rangeService.setRangeToCell(cellPosition);\n }\n };\n UndoRedoService.prototype.addRowEditingListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_ROW_EDITING_STARTED, function (e) {\n _this.activeRowEdit = { rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n });\n this.addManagedListener(this.eventService, Events.EVENT_ROW_EDITING_STOPPED, function () {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n _this.activeRowEdit = null;\n });\n };\n UndoRedoService.prototype.addCellEditingListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_CELL_EDITING_STARTED, function (e) {\n _this.activeCellEdit = { column: e.column, rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n });\n this.addManagedListener(this.eventService, Events.EVENT_CELL_EDITING_STOPPED, function (e) {\n _this.activeCellEdit = null;\n var shouldPushAction = e.valueChanged && !_this.activeRowEdit && !_this.isPasting && !_this.isRangeInAction;\n if (shouldPushAction) {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n }\n });\n };\n UndoRedoService.prototype.addPasteListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_PASTE_START, function () {\n _this.isPasting = true;\n });\n this.addManagedListener(this.eventService, Events.EVENT_PASTE_END, function () {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n _this.isPasting = false;\n });\n };\n UndoRedoService.prototype.addFillListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_FILL_START, function () {\n _this.isRangeInAction = true;\n });\n this.addManagedListener(this.eventService, Events.EVENT_FILL_END, function (event) {\n var action = new RangeUndoRedoAction(_this.cellValueChanges, event.initialRange, event.finalRange);\n _this.pushActionsToUndoStack(action);\n _this.isRangeInAction = false;\n });\n };\n UndoRedoService.prototype.addCellKeyListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_START, function () {\n _this.isRangeInAction = true;\n });\n this.addManagedListener(this.eventService, Events.EVENT_KEY_SHORTCUT_CHANGED_CELL_END, function () {\n var action;\n if (_this.rangeService && _this.gridOptionsWrapper.isEnableRangeSelection()) {\n action = new RangeUndoRedoAction(_this.cellValueChanges, undefined, undefined, __spread$2(_this.rangeService.getCellRanges()));\n }\n else {\n action = new UndoRedoAction(_this.cellValueChanges);\n }\n _this.pushActionsToUndoStack(action);\n _this.isRangeInAction = false;\n });\n };\n UndoRedoService.prototype.pushActionsToUndoStack = function (action) {\n this.undoStack.push(action);\n this.cellValueChanges = [];\n this.redoStack.clear();\n };\n UndoRedoService.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case Constants.PINNED_TOP:\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case Constants.PINNED_BOTTOM:\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n __decorate$m([\n Autowired('focusService')\n ], UndoRedoService.prototype, \"focusService\", void 0);\n __decorate$m([\n Autowired('ctrlsService')\n ], UndoRedoService.prototype, \"ctrlsService\", void 0);\n __decorate$m([\n Autowired('rowModel')\n ], UndoRedoService.prototype, \"rowModel\", void 0);\n __decorate$m([\n Autowired('pinnedRowModel')\n ], UndoRedoService.prototype, \"pinnedRowModel\", void 0);\n __decorate$m([\n Autowired('cellPositionUtils')\n ], UndoRedoService.prototype, \"cellPositionUtils\", void 0);\n __decorate$m([\n Autowired('rowPositionUtils')\n ], UndoRedoService.prototype, \"rowPositionUtils\", void 0);\n __decorate$m([\n Autowired('columnModel')\n ], UndoRedoService.prototype, \"columnModel\", void 0);\n __decorate$m([\n Optional('rangeService')\n ], UndoRedoService.prototype, \"rangeService\", void 0);\n __decorate$m([\n PostConstruct\n ], UndoRedoService.prototype, \"init\", null);\n UndoRedoService = __decorate$m([\n Bean('undoRedoService')\n ], UndoRedoService);\n return UndoRedoService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$j = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HeaderPositionUtils = /** @class */ (function (_super) {\n __extends$j(HeaderPositionUtils, _super);\n function HeaderPositionUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HeaderPositionUtils.prototype.findHeader = function (focusedHeader, direction) {\n var nextColumn;\n var getGroupMethod;\n var getColMethod;\n if (focusedHeader.column instanceof ColumnGroup) {\n getGroupMethod = \"getDisplayedGroup\" + direction;\n nextColumn = this.columnModel[getGroupMethod](focusedHeader.column);\n }\n else {\n getColMethod = \"getDisplayedCol\" + direction;\n nextColumn = this.columnModel[getColMethod](focusedHeader.column);\n }\n if (nextColumn) {\n return {\n column: nextColumn,\n headerRowIndex: focusedHeader.headerRowIndex\n };\n }\n };\n HeaderPositionUtils.prototype.findColAtEdgeForHeaderRow = function (level, position) {\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var column = displayedColumns[position === 'start' ? 0 : displayedColumns.length - 1];\n if (!column) {\n return;\n }\n var childContainer = this.ctrlsService.getHeaderRowContainerCtrl(column.getPinned());\n var type = childContainer.getRowType(level);\n if (type == HeaderRowType.COLUMN_GROUP) {\n var columnGroup = this.columnModel.getColumnGroupAtLevel(column, level);\n return {\n headerRowIndex: level,\n column: columnGroup\n };\n }\n return {\n // if type==null, means the header level didn't exist\n headerRowIndex: type == null ? -1 : level,\n column: column\n };\n };\n __decorate$l([\n Autowired('columnModel')\n ], HeaderPositionUtils.prototype, \"columnModel\", void 0);\n __decorate$l([\n Autowired('ctrlsService')\n ], HeaderPositionUtils.prototype, \"ctrlsService\", void 0);\n HeaderPositionUtils = __decorate$l([\n Bean('headerPositionUtils')\n ], HeaderPositionUtils);\n return HeaderPositionUtils;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ColumnDefFactory = /** @class */ (function () {\n function ColumnDefFactory() {\n }\n ColumnDefFactory.prototype.buildColumnDefs = function (cols, rowGroupColumns, pivotColumns) {\n var _this = this;\n var res = [];\n var colGroupDefs = {};\n cols.forEach(function (col) {\n var colDef = _this.createDefFromColumn(col, rowGroupColumns, pivotColumns);\n var addToResult = true;\n var childDef = colDef;\n var pointer = col.getOriginalParent();\n while (pointer) {\n var parentDef = null;\n // we don't include padding groups, as the column groups provided\n // by application didn't have these. the whole point of padding groups\n // is to balance the column tree that the user provided.\n if (pointer.isPadding()) {\n pointer = pointer.getOriginalParent();\n continue;\n }\n // if colDef for this group already exists, use it\n var existingParentDef = colGroupDefs[pointer.getGroupId()];\n if (existingParentDef) {\n existingParentDef.children.push(childDef);\n // if we added to result, it would be the second time we did it\n addToResult = false;\n // we don't want to continue up the tree, as it has already been\n // done for this group\n break;\n }\n parentDef = _this.createDefFromGroup(pointer);\n if (parentDef) {\n parentDef.children = [childDef];\n colGroupDefs[parentDef.groupId] = parentDef;\n childDef = parentDef;\n pointer = pointer.getOriginalParent();\n }\n }\n if (addToResult) {\n res.push(childDef);\n }\n });\n return res;\n };\n ColumnDefFactory.prototype.createDefFromGroup = function (group) {\n var defCloned = deepCloneDefinition(group.getColGroupDef(), ['children']);\n if (defCloned) {\n defCloned.groupId = group.getGroupId();\n }\n return defCloned;\n };\n ColumnDefFactory.prototype.createDefFromColumn = function (col, rowGroupColumns, pivotColumns) {\n var colDefCloned = deepCloneDefinition(col.getColDef());\n colDefCloned.colId = col.getColId();\n colDefCloned.width = col.getActualWidth();\n colDefCloned.rowGroup = col.isRowGroupActive();\n colDefCloned.rowGroupIndex = col.isRowGroupActive() ? rowGroupColumns.indexOf(col) : null;\n colDefCloned.pivot = col.isPivotActive();\n colDefCloned.pivotIndex = col.isPivotActive() ? pivotColumns.indexOf(col) : null;\n colDefCloned.aggFunc = col.isValueActive() ? col.getAggFunc() : null;\n colDefCloned.hide = col.isVisible() ? undefined : true;\n colDefCloned.pinned = col.isPinned() ? col.getPinned() : null;\n colDefCloned.sort = col.getSort() ? col.getSort() : null;\n colDefCloned.sortIndex = col.getSortIndex() != null ? col.getSortIndex() : null;\n return colDefCloned;\n };\n ColumnDefFactory = __decorate$k([\n Bean('columnDefFactory')\n ], ColumnDefFactory);\n return ColumnDefFactory;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowCssClassCalculator = /** @class */ (function () {\n function RowCssClassCalculator() {\n }\n RowCssClassCalculator.prototype.getInitialRowClasses = function (params) {\n var classes = [];\n if (exists(params.extraCssClass)) {\n classes.push(params.extraCssClass);\n }\n classes.push('ag-row');\n classes.push(params.rowFocused ? 'ag-row-focus' : 'ag-row-no-focus');\n if (params.fadeRowIn) {\n classes.push('ag-opacity-zero');\n }\n classes.push(params.rowIsEven ? 'ag-row-even' : 'ag-row-odd');\n if (params.rowNode.isRowPinned()) {\n classes.push('ag-row-pinned');\n }\n if (params.rowNode.isSelected()) {\n classes.push('ag-row-selected');\n }\n if (params.rowNode.footer) {\n classes.push('ag-row-footer');\n }\n classes.push('ag-row-level-' + params.rowLevel);\n if (params.rowNode.stub) {\n classes.push('ag-row-loading');\n }\n if (params.fullWidthRow) {\n classes.push('ag-full-width-row');\n }\n if (params.expandable) {\n classes.push('ag-row-group');\n classes.push(params.rowNode.expanded ? 'ag-row-group-expanded' : 'ag-row-group-contracted');\n }\n if (params.rowNode.dragging) {\n classes.push('ag-row-dragging');\n }\n pushAll(classes, this.processClassesFromGridOptions(params.rowNode));\n pushAll(classes, this.preProcessRowClassRules(params.rowNode));\n // we use absolute position unless we are doing print layout\n classes.push(params.printLayout ? 'ag-row-position-relative' : 'ag-row-position-absolute');\n if (params.firstRowOnPage) {\n classes.push('ag-row-first');\n }\n if (params.lastRowOnPage) {\n classes.push('ag-row-last');\n }\n if (params.fullWidthRow) {\n if (params.pinned === Constants.PINNED_LEFT) {\n classes.push('ag-cell-last-left-pinned');\n }\n if (params.pinned === Constants.PINNED_RIGHT) {\n classes.push('ag-cell-first-right-pinned');\n }\n }\n return classes;\n };\n RowCssClassCalculator.prototype.processClassesFromGridOptions = function (rowNode) {\n var res = [];\n var process = function (rowCls) {\n if (typeof rowCls === 'string') {\n res.push(rowCls);\n }\n else if (Array.isArray(rowCls)) {\n rowCls.forEach(function (e) { return res.push(e); });\n }\n };\n // part 1 - rowClass\n var rowClass = this.gridOptionsWrapper.getRowClass();\n if (rowClass) {\n if (typeof rowClass === 'function') {\n console.warn('AG Grid: rowClass should not be a function, please use getRowClass instead');\n return [];\n }\n process(rowClass);\n }\n // part 2 - rowClassFunc\n var rowClassFunc = this.gridOptionsWrapper.getRowClassFunc();\n if (rowClassFunc) {\n var params = {\n data: rowNode.data,\n node: rowNode,\n rowIndex: rowNode.rowIndex\n };\n var rowClassFuncResult = rowClassFunc(params);\n process(rowClassFuncResult);\n }\n return res;\n };\n RowCssClassCalculator.prototype.preProcessRowClassRules = function (rowNode) {\n var res = [];\n this.processRowClassRules(rowNode, function (className) {\n res.push(className);\n }, function (className) {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n };\n RowCssClassCalculator.prototype.processRowClassRules = function (rowNode, onApplicableClass, onNotApplicableClass) {\n var rowClassParams = {\n data: rowNode.data,\n node: rowNode,\n rowIndex: rowNode.rowIndex,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n this.stylingService.processClassRules(this.gridOptionsWrapper.rowClassRules(), rowClassParams, onApplicableClass, onNotApplicableClass);\n };\n RowCssClassCalculator.prototype.calculateRowLevel = function (rowNode) {\n if (rowNode.group) {\n return rowNode.level;\n }\n // if a leaf, and a parent exists, put a level of the parent, else put level of 0 for top level item\n return rowNode.parent ? (rowNode.parent.level + 1) : 0;\n };\n __decorate$j([\n Autowired('stylingService')\n ], RowCssClassCalculator.prototype, \"stylingService\", void 0);\n __decorate$j([\n Autowired('gridOptionsWrapper')\n ], RowCssClassCalculator.prototype, \"gridOptionsWrapper\", void 0);\n RowCssClassCalculator = __decorate$j([\n Bean('rowCssClassCalculator')\n ], RowCssClassCalculator);\n return RowCssClassCalculator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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// this logic is used by both SSRM and CSRM\nvar RowNodeSorter = /** @class */ (function () {\n function RowNodeSorter() {\n }\n RowNodeSorter.prototype.doFullSort = function (rowNodes, sortOptions) {\n var mapper = function (rowNode, pos) { return ({ currentPos: pos, rowNode: rowNode }); };\n var sortedRowNodes = rowNodes.map(mapper);\n sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n return sortedRowNodes.map(function (item) { return item.rowNode; });\n };\n RowNodeSorter.prototype.compareRowNodes = function (sortOptions, sortedNodeA, sortedNodeB) {\n var nodeA = sortedNodeA.rowNode;\n var nodeB = sortedNodeB.rowNode;\n // Iterate columns, return the first that doesn't match\n for (var i = 0, len = sortOptions.length; i < len; i++) {\n var sortOption = sortOptions[i];\n var isDescending = sortOption.sort === Constants.SORT_DESC;\n var valueA = this.getValue(nodeA, sortOption.column);\n var valueB = this.getValue(nodeB, sortOption.column);\n var comparatorResult = void 0;\n var providedComparator = this.getComparator(sortOption, nodeA);\n if (providedComparator) {\n //if comparator provided, use it\n comparatorResult = providedComparator(valueA, valueB, nodeA, nodeB, isDescending);\n }\n else {\n //otherwise do our own comparison\n comparatorResult = _.defaultComparator(valueA, valueB, this.gridOptionsWrapper.isAccentedSort());\n }\n // user provided comparators can return 'NaN' if they don't correctly handle 'undefined' values, this\n // typically occurs when the comparator is used on a group row\n var validResult = !isNaN(comparatorResult);\n if (validResult && comparatorResult !== 0) {\n return sortOption.sort === Constants.SORT_ASC ? comparatorResult : comparatorResult * -1;\n }\n }\n // All matched, we make is so that the original sort order is kept:\n return sortedNodeA.currentPos - sortedNodeB.currentPos;\n };\n RowNodeSorter.prototype.getComparator = function (sortOption, rowNode) {\n var column = sortOption.column;\n // comparator on col get preference over everything else\n var comparatorOnCol = column.getColDef().comparator;\n if (comparatorOnCol != null) {\n return comparatorOnCol;\n }\n if (!column.getColDef().showRowGroup) {\n return;\n }\n // if a 'field' is supplied on the autoGroupColumnDef we need to use the associated column comparator\n var groupLeafField = !rowNode.group && column.getColDef().field;\n if (!groupLeafField) {\n return;\n }\n var primaryColumn = this.columnModel.getPrimaryColumn(groupLeafField);\n if (!primaryColumn) {\n return;\n }\n return primaryColumn.getColDef().comparator;\n };\n RowNodeSorter.prototype.getValue = function (node, column) {\n var _a, _b;\n var primaryColumnsSortGroups = this.gridOptionsWrapper.isColumnsSortingCoupledToGroup();\n if (!primaryColumnsSortGroups) {\n return this.valueService.getValue(column, node, false, false);\n }\n var isNodeGroupedAtLevel = node.rowGroupColumn === column;\n if (isNodeGroupedAtLevel) {\n var isGroupRows = this.gridOptionsWrapper.isGroupUseEntireRow(this.columnModel.isPivotActive());\n if (isGroupRows) {\n // if the column has a provided a keyCreator, we have to use the key, as the group could be\n // irrelevant to the column value\n var keyCreator = column.getColDef().keyCreator;\n if (keyCreator) {\n return node.key;\n }\n // if the group was generated from the column data, all the leaf children should return the same\n // value\n var leafChild = (_a = node.allLeafChildren) === null || _a === void 0 ? void 0 : _a[0];\n if (leafChild) {\n return this.valueService.getValue(column, leafChild, false, false);\n }\n return undefined;\n }\n var displayCol = this.columnModel.getGroupDisplayColumnForGroup(column.getId());\n if (!displayCol) {\n return undefined;\n }\n return (_b = node.groupData) === null || _b === void 0 ? void 0 : _b[displayCol.getId()];\n }\n if (node.group && column.getColDef().showRowGroup) {\n return undefined;\n }\n return this.valueService.getValue(column, node, false, false);\n };\n __decorate$i([\n Autowired('gridOptionsWrapper')\n ], RowNodeSorter.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$i([\n Autowired('valueService')\n ], RowNodeSorter.prototype, \"valueService\", void 0);\n __decorate$i([\n Autowired('columnModel')\n ], RowNodeSorter.prototype, \"columnModel\", void 0);\n RowNodeSorter = __decorate$i([\n Bean('rowNodeSorter')\n ], RowNodeSorter);\n return RowNodeSorter;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$i = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CtrlsService = /** @class */ (function (_super) {\n __extends$i(CtrlsService, _super);\n function CtrlsService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ready = false;\n _this.readyCallbacks = [];\n return _this;\n }\n CtrlsService_1 = CtrlsService;\n CtrlsService.prototype.checkReady = function () {\n this.ready =\n this.gridCtrl != null\n && this.gridBodyCtrl != null\n && this.centerRowContainerCtrl != null\n && this.leftRowContainerCtrl != null\n && this.rightRowContainerCtrl != null\n && this.bottomCenterRowContainerCtrl != null\n && this.bottomLeftRowContainerCtrl != null\n && this.bottomRightRowContainerCtrl != null\n && this.topCenterRowContainerCtrl != null\n && this.topLeftRowContainerCtrl != null\n && this.topRightRowContainerCtrl != null\n && this.stickyTopCenterRowContainerCtrl != null\n && this.stickyTopLeftRowContainerCtrl != null\n && this.stickyTopRightRowContainerCtrl != null\n && this.centerHeaderRowContainerCtrl != null\n && this.leftHeaderRowContainerCtrl != null\n && this.rightHeaderRowContainerCtrl != null\n && this.fakeHScrollCtrl != null\n && this.gridHeaderCtrl != null;\n if (this.ready) {\n var p_1 = this.createReadyParams();\n this.readyCallbacks.forEach(function (c) { return c(p_1); });\n this.readyCallbacks.length = 0;\n }\n };\n CtrlsService.prototype.whenReady = function (callback) {\n if (this.ready) {\n callback(this.createReadyParams());\n }\n else {\n this.readyCallbacks.push(callback);\n }\n };\n CtrlsService.prototype.createReadyParams = function () {\n return {\n centerRowContainerCtrl: this.centerRowContainerCtrl,\n leftRowContainerCtrl: this.leftRowContainerCtrl,\n rightRowContainerCtrl: this.rightRowContainerCtrl,\n bottomCenterRowContainerCtrl: this.bottomCenterRowContainerCtrl,\n bottomLeftRowContainerCtrl: this.bottomLeftRowContainerCtrl,\n bottomRightRowContainerCtrl: this.bottomRightRowContainerCtrl,\n topCenterRowContainerCtrl: this.topCenterRowContainerCtrl,\n topLeftRowContainerCtrl: this.topLeftRowContainerCtrl,\n topRightRowContainerCtrl: this.topRightRowContainerCtrl,\n stickyTopCenterRowContainerCtrl: this.stickyTopCenterRowContainerCtrl,\n stickyTopLeftRowContainerCtrl: this.stickyTopLeftRowContainerCtrl,\n stickyTopRightRowContainerCtrl: this.stickyTopRightRowContainerCtrl,\n centerHeaderRowContainerCtrl: this.centerHeaderRowContainerCtrl,\n leftHeaderRowContainerCtrl: this.leftHeaderRowContainerCtrl,\n rightHeaderRowContainerCtrl: this.rightHeaderRowContainerCtrl,\n fakeHScrollCtrl: this.fakeHScrollCtrl,\n gridBodyCtrl: this.gridBodyCtrl,\n gridCtrl: this.gridCtrl,\n gridHeaderCtrl: this.gridHeaderCtrl,\n };\n };\n CtrlsService.prototype.registerFakeHScrollCtrl = function (ctrl) {\n this.fakeHScrollCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerGridHeaderCtrl = function (gridHeaderCtrl) {\n this.gridHeaderCtrl = gridHeaderCtrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerCenterRowContainerCtrl = function (ctrl) {\n this.centerRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerLeftRowContainerCtrl = function (ctrl) {\n this.leftRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerRightRowContainerCtrl = function (ctrl) {\n this.rightRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerTopCenterRowContainerCtrl = function (ctrl) {\n this.topCenterRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerTopLeftRowContainerCon = function (ctrl) {\n this.topLeftRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerTopRightRowContainerCtrl = function (ctrl) {\n this.topRightRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerStickyTopCenterRowContainerCtrl = function (ctrl) {\n this.stickyTopCenterRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerStickyTopLeftRowContainerCon = function (ctrl) {\n this.stickyTopLeftRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerStickyTopRightRowContainerCtrl = function (ctrl) {\n this.stickyTopRightRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerBottomCenterRowContainerCtrl = function (ctrl) {\n this.bottomCenterRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerBottomLeftRowContainerCtrl = function (ctrl) {\n this.bottomLeftRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerBottomRightRowContainerCtrl = function (ctrl) {\n this.bottomRightRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerHeaderContainer = function (ctrl, pinned) {\n switch (pinned) {\n case Constants.PINNED_LEFT:\n this.leftHeaderRowContainerCtrl = ctrl;\n break;\n case Constants.PINNED_RIGHT:\n this.rightHeaderRowContainerCtrl = ctrl;\n break;\n default:\n this.centerHeaderRowContainerCtrl = ctrl;\n break;\n }\n this.checkReady();\n };\n CtrlsService.prototype.registerGridBodyCtrl = function (ctrl) {\n this.gridBodyCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerGridCtrl = function (ctrl) {\n this.gridCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.getFakeHScrollCtrl = function () {\n return this.fakeHScrollCtrl;\n };\n CtrlsService.prototype.getGridHeaderCtrl = function () {\n return this.gridHeaderCtrl;\n };\n CtrlsService.prototype.getGridCtrl = function () {\n return this.gridCtrl;\n };\n CtrlsService.prototype.getCenterRowContainerCtrl = function () {\n return this.centerRowContainerCtrl;\n };\n CtrlsService.prototype.getTopCenterRowContainerCtrl = function () {\n return this.topCenterRowContainerCtrl;\n };\n CtrlsService.prototype.getBottomCenterRowContainerCtrl = function () {\n return this.bottomCenterRowContainerCtrl;\n };\n CtrlsService.prototype.getStickyTopCenterRowContainerCtrl = function () {\n return this.stickyTopCenterRowContainerCtrl;\n };\n CtrlsService.prototype.getGridBodyCtrl = function () {\n return this.gridBodyCtrl;\n };\n CtrlsService.prototype.getHeaderRowContainerCtrls = function () {\n return [this.leftHeaderRowContainerCtrl, this.rightHeaderRowContainerCtrl, this.centerHeaderRowContainerCtrl];\n };\n CtrlsService.prototype.getHeaderRowContainerCtrl = function (pinned) {\n switch (pinned) {\n case Constants.PINNED_LEFT: return this.leftHeaderRowContainerCtrl;\n case Constants.PINNED_RIGHT: return this.rightHeaderRowContainerCtrl;\n default: return this.centerHeaderRowContainerCtrl;\n }\n };\n var CtrlsService_1;\n CtrlsService.NAME = 'ctrlsService';\n CtrlsService = CtrlsService_1 = __decorate$h([\n Bean(CtrlsService_1.NAME)\n ], CtrlsService);\n return CtrlsService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$h = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CtrlsFactory = /** @class */ (function (_super) {\n __extends$h(CtrlsFactory, _super);\n function CtrlsFactory() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registry = {};\n return _this;\n }\n CtrlsFactory.prototype.register = function (meta) {\n this.registry[meta.controllerName] = meta.controllerClass;\n };\n CtrlsFactory.prototype.getInstance = function (name) {\n var ControllerClass = this.registry[name];\n if (ControllerClass == null) {\n return undefined;\n }\n return new ControllerClass();\n };\n CtrlsFactory = __decorate$g([\n Bean('ctrlsFactory')\n ], CtrlsFactory);\n return CtrlsFactory;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$g = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FakeHScrollCtrl = /** @class */ (function (_super) {\n __extends$g(FakeHScrollCtrl, _super);\n function FakeHScrollCtrl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FakeHScrollCtrl.prototype.setComp = function (view, eGui, eViewport, eContainer) {\n this.view = view;\n this.eViewport = eViewport;\n this.eContainer = eContainer;\n this.eGui = eGui;\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n // When doing printing, this changes whether cols are pinned or not\n var spacerWidthsListener = this.setFakeHScrollSpacerWidths.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, spacerWidthsListener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, spacerWidthsListener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, spacerWidthsListener);\n this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n this.onScrollVisibilityChanged();\n this.ctrlsService.registerFakeHScrollCtrl(this);\n this.view.addOrRemoveCssClass('ag-apple-scrollbar', isMacOsUserAgent() || isIOSUserAgent());\n };\n FakeHScrollCtrl.prototype.addActiveListenerToggles = function () {\n var _this = this;\n var activateEvents = ['mouseenter', 'mousedown', 'touchstart'];\n var deactivateEvents = ['mouseleave', 'touchend'];\n activateEvents.forEach(function (eventName) { return _this.addManagedListener(_this.eGui, eventName, function () { return _this.view.addOrRemoveCssClass('ag-scrollbar-active', true); }); });\n deactivateEvents.forEach(function (eventName) { return _this.addManagedListener(_this.eGui, eventName, function () { return _this.view.addOrRemoveCssClass('ag-scrollbar-active', false); }); });\n };\n FakeHScrollCtrl.prototype.initialiseInvisibleScrollbar = function () {\n if (this.invisibleScrollbar !== undefined) {\n return;\n }\n this.enableRtl = this.gridOptionsWrapper.isEnableRtl();\n this.invisibleScrollbar = isInvisibleScrollbar();\n if (this.invisibleScrollbar) {\n this.hideAndShowInvisibleScrollAsNeeded();\n this.addActiveListenerToggles();\n this.refreshCompBottom();\n }\n };\n FakeHScrollCtrl.prototype.onPinnedRowDataChanged = function () {\n this.refreshCompBottom();\n };\n FakeHScrollCtrl.prototype.refreshCompBottom = function () {\n if (!this.invisibleScrollbar) {\n return;\n }\n var bottomPinnedHeight = this.pinnedRowModel.getPinnedBottomTotalHeight();\n this.view.setBottom(bottomPinnedHeight);\n };\n FakeHScrollCtrl.prototype.onScrollVisibilityChanged = function () {\n // initialiseInvisibleScrollbar should only be called once, but the reason\n // this can't be inside `setComp` or `PostConstruct` is the DOM might not\n // be ready, so we call it until eventually, it gets calculated.\n if (this.invisibleScrollbar === undefined) {\n this.initialiseInvisibleScrollbar();\n }\n this.setScrollVisible();\n this.setFakeHScrollSpacerWidths();\n };\n FakeHScrollCtrl.prototype.hideAndShowInvisibleScrollAsNeeded = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, function (params) {\n if (params.direction === 'horizontal') {\n _this.view.addOrRemoveCssClass('ag-scrollbar-scrolling', true);\n }\n });\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL_END, function () { return _this.view.addOrRemoveCssClass('ag-scrollbar-scrolling', false); });\n };\n FakeHScrollCtrl.prototype.setFakeHScrollSpacerWidths = function () {\n var vScrollShowing = this.scrollVisibleService.isVerticalScrollShowing();\n // we pad the right based on a) if cols are pinned to the right and\n // b) if v scroll is showing on the right (normal position of scroll)\n var rightSpacing = this.columnModel.getDisplayedColumnsRightWidth();\n var scrollOnRight = !this.enableRtl && vScrollShowing;\n var scrollbarWidth = this.gridOptionsWrapper.getScrollbarWidth();\n if (scrollOnRight) {\n rightSpacing += scrollbarWidth;\n }\n this.view.setRightSpacerFixedWidth(rightSpacing);\n this.view.includeRightSpacerScrollerCss('ag-scroller-corner', rightSpacing <= scrollbarWidth);\n // we pad the left based on a) if cols are pinned to the left and\n // b) if v scroll is showing on the left (happens in LTR layout only)\n var leftSpacing = this.columnModel.getDisplayedColumnsLeftWidth();\n var scrollOnLeft = this.enableRtl && vScrollShowing;\n if (scrollOnLeft) {\n leftSpacing += scrollbarWidth;\n }\n this.view.setLeftSpacerFixedWidth(leftSpacing);\n this.view.includeLeftSpacerScrollerCss('ag-scroller-corner', leftSpacing <= scrollbarWidth);\n };\n FakeHScrollCtrl.prototype.setScrollVisible = function () {\n var hScrollShowing = this.scrollVisibleService.isHorizontalScrollShowing();\n var invisibleScrollbar = this.invisibleScrollbar;\n var isSuppressHorizontalScroll = this.gridOptionsWrapper.isSuppressHorizontalScroll();\n var scrollbarWidth = hScrollShowing ? (this.gridOptionsWrapper.getScrollbarWidth() || 0) : 0;\n var adjustedScrollbarWidth = (scrollbarWidth === 0 && invisibleScrollbar) ? 15 : scrollbarWidth;\n var scrollContainerSize = !isSuppressHorizontalScroll ? adjustedScrollbarWidth : 0;\n this.view.addOrRemoveCssClass('ag-scrollbar-invisible', invisibleScrollbar);\n this.view.setHeight(scrollContainerSize);\n this.view.setViewportHeight(scrollContainerSize);\n this.view.setContainerHeight(scrollContainerSize);\n this.view.addOrRemoveCssClass('ag-hidden', !hScrollShowing);\n };\n FakeHScrollCtrl.prototype.getViewport = function () {\n return this.eViewport;\n };\n FakeHScrollCtrl.prototype.getContainer = function () {\n return this.eContainer;\n };\n __decorate$f([\n Autowired('scrollVisibleService')\n ], FakeHScrollCtrl.prototype, \"scrollVisibleService\", void 0);\n __decorate$f([\n Autowired('columnModel')\n ], FakeHScrollCtrl.prototype, \"columnModel\", void 0);\n __decorate$f([\n Autowired('ctrlsService')\n ], FakeHScrollCtrl.prototype, \"ctrlsService\", void 0);\n __decorate$f([\n Autowired('pinnedRowModel')\n ], FakeHScrollCtrl.prototype, \"pinnedRowModel\", void 0);\n return FakeHScrollCtrl;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$f = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FakeHScrollComp = /** @class */ (function (_super) {\n __extends$f(FakeHScrollComp, _super);\n function FakeHScrollComp() {\n return _super.call(this, FakeHScrollComp.TEMPLATE) || this;\n }\n FakeHScrollComp.prototype.postConstruct = function () {\n var _this = this;\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setHeight: function (height) { return setFixedHeight(_this.getGui(), height); },\n setBottom: function (bottom) { return _this.getGui().style.bottom = bottom + \"px\"; },\n setContainerHeight: function (height) { return setFixedHeight(_this.eContainer, height); },\n setViewportHeight: function (height) { return setFixedHeight(_this.eViewport, height); },\n setRightSpacerFixedWidth: function (width) { return setFixedWidth(_this.eRightSpacer, width); },\n setLeftSpacerFixedWidth: function (width) { return setFixedWidth(_this.eLeftSpacer, width); },\n includeLeftSpacerScrollerCss: function (cssClass, include) {\n return _this.eLeftSpacer.classList.toggle(cssClass, include);\n },\n includeRightSpacerScrollerCss: function (cssClass, include) {\n return _this.eRightSpacer.classList.toggle(cssClass, include);\n },\n };\n var ctrl = this.createManagedBean(new FakeHScrollCtrl());\n ctrl.setComp(compProxy, this.getGui(), this.eViewport, this.eContainer);\n this.createManagedBean(new CenterWidthFeature(function (width) { return _this.eContainer.style.width = width + \"px\"; }));\n };\n FakeHScrollComp.TEMPLATE = \"
\\n
\\n
\\n
\\n
\\n
\\n
\";\n __decorate$e([\n RefSelector('eLeftSpacer')\n ], FakeHScrollComp.prototype, \"eLeftSpacer\", void 0);\n __decorate$e([\n RefSelector('eRightSpacer')\n ], FakeHScrollComp.prototype, \"eRightSpacer\", void 0);\n __decorate$e([\n RefSelector('eViewport')\n ], FakeHScrollComp.prototype, \"eViewport\", void 0);\n __decorate$e([\n RefSelector('eContainer')\n ], FakeHScrollComp.prototype, \"eContainer\", void 0);\n __decorate$e([\n PostConstruct\n ], FakeHScrollComp.prototype, \"postConstruct\", null);\n return FakeHScrollComp;\n}(Component));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PinnedWidthService = /** @class */ (function (_super) {\n __extends$e(PinnedWidthService, _super);\n function PinnedWidthService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PinnedWidthService.prototype.postConstruct = function () {\n var listener = this.checkContainerWidths.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, listener);\n };\n PinnedWidthService.prototype.checkContainerWidths = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n var newLeftWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsLeftWidth();\n var newRightWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsRightWidth();\n if (newLeftWidth != this.leftWidth) {\n this.leftWidth = newLeftWidth;\n this.eventService.dispatchEvent({ type: Events.EVENT_LEFT_PINNED_WIDTH_CHANGED });\n }\n if (newRightWidth != this.rightWidth) {\n this.rightWidth = newRightWidth;\n this.eventService.dispatchEvent({ type: Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED });\n }\n };\n PinnedWidthService.prototype.getPinnedRightWidth = function () {\n return this.rightWidth;\n };\n PinnedWidthService.prototype.getPinnedLeftWidth = function () {\n return this.leftWidth;\n };\n __decorate$d([\n Autowired('columnModel')\n ], PinnedWidthService.prototype, \"columnModel\", void 0);\n __decorate$d([\n PostConstruct\n ], PinnedWidthService.prototype, \"postConstruct\", null);\n PinnedWidthService = __decorate$d([\n Bean('pinnedWidthService')\n ], PinnedWidthService);\n return PinnedWidthService;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __extends$d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowNodeEventThrottle = /** @class */ (function (_super) {\n __extends$d(RowNodeEventThrottle, _super);\n function RowNodeEventThrottle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.events = [];\n return _this;\n }\n RowNodeEventThrottle.prototype.postConstruct = function () {\n if (this.rowModel.getType() == Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n };\n // because the user can call rowNode.setExpanded() many times in one VM turn,\n // we throttle the calls to ClientSideRowModel using animationFrameService. this means for 100\n // row nodes getting expanded, we only update the CSRM once, and then we fire all events after\n // CSRM has updated.\n //\n // if we did not do this, then the user could call setExpanded on 100+ rows, causing the grid\n // to re-render 100+ times, which would be a performance lag.\n //\n // we use animationFrameService\n // rather than _.debounce() so this will get done if anyone flushes the animationFrameService\n // (eg user calls api.ensureRowVisible(), which in turn flushes ).\n RowNodeEventThrottle.prototype.dispatchExpanded = function (event) {\n var _this = this;\n // if not using CSRM, we don't debounce. otherwise this breaks the SSRM.\n if (this.clientSideRowModel == null) {\n this.eventService.dispatchEvent(event);\n return;\n }\n this.events.push(event);\n var func = function () {\n if (_this.clientSideRowModel) {\n _this.clientSideRowModel.onRowGroupOpened();\n }\n _this.events.forEach(function (e) { return _this.eventService.dispatchEvent(e); });\n _this.events = [];\n };\n if (this.dispatchExpandedDebounced == null) {\n this.dispatchExpandedDebounced = this.animationFrameService.debounce(func);\n }\n this.dispatchExpandedDebounced();\n };\n __decorate$c([\n Autowired('animationFrameService')\n ], RowNodeEventThrottle.prototype, \"animationFrameService\", void 0);\n __decorate$c([\n Autowired('rowModel')\n ], RowNodeEventThrottle.prototype, \"rowModel\", void 0);\n __decorate$c([\n PostConstruct\n ], RowNodeEventThrottle.prototype, \"postConstruct\", null);\n RowNodeEventThrottle = __decorate$c([\n Bean('rowNodeEventThrottle')\n ], RowNodeEventThrottle);\n return RowNodeEventThrottle;\n}(BeanStub));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar __read$2 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread$1 = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$2(arguments[i]));\n return ar;\n};\n// creates JavaScript vanilla Grid, including JavaScript (ag-stack) components, which can\n// be wrapped by the framework wrappers\nvar Grid = /** @class */ (function () {\n function Grid(eGridDiv, gridOptions, params) {\n if (!gridOptions) {\n console.error('AG Grid: no gridOptions provided to the grid');\n return;\n }\n this.gridOptions = gridOptions;\n new GridCoreCreator().create(eGridDiv, gridOptions, function (context) {\n var gridComp = new GridComp(eGridDiv);\n context.createBean(gridComp);\n }, undefined, params);\n }\n Grid.prototype.destroy = function () {\n if (this.gridOptions && this.gridOptions.api) {\n this.gridOptions.api.destroy();\n }\n };\n return Grid;\n}());\n// created services of grid only, no UI, so frameworks can use this if providing\n// their own UI\nvar GridCoreCreator = /** @class */ (function () {\n function GridCoreCreator() {\n }\n GridCoreCreator.prototype.create = function (eGridDiv, gridOptions, createUi, acceptChanges, params) {\n var _this = this;\n var debug = !!gridOptions.debug;\n var registeredModules = this.getRegisteredModules(params);\n var beanClasses = this.createBeansList(gridOptions.rowModelType, registeredModules);\n var providedBeanInstances = this.createProvidedBeans(eGridDiv, gridOptions, params);\n if (!beanClasses) {\n return;\n } // happens when no row model found\n var contextParams = {\n providedBeanInstances: providedBeanInstances,\n beanClasses: beanClasses,\n debug: debug\n };\n var logger = new Logger('AG Grid', function () { return gridOptions.debug; });\n var contextLogger = new Logger('Context', function () { return contextParams.debug; });\n var context = new Context(contextParams, contextLogger);\n var beans = context.getBean('beans');\n this.registerModuleUserComponents(beans, registeredModules);\n this.registerStackComponents(beans, registeredModules);\n this.registerControllers(beans, registeredModules);\n createUi(context);\n // we wait until the UI has finished initialising before setting in columns and rows\n beans.ctrlsService.whenReady(function () {\n _this.setColumnsAndData(beans);\n _this.dispatchGridReadyEvent(beans);\n var isEnterprise = ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);\n logger.log(\"initialised successfully, enterprise = \" + isEnterprise);\n });\n if (acceptChanges) {\n acceptChanges(context);\n }\n };\n GridCoreCreator.prototype.registerControllers = function (beans, registeredModules) {\n registeredModules.forEach(function (module) {\n if (module.controllers) {\n module.controllers.forEach(function (meta) { return beans.ctrlsFactory.register(meta); });\n }\n });\n };\n GridCoreCreator.prototype.registerStackComponents = function (beans, registeredModules) {\n var agStackComponents = this.createAgStackComponentsList(registeredModules);\n beans.agStackComponentsRegistry.setupComponents(agStackComponents);\n };\n GridCoreCreator.prototype.getRegisteredModules = function (params) {\n var passedViaConstructor = params ? params.modules : null;\n var registered = ModuleRegistry.getRegisteredModules();\n var allModules = [];\n var mapNames = {};\n // adds to list and removes duplicates\n function addModule(moduleBased, mod) {\n function addIndividualModule(currentModule) {\n if (!mapNames[currentModule.moduleName]) {\n mapNames[currentModule.moduleName] = true;\n allModules.push(currentModule);\n ModuleRegistry.register(currentModule, moduleBased);\n }\n }\n addIndividualModule(mod);\n if (mod.dependantModules) {\n mod.dependantModules.forEach(addModule.bind(null, moduleBased));\n }\n }\n if (passedViaConstructor) {\n passedViaConstructor.forEach(addModule.bind(null, true));\n }\n if (registered) {\n registered.forEach(addModule.bind(null, !ModuleRegistry.isPackageBased()));\n }\n return allModules;\n };\n GridCoreCreator.prototype.registerModuleUserComponents = function (beans, registeredModules) {\n var moduleUserComps = this.extractModuleEntity(registeredModules, function (module) { return module.userComponents ? module.userComponents : []; });\n moduleUserComps.forEach(function (compMeta) {\n beans.userComponentRegistry.registerDefaultComponent(compMeta.componentName, compMeta.componentClass);\n });\n };\n GridCoreCreator.prototype.createProvidedBeans = function (eGridDiv, gridOptions, params) {\n var frameworkOverrides = params ? params.frameworkOverrides : null;\n if (missing(frameworkOverrides)) {\n frameworkOverrides = new VanillaFrameworkOverrides();\n }\n var seed = {\n gridOptions: gridOptions,\n eGridDiv: eGridDiv,\n globalEventListener: params ? params.globalEventListener : null,\n frameworkOverrides: frameworkOverrides\n };\n if (params && params.providedBeanInstances) {\n Object.assign(seed, params.providedBeanInstances);\n }\n return seed;\n };\n GridCoreCreator.prototype.createAgStackComponentsList = function (registeredModules) {\n var components = [\n { componentName: 'AgCheckbox', componentClass: AgCheckbox },\n { componentName: 'AgRadioButton', componentClass: AgRadioButton },\n { componentName: 'AgToggleButton', componentClass: AgToggleButton },\n { componentName: 'AgInputTextField', componentClass: AgInputTextField },\n { componentName: 'AgInputTextArea', componentClass: AgInputTextArea },\n { componentName: 'AgInputNumberField', componentClass: AgInputNumberField },\n { componentName: 'AgInputRange', componentClass: AgInputRange },\n { componentName: 'AgSelect', componentClass: AgSelect },\n { componentName: 'AgSlider', componentClass: AgSlider },\n { componentName: 'AgAngleSelect', componentClass: AgAngleSelect },\n { componentName: 'AgColorPicker', componentClass: AgColorPicker },\n { componentName: 'AgGridBody', componentClass: GridBodyComp },\n { componentName: 'AgHeaderRoot', componentClass: GridHeaderComp },\n { componentName: 'AgSortIndicator', componentClass: SortIndicatorComp },\n { componentName: 'AgPagination', componentClass: PaginationComp },\n { componentName: 'AgOverlayWrapper', componentClass: OverlayWrapperComponent },\n { componentName: 'AgGroupComponent', componentClass: AgGroupComponent },\n { componentName: 'AgPanel', componentClass: AgPanel },\n { componentName: 'AgDialog', componentClass: AgDialog },\n { componentName: 'AgRowContainer', componentClass: RowContainerComp },\n { componentName: 'AgFakeHorizontalScroll', componentClass: FakeHScrollComp }\n ];\n var moduleAgStackComps = this.extractModuleEntity(registeredModules, function (module) { return module.agStackComponents ? module.agStackComponents : []; });\n components = components.concat(moduleAgStackComps);\n return components;\n };\n GridCoreCreator.prototype.createBeansList = function (rowModelType, registeredModules) {\n var rowModelClass = this.getRowModelClass(rowModelType, registeredModules);\n if (!rowModelClass) {\n return;\n }\n // beans should only contain SERVICES, it should NEVER contain COMPONENTS\n var beans = [\n rowModelClass, Beans, RowPositionUtils, CellPositionUtils, HeaderPositionUtils,\n PaginationAutoPageSizeService, GridApi, UserComponentRegistry, AgComponentUtils,\n ComponentMetadataProvider, ResizeObserverService, UserComponentFactory,\n RowContainerHeightService, HorizontalResizeService,\n PinnedRowModel, DragService, DisplayedGroupCreator, EventService, GridOptionsWrapper,\n PopupService, SelectionService, FilterManager, ColumnModel, HeaderNavigationService,\n PaginationProxy, RowRenderer, ExpressionService, ColumnFactory, TemplateService,\n AlignedGridsService, NavigationService, ValueCache, ValueService, LoggerFactory,\n ColumnUtils, AutoWidthCalculator, StandardMenuFactory, DragAndDropService, ColumnApi,\n FocusService, MouseEventService, Environment, CellNavigationService, ValueFormatterService,\n StylingService, ScrollVisibleService, SortController, ColumnHoverService, ColumnAnimationService,\n SelectableService, AutoGroupColService, ChangeDetectionService, AnimationFrameService,\n UndoRedoService, AgStackComponentsRegistry, ColumnDefFactory,\n RowCssClassCalculator, RowNodeBlockLoader, RowNodeSorter, CtrlsService,\n PinnedWidthService, RowNodeEventThrottle, CtrlsFactory\n ];\n var moduleBeans = this.extractModuleEntity(registeredModules, function (module) { return module.beans ? module.beans : []; });\n beans.push.apply(beans, __spread$1(moduleBeans));\n // check for duplicates, as different modules could include the same beans that\n // they depend on, eg ClientSideRowModel in enterprise, and ClientSideRowModel in community\n var beansNoDuplicates = [];\n beans.forEach(function (bean) {\n if (beansNoDuplicates.indexOf(bean) < 0) {\n beansNoDuplicates.push(bean);\n }\n });\n return beansNoDuplicates;\n };\n GridCoreCreator.prototype.extractModuleEntity = function (moduleEntities, extractor) {\n return [].concat.apply([], __spread$1(moduleEntities.map(extractor)));\n };\n GridCoreCreator.prototype.setColumnsAndData = function (beans) {\n var columnDefs = beans.gridOptionsWrapper.getColumnDefs();\n beans.columnModel.setColumnDefs(columnDefs || [], \"gridInitializing\");\n beans.rowModel.start();\n };\n GridCoreCreator.prototype.dispatchGridReadyEvent = function (beans) {\n var readyEvent = {\n type: Events.EVENT_GRID_READY,\n };\n beans.eventService.dispatchEvent(readyEvent);\n };\n GridCoreCreator.prototype.getRowModelClass = function (rowModelType, registeredModules) {\n // default to client side\n if (!rowModelType) {\n rowModelType = Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n }\n var rowModelClasses = {};\n registeredModules.forEach(function (module) {\n iterateObject(module.rowModels, function (key, value) {\n rowModelClasses[key] = value;\n });\n });\n var rowModelClass = rowModelClasses[rowModelType];\n if (exists(rowModelClass)) {\n return rowModelClass;\n }\n if (ModuleRegistry.isPackageBased()) {\n if ([Constants.ROW_MODEL_TYPE_VIEWPORT, Constants.ROW_MODEL_TYPE_SERVER_SIDE].includes(rowModelType)) {\n // If package based only the enterprise row models could be missing.\n console.error(\"AG Grid: Row Model \\\"\" + rowModelType + \"\\\" not found. Please ensure the package 'ag-grid-enterprise' is imported. Please see: https://www.ag-grid.com/javascript-grid/packages/\");\n }\n else {\n console.error('AG Grid: could not find row model for rowModelType ' + rowModelType);\n }\n }\n else {\n if (rowModelType === Constants.ROW_MODEL_TYPE_INFINITE) {\n console.error(\"AG Grid: Row Model \\\"Infinite\\\" not found. Please ensure the \" + ModuleNames.InfiniteRowModelModule + \" module is registered. Please see: https://www.ag-grid.com/javascript-grid/modules/\");\n }\n else if (rowModelType === Constants.ROW_MODEL_TYPE_VIEWPORT) {\n console.error(\"AG Grid: Row Model \\\"Viewport\\\" not found. Please ensure the AG Grid Enterprise Module \" + ModuleNames.ViewportRowModelModule + \" module is registered. Please see: https://www.ag-grid.com/javascript-grid/modules/\");\n }\n else if (rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE) {\n console.error(\"AG Grid: Row Model \\\"Server Side\\\" not found. Please ensure the AG Grid Enterprise Module \" + ModuleNames.ServerSideRowModelModule + \" module is registered. Please see: https://www.ag-grid.com/javascript-grid/modules/\");\n }\n else if (rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n console.error(\"AG Grid: Row Model \\\"Client Side\\\" not found. Please ensure the \" + ModuleNames.ClientSideRowModelModule + \" module is registered. Please see: https://www.ag-grid.com/javascript-grid/modules/\");\n }\n else {\n console.error('AG Grid: could not find row model for rowModelType ' + rowModelType);\n }\n }\n };\n return GridCoreCreator;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nfunction defaultGroupComparator(valueA, valueB, nodeA, nodeB, accentedCompare) {\n if (accentedCompare === void 0) { accentedCompare = false; }\n console.warn('AG Grid: Since ag-grid 11.0.0 defaultGroupComparator is not necessary. You can remove this from your colDef');\n var nodeAIsGroup = exists(nodeA) && nodeA.group;\n var nodeBIsGroup = exists(nodeB) && nodeB.group;\n var bothAreGroups = nodeAIsGroup && nodeBIsGroup;\n var bothAreNormal = !nodeAIsGroup && !nodeBIsGroup;\n if (bothAreGroups) {\n return defaultComparator(nodeA.key, nodeB.key, accentedCompare);\n }\n if (bothAreNormal) {\n return defaultComparator(valueA, valueB, accentedCompare);\n }\n if (nodeAIsGroup) {\n return 1;\n }\n return -1;\n}\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar BaseComponentWrapper = /** @class */ (function () {\n function BaseComponentWrapper() {\n }\n BaseComponentWrapper.prototype.wrap = function (OriginalConstructor, mandatoryMethodList, optionalMethodList, componentType) {\n var _this = this;\n if (optionalMethodList === void 0) { optionalMethodList = []; }\n var wrapper = this.createWrapper(OriginalConstructor, componentType);\n mandatoryMethodList.forEach((function (methodName) {\n _this.createMethod(wrapper, methodName, true);\n }));\n optionalMethodList.forEach((function (methodName) {\n _this.createMethod(wrapper, methodName, false);\n }));\n return wrapper;\n };\n BaseComponentWrapper.prototype.unwrap = function (comp) {\n return comp;\n };\n BaseComponentWrapper.prototype.createMethod = function (wrapper, methodName, mandatory) {\n wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));\n };\n BaseComponentWrapper.prototype.createMethodProxy = function (wrapper, methodName, mandatory) {\n return function () {\n if (wrapper.hasMethod(methodName)) {\n return wrapper.callMethod(methodName, arguments);\n }\n if (mandatory) {\n console.warn('AG Grid: Framework component is missing the method ' + methodName + '()');\n }\n return null;\n };\n };\n return BaseComponentWrapper;\n}());\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar DEFAULT_CHART_GROUPS = {\n columnGroup: [\n 'column',\n 'stackedColumn',\n 'normalizedColumn'\n ],\n barGroup: [\n 'bar',\n 'stackedBar',\n 'normalizedBar'\n ],\n pieGroup: [\n 'pie',\n 'doughnut'\n ],\n lineGroup: [\n 'line'\n ],\n scatterGroup: [\n 'scatter',\n 'bubble'\n ],\n areaGroup: [\n 'area',\n 'stackedArea',\n 'normalizedArea'\n ],\n histogramGroup: [\n 'histogram'\n ],\n combinationGroup: [\n 'columnLineCombo',\n 'areaColumnCombo',\n 'customCombo'\n ]\n};\nvar CHART_TOOL_PANEL_ALLOW_LIST = [\n 'chartSettings',\n 'chartData',\n 'chartFormat'\n];\nvar CHART_TOOLBAR_ALLOW_LIST = [\n 'chartUnlink',\n 'chartLink',\n 'chartDownload'\n];\nvar CHART_TOOL_PANEL_MENU_OPTIONS = {\n settings: \"chartSettings\",\n data: \"chartData\",\n format: \"chartFormat\"\n};\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar BarColumnLabelPlacement;\n(function (BarColumnLabelPlacement) {\n BarColumnLabelPlacement[\"InsideBase\"] = \"insideBase\";\n BarColumnLabelPlacement[\"InsideEnd\"] = \"insideEnd\";\n BarColumnLabelPlacement[\"Center\"] = \"center\";\n BarColumnLabelPlacement[\"OutsideEnd\"] = \"outsideEnd\";\n})(BarColumnLabelPlacement || (BarColumnLabelPlacement = {}));\n\n/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v28.2.1\n * @link https://www.ag-grid.com/\n * @license MIT\n */\nvar globalObj = typeof global === 'undefined' ? {} : global;\nglobalObj.HTMLElement = typeof HTMLElement === 'undefined' ? {} : HTMLElement;\nglobalObj.HTMLButtonElement = typeof HTMLButtonElement === 'undefined' ? {} : HTMLButtonElement;\nglobalObj.HTMLSelectElement = typeof HTMLSelectElement === 'undefined' ? {} : HTMLSelectElement;\nglobalObj.HTMLInputElement = typeof HTMLInputElement === 'undefined' ? {} : HTMLInputElement;\nglobalObj.Node = typeof Node === 'undefined' ? {} : Node;\nglobalObj.MouseEvent = typeof MouseEvent === 'undefined' ? {} : MouseEvent;\n\nvar __read$1 = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (undefined && undefined.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read$1(arguments[i]));\n return ar;\n};\nvar ClientSideNodeManager = /** @class */ (function () {\n function ClientSideNodeManager(rootNode, gridOptionsWrapper, eventService, columnModel, selectionService, beans) {\n this.nextId = 0;\n // when user is provide the id's, we also keep a map of ids to row nodes for convenience\n this.allNodesMap = {};\n this.rootNode = rootNode;\n this.gridOptionsWrapper = gridOptionsWrapper;\n this.eventService = eventService;\n this.columnModel = columnModel;\n this.beans = beans;\n this.selectionService = selectionService;\n this.rootNode.group = true;\n this.rootNode.level = -1;\n this.rootNode.id = ClientSideNodeManager.ROOT_NODE_ID;\n this.rootNode.allLeafChildren = [];\n this.rootNode.childrenAfterGroup = [];\n this.rootNode.childrenAfterSort = [];\n this.rootNode.childrenAfterAggFilter = [];\n this.rootNode.childrenAfterFilter = [];\n // if we make this class a bean, then can annotate postConstruct\n this.postConstruct();\n }\n // @PostConstruct - this is not a bean, so postConstruct called by constructor\n ClientSideNodeManager.prototype.postConstruct = function () {\n // func below doesn't have 'this' pointer, so need to pull out these bits\n this.suppressParentsInRowNodes = this.gridOptionsWrapper.isSuppressParentsInRowNodes();\n this.isRowMasterFunc = this.gridOptionsWrapper.getIsRowMasterFunc();\n this.doingTreeData = this.gridOptionsWrapper.isTreeData();\n this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n };\n ClientSideNodeManager.prototype.getCopyOfNodesMap = function () {\n return _.cloneObject(this.allNodesMap);\n };\n ClientSideNodeManager.prototype.getRowNode = function (id) {\n return this.allNodesMap[id];\n };\n ClientSideNodeManager.prototype.setRowData = function (rowData) {\n var _this = this;\n if (typeof rowData === 'string') {\n console.warn('AG Grid: rowData must be an array, however you passed in a string. If you are loading JSON, make sure you convert the JSON string to JavaScript objects first');\n return;\n }\n var rootNode = this.rootNode;\n var sibling = this.rootNode.sibling;\n rootNode.childrenAfterFilter = null;\n rootNode.childrenAfterGroup = null;\n rootNode.childrenAfterAggFilter = null;\n rootNode.childrenAfterSort = null;\n rootNode.childrenMapped = null;\n rootNode.updateHasChildren();\n this.nextId = 0;\n this.allNodesMap = {};\n if (rowData) {\n // we use rootNode as the parent, however if using ag-grid-enterprise, the grouping stage\n // sets the parent node on each row (even if we are not grouping). so setting parent node\n // here is for benefit of ag-grid-community users\n rootNode.allLeafChildren = rowData.map(function (dataItem) { return _this.createNode(dataItem, _this.rootNode, ClientSideNodeManager.TOP_LEVEL); });\n }\n else {\n rootNode.allLeafChildren = [];\n rootNode.childrenAfterGroup = [];\n }\n if (sibling) {\n sibling.childrenAfterFilter = rootNode.childrenAfterFilter;\n sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n sibling.childrenAfterAggFilter = rootNode.childrenAfterAggFilter;\n sibling.childrenAfterSort = rootNode.childrenAfterSort;\n sibling.childrenMapped = rootNode.childrenMapped;\n sibling.allLeafChildren = rootNode.allLeafChildren;\n }\n };\n ClientSideNodeManager.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n var rowNodeTransaction = {\n remove: [],\n update: [],\n add: []\n };\n var nodesToUnselect = [];\n this.executeRemove(rowDataTran, rowNodeTransaction, nodesToUnselect);\n this.executeUpdate(rowDataTran, rowNodeTransaction, nodesToUnselect);\n this.executeAdd(rowDataTran, rowNodeTransaction);\n this.updateSelection(nodesToUnselect);\n if (rowNodeOrder) {\n _.sortRowNodesByOrder(this.rootNode.allLeafChildren, rowNodeOrder);\n }\n return rowNodeTransaction;\n };\n ClientSideNodeManager.prototype.updateSelection = function (nodesToUnselect) {\n var selectionChanged = nodesToUnselect.length > 0;\n if (selectionChanged) {\n nodesToUnselect.forEach(function (rowNode) {\n rowNode.setSelected(false, false, true);\n });\n }\n // we do this regardless of nodes to unselect or not, as it's possible\n // a new node was inserted, so a parent that was previously selected (as all\n // children were selected) should not be tri-state (as new one unselected against\n // all other selected children).\n this.selectionService.updateGroupsFromChildrenSelections();\n if (selectionChanged) {\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n ClientSideNodeManager.prototype.executeAdd = function (rowDataTran, rowNodeTransaction) {\n var _this = this;\n var add = rowDataTran.add, addIndex = rowDataTran.addIndex;\n if (_.missingOrEmpty(add)) {\n return;\n }\n // create new row nodes for each data item\n var newNodes = add.map(function (item) { return _this.createNode(item, _this.rootNode, ClientSideNodeManager.TOP_LEVEL); });\n // add new row nodes to the root nodes 'allLeafChildren'\n var useIndex = typeof addIndex === 'number' && addIndex >= 0;\n var nodesBeforeIndex;\n var nodesAfterIndex;\n if (useIndex) {\n // new rows are inserted in one go by concatenating them in between the existing rows at the desired index.\n // this is much faster than splicing them individually into 'allLeafChildren' when there are large inserts.\n // allLeafChildren can be out of order, so we loop over all the Nodes to find the correct index that\n // represents the position `addIndex` intended to be.\n var allLeafChildren_1 = this.rootNode.allLeafChildren;\n // if addIndex is 0, it should always be added at the start of the array\n // there is no need to verify the order of node by nodeIndex.\n var normalizedAddIndex = addIndex === 0 ? 0 : (allLeafChildren_1.reduce(function (prevIdx, currNode, currIdx) {\n var _a;\n var rowIndex = currNode.rowIndex;\n var prevValueAtIndex = (_a = allLeafChildren_1[prevIdx]) === null || _a === void 0 ? void 0 : _a.rowIndex;\n var shouldUpdateIndex = rowIndex != null && prevValueAtIndex != null && rowIndex < addIndex && rowIndex > prevValueAtIndex;\n return shouldUpdateIndex ? currIdx : prevIdx;\n }, 0) + 1);\n nodesBeforeIndex = allLeafChildren_1.slice(0, normalizedAddIndex);\n nodesAfterIndex = allLeafChildren_1.slice(normalizedAddIndex, allLeafChildren_1.length);\n }\n else {\n nodesBeforeIndex = this.rootNode.allLeafChildren;\n nodesAfterIndex = [];\n }\n this.rootNode.allLeafChildren = __spread(nodesBeforeIndex, newNodes, nodesAfterIndex);\n if (this.rootNode.sibling) {\n this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;\n }\n // add new row nodes to the transaction add items\n rowNodeTransaction.add = newNodes;\n };\n ClientSideNodeManager.prototype.executeRemove = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n var _this = this;\n var remove = rowDataTran.remove;\n if (_.missingOrEmpty(remove)) {\n return;\n }\n var rowIdsRemoved = {};\n remove.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n // do delete - setting 'suppressFinishActions = true' to ensure EVENT_SELECTION_CHANGED is not raised for\n // each row node updated, instead it is raised once by the calling code if any selected nodes exist.\n if (rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n // so row renderer knows to fade row out (and not reposition it)\n rowNode.clearRowTopAndRowIndex();\n // NOTE: were we could remove from allLeaveChildren, however _.removeFromArray() is expensive, especially\n // if called multiple times (eg deleting lots of rows) and if allLeafChildren is a large list\n rowIdsRemoved[rowNode.id] = true;\n // _.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n delete _this.allNodesMap[rowNode.id];\n rowNodeTransaction.remove.push(rowNode);\n });\n this.rootNode.allLeafChildren = this.rootNode.allLeafChildren.filter(function (rowNode) { return !rowIdsRemoved[rowNode.id]; });\n if (this.rootNode.sibling) {\n this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;\n }\n };\n ClientSideNodeManager.prototype.executeUpdate = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n var _this = this;\n var update = rowDataTran.update;\n if (_.missingOrEmpty(update)) {\n return;\n }\n update.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n rowNode.updateData(item);\n if (!rowNode.selectable && rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n _this.setMasterForRow(rowNode, item, ClientSideNodeManager.TOP_LEVEL, false);\n rowNodeTransaction.update.push(rowNode);\n });\n };\n ClientSideNodeManager.prototype.lookupRowNode = function (data) {\n var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();\n var rowNode;\n if (getRowIdFunc) {\n // find rowNode using id\n var id = getRowIdFunc({ data: data, level: 0 });\n rowNode = this.allNodesMap[id];\n if (!rowNode) {\n console.error(\"AG Grid: could not find row id=\" + id + \", data item was not found for this id\");\n return null;\n }\n }\n else {\n // find rowNode using object references\n rowNode = this.rootNode.allLeafChildren.find(function (node) { return node.data === data; });\n if (!rowNode) {\n console.error(\"AG Grid: could not find data item as object was not found\", data);\n console.error(\"Consider using getRowId to help the Grid find matching row data\");\n return null;\n }\n }\n return rowNode || null;\n };\n ClientSideNodeManager.prototype.createNode = function (dataItem, parent, level) {\n var node = new RowNode(this.beans);\n node.group = false;\n this.setMasterForRow(node, dataItem, level, true);\n if (parent && !this.suppressParentsInRowNodes) {\n node.parent = parent;\n }\n node.level = level;\n node.setDataAndId(dataItem, this.nextId.toString());\n if (this.allNodesMap[node.id]) {\n console.warn(\"AG Grid: duplicate node id '\" + node.id + \"' detected from getRowId callback, this could cause issues in your grid.\");\n }\n this.allNodesMap[node.id] = node;\n this.nextId++;\n return node;\n };\n ClientSideNodeManager.prototype.setMasterForRow = function (rowNode, data, level, setExpanded) {\n if (this.doingTreeData) {\n rowNode.setMaster(false);\n if (setExpanded) {\n rowNode.expanded = false;\n }\n }\n else {\n // this is the default, for when doing grid data\n if (this.doingMasterDetail) {\n // if we are doing master detail, then the\n // default is that everything can be a Master Row.\n if (this.isRowMasterFunc) {\n rowNode.setMaster(this.isRowMasterFunc(data));\n }\n else {\n rowNode.setMaster(true);\n }\n }\n else {\n rowNode.setMaster(false);\n }\n if (setExpanded) {\n var rowGroupColumns = this.columnModel.getRowGroupColumns();\n var numRowGroupColumns = rowGroupColumns ? rowGroupColumns.length : 0;\n // need to take row group into account when determining level\n var masterRowLevel = level + numRowGroupColumns;\n rowNode.expanded = rowNode.master ? this.isExpanded(masterRowLevel) : false;\n }\n }\n };\n ClientSideNodeManager.prototype.isExpanded = function (level) {\n var expandByDefault = this.gridOptionsWrapper.getGroupDefaultExpanded();\n if (expandByDefault === -1) {\n return true;\n }\n return level < expandByDefault;\n };\n ClientSideNodeManager.TOP_LEVEL = 0;\n ClientSideNodeManager.ROOT_NODE_ID = 'ROOT_NODE_ID';\n return ClientSideNodeManager;\n}());\n\nvar __extends$c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RecursionType;\n(function (RecursionType) {\n RecursionType[RecursionType[\"Normal\"] = 0] = \"Normal\";\n RecursionType[RecursionType[\"AfterFilter\"] = 1] = \"AfterFilter\";\n RecursionType[RecursionType[\"AfterFilterAndSort\"] = 2] = \"AfterFilterAndSort\";\n RecursionType[RecursionType[\"PivotNodes\"] = 3] = \"PivotNodes\";\n})(RecursionType || (RecursionType = {}));\nvar ClientSideRowModel = /** @class */ (function (_super) {\n __extends$c(ClientSideRowModel, _super);\n function ClientSideRowModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onRowHeightChanged_debounced = _.debounce(_this.onRowHeightChanged.bind(_this), 100);\n _this.rowsToDisplay = []; // the rows mapped to rows to display\n return _this;\n }\n ClientSideRowModel.prototype.init = function () {\n var refreshEverythingFunc = this.refreshModel.bind(this, { step: ClientSideRowModelSteps.EVERYTHING });\n var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n var refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, {\n step: ClientSideRowModelSteps.EVERYTHING,\n afterColumnsChanged: true,\n keepRenderedRows: true,\n animate: animate\n });\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refreshEverythingAfterColsChangedFunc);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, refreshEverythingFunc);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.refreshModel.bind(this, { step: ClientSideRowModelSteps.PIVOT }));\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, refreshEverythingFunc);\n var refreshMapListener = this.refreshModel.bind(this, {\n step: ClientSideRowModelSteps.MAP,\n keepRenderedRows: true,\n animate: animate\n });\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, refreshMapListener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, refreshMapListener);\n this.rootNode = new RowNode(this.beans);\n this.nodeManager = new ClientSideNodeManager(this.rootNode, this.gridOptionsWrapper, this.eventService, this.columnModel, this.selectionService, this.beans);\n };\n ClientSideRowModel.prototype.start = function () {\n var rowData = this.gridOptionsWrapper.getRowData();\n if (rowData) {\n this.setRowData(rowData);\n }\n };\n ClientSideRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var atLeastOneChange;\n var res = false;\n // we do this multiple times as changing the row heights can also change the first and last rows,\n // so the first pass can make lots of rows smaller, which means the second pass we end up changing\n // more rows.\n do {\n atLeastOneChange = false;\n var rowAtStartPixel = this.getRowIndexAtPixel(startPixel);\n var rowAtEndPixel = this.getRowIndexAtPixel(endPixel);\n // keep check to current page if doing pagination\n var firstRow = Math.max(rowAtStartPixel, startLimitIndex);\n var lastRow = Math.min(rowAtEndPixel, endLimitIndex);\n for (var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {\n var rowNode = this.getRow(rowIndex);\n if (rowNode.rowHeightEstimated) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode);\n rowNode.setRowHeight(rowHeight.height);\n atLeastOneChange = true;\n res = true;\n }\n }\n if (atLeastOneChange) {\n this.setRowTopAndRowIndex();\n }\n } while (atLeastOneChange);\n return res;\n };\n ClientSideRowModel.prototype.setRowTopAndRowIndex = function () {\n var defaultRowHeight = this.gridOptionsWrapper.getDefaultRowHeight();\n var nextRowTop = 0;\n // mapping displayed rows is not needed for this method, however it's used in\n // clearRowTopAndRowIndex(), and given we are looping through this.rowsToDisplay here,\n // we create the map here for performance reasons, so we don't loop a second time\n // in clearRowTopAndRowIndex()\n var displayedRowsMapped = new Set();\n // we don't estimate if doing fullHeight or autoHeight, as all rows get rendered all the time\n // with these two layouts.\n var allowEstimate = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_NORMAL;\n for (var i = 0; i < this.rowsToDisplay.length; i++) {\n var rowNode = this.rowsToDisplay[i];\n if (rowNode.id != null) {\n displayedRowsMapped.add(rowNode.id);\n }\n if (rowNode.rowHeight == null) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode, allowEstimate, defaultRowHeight);\n rowNode.setRowHeight(rowHeight.height, rowHeight.estimated);\n }\n rowNode.setRowTop(nextRowTop);\n rowNode.setRowIndex(i);\n nextRowTop += rowNode.rowHeight;\n }\n return displayedRowsMapped;\n };\n ClientSideRowModel.prototype.clearRowTopAndRowIndex = function (changedPath, displayedRowsMapped) {\n var changedPathActive = changedPath.isActive();\n var clearIfNotDisplayed = function (rowNode) {\n if (rowNode && rowNode.id != null && !displayedRowsMapped.has(rowNode.id)) {\n rowNode.clearRowTopAndRowIndex();\n }\n };\n var recurse = function (rowNode) {\n clearIfNotDisplayed(rowNode);\n clearIfNotDisplayed(rowNode.detailNode);\n clearIfNotDisplayed(rowNode.sibling);\n if (rowNode.hasChildren()) {\n if (rowNode.childrenAfterGroup) {\n // if a changedPath is active, it means we are here because of a transaction update or\n // a change detection. neither of these impacts the open/closed state of groups. so if\n // a group is not open this time, it was not open last time. so we know all closed groups\n // already have their top positions cleared. so there is no need to traverse all the way\n // when changedPath is active and the rowNode is not expanded.\n var isRootNode = rowNode.level == -1; // we need to give special consideration for root node,\n // as expanded=undefined for root node\n var skipChildren = changedPathActive && !isRootNode && !rowNode.expanded;\n if (!skipChildren) {\n rowNode.childrenAfterGroup.forEach(recurse);\n }\n }\n }\n };\n recurse(this.rootNode);\n };\n // returns false if row was moved, otherwise true\n ClientSideRowModel.prototype.ensureRowsAtPixel = function (rowNodes, pixel, increment) {\n var _this = this;\n if (increment === void 0) { increment = 0; }\n var indexAtPixelNow = this.getRowIndexAtPixel(pixel);\n var rowNodeAtPixelNow = this.getRow(indexAtPixelNow);\n var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n if (rowNodeAtPixelNow === rowNodes[0]) {\n return false;\n }\n rowNodes.forEach(function (rowNode) {\n _.removeFromArray(_this.rootNode.allLeafChildren, rowNode);\n });\n rowNodes.forEach(function (rowNode, idx) {\n _.insertIntoArray(_this.rootNode.allLeafChildren, rowNode, Math.max(indexAtPixelNow + increment, 0) + idx);\n });\n this.refreshModel({\n step: ClientSideRowModelSteps.EVERYTHING,\n keepRenderedRows: true,\n keepEditingRows: true,\n animate: animate\n });\n return true;\n };\n ClientSideRowModel.prototype.highlightRowAtPixel = function (rowNode, pixel) {\n var indexAtPixelNow = pixel != null ? this.getRowIndexAtPixel(pixel) : null;\n var rowNodeAtPixelNow = indexAtPixelNow != null ? this.getRow(indexAtPixelNow) : null;\n if (!rowNodeAtPixelNow || !rowNode || rowNodeAtPixelNow === rowNode || pixel == null) {\n if (this.lastHighlightedRow) {\n this.lastHighlightedRow.setHighlighted(null);\n this.lastHighlightedRow = null;\n }\n return;\n }\n var highlight = this.getHighlightPosition(pixel, rowNodeAtPixelNow);\n if (this.lastHighlightedRow && this.lastHighlightedRow !== rowNodeAtPixelNow) {\n this.lastHighlightedRow.setHighlighted(null);\n this.lastHighlightedRow = null;\n }\n rowNodeAtPixelNow.setHighlighted(highlight);\n this.lastHighlightedRow = rowNodeAtPixelNow;\n };\n ClientSideRowModel.prototype.getHighlightPosition = function (pixel, rowNode) {\n if (!rowNode) {\n var index = this.getRowIndexAtPixel(pixel);\n rowNode = this.getRow(index || 0);\n if (!rowNode) {\n return RowHighlightPosition.Below;\n }\n }\n var rowTop = rowNode.rowTop, rowHeight = rowNode.rowHeight;\n return pixel - rowTop < rowHeight / 2 ? RowHighlightPosition.Above : RowHighlightPosition.Below;\n };\n ClientSideRowModel.prototype.getLastHighlightedRowNode = function () {\n return this.lastHighlightedRow;\n };\n ClientSideRowModel.prototype.isLastRowIndexKnown = function () {\n return true;\n };\n ClientSideRowModel.prototype.getRowCount = function () {\n if (this.rowsToDisplay) {\n return this.rowsToDisplay.length;\n }\n return 0;\n };\n ClientSideRowModel.prototype.getTopLevelRowCount = function () {\n var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n if (showingRootNode) {\n return 1;\n }\n var filteredChildren = this.rootNode.childrenAfterAggFilter;\n return filteredChildren ? filteredChildren.length : 0;\n };\n ClientSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n if (showingRootNode) {\n return topLevelIndex;\n }\n var rowNode = this.rootNode.childrenAfterSort[topLevelIndex];\n if (this.gridOptionsWrapper.isGroupHideOpenParents()) {\n // if hideOpenParents, and this row open, then this row is now displayed at this index, first child is\n while (rowNode.expanded && rowNode.childrenAfterSort && rowNode.childrenAfterSort.length > 0) {\n rowNode = rowNode.childrenAfterSort[0];\n }\n }\n return rowNode.rowIndex;\n };\n ClientSideRowModel.prototype.getRowBounds = function (index) {\n if (_.missing(this.rowsToDisplay)) {\n return null;\n }\n var rowNode = this.rowsToDisplay[index];\n if (rowNode) {\n return {\n rowTop: rowNode.rowTop,\n rowHeight: rowNode.rowHeight\n };\n }\n return null;\n };\n ClientSideRowModel.prototype.onRowGroupOpened = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: ClientSideRowModelSteps.MAP, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onFilterChanged = function (event) {\n if (event.afterDataChange) {\n return;\n }\n var animate = this.gridOptionsWrapper.isAnimateRows();\n var primaryOrQuickFilterChanged = event.columns.length === 0 || event.columns.some(function (col) { return col.isPrimary(); });\n var step = primaryOrQuickFilterChanged ? ClientSideRowModelSteps.FILTER : ClientSideRowModelSteps.FILTER_AGGREGATES;\n this.refreshModel({ step: step, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onSortChanged = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: ClientSideRowModelSteps.SORT, keepRenderedRows: true, animate: animate, keepEditingRows: true });\n };\n ClientSideRowModel.prototype.getType = function () {\n return Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n };\n ClientSideRowModel.prototype.onValueChanged = function () {\n if (this.columnModel.isPivotActive()) {\n this.refreshModel({ step: ClientSideRowModelSteps.PIVOT });\n }\n else {\n this.refreshModel({ step: ClientSideRowModelSteps.AGGREGATE });\n }\n };\n ClientSideRowModel.prototype.createChangePath = function (rowNodeTransactions) {\n // for updates, if the row is updated at all, then we re-calc all the values\n // in that row. we could compare each value to each old value, however if we\n // did this, we would be calling the valueService twice, once on the old value\n // and once on the new value. so it's less valueGetter calls if we just assume\n // each column is different. that way the changedPath is used so that only\n // the impacted parent rows are recalculated, parents who's children have\n // not changed are not impacted.\n var noTransactions = _.missingOrEmpty(rowNodeTransactions);\n var changedPath = new ChangedPath(false, this.rootNode);\n if (noTransactions || this.gridOptionsWrapper.isTreeData()) {\n changedPath.setInactive();\n }\n return changedPath;\n };\n ClientSideRowModel.prototype.isSuppressModelUpdateAfterUpdateTransaction = function (params) {\n if (!this.gridOptionsWrapper.isSuppressModelUpdateAfterUpdateTransaction()) {\n return false;\n }\n // return true if we are only doing update transactions\n if (params.rowNodeTransactions == null) {\n return false;\n }\n var transWithAddsOrDeletes = params.rowNodeTransactions.filter(function (tx) {\n return (tx.add != null && tx.add.length > 0) || (tx.remove != null && tx.remove.length > 0);\n });\n var transactionsContainUpdatesOnly = transWithAddsOrDeletes == null || transWithAddsOrDeletes.length == 0;\n return transactionsContainUpdatesOnly;\n };\n ClientSideRowModel.prototype.refreshModel = function (params) {\n if (this.isSuppressModelUpdateAfterUpdateTransaction(params)) {\n return;\n }\n // this goes through the pipeline of stages. what's in my head is similar\n // to the diagram on this page:\n // http://commons.apache.org/sandbox/commons-pipeline/pipeline_basics.html\n // however we want to keep the results of each stage, hence we manually call\n // each step rather than have them chain each other.\n // fallthrough in below switch is on purpose,\n // eg if STEP_FILTER, then all steps below this\n // step get done\n // let start: number;\n // console.log('======= start =======');\n var changedPath = this.createChangePath(params.rowNodeTransactions);\n switch (params.step) {\n case ClientSideRowModelSteps.EVERYTHING:\n this.doRowGrouping(params.groupState, params.rowNodeTransactions, params.rowNodeOrder, changedPath, !!params.afterColumnsChanged);\n case ClientSideRowModelSteps.FILTER:\n this.doFilter(changedPath);\n case ClientSideRowModelSteps.PIVOT:\n this.doPivot(changedPath);\n case ClientSideRowModelSteps.AGGREGATE: // depends on agg fields\n this.doAggregate(changedPath);\n case ClientSideRowModelSteps.FILTER_AGGREGATES:\n this.doFilterAggregates(changedPath);\n case ClientSideRowModelSteps.SORT:\n this.doSort(params.rowNodeTransactions, changedPath);\n case ClientSideRowModelSteps.MAP:\n this.doRowsToDisplay();\n }\n // set all row tops to null, then set row tops on all visible rows. if we don't\n // do this, then the algorithm below only sets row tops, old row tops from old rows\n // will still lie around\n var displayedNodesMapped = this.setRowTopAndRowIndex();\n this.clearRowTopAndRowIndex(changedPath, displayedNodesMapped);\n var event = {\n type: Events.EVENT_MODEL_UPDATED,\n animate: params.animate,\n keepRenderedRows: params.keepRenderedRows,\n newData: params.newData,\n newPage: false,\n keepUndoRedoStack: params.keepUndoRedoStack\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.isEmpty = function () {\n var rowsMissing = _.missing(this.rootNode.allLeafChildren) || this.rootNode.allLeafChildren.length === 0;\n return _.missing(this.rootNode) || rowsMissing || !this.columnModel.isReady();\n };\n ClientSideRowModel.prototype.isRowsToRender = function () {\n return _.exists(this.rowsToDisplay) && this.rowsToDisplay.length > 0;\n };\n ClientSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n // if lastSelectedNode is missing, we start at the first row\n var firstRowHit = !lastInRange;\n var lastRowHit = false;\n var lastRow;\n var result = [];\n var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.forEachNodeAfterFilterAndSort(function (rowNode) {\n var lookingForLastRow = firstRowHit && !lastRowHit;\n // check if we need to flip the select switch\n if (!firstRowHit) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n firstRowHit = true;\n }\n }\n var skipThisGroupNode = rowNode.group && groupsSelectChildren;\n if (!skipThisGroupNode) {\n var inRange = firstRowHit && !lastRowHit;\n var childOfLastRow = rowNode.isParentOfNode(lastRow);\n if (inRange || childOfLastRow) {\n result.push(rowNode);\n }\n }\n if (lookingForLastRow) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n lastRowHit = true;\n if (rowNode === lastInRange) {\n lastRow = lastInRange;\n }\n else {\n lastRow = firstInRange;\n }\n }\n }\n });\n return result;\n };\n ClientSideRowModel.prototype.setDatasource = function (datasource) {\n console.error('AG Grid: should never call setDatasource on clientSideRowController');\n };\n ClientSideRowModel.prototype.getTopLevelNodes = function () {\n return this.rootNode ? this.rootNode.childrenAfterGroup : null;\n };\n ClientSideRowModel.prototype.getRootNode = function () {\n return this.rootNode;\n };\n ClientSideRowModel.prototype.getRow = function (index) {\n return this.rowsToDisplay[index];\n };\n ClientSideRowModel.prototype.isRowPresent = function (rowNode) {\n return this.rowsToDisplay.indexOf(rowNode) >= 0;\n };\n ClientSideRowModel.prototype.getRowIndexAtPixel = function (pixelToMatch) {\n if (this.isEmpty() || this.rowsToDisplay.length === 0) {\n return -1;\n }\n // do binary search of tree\n // http://oli.me.uk/2013/06/08/searching-javascript-arrays-with-a-binary-search/\n var bottomPointer = 0;\n var topPointer = this.rowsToDisplay.length - 1;\n // quick check, if the pixel is out of bounds, then return last row\n if (pixelToMatch <= 0) {\n // if pixel is less than or equal zero, it's always the first row\n return 0;\n }\n var lastNode = _.last(this.rowsToDisplay);\n if (lastNode.rowTop <= pixelToMatch) {\n return this.rowsToDisplay.length - 1;\n }\n var oldBottomPointer = -1;\n var oldTopPointer = -1;\n while (true) {\n var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n var currentRowNode = this.rowsToDisplay[midPointer];\n if (this.isRowInPixel(currentRowNode, pixelToMatch)) {\n return midPointer;\n }\n if (currentRowNode.rowTop < pixelToMatch) {\n bottomPointer = midPointer + 1;\n }\n else if (currentRowNode.rowTop > pixelToMatch) {\n topPointer = midPointer - 1;\n }\n // infinite loops happen when there is space between rows. this can happen\n // when Auto Height is active, cos we re-calculate row tops asyncronously\n // when row heights change, which can temporarly result in gaps between rows.\n var caughtInInfiniteLoop = oldBottomPointer === bottomPointer\n && oldTopPointer === topPointer;\n if (caughtInInfiniteLoop) {\n return midPointer;\n }\n oldBottomPointer = bottomPointer;\n oldTopPointer = topPointer;\n }\n };\n ClientSideRowModel.prototype.isRowInPixel = function (rowNode, pixelToMatch) {\n var topPixel = rowNode.rowTop;\n var bottomPixel = rowNode.rowTop + rowNode.rowHeight;\n var pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;\n return pixelInRow;\n };\n ClientSideRowModel.prototype.forEachLeafNode = function (callback) {\n if (this.rootNode.allLeafChildren) {\n this.rootNode.allLeafChildren.forEach(function (rowNode, index) { return callback(rowNode, index); });\n }\n };\n ClientSideRowModel.prototype.forEachNode = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterGroup, callback, RecursionType.Normal, 0);\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilter = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterAggFilter, callback, RecursionType.AfterFilter, 0);\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterSort, callback, RecursionType.AfterFilterAndSort, 0);\n };\n ClientSideRowModel.prototype.forEachPivotNode = function (callback) {\n this.recursivelyWalkNodesAndCallback([this.rootNode], callback, RecursionType.PivotNodes, 0);\n };\n // iterates through each item in memory, and calls the callback function\n // nodes - the rowNodes to traverse\n // callback - the user provided callback\n // recursion type - need this to know what child nodes to recurse, eg if looking at all nodes, or filtered notes etc\n // index - works similar to the index in forEach in javascript's array function\n ClientSideRowModel.prototype.recursivelyWalkNodesAndCallback = function (nodes, callback, recursionType, index) {\n if (!nodes) {\n return index;\n }\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n callback(node, index++);\n // go to the next level if it is a group\n if (node.hasChildren()) {\n // depending on the recursion type, we pick a difference set of children\n var nodeChildren = null;\n switch (recursionType) {\n case RecursionType.Normal:\n nodeChildren = node.childrenAfterGroup;\n break;\n case RecursionType.AfterFilter:\n nodeChildren = node.childrenAfterAggFilter;\n break;\n case RecursionType.AfterFilterAndSort:\n nodeChildren = node.childrenAfterSort;\n break;\n case RecursionType.PivotNodes:\n // for pivot, we don't go below leafGroup levels\n nodeChildren = !node.leafGroup ? node.childrenAfterSort : null;\n break;\n }\n if (nodeChildren) {\n index = this.recursivelyWalkNodesAndCallback(nodeChildren, callback, recursionType, index);\n }\n }\n }\n return index;\n };\n // it's possible to recompute the aggregate without doing the other parts\n // + gridApi.recomputeAggregates()\n ClientSideRowModel.prototype.doAggregate = function (changedPath) {\n if (this.aggregationStage) {\n this.aggregationStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n ClientSideRowModel.prototype.doFilterAggregates = function (changedPath) {\n if (this.filterAggregatesStage) {\n this.filterAggregatesStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n else {\n // If filterAggregatesStage is undefined, then so is the grouping stage, so all children should be on the rootNode.\n this.rootNode.childrenAfterAggFilter = this.rootNode.childrenAfterFilter;\n }\n };\n // + gridApi.expandAll()\n // + gridApi.collapseAll()\n ClientSideRowModel.prototype.expandOrCollapseAll = function (expand) {\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n var usingPivotMode = this.columnModel.isPivotActive();\n var recursiveExpandOrCollapse = function (rowNodes) {\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var actionRow = function () {\n rowNode.expanded = expand;\n recursiveExpandOrCollapse(rowNode.childrenAfterGroup);\n };\n if (usingTreeData) {\n var hasChildren = _.exists(rowNode.childrenAfterGroup);\n if (hasChildren) {\n actionRow();\n }\n return;\n }\n if (usingPivotMode) {\n var notLeafGroup = !rowNode.leafGroup;\n if (notLeafGroup) {\n actionRow();\n }\n return;\n }\n var isRowGroup = rowNode.group;\n if (isRowGroup) {\n actionRow();\n }\n });\n };\n if (this.rootNode) {\n recursiveExpandOrCollapse(this.rootNode.childrenAfterGroup);\n }\n this.refreshModel({ step: ClientSideRowModelSteps.MAP });\n var eventSource = expand ? 'expandAll' : 'collapseAll';\n var event = {\n type: Events.EVENT_EXPAND_COLLAPSE_ALL,\n source: eventSource\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doSort = function (rowNodeTransactions, changedPath) {\n this.sortStage.execute({\n rowNode: this.rootNode,\n rowNodeTransactions: rowNodeTransactions,\n changedPath: changedPath\n });\n };\n ClientSideRowModel.prototype.doRowGrouping = function (groupState, rowNodeTransactions, rowNodeOrder, changedPath, afterColumnsChanged) {\n if (this.groupStage) {\n if (rowNodeTransactions) {\n this.groupStage.execute({\n rowNode: this.rootNode,\n rowNodeTransactions: rowNodeTransactions,\n rowNodeOrder: rowNodeOrder,\n changedPath: changedPath\n });\n }\n else {\n this.groupStage.execute({\n rowNode: this.rootNode,\n changedPath: changedPath,\n afterColumnsChanged: afterColumnsChanged\n });\n // set open/closed state on groups\n this.restoreGroupState(groupState);\n }\n if (this.gridOptionsWrapper.isGroupSelectsChildren()) {\n this.selectionService.updateGroupsFromChildrenSelections(changedPath);\n }\n }\n else {\n this.rootNode.childrenAfterGroup = this.rootNode.allLeafChildren;\n if (this.rootNode.sibling) {\n this.rootNode.sibling.childrenAfterGroup = this.rootNode.childrenAfterGroup;\n }\n this.rootNode.updateHasChildren();\n }\n };\n ClientSideRowModel.prototype.restoreGroupState = function (groupState) {\n if (!groupState) {\n return;\n }\n _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) {\n // if the group was open last time, then open it this time. however\n // if was not open last time, then don't touch the group, so the 'groupDefaultExpanded'\n // setting will take effect.\n if (typeof groupState[key] === 'boolean') {\n node.expanded = groupState[key];\n }\n });\n };\n ClientSideRowModel.prototype.doFilter = function (changedPath) {\n this.filterStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n };\n ClientSideRowModel.prototype.doPivot = function (changedPath) {\n if (this.pivotStage) {\n this.pivotStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n ClientSideRowModel.prototype.getGroupState = function () {\n if (!this.rootNode.childrenAfterGroup || !this.gridOptionsWrapper.isRememberGroupStateWhenNewData()) {\n return null;\n }\n var result = {};\n _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) { return result[key] = node.expanded; });\n return result;\n };\n ClientSideRowModel.prototype.getCopyOfNodesMap = function () {\n return this.nodeManager.getCopyOfNodesMap();\n };\n ClientSideRowModel.prototype.getRowNode = function (id) {\n // although id is typed a string, this could be called by the user, and they could have passed a number\n var idIsGroup = typeof id == 'string' && id.indexOf(RowNode.ID_PREFIX_ROW_GROUP) == 0;\n if (idIsGroup) {\n // only one users complained about getRowNode not working for groups, after years of\n // this working for normal rows. so have done quick implementation. if users complain\n // about performance, then GroupStage should store / manage created groups in a map,\n // which is a chunk of work.\n var res_1 = undefined;\n this.forEachNode(function (node) {\n if (node.id === id) {\n res_1 = node;\n }\n });\n return res_1;\n }\n return this.nodeManager.getRowNode(id);\n };\n // rows: the rows to put into the model\n ClientSideRowModel.prototype.setRowData = function (rowData) {\n // no need to invalidate cache, as the cache is stored on the rowNode,\n // so new rowNodes means the cache is wiped anyway.\n // remember group state, so we can expand groups that should be expanded\n var groupState = this.getGroupState();\n this.nodeManager.setRowData(rowData);\n // - clears selection\n this.selectionService.reset();\n // - updates filters\n this.filterManager.onNewRowsLoaded('rowDataUpdated');\n // this event kicks off:\n // - shows 'no rows' overlay if needed\n var rowDataUpdatedEvent = {\n type: Events.EVENT_ROW_DATA_UPDATED\n };\n this.eventService.dispatchEvent(rowDataUpdatedEvent);\n this.refreshModel({\n step: ClientSideRowModelSteps.EVERYTHING,\n groupState: groupState,\n newData: true\n });\n };\n ClientSideRowModel.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {\n var _this = this;\n if (this.applyAsyncTransactionsTimeout == null) {\n this.rowDataTransactionBatch = [];\n var waitMillis = this.gridOptionsWrapper.getAsyncTransactionWaitMillis();\n this.applyAsyncTransactionsTimeout = window.setTimeout(function () {\n _this.executeBatchUpdateRowData();\n }, waitMillis);\n }\n this.rowDataTransactionBatch.push({ rowDataTransaction: rowDataTransaction, callback: callback });\n };\n ClientSideRowModel.prototype.flushAsyncTransactions = function () {\n if (this.applyAsyncTransactionsTimeout != null) {\n clearTimeout(this.applyAsyncTransactionsTimeout);\n this.executeBatchUpdateRowData();\n }\n };\n ClientSideRowModel.prototype.executeBatchUpdateRowData = function () {\n var _this = this;\n this.valueCache.onDataChanged();\n var callbackFuncsBound = [];\n var rowNodeTrans = [];\n // The rowGroup stage uses rowNodeOrder if order was provided. if we didn't pass 'true' to\n // commonUpdateRowData, using addIndex would have no effect when grouping.\n var forceRowNodeOrder = false;\n if (this.rowDataTransactionBatch) {\n this.rowDataTransactionBatch.forEach(function (tranItem) {\n var rowNodeTran = _this.nodeManager.updateRowData(tranItem.rowDataTransaction, undefined);\n rowNodeTrans.push(rowNodeTran);\n if (tranItem.callback) {\n callbackFuncsBound.push(tranItem.callback.bind(null, rowNodeTran));\n }\n if (typeof tranItem.rowDataTransaction.addIndex === 'number') {\n forceRowNodeOrder = true;\n }\n });\n }\n this.commonUpdateRowData(rowNodeTrans, undefined, forceRowNodeOrder);\n // do callbacks in next VM turn so it's async\n if (callbackFuncsBound.length > 0) {\n window.setTimeout(function () {\n callbackFuncsBound.forEach(function (func) { return func(); });\n }, 0);\n }\n if (rowNodeTrans.length > 0) {\n var event_1 = {\n type: Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED,\n results: rowNodeTrans\n };\n this.eventService.dispatchEvent(event_1);\n }\n this.rowDataTransactionBatch = null;\n this.applyAsyncTransactionsTimeout = undefined;\n };\n ClientSideRowModel.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n this.valueCache.onDataChanged();\n var rowNodeTran = this.nodeManager.updateRowData(rowDataTran, rowNodeOrder);\n // if doing immutableData, addIndex is never present. however if doing standard transaction, and user\n // provided addIndex, then this is used in updateRowData. However if doing Enterprise, then the rowGroup\n // stage also uses the\n var forceRowNodeOrder = typeof rowDataTran.addIndex === 'number';\n this.commonUpdateRowData([rowNodeTran], rowNodeOrder, forceRowNodeOrder);\n return rowNodeTran;\n };\n ClientSideRowModel.prototype.createRowNodeOrder = function () {\n var suppressSortOrder = this.gridOptionsWrapper.isSuppressMaintainUnsortedOrder();\n if (suppressSortOrder) {\n return;\n }\n var orderMap = {};\n if (this.rootNode && this.rootNode.allLeafChildren) {\n for (var index = 0; index < this.rootNode.allLeafChildren.length; index++) {\n var node = this.rootNode.allLeafChildren[index];\n orderMap[node.id] = index;\n }\n }\n return orderMap;\n };\n // common to updateRowData and batchUpdateRowData\n ClientSideRowModel.prototype.commonUpdateRowData = function (rowNodeTrans, rowNodeOrder, forceRowNodeOrder) {\n var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n if (forceRowNodeOrder) {\n rowNodeOrder = this.createRowNodeOrder();\n }\n this.refreshModel({\n step: ClientSideRowModelSteps.EVERYTHING,\n rowNodeTransactions: rowNodeTrans,\n rowNodeOrder: rowNodeOrder,\n keepRenderedRows: true,\n keepEditingRows: true,\n animate: animate\n });\n // - updates filters\n this.filterManager.onNewRowsLoaded('rowDataUpdated');\n var event = {\n type: Events.EVENT_ROW_DATA_UPDATED\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doRowsToDisplay = function () {\n this.rowsToDisplay = this.flattenStage.execute({ rowNode: this.rootNode });\n };\n ClientSideRowModel.prototype.onRowHeightChanged = function () {\n this.refreshModel({ step: ClientSideRowModelSteps.MAP, keepRenderedRows: true, keepEditingRows: true, keepUndoRedoStack: true });\n };\n /** This method is debounced. It is used for row auto-height. If we don't debounce,\n * then the Row Models will end up recalculating each row position\n * for each row height change and result in the Row Renderer laying out rows.\n * This is particularly bad if using print layout, and showing eg 1,000 rows,\n * each row will change it's height, causing Row Model to update 1,000 times.\n */\n ClientSideRowModel.prototype.onRowHeightChangedDebounced = function () {\n this.onRowHeightChanged_debounced();\n };\n ClientSideRowModel.prototype.resetRowHeights = function () {\n var atLeastOne = false;\n this.forEachNode(function (rowNode) {\n rowNode.setRowHeight(rowNode.rowHeight, true);\n // we keep the height each row is at, however we set estimated=true rather than clear the height.\n // this means the grid will not reset the row heights back to defaults, rather it will re-calc\n // the height for each row as the row is displayed. otherwise the scroll will jump when heights are reset.\n var detailNode = rowNode.detailNode;\n if (detailNode) {\n detailNode.setRowHeight(detailNode.rowHeight, true);\n }\n atLeastOne = true;\n });\n if (atLeastOne) {\n this.onRowHeightChanged();\n }\n };\n __decorate$b([\n Autowired('columnModel')\n ], ClientSideRowModel.prototype, \"columnModel\", void 0);\n __decorate$b([\n Autowired('selectionService')\n ], ClientSideRowModel.prototype, \"selectionService\", void 0);\n __decorate$b([\n Autowired('filterManager')\n ], ClientSideRowModel.prototype, \"filterManager\", void 0);\n __decorate$b([\n Autowired('valueCache')\n ], ClientSideRowModel.prototype, \"valueCache\", void 0);\n __decorate$b([\n Autowired('beans')\n ], ClientSideRowModel.prototype, \"beans\", void 0);\n __decorate$b([\n Autowired('filterStage')\n ], ClientSideRowModel.prototype, \"filterStage\", void 0);\n __decorate$b([\n Autowired('sortStage')\n ], ClientSideRowModel.prototype, \"sortStage\", void 0);\n __decorate$b([\n Autowired('flattenStage')\n ], ClientSideRowModel.prototype, \"flattenStage\", void 0);\n __decorate$b([\n Optional('groupStage')\n ], ClientSideRowModel.prototype, \"groupStage\", void 0);\n __decorate$b([\n Optional('aggregationStage')\n ], ClientSideRowModel.prototype, \"aggregationStage\", void 0);\n __decorate$b([\n Optional('pivotStage')\n ], ClientSideRowModel.prototype, \"pivotStage\", void 0);\n __decorate$b([\n Optional('filterAggregatesStage')\n ], ClientSideRowModel.prototype, \"filterAggregatesStage\", void 0);\n __decorate$b([\n PostConstruct\n ], ClientSideRowModel.prototype, \"init\", null);\n ClientSideRowModel = __decorate$b([\n Bean('rowModel')\n ], ClientSideRowModel);\n return ClientSideRowModel;\n}(BeanStub));\n\nvar __extends$b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterStage = /** @class */ (function (_super) {\n __extends$b(FilterStage, _super);\n function FilterStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterStage.prototype.execute = function (params) {\n var changedPath = params.changedPath;\n this.filterService.filter(changedPath);\n };\n __decorate$a([\n Autowired('filterService')\n ], FilterStage.prototype, \"filterService\", void 0);\n FilterStage = __decorate$a([\n Bean('filterStage')\n ], FilterStage);\n return FilterStage;\n}(BeanStub));\n\nvar __extends$a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortStage = /** @class */ (function (_super) {\n __extends$a(SortStage, _super);\n function SortStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SortStage.prototype.execute = function (params) {\n var _this = this;\n var sortOptions = this.sortController.getSortOptions();\n var sortActive = _.exists(sortOptions) && sortOptions.length > 0;\n var deltaSort = sortActive\n && _.exists(params.rowNodeTransactions)\n // in time we can remove this check, so that delta sort is always\n // on if transactions are present. it's off for now so that we can\n // selectively turn it on and test it with some select users before\n // rolling out to everyone.\n && this.gridOptionsWrapper.isDeltaSort();\n var sortContainsGroupColumns = sortOptions.some(function (opt) { return !!_this.columnModel.getGroupDisplayColumnForGroup(opt.column.getId()); });\n this.sortService.sort(sortOptions, sortActive, deltaSort, params.rowNodeTransactions, params.changedPath, sortContainsGroupColumns);\n };\n __decorate$9([\n Autowired('sortService')\n ], SortStage.prototype, \"sortService\", void 0);\n __decorate$9([\n Autowired('sortController')\n ], SortStage.prototype, \"sortController\", void 0);\n __decorate$9([\n Autowired('columnModel')\n ], SortStage.prototype, \"columnModel\", void 0);\n SortStage = __decorate$9([\n Bean('sortStage')\n ], SortStage);\n return SortStage;\n}(BeanStub));\n\nvar __extends$9 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FlattenStage = /** @class */ (function (_super) {\n __extends$9(FlattenStage, _super);\n function FlattenStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FlattenStage.prototype.execute = function (params) {\n var rootNode = params.rowNode;\n // even if not doing grouping, we do the mapping, as the client might\n // of passed in data that already has a grouping in it somewhere\n var result = [];\n // putting value into a wrapper so it's passed by reference\n var nextRowTop = { value: 0 };\n var skipLeafNodes = this.columnModel.isPivotMode();\n // if we are reducing, and not grouping, then we want to show the root node, as that\n // is where the pivot values are\n var showRootNode = skipLeafNodes && rootNode.leafGroup;\n var topList = showRootNode ? [rootNode] : rootNode.childrenAfterSort;\n this.recursivelyAddToRowsToDisplay(topList, result, nextRowTop, skipLeafNodes, 0);\n // we do not want the footer total if the gris is empty\n var atLeastOneRowPresent = result.length > 0;\n var includeGroupTotalFooter = !showRootNode\n // don't show total footer when showRootNode is true (i.e. in pivot mode and no groups)\n && atLeastOneRowPresent\n && this.gridOptionsWrapper.isGroupIncludeTotalFooter();\n if (includeGroupTotalFooter) {\n this.ensureFooterNodeExists(rootNode);\n this.addRowNodeToRowsToDisplay(rootNode.sibling, result, nextRowTop, 0);\n }\n return result;\n };\n FlattenStage.prototype.recursivelyAddToRowsToDisplay = function (rowsToFlatten, result, nextRowTop, skipLeafNodes, uiLevel) {\n if (_.missingOrEmpty(rowsToFlatten)) {\n return;\n }\n var hideOpenParents = this.gridOptionsWrapper.isGroupHideOpenParents();\n // these two are mutually exclusive, so if first set, we don't set the second\n var groupRemoveSingleChildren = this.gridOptionsWrapper.isGroupRemoveSingleChildren();\n var groupRemoveLowestSingleChildren = !groupRemoveSingleChildren && this.gridOptionsWrapper.isGroupRemoveLowestSingleChildren();\n for (var i = 0; i < rowsToFlatten.length; i++) {\n var rowNode = rowsToFlatten[i];\n // check all these cases, for working out if this row should be included in the final mapped list\n var isParent = rowNode.hasChildren();\n var isSkippedLeafNode = skipLeafNodes && !isParent;\n var isRemovedSingleChildrenGroup = groupRemoveSingleChildren &&\n isParent &&\n rowNode.childrenAfterGroup.length === 1;\n var isRemovedLowestSingleChildrenGroup = groupRemoveLowestSingleChildren &&\n isParent &&\n rowNode.leafGroup &&\n rowNode.childrenAfterGroup.length === 1;\n // hide open parents means when group is open, we don't show it. we also need to make sure the\n // group is expandable in the first place (as leaf groups are not expandable if pivot mode is on).\n // the UI will never allow expanding leaf groups, however the user might via the API (or menu option 'expand all')\n var neverAllowToExpand = skipLeafNodes && rowNode.leafGroup;\n var isHiddenOpenParent = hideOpenParents && rowNode.expanded && !rowNode.master && (!neverAllowToExpand);\n var thisRowShouldBeRendered = !isSkippedLeafNode && !isHiddenOpenParent &&\n !isRemovedSingleChildrenGroup && !isRemovedLowestSingleChildrenGroup;\n if (thisRowShouldBeRendered) {\n this.addRowNodeToRowsToDisplay(rowNode, result, nextRowTop, uiLevel);\n }\n // if we are pivoting, we never map below the leaf group\n if (skipLeafNodes && rowNode.leafGroup) {\n continue;\n }\n if (isParent) {\n var excludedParent = isRemovedSingleChildrenGroup || isRemovedLowestSingleChildrenGroup;\n // we traverse the group if it is expended, however we always traverse if the parent node\n // was removed (as the group will never be opened if it is not displayed, we show the children instead)\n if (rowNode.expanded || excludedParent) {\n // if the parent was excluded, then ui level is that of the parent\n var uiLevelForChildren = excludedParent ? uiLevel : uiLevel + 1;\n this.recursivelyAddToRowsToDisplay(rowNode.childrenAfterSort, result, nextRowTop, skipLeafNodes, uiLevelForChildren);\n // put a footer in if user is looking for it\n if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.ensureFooterNodeExists(rowNode);\n this.addRowNodeToRowsToDisplay(rowNode.sibling, result, nextRowTop, uiLevel);\n }\n }\n }\n else if (rowNode.master && rowNode.expanded) {\n var detailNode = this.createDetailNode(rowNode);\n this.addRowNodeToRowsToDisplay(detailNode, result, nextRowTop, uiLevel);\n }\n }\n };\n // duplicated method, it's also in floatingRowModel\n FlattenStage.prototype.addRowNodeToRowsToDisplay = function (rowNode, result, nextRowTop, uiLevel) {\n var isGroupMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();\n result.push(rowNode);\n rowNode.setUiLevel(isGroupMultiAutoColumn ? 0 : uiLevel);\n };\n FlattenStage.prototype.ensureFooterNodeExists = function (groupNode) {\n // only create footer node once, otherwise we have daemons and\n // the animate screws up with the daemons hanging around\n if (_.exists(groupNode.sibling)) {\n return;\n }\n var footerNode = new RowNode(this.beans);\n Object.keys(groupNode).forEach(function (key) {\n footerNode[key] = groupNode[key];\n });\n footerNode.footer = true;\n footerNode.setRowTop(null);\n footerNode.setRowIndex(null);\n // manually set oldRowTop to null so we discard any\n // previous information about its position.\n footerNode.oldRowTop = null;\n if (_.exists(footerNode.id)) {\n footerNode.id = 'rowGroupFooter_' + footerNode.id;\n }\n // get both header and footer to reference each other as siblings. this is never undone,\n // only overwritten. so if a group is expanded, then contracted, it will have a ghost\n // sibling - but that's fine, as we can ignore this if the header is contracted.\n footerNode.sibling = groupNode;\n groupNode.sibling = footerNode;\n };\n FlattenStage.prototype.createDetailNode = function (masterNode) {\n if (_.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n var detailNode = new RowNode(this.beans);\n detailNode.detail = true;\n detailNode.selectable = false;\n detailNode.parent = masterNode;\n if (_.exists(masterNode.id)) {\n detailNode.id = 'detail_' + masterNode.id;\n }\n detailNode.data = masterNode.data;\n detailNode.level = masterNode.level + 1;\n masterNode.detailNode = detailNode;\n return detailNode;\n };\n __decorate$8([\n Autowired('columnModel')\n ], FlattenStage.prototype, \"columnModel\", void 0);\n __decorate$8([\n Autowired('beans')\n ], FlattenStage.prototype, \"beans\", void 0);\n FlattenStage = __decorate$8([\n Bean('flattenStage')\n ], FlattenStage);\n return FlattenStage;\n}(BeanStub));\n\nvar __extends$8 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SortService = /** @class */ (function (_super) {\n __extends$8(SortService, _super);\n function SortService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SortService.prototype.init = function () {\n this.postSortFunc = this.gridOptionsWrapper.getPostSortFunc();\n };\n SortService.prototype.sort = function (sortOptions, sortActive, useDeltaSort, rowNodeTransactions, changedPath, sortContainsGroupColumns) {\n var _this = this;\n var groupMaintainOrder = this.gridOptionsWrapper.isGroupMaintainOrder();\n var groupColumnsPresent = this.columnModel.getAllGridColumns().some(function (c) { return c.isRowGroupActive(); });\n var allDirtyNodes = {};\n if (useDeltaSort && rowNodeTransactions) {\n allDirtyNodes = this.calculateDirtyNodes(rowNodeTransactions);\n }\n var isPivotMode = this.columnModel.isPivotMode();\n var callback = function (rowNode) {\n // we clear out the 'pull down open parents' first, as the values mix up the sorting\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterAggFilter, true);\n // It's pointless to sort rows which aren't being displayed. in pivot mode we don't need to sort the leaf group children.\n var skipSortingPivotLeafs = isPivotMode && rowNode.leafGroup;\n // Javascript sort is non deterministic when all the array items are equals, ie Comparator always returns 0,\n // so to ensure the array keeps its order, add an additional sorting condition manually, in this case we\n // are going to inspect the original array position. This is what sortedRowNodes is for.\n var skipSortingGroups = groupMaintainOrder && groupColumnsPresent && !rowNode.leafGroup && !sortContainsGroupColumns;\n if (!sortActive || skipSortingGroups || skipSortingPivotLeafs) {\n // when 'groupMaintainOrder' is enabled we skip sorting groups unless we are sorting on group columns\n var childrenToBeSorted = rowNode.childrenAfterAggFilter.slice(0);\n if (groupMaintainOrder && rowNode.childrenAfterSort) {\n var indexedOrders_1 = rowNode.childrenAfterSort.reduce(function (acc, row, idx) {\n acc[row.id] = idx;\n return acc;\n }, {});\n childrenToBeSorted.sort(function (row1, row2) { return (indexedOrders_1[row1.id] || 0) - (indexedOrders_1[row2.id] || 0); });\n }\n rowNode.childrenAfterSort = childrenToBeSorted;\n }\n else if (useDeltaSort) {\n rowNode.childrenAfterSort = _this.doDeltaSort(rowNode, allDirtyNodes, changedPath, sortOptions);\n }\n else {\n rowNode.childrenAfterSort = _this.rowNodeSorter.doFullSort(rowNode.childrenAfterAggFilter, sortOptions);\n }\n if (rowNode.sibling) {\n rowNode.sibling.childrenAfterSort = rowNode.childrenAfterSort;\n }\n _this.updateChildIndexes(rowNode);\n if (_this.postSortFunc) {\n var params = { nodes: rowNode.childrenAfterSort };\n _this.postSortFunc(params);\n }\n };\n if (changedPath) {\n changedPath.forEachChangedNodeDepthFirst(callback);\n }\n this.updateGroupDataForHideOpenParents(changedPath);\n };\n SortService.prototype.calculateDirtyNodes = function (rowNodeTransactions) {\n var dirtyNodes = {};\n var addNodesFunc = function (rowNodes) {\n if (rowNodes) {\n rowNodes.forEach(function (rowNode) { return dirtyNodes[rowNode.id] = true; });\n }\n };\n // all leaf level nodes in the transaction were impacted\n if (rowNodeTransactions) {\n rowNodeTransactions.forEach(function (tran) {\n addNodesFunc(tran.add);\n addNodesFunc(tran.update);\n addNodesFunc(tran.remove);\n });\n }\n return dirtyNodes;\n };\n SortService.prototype.doDeltaSort = function (rowNode, allTouchedNodes, changedPath, sortOptions) {\n var _this = this;\n var unsortedRows = rowNode.childrenAfterAggFilter;\n var oldSortedRows = rowNode.childrenAfterSort;\n if (!oldSortedRows) {\n return this.rowNodeSorter.doFullSort(unsortedRows, sortOptions);\n }\n var untouchedRowsMap = {};\n var touchedRows = [];\n unsortedRows.forEach(function (row) {\n if (allTouchedNodes[row.id] || !changedPath.canSkip(row)) {\n touchedRows.push(row);\n }\n else {\n untouchedRowsMap[row.id] = true;\n }\n });\n var sortedUntouchedRows = oldSortedRows.filter(function (child) { return untouchedRowsMap[child.id]; });\n var mapNodeToSortedNode = function (rowNode, pos) { return ({ currentPos: pos, rowNode: rowNode }); };\n var sortedChangedRows = touchedRows\n .map(mapNodeToSortedNode)\n .sort(function (a, b) { return _this.rowNodeSorter.compareRowNodes(sortOptions, a, b); });\n return this.mergeSortedArrays(sortOptions, sortedChangedRows, sortedUntouchedRows.map(mapNodeToSortedNode)).map(function (_a) {\n var rowNode = _a.rowNode;\n return rowNode;\n });\n };\n // Merge two sorted arrays into each other\n SortService.prototype.mergeSortedArrays = function (sortOptions, arr1, arr2) {\n var res = [];\n var i = 0;\n var j = 0;\n // Traverse both array, adding them in order\n while (i < arr1.length && j < arr2.length) {\n // Check if current element of first\n // array is smaller than current element\n // of second array. If yes, store first\n // array element and increment first array\n // index. Otherwise do same with second array\n var compareResult = this.rowNodeSorter.compareRowNodes(sortOptions, arr1[i], arr2[j]);\n if (compareResult < 0) {\n res.push(arr1[i++]);\n }\n else {\n res.push(arr2[j++]);\n }\n }\n // add remaining from arr1\n while (i < arr1.length) {\n res.push(arr1[i++]);\n }\n // add remaining from arr2\n while (j < arr2.length) {\n res.push(arr2[j++]);\n }\n return res;\n };\n SortService.prototype.updateChildIndexes = function (rowNode) {\n if (_.missing(rowNode.childrenAfterSort)) {\n return;\n }\n var listToSort = rowNode.childrenAfterSort;\n for (var i = 0; i < listToSort.length; i++) {\n var child = listToSort[i];\n var firstChild = i === 0;\n var lastChild = i === rowNode.childrenAfterSort.length - 1;\n child.setFirstChild(firstChild);\n child.setLastChild(lastChild);\n child.setChildIndex(i);\n }\n };\n SortService.prototype.updateGroupDataForHideOpenParents = function (changedPath) {\n var _this = this;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n if (this.gridOptionsWrapper.isTreeData()) {\n var msg_1 = \"AG Grid: The property hideOpenParents dose not work with Tree Data. This is because Tree Data has values at the group level, it doesn't make sense to hide them (as opposed to Row Grouping, which only has Aggregated Values at the group level).\";\n _.doOnce(function () { return console.warn(msg_1); }, 'sortService.hideOpenParentsWithTreeData');\n return false;\n }\n // recurse breadth first over group nodes after sort to 'pull down' group data to child groups\n var callback = function (rowNode) {\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterSort, false);\n rowNode.childrenAfterSort.forEach(function (child) {\n if (child.hasChildren()) {\n callback(child);\n }\n });\n };\n if (changedPath) {\n changedPath.executeFromRootNode(function (rowNode) { return callback(rowNode); });\n }\n };\n SortService.prototype.pullDownGroupDataForHideOpenParents = function (rowNodes, clearOperation) {\n var _this = this;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents() || _.missing(rowNodes)) {\n return;\n }\n rowNodes.forEach(function (childRowNode) {\n var groupDisplayCols = _this.columnModel.getGroupDisplayColumns();\n groupDisplayCols.forEach(function (groupDisplayCol) {\n var showRowGroup = groupDisplayCol.getColDef().showRowGroup;\n if (typeof showRowGroup !== 'string') {\n console.error('AG Grid: groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup');\n return;\n }\n var displayingGroupKey = showRowGroup;\n var rowGroupColumn = _this.columnModel.getPrimaryColumn(displayingGroupKey);\n var thisRowNodeMatches = rowGroupColumn === childRowNode.rowGroupColumn;\n if (thisRowNodeMatches) {\n return;\n }\n if (clearOperation) {\n // if doing a clear operation, we clear down the value for every possible group column\n childRowNode.setGroupValue(groupDisplayCol.getId(), undefined);\n }\n else {\n // if doing a set operation, we set only where the pull down is to occur\n var parentToStealFrom = childRowNode.getFirstChildOfFirstChild(rowGroupColumn);\n if (parentToStealFrom) {\n childRowNode.setGroupValue(groupDisplayCol.getId(), parentToStealFrom.key);\n }\n }\n });\n });\n };\n __decorate$7([\n Autowired('columnModel')\n ], SortService.prototype, \"columnModel\", void 0);\n __decorate$7([\n Autowired('rowNodeSorter')\n ], SortService.prototype, \"rowNodeSorter\", void 0);\n __decorate$7([\n PostConstruct\n ], SortService.prototype, \"init\", null);\n SortService = __decorate$7([\n Bean('sortService')\n ], SortService);\n return SortService;\n}(BeanStub));\n\nvar __extends$7 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FilterService = /** @class */ (function (_super) {\n __extends$7(FilterService, _super);\n function FilterService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterService.prototype.filter = function (changedPath) {\n var filterActive = this.filterManager.isColumnFilterPresent()\n || this.filterManager.isQuickFilterPresent()\n || this.filterManager.isExternalFilterPresent();\n this.filterNodes(filterActive, changedPath);\n };\n FilterService.prototype.filterNodes = function (filterActive, changedPath) {\n var _this = this;\n var filterCallback = function (rowNode, includeChildNodes) {\n // recursively get all children that are groups to also filter\n if (rowNode.hasChildren()) {\n // result of filter for this node. when filtering tree data, includeChildNodes = true when parent passes\n if (filterActive && !includeChildNodes) {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter(function (childNode) {\n // a group is included in the result if it has any children of it's own.\n // by this stage, the child groups are already filtered\n var passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;\n // both leaf level nodes and tree data nodes have data. these get added if\n // the data passes the filter\n var passBecauseDataPasses = childNode.data\n && _this.filterManager.doesRowPassFilter({ rowNode: childNode });\n // note - tree data nodes pass either if a) they pass themselves or b) any children of that node pass\n return passBecauseChildren || passBecauseDataPasses;\n });\n }\n else {\n // if not filtering, the result is the original list\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n }\n }\n else {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n }\n if (rowNode.sibling) {\n rowNode.sibling.childrenAfterFilter = rowNode.childrenAfterFilter;\n }\n };\n if (this.doingTreeDataFiltering()) {\n var treeDataDepthFirstFilter_1 = function (rowNode, alreadyFoundInParent) {\n // tree data filter traverses the hierarchy depth first and includes child nodes if parent passes\n // filter, and parent nodes will be include if any children exist.\n if (rowNode.childrenAfterGroup) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n var childNode = rowNode.childrenAfterGroup[i];\n // first check if current node passes filter before invoking child nodes\n var foundInParent = alreadyFoundInParent\n || _this.filterManager.doesRowPassFilter({ rowNode: childNode });\n if (childNode.childrenAfterGroup) {\n treeDataDepthFirstFilter_1(rowNode.childrenAfterGroup[i], foundInParent);\n }\n else {\n filterCallback(childNode, foundInParent);\n }\n }\n }\n filterCallback(rowNode, alreadyFoundInParent);\n };\n var treeDataFilterCallback = function (rowNode) { return treeDataDepthFirstFilter_1(rowNode, false); };\n changedPath.executeFromRootNode(treeDataFilterCallback);\n }\n else {\n var defaultFilterCallback = function (rowNode) { return filterCallback(rowNode, false); };\n changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);\n }\n };\n FilterService.prototype.doingTreeDataFiltering = function () {\n return this.gridOptionsWrapper.isTreeData() && !this.gridOptionsWrapper.isExcludeChildrenWhenTreeDataFiltering();\n };\n __decorate$6([\n Autowired('filterManager')\n ], FilterService.prototype, \"filterManager\", void 0);\n FilterService = __decorate$6([\n Bean(\"filterService\")\n ], FilterService);\n return FilterService;\n}(BeanStub));\n\nvar __extends$6 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar ImmutableService = /** @class */ (function (_super) {\n __extends$6(ImmutableService, _super);\n function ImmutableService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ImmutableService.prototype.postConstruct = function () {\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n };\n ImmutableService.prototype.isActive = function () {\n return this.gridOptionsWrapper.isImmutableData();\n };\n ImmutableService.prototype.setRowData = function (rowData) {\n var transactionAndMap = this.createTransactionForRowData(rowData);\n if (!transactionAndMap) {\n return;\n }\n var _a = __read(transactionAndMap, 2), transaction = _a[0], orderIdMap = _a[1];\n var nodeTransaction = this.clientSideRowModel.updateRowData(transaction, orderIdMap);\n // need to force updating of full width rows - note this wouldn't be necessary the full width cell comp listened\n // to the data change event on the row node and refreshed itself.\n if (nodeTransaction) {\n this.rowRenderer.refreshFullWidthRows(nodeTransaction.update);\n }\n };\n // converts the setRowData() command to a transaction\n ImmutableService.prototype.createTransactionForRowData = function (rowData) {\n if (_.missing(this.clientSideRowModel)) {\n console.error('AG Grid: ImmutableService only works with ClientSideRowModel');\n return;\n }\n var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();\n if (getRowIdFunc == null) {\n console.error('AG Grid: ImmutableService requires getRowId() callback to be implemented, your row data needs IDs!');\n return;\n }\n // convert the data into a transaction object by working out adds, removes and updates\n var transaction = {\n remove: [],\n update: [],\n add: []\n };\n var existingNodesMap = this.clientSideRowModel.getCopyOfNodesMap();\n var suppressSortOrder = this.gridOptionsWrapper.isSuppressMaintainUnsortedOrder();\n var orderMap = suppressSortOrder ? undefined : {};\n if (_.exists(rowData)) {\n // split all the new data in the following:\n // if new, push to 'add'\n // if update, push to 'update'\n // if not changed, do not include in the transaction\n rowData.forEach(function (data, index) {\n var id = getRowIdFunc({ data: data, level: 0 });\n var existingNode = existingNodesMap[id];\n if (orderMap) {\n orderMap[id] = index;\n }\n if (existingNode) {\n var dataHasChanged = existingNode.data !== data;\n if (dataHasChanged) {\n transaction.update.push(data);\n }\n // otherwise, if data not changed, we just don't include it anywhere, as it's not a delta\n // remove from list, so we know the item is not to be removed\n existingNodesMap[id] = undefined;\n }\n else {\n transaction.add.push(data);\n }\n });\n }\n // at this point, all rows that are left, should be removed\n _.iterateObject(existingNodesMap, function (id, rowNode) {\n if (rowNode) {\n transaction.remove.push(rowNode.data);\n }\n });\n return [transaction, orderMap];\n };\n __decorate$5([\n Autowired('rowModel')\n ], ImmutableService.prototype, \"rowModel\", void 0);\n __decorate$5([\n Autowired('rowRenderer')\n ], ImmutableService.prototype, \"rowRenderer\", void 0);\n __decorate$5([\n Autowired('columnApi')\n ], ImmutableService.prototype, \"columnApi\", void 0);\n __decorate$5([\n Autowired('gridApi')\n ], ImmutableService.prototype, \"gridApi\", void 0);\n __decorate$5([\n Autowired('filterManager')\n ], ImmutableService.prototype, \"filterManager\", void 0);\n __decorate$5([\n PostConstruct\n ], ImmutableService.prototype, \"postConstruct\", null);\n ImmutableService = __decorate$5([\n Bean('immutableService')\n ], ImmutableService);\n return ImmutableService;\n}(BeanStub));\n\nvar ClientSideRowModelModule = {\n moduleName: ModuleNames.ClientSideRowModelModule,\n beans: [FilterStage, SortStage, FlattenStage, SortService, FilterService, ImmutableService],\n rowModels: { clientSide: ClientSideRowModel }\n};\n\nvar __extends$5 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar InfiniteBlock = /** @class */ (function (_super) {\n __extends$5(InfiniteBlock, _super);\n function InfiniteBlock(id, parentCache, params) {\n var _this = _super.call(this, id) || this;\n _this.parentCache = parentCache;\n _this.params = params;\n // we don't need to calculate these now, as the inputs don't change,\n // however it makes the code easier to read if we work them out up front\n _this.startRow = id * params.blockSize;\n _this.endRow = _this.startRow + params.blockSize;\n return _this;\n }\n InfiniteBlock.prototype.postConstruct = function () {\n this.createRowNodes();\n };\n InfiniteBlock.prototype.getBlockStateJson = function () {\n return {\n id: '' + this.getId(),\n state: {\n blockNumber: this.getId(),\n startRow: this.getStartRow(),\n endRow: this.getEndRow(),\n pageStatus: this.getState()\n }\n };\n };\n InfiniteBlock.prototype.setDataAndId = function (rowNode, data, index) {\n // if there's no id and the rowNode was rendered before, it means this\n // was a placeholder rowNode and should not be recycled. Setting\n // `alreadyRendered` to `false` forces the rowRenderer to flush it.\n if (!rowNode.id && rowNode.alreadyRendered) {\n rowNode.alreadyRendered = false;\n }\n if (_.exists(data)) {\n // this means if the user is not providing id's we just use the\n // index for the row. this will allow selection to work (that is based\n // on index) as long user is not inserting or deleting rows,\n // or wanting to keep selection between server side sorting or filtering\n rowNode.setDataAndId(data, index.toString());\n }\n else {\n rowNode.setDataAndId(undefined, undefined);\n }\n };\n InfiniteBlock.prototype.loadFromDatasource = function () {\n var _this = this;\n var params = this.createLoadParams();\n if (_.missing(this.params.datasource.getRows)) {\n console.warn(\"AG Grid: datasource is missing getRows method\");\n return;\n }\n // put in timeout, to force result to be async\n window.setTimeout(function () {\n _this.params.datasource.getRows(params);\n }, 0);\n };\n InfiniteBlock.prototype.processServerFail = function () {\n // todo - this method has better handling in SSRM\n };\n InfiniteBlock.prototype.createLoadParams = function () {\n // PROBLEM . . . . when the user sets sort via colDef.sort, then this code\n // is executing before the sort is set up, so server is not getting the sort\n // model. need to change with regards order - so the server side request is\n // AFTER thus it gets the right sort model.\n var params = {\n startRow: this.getStartRow(),\n endRow: this.getEndRow(),\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this, this.getVersion()),\n sortModel: this.params.sortModel,\n filterModel: this.params.filterModel,\n context: this.gridOptionsWrapper.getContext()\n };\n return params;\n };\n InfiniteBlock.prototype.forEachNode = function (callback, sequence, rowCount) {\n var _this = this;\n this.rowNodes.forEach(function (rowNode, index) {\n var rowIndex = _this.startRow + index;\n if (rowIndex < rowCount) {\n callback(rowNode, sequence.next());\n }\n });\n };\n InfiniteBlock.prototype.getLastAccessed = function () {\n return this.lastAccessed;\n };\n InfiniteBlock.prototype.getRow = function (rowIndex, dontTouchLastAccessed) {\n if (dontTouchLastAccessed === void 0) { dontTouchLastAccessed = false; }\n if (!dontTouchLastAccessed) {\n this.lastAccessed = this.params.lastAccessedSequence.next();\n }\n var localIndex = rowIndex - this.startRow;\n return this.rowNodes[localIndex];\n };\n InfiniteBlock.prototype.getStartRow = function () {\n return this.startRow;\n };\n InfiniteBlock.prototype.getEndRow = function () {\n return this.endRow;\n };\n // creates empty row nodes, data is missing as not loaded yet\n InfiniteBlock.prototype.createRowNodes = function () {\n this.rowNodes = [];\n for (var i = 0; i < this.params.blockSize; i++) {\n var rowIndex = this.startRow + i;\n var rowNode = new RowNode(this.beans);\n rowNode.setRowHeight(this.params.rowHeight);\n rowNode.uiLevel = 0;\n rowNode.setRowIndex(rowIndex);\n rowNode.setRowTop(this.params.rowHeight * rowIndex);\n this.rowNodes.push(rowNode);\n }\n };\n InfiniteBlock.prototype.processServerResult = function (params) {\n var _this = this;\n this.rowNodes.forEach(function (rowNode, index) {\n var data = params.rowData ? params.rowData[index] : undefined;\n _this.setDataAndId(rowNode, data, _this.startRow + index);\n });\n var finalRowCount = params.rowCount != null && params.rowCount >= 0 ? params.rowCount : undefined;\n this.parentCache.pageLoaded(this, finalRowCount);\n };\n InfiniteBlock.prototype.destroyRowNodes = function () {\n this.rowNodes.forEach(function (rowNode) {\n // this is needed, so row render knows to fade out the row, otherwise it\n // sees row top is present, and thinks the row should be shown.\n rowNode.clearRowTopAndRowIndex();\n });\n };\n __decorate$4([\n Autowired('beans')\n ], InfiniteBlock.prototype, \"beans\", void 0);\n __decorate$4([\n PostConstruct\n ], InfiniteBlock.prototype, \"postConstruct\", null);\n __decorate$4([\n PreDestroy\n ], InfiniteBlock.prototype, \"destroyRowNodes\", null);\n return InfiniteBlock;\n}(RowNodeBlock));\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (undefined && undefined.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar InfiniteCache = /** @class */ (function (_super) {\n __extends$4(InfiniteCache, _super);\n function InfiniteCache(params) {\n var _this = _super.call(this) || this;\n _this.lastRowIndexKnown = false;\n _this.blocks = {};\n _this.blockCount = 0;\n _this.rowCount = params.initialRowCount;\n _this.params = params;\n return _this;\n }\n InfiniteCache.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('InfiniteCache');\n };\n // the rowRenderer will not pass dontCreatePage, meaning when rendering the grid,\n // it will want new pages in the cache as it asks for rows. only when we are inserting /\n // removing rows via the api is dontCreatePage set, where we move rows between the pages.\n InfiniteCache.prototype.getRow = function (rowIndex, dontCreatePage) {\n if (dontCreatePage === void 0) { dontCreatePage = false; }\n var blockId = Math.floor(rowIndex / this.params.blockSize);\n var block = this.blocks[blockId];\n if (!block) {\n if (dontCreatePage) {\n return undefined;\n }\n block = this.createBlock(blockId);\n }\n return block.getRow(rowIndex);\n };\n InfiniteCache.prototype.createBlock = function (blockNumber) {\n var newBlock = this.createBean(new InfiniteBlock(blockNumber, this, this.params));\n this.blocks[newBlock.getId()] = newBlock;\n this.blockCount++;\n this.purgeBlocksIfNeeded(newBlock);\n this.params.rowNodeBlockLoader.addBlock(newBlock);\n return newBlock;\n };\n // we have this on infinite row model only, not server side row model,\n // because for server side, it would leave the children in inconsistent\n // state - eg if a node had children, but after the refresh it had data\n // for a different row, then the children would be with the wrong row node.\n InfiniteCache.prototype.refreshCache = function () {\n var nothingToRefresh = this.blockCount == 0;\n if (nothingToRefresh) {\n this.purgeCache();\n return;\n }\n this.getBlocksInOrder().forEach(function (block) { return block.setStateWaitingToLoad(); });\n this.params.rowNodeBlockLoader.checkBlockToLoad();\n };\n InfiniteCache.prototype.destroyAllBlocks = function () {\n var _this = this;\n this.getBlocksInOrder().forEach(function (block) { return _this.destroyBlock(block); });\n };\n InfiniteCache.prototype.getRowCount = function () {\n return this.rowCount;\n };\n InfiniteCache.prototype.isLastRowIndexKnown = function () {\n return this.lastRowIndexKnown;\n };\n // block calls this, when page loaded\n InfiniteCache.prototype.pageLoaded = function (block, lastRow) {\n // if we are not active, then we ignore all events, otherwise we could end up getting the\n // grid to refresh even though we are no longer the active cache\n if (!this.isAlive()) {\n return;\n }\n this.logger.log(\"onPageLoaded: page = \" + block.getId() + \", lastRow = \" + lastRow);\n this.checkRowCount(block, lastRow);\n // we fire cacheUpdated even if the row count has not changed, as some items need updating even\n // if no new rows to render. for example the pagination panel has '?' as the total rows when loading\n // is underway, which would need to get updated when loading finishes.\n this.onCacheUpdated();\n };\n InfiniteCache.prototype.purgeBlocksIfNeeded = function (blockToExclude) {\n var _this = this;\n // we exclude checking for the page just created, as this has yet to be accessed and hence\n // the lastAccessed stamp will not be updated for the first time yet\n var blocksForPurging = this.getBlocksInOrder().filter(function (b) { return b != blockToExclude; });\n var lastAccessedComparator = function (a, b) { return b.getLastAccessed() - a.getLastAccessed(); };\n blocksForPurging.sort(lastAccessedComparator);\n // we remove (maxBlocksInCache - 1) as we already excluded the 'just created' page.\n // in other words, after the splice operation below, we have taken out the blocks\n // we want to keep, which means we are left with blocks that we can potentially purge\n var maxBlocksProvided = this.params.maxBlocksInCache > 0;\n var blocksToKeep = maxBlocksProvided ? this.params.maxBlocksInCache - 1 : null;\n var emptyBlocksToKeep = InfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP - 1;\n blocksForPurging.forEach(function (block, index) {\n var purgeBecauseBlockEmpty = block.getState() === InfiniteBlock.STATE_WAITING_TO_LOAD && index >= emptyBlocksToKeep;\n var purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;\n if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {\n // if the block currently has rows been displayed, then don't remove it either.\n // this can happen if user has maxBlocks=2, and blockSize=5 (thus 10 max rows in cache)\n // but the screen is showing 20 rows, so at least 4 blocks are needed.\n if (_this.isBlockCurrentlyDisplayed(block)) {\n return;\n }\n // don't want to loose keyboard focus, so keyboard navigation can continue. so keep focused blocks.\n if (_this.isBlockFocused(block)) {\n return;\n }\n // at this point, block is not needed, so burn baby burn\n _this.removeBlockFromCache(block);\n }\n });\n };\n InfiniteCache.prototype.isBlockFocused = function (block) {\n var focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n if (!focusedCell) {\n return false;\n }\n if (focusedCell.rowPinned != null) {\n return false;\n }\n var blockIndexStart = block.getStartRow();\n var blockIndexEnd = block.getEndRow();\n var hasFocus = focusedCell.rowIndex >= blockIndexStart && focusedCell.rowIndex < blockIndexEnd;\n return hasFocus;\n };\n InfiniteCache.prototype.isBlockCurrentlyDisplayed = function (block) {\n var startIndex = block.getStartRow();\n var endIndex = block.getEndRow() - 1;\n return this.rowRenderer.isRangeInRenderedViewport(startIndex, endIndex);\n };\n InfiniteCache.prototype.removeBlockFromCache = function (blockToRemove) {\n if (!blockToRemove) {\n return;\n }\n this.destroyBlock(blockToRemove);\n // we do not want to remove the 'loaded' event listener, as the\n // concurrent loads count needs to be updated when the load is complete\n // if the purged page is in loading state\n };\n InfiniteCache.prototype.checkRowCount = function (block, lastRow) {\n // if client provided a last row, we always use it, as it could change between server calls\n // if user deleted data and then called refresh on the grid.\n if (typeof lastRow === 'number' && lastRow >= 0) {\n this.rowCount = lastRow;\n this.lastRowIndexKnown = true;\n }\n else if (!this.lastRowIndexKnown) {\n // otherwise, see if we need to add some virtual rows\n var lastRowIndex = (block.getId() + 1) * this.params.blockSize;\n var lastRowIndexPlusOverflow = lastRowIndex + this.params.overflowSize;\n if (this.rowCount < lastRowIndexPlusOverflow) {\n this.rowCount = lastRowIndexPlusOverflow;\n }\n }\n };\n InfiniteCache.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {\n this.rowCount = rowCount;\n // if undefined is passed, we do not set this value, if one of {true,false}\n // is passed, we do set the value.\n if (_.exists(lastRowIndexKnown)) {\n this.lastRowIndexKnown = lastRowIndexKnown;\n }\n // if we are still searching, then the row count must not end at the end\n // of a particular page, otherwise the searching will not pop into the\n // next page\n if (!this.lastRowIndexKnown) {\n if (this.rowCount % this.params.blockSize === 0) {\n this.rowCount++;\n }\n }\n this.onCacheUpdated();\n };\n InfiniteCache.prototype.forEachNodeDeep = function (callback) {\n var _this = this;\n var sequence = new NumberSequence();\n this.getBlocksInOrder().forEach(function (block) { return block.forEachNode(callback, sequence, _this.rowCount); });\n };\n InfiniteCache.prototype.getBlocksInOrder = function () {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n var blockComparator = function (a, b) { return a.getId() - b.getId(); };\n var blocks = _.getAllValuesInObject(this.blocks).sort(blockComparator);\n return blocks;\n };\n InfiniteCache.prototype.destroyBlock = function (block) {\n delete this.blocks[block.getId()];\n this.destroyBean(block);\n this.blockCount--;\n this.params.rowNodeBlockLoader.removeBlock(block);\n };\n // gets called 1) row count changed 2) cache purged 3) items inserted\n InfiniteCache.prototype.onCacheUpdated = function () {\n if (this.isAlive()) {\n // if the virtualRowCount is shortened, then it's possible blocks exist that are no longer\n // in the valid range. so we must remove these. this can happen if user explicitly sets\n // the virtual row count, or the datasource returns a result and sets lastRow to something\n // less than virtualRowCount (can happen if user scrolls down, server reduces dataset size).\n this.destroyAllBlocksPastVirtualRowCount();\n // this results in both row models (infinite and server side) firing ModelUpdated,\n // however server side row model also updates the row indexes first\n var event_1 = {\n type: Events.EVENT_STORE_UPDATED\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n InfiniteCache.prototype.destroyAllBlocksPastVirtualRowCount = function () {\n var _this = this;\n var blocksToDestroy = [];\n this.getBlocksInOrder().forEach(function (block) {\n var startRow = block.getId() * _this.params.blockSize;\n if (startRow >= _this.rowCount) {\n blocksToDestroy.push(block);\n }\n });\n if (blocksToDestroy.length > 0) {\n blocksToDestroy.forEach(function (block) { return _this.destroyBlock(block); });\n }\n };\n InfiniteCache.prototype.purgeCache = function () {\n var _this = this;\n this.getBlocksInOrder().forEach(function (block) { return _this.removeBlockFromCache(block); });\n this.lastRowIndexKnown = false;\n // if zero rows in the cache, we need to get the SSRM to start asking for rows again.\n // otherwise if set to zero rows last time, and we don't update the row count, then after\n // the purge there will still be zero rows, meaning the SSRM won't request any rows.\n // to kick things off, at least one row needs to be asked for.\n if (this.rowCount === 0) {\n this.rowCount = this.params.initialRowCount;\n }\n this.onCacheUpdated();\n };\n InfiniteCache.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n var _this = this;\n var result = [];\n var lastBlockId = -1;\n var inActiveRange = false;\n var numberSequence = new NumberSequence();\n // if only one node passed, we start the selection at the top\n if (_.missing(firstInRange)) {\n inActiveRange = true;\n }\n var foundGapInSelection = false;\n this.getBlocksInOrder().forEach(function (block) {\n if (foundGapInSelection) {\n return;\n }\n if (inActiveRange && (lastBlockId + 1 !== block.getId())) {\n foundGapInSelection = true;\n return;\n }\n lastBlockId = block.getId();\n block.forEachNode(function (rowNode) {\n var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n if (inActiveRange || hitFirstOrLast) {\n result.push(rowNode);\n }\n if (hitFirstOrLast) {\n inActiveRange = !inActiveRange;\n }\n }, numberSequence, _this.rowCount);\n });\n // inActiveRange will be still true if we never hit the second rowNode\n var invalidRange = foundGapInSelection || inActiveRange;\n return invalidRange ? [] : result;\n };\n // this property says how many empty blocks should be in a cache, eg if scrolls down fast and creates 10\n // blocks all for loading, the grid will only load the last 2 - it will assume the blocks the user quickly\n // scrolled over are not needed to be loaded.\n InfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP = 2;\n __decorate$3([\n Autowired('rowRenderer')\n ], InfiniteCache.prototype, \"rowRenderer\", void 0);\n __decorate$3([\n Autowired(\"focusService\")\n ], InfiniteCache.prototype, \"focusService\", void 0);\n __decorate$3([\n __param(0, Qualifier('loggerFactory'))\n ], InfiniteCache.prototype, \"setBeans\", null);\n __decorate$3([\n PreDestroy\n ], InfiniteCache.prototype, \"destroyAllBlocks\", null);\n return InfiniteCache;\n}(BeanStub));\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar InfiniteRowModel = /** @class */ (function (_super) {\n __extends$3(InfiniteRowModel, _super);\n function InfiniteRowModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InfiniteRowModel.prototype.getRowBounds = function (index) {\n return {\n rowHeight: this.rowHeight,\n rowTop: this.rowHeight * index\n };\n };\n // we don't implement as lazy row heights is not supported in this row model\n InfiniteRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n return false;\n };\n InfiniteRowModel.prototype.init = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isRowModelInfinite()) {\n return;\n }\n this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n this.addEventListeners();\n this.addDestroyFunc(function () { return _this.destroyCache(); });\n this.verifyProps();\n };\n InfiniteRowModel.prototype.verifyProps = function () {\n if (this.gridOptionsWrapper.getInitialGroupOrderComparator() != null) {\n var message_1 = \"AG Grid: initialGroupOrderComparator cannot be used with Infinite Row Model. If using Infinite Row Model, then sorting is done on the server side, nothing to do with the client.\";\n _.doOnce(function () { return console.warn(message_1); }, 'IRM.InitialGroupOrderComparator');\n }\n };\n InfiniteRowModel.prototype.start = function () {\n this.setDatasource(this.gridOptionsWrapper.getDatasource());\n };\n InfiniteRowModel.prototype.destroyDatasource = function () {\n if (this.datasource) {\n this.getContext().destroyBean(this.datasource);\n this.rowRenderer.datasourceChanged();\n this.datasource = null;\n }\n };\n InfiniteRowModel.prototype.addEventListeners = function () {\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnEverything.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_STORE_UPDATED, this.onCacheUpdated.bind(this));\n };\n InfiniteRowModel.prototype.onFilterChanged = function () {\n this.reset();\n };\n InfiniteRowModel.prototype.onSortChanged = function () {\n this.reset();\n };\n InfiniteRowModel.prototype.onColumnEverything = function () {\n var resetRequired;\n // if cache params, we require reset only if sort model has changed. we don't need to check\n // for filter model, as the filter manager will fire an event when columns change that result\n // in the filter changing.\n if (this.cacheParams) {\n resetRequired = this.isSortModelDifferent();\n }\n else {\n // if no cacheParams, means first time creating the cache, so always create one\n resetRequired = true;\n }\n if (resetRequired) {\n this.reset();\n }\n };\n InfiniteRowModel.prototype.isSortModelDifferent = function () {\n return !_.jsonEquals(this.cacheParams.sortModel, this.sortController.getSortModel());\n };\n InfiniteRowModel.prototype.getType = function () {\n return Constants.ROW_MODEL_TYPE_INFINITE;\n };\n InfiniteRowModel.prototype.setDatasource = function (datasource) {\n this.destroyDatasource();\n this.datasource = datasource;\n // only reset if we have a valid datasource to working with\n if (datasource) {\n this.reset();\n }\n };\n InfiniteRowModel.prototype.isEmpty = function () {\n return !this.infiniteCache;\n };\n InfiniteRowModel.prototype.isRowsToRender = function () {\n return !!this.infiniteCache;\n };\n InfiniteRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n return this.infiniteCache ? this.infiniteCache.getRowNodesInRange(firstInRange, lastInRange) : [];\n };\n InfiniteRowModel.prototype.reset = function () {\n // important to return here, as the user could be setting filter or sort before\n // data-source is set\n if (!this.datasource) {\n return;\n }\n // if user is providing id's, then this means we can keep the selection between datasource hits,\n // as the rows will keep their unique id's even if, for example, server side sorting or filtering\n // is done.\n var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();\n var userGeneratingIds = getRowIdFunc != null;\n if (!userGeneratingIds) {\n this.selectionService.reset();\n }\n this.resetCache();\n var event = this.createModelUpdatedEvent();\n this.eventService.dispatchEvent(event);\n };\n InfiniteRowModel.prototype.createModelUpdatedEvent = function () {\n return {\n type: Events.EVENT_MODEL_UPDATED,\n // not sure if these should all be false - noticed if after implementing,\n // maybe they should be true?\n newPage: false,\n newData: false,\n keepRenderedRows: true,\n animate: false\n };\n };\n InfiniteRowModel.prototype.resetCache = function () {\n // if not first time creating a cache, need to destroy the old one\n this.destroyCache();\n this.cacheParams = {\n // the user provided datasource\n datasource: this.datasource,\n // sort and filter model\n filterModel: this.filterManager.getFilterModel(),\n sortModel: this.sortController.getSortModel(),\n rowNodeBlockLoader: this.rowNodeBlockLoader,\n // properties - this way we take a snapshot of them, so if user changes any, they will be\n // used next time we create a new cache, which is generally after a filter or sort change,\n // or a new datasource is set\n initialRowCount: this.defaultIfInvalid(this.gridOptionsWrapper.getInfiniteInitialRowCount(), 1),\n maxBlocksInCache: this.gridOptionsWrapper.getMaxBlocksInCache(),\n rowHeight: this.gridOptionsWrapper.getRowHeightAsNumber(),\n // if user doesn't provide overflow, we use default overflow of 1, so user can scroll past\n // the current page and request first row of next page\n overflowSize: this.defaultIfInvalid(this.gridOptionsWrapper.getCacheOverflowSize(), 1),\n // page size needs to be 1 or greater. having it at 1 would be silly, as you would be hitting the\n // server for one page at a time. so the default if not specified is 100.\n blockSize: this.defaultIfInvalid(this.gridOptionsWrapper.getCacheBlockSize(), 100),\n // the cache could create this, however it is also used by the pages, so handy to create it\n // here as the settings are also passed to the pages\n lastAccessedSequence: new NumberSequence()\n };\n this.infiniteCache = this.createBean(new InfiniteCache(this.cacheParams));\n };\n InfiniteRowModel.prototype.defaultIfInvalid = function (value, defaultValue) {\n return value > 0 ? value : defaultValue;\n };\n InfiniteRowModel.prototype.destroyCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache = this.destroyBean(this.infiniteCache);\n }\n };\n InfiniteRowModel.prototype.onCacheUpdated = function () {\n var event = this.createModelUpdatedEvent();\n this.eventService.dispatchEvent(event);\n };\n InfiniteRowModel.prototype.getRow = function (rowIndex) {\n if (!this.infiniteCache) {\n return undefined;\n }\n if (rowIndex >= this.infiniteCache.getRowCount()) {\n return undefined;\n }\n return this.infiniteCache.getRow(rowIndex);\n };\n InfiniteRowModel.prototype.getRowNode = function (id) {\n var result;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n });\n return result;\n };\n InfiniteRowModel.prototype.forEachNode = function (callback) {\n if (this.infiniteCache) {\n this.infiniteCache.forEachNodeDeep(callback);\n }\n };\n InfiniteRowModel.prototype.getTopLevelRowCount = function () {\n return this.getRowCount();\n };\n InfiniteRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n return topLevelIndex;\n };\n InfiniteRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n if (this.rowHeight !== 0) { // avoid divide by zero error\n var rowIndexForPixel = Math.floor(pixel / this.rowHeight);\n var lastRowIndex = this.getRowCount() - 1;\n if (rowIndexForPixel > lastRowIndex) {\n return lastRowIndex;\n }\n return rowIndexForPixel;\n }\n return 0;\n };\n InfiniteRowModel.prototype.getRowCount = function () {\n return this.infiniteCache ? this.infiniteCache.getRowCount() : 0;\n };\n InfiniteRowModel.prototype.isRowPresent = function (rowNode) {\n var foundRowNode = this.getRowNode(rowNode.id);\n return !!foundRowNode;\n };\n InfiniteRowModel.prototype.refreshCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache.refreshCache();\n }\n };\n InfiniteRowModel.prototype.purgeCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache.purgeCache();\n }\n };\n // for iRowModel\n InfiniteRowModel.prototype.isLastRowIndexKnown = function () {\n if (this.infiniteCache) {\n return this.infiniteCache.isLastRowIndexKnown();\n }\n return false;\n };\n InfiniteRowModel.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {\n if (this.infiniteCache) {\n this.infiniteCache.setRowCount(rowCount, lastRowIndexKnown);\n }\n };\n __decorate$2([\n Autowired('filterManager')\n ], InfiniteRowModel.prototype, \"filterManager\", void 0);\n __decorate$2([\n Autowired('sortController')\n ], InfiniteRowModel.prototype, \"sortController\", void 0);\n __decorate$2([\n Autowired('selectionService')\n ], InfiniteRowModel.prototype, \"selectionService\", void 0);\n __decorate$2([\n Autowired('rowRenderer')\n ], InfiniteRowModel.prototype, \"rowRenderer\", void 0);\n __decorate$2([\n Autowired('rowNodeBlockLoader')\n ], InfiniteRowModel.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate$2([\n PostConstruct\n ], InfiniteRowModel.prototype, \"init\", null);\n __decorate$2([\n PreDestroy\n ], InfiniteRowModel.prototype, \"destroyDatasource\", null);\n InfiniteRowModel = __decorate$2([\n Bean('rowModel')\n ], InfiniteRowModel);\n return InfiniteRowModel;\n}(BeanStub));\n\nvar InfiniteRowModelModule = {\n moduleName: ModuleNames.InfiniteRowModelModule,\n rowModels: { infinite: InfiniteRowModel }\n};\n\nvar BaseCreator = /** @class */ (function () {\n function BaseCreator() {\n }\n BaseCreator.prototype.setBeans = function (beans) {\n this.beans = beans;\n };\n BaseCreator.prototype.getFileName = function (fileName) {\n var extension = this.getDefaultFileExtension();\n if (fileName == null || !fileName.length) {\n fileName = this.getDefaultFileName();\n }\n return fileName.indexOf('.') === -1 ? fileName + \".\" + extension : fileName;\n };\n BaseCreator.prototype.getData = function (params) {\n var serializingSession = this.createSerializingSession(params);\n var data = this.beans.gridSerializer.serialize(serializingSession, params);\n return data;\n };\n return BaseCreator;\n}());\n\nvar BaseGridSerializingSession = /** @class */ (function () {\n function BaseGridSerializingSession(config) {\n this.groupColumns = [];\n var columnModel = config.columnModel, valueService = config.valueService, gridOptionsWrapper = config.gridOptionsWrapper, processCellCallback = config.processCellCallback, processHeaderCallback = config.processHeaderCallback, processGroupHeaderCallback = config.processGroupHeaderCallback, processRowGroupCallback = config.processRowGroupCallback;\n this.columnModel = columnModel;\n this.valueService = valueService;\n this.gridOptionsWrapper = gridOptionsWrapper;\n this.processCellCallback = processCellCallback;\n this.processHeaderCallback = processHeaderCallback;\n this.processGroupHeaderCallback = processGroupHeaderCallback;\n this.processRowGroupCallback = processRowGroupCallback;\n }\n BaseGridSerializingSession.prototype.prepare = function (columnsToExport) {\n this.groupColumns = columnsToExport.filter(function (col) { return !!col.getColDef().showRowGroup; });\n };\n BaseGridSerializingSession.prototype.extractHeaderValue = function (column) {\n var value = this.getHeaderName(this.processHeaderCallback, column);\n return value != null ? value : '';\n };\n BaseGridSerializingSession.prototype.extractRowCellValue = function (column, index, accumulatedRowIndex, type, node) {\n // we render the group summary text e.g. \"-> Parent -> Child\"...\n var hideOpenParents = this.gridOptionsWrapper.isGroupHideOpenParents();\n var value = (!hideOpenParents && this.shouldRenderGroupSummaryCell(node, column, index))\n ? this.createValueForGroupNode(node)\n : this.valueService.getValue(column, node);\n var processedValue = this.processCell({\n accumulatedRowIndex: accumulatedRowIndex,\n rowNode: node,\n column: column,\n value: value,\n processCellCallback: this.processCellCallback,\n type: type\n });\n return processedValue != null ? processedValue : '';\n };\n BaseGridSerializingSession.prototype.shouldRenderGroupSummaryCell = function (node, column, currentColumnIndex) {\n var _a;\n var isGroupNode = node && node.group;\n // only on group rows\n if (!isGroupNode) {\n return false;\n }\n var currentColumnGroupIndex = this.groupColumns.indexOf(column);\n if (currentColumnGroupIndex !== -1 && ((_a = node.groupData) === null || _a === void 0 ? void 0 : _a[column.getId()])) {\n return true;\n }\n var isGroupUseEntireRow = this.gridOptionsWrapper.isGroupUseEntireRow(this.columnModel.isPivotMode());\n return currentColumnIndex === 0 && isGroupUseEntireRow;\n };\n BaseGridSerializingSession.prototype.getHeaderName = function (callback, column) {\n if (callback) {\n return callback({\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n });\n }\n return this.columnModel.getDisplayNameForColumn(column, 'csv', true);\n };\n BaseGridSerializingSession.prototype.createValueForGroupNode = function (node) {\n if (this.processRowGroupCallback) {\n return this.processRowGroupCallback({\n node: node,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n });\n }\n var keys = [node.key];\n if (!this.gridOptionsWrapper.isGroupMultiAutoColumn()) {\n while (node.parent) {\n node = node.parent;\n keys.push(node.key);\n }\n }\n return keys.reverse().join(' -> ');\n };\n BaseGridSerializingSession.prototype.processCell = function (params) {\n var accumulatedRowIndex = params.accumulatedRowIndex, rowNode = params.rowNode, column = params.column, value = params.value, processCellCallback = params.processCellCallback, type = params.type;\n if (processCellCallback) {\n return processCellCallback({\n accumulatedRowIndex: accumulatedRowIndex,\n column: column,\n node: rowNode,\n value: value,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n type: type\n });\n }\n return value != null ? value : '';\n };\n return BaseGridSerializingSession;\n}());\n\nvar Downloader = /** @class */ (function () {\n function Downloader() {\n }\n Downloader.download = function (fileName, content) {\n var win = document.defaultView || window;\n if (!win) {\n console.warn('AG Grid: There is no `window` associated with the current `document`');\n return;\n }\n var element = document.createElement('a');\n // @ts-ignore\n var url = win.URL.createObjectURL(content);\n element.setAttribute('href', url);\n element.setAttribute('download', fileName);\n element.style.display = 'none';\n document.body.appendChild(element);\n element.dispatchEvent(new MouseEvent('click', {\n bubbles: false,\n cancelable: true,\n view: win\n }));\n document.body.removeChild(element);\n win.setTimeout(function () {\n // @ts-ignore\n win.URL.revokeObjectURL(url);\n }, 0);\n };\n return Downloader;\n}());\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LINE_SEPARATOR$1 = '\\r\\n';\nvar CsvSerializingSession = /** @class */ (function (_super) {\n __extends$2(CsvSerializingSession, _super);\n function CsvSerializingSession(config) {\n var _this = _super.call(this, config) || this;\n _this.isFirstLine = true;\n _this.result = '';\n var suppressQuotes = config.suppressQuotes, columnSeparator = config.columnSeparator;\n _this.suppressQuotes = suppressQuotes;\n _this.columnSeparator = columnSeparator;\n return _this;\n }\n CsvSerializingSession.prototype.addCustomContent = function (content) {\n var _this = this;\n if (!content) {\n return;\n }\n if (typeof content === 'string') {\n if (!/^\\s*\\n/.test(content)) {\n this.beginNewLine();\n }\n // replace whatever newlines are supplied with the style we're using\n content = content.replace(/\\r?\\n/g, LINE_SEPARATOR$1);\n this.result += content;\n }\n else {\n content.forEach(function (row) {\n _this.beginNewLine();\n row.forEach(function (cell, index) {\n if (index !== 0) {\n _this.result += _this.columnSeparator;\n }\n _this.result += _this.putInQuotes(cell.data.value || '');\n if (cell.mergeAcross) {\n _this.appendEmptyCells(cell.mergeAcross);\n }\n });\n });\n }\n };\n CsvSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n this.beginNewLine();\n return {\n onColumn: this.onNewHeaderGroupingRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewHeaderGroupingRowColumn = function (columnGroup, header, index, span) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(header);\n this.appendEmptyCells(span);\n };\n CsvSerializingSession.prototype.appendEmptyCells = function (count) {\n for (var i = 1; i <= count; i++) {\n this.result += this.columnSeparator + this.putInQuotes(\"\");\n }\n };\n CsvSerializingSession.prototype.onNewHeaderRow = function () {\n this.beginNewLine();\n return {\n onColumn: this.onNewHeaderRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewHeaderRowColumn = function (column, index) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(this.extractHeaderValue(column));\n };\n CsvSerializingSession.prototype.onNewBodyRow = function () {\n this.beginNewLine();\n return {\n onColumn: this.onNewBodyRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewBodyRowColumn = function (column, index, node) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(this.extractRowCellValue(column, index, index, Constants.EXPORT_TYPE_CSV, node));\n };\n CsvSerializingSession.prototype.putInQuotes = function (value) {\n if (this.suppressQuotes) {\n return value;\n }\n if (value === null || value === undefined) {\n return '\"\"';\n }\n var stringValue;\n if (typeof value === 'string') {\n stringValue = value;\n }\n else if (typeof value.toString === 'function') {\n stringValue = value.toString();\n }\n else {\n console.warn('AG Grid: unknown value type during csv conversion');\n stringValue = '';\n }\n // replace each \" with \"\" (ie two sets of double quotes is how to do double quotes in csv)\n var valueEscaped = stringValue.replace(/\"/g, \"\\\"\\\"\");\n return '\"' + valueEscaped + '\"';\n };\n CsvSerializingSession.prototype.parse = function () {\n return this.result;\n };\n CsvSerializingSession.prototype.beginNewLine = function () {\n if (!this.isFirstLine) {\n this.result += LINE_SEPARATOR$1;\n }\n this.isFirstLine = false;\n };\n return CsvSerializingSession;\n}(BaseGridSerializingSession));\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CsvCreator = /** @class */ (function (_super) {\n __extends$1(CsvCreator, _super);\n function CsvCreator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CsvCreator.prototype.postConstruct = function () {\n this.setBeans({\n gridSerializer: this.gridSerializer,\n gridOptionsWrapper: this.gridOptionsWrapper\n });\n };\n CsvCreator.prototype.getMergedParams = function (params) {\n var baseParams = this.gridOptionsWrapper.getDefaultExportParams('csv');\n return Object.assign({}, baseParams, params);\n };\n CsvCreator.prototype.export = function (userParams) {\n if (this.isExportSuppressed()) {\n console.warn(\"AG Grid: Export cancelled. Export is not allowed as per your configuration.\");\n return '';\n }\n var mergedParams = this.getMergedParams(userParams);\n var data = this.getData(mergedParams);\n var packagedFile = new Blob([\"\\ufeff\", data], { type: 'text/plain' });\n Downloader.download(this.getFileName(mergedParams.fileName), packagedFile);\n return data;\n };\n CsvCreator.prototype.exportDataAsCsv = function (params) {\n return this.export(params);\n };\n CsvCreator.prototype.getDataAsCsv = function (params, skipDefaultParams) {\n if (skipDefaultParams === void 0) { skipDefaultParams = false; }\n var mergedParams = skipDefaultParams\n ? Object.assign({}, params)\n : this.getMergedParams(params);\n return this.getData(mergedParams);\n };\n CsvCreator.prototype.getDefaultFileName = function () {\n return 'export.csv';\n };\n CsvCreator.prototype.getDefaultFileExtension = function () {\n return 'csv';\n };\n CsvCreator.prototype.createSerializingSession = function (params) {\n var _a = this, columnModel = _a.columnModel, valueService = _a.valueService, gridOptionsWrapper = _a.gridOptionsWrapper;\n var _b = params, processCellCallback = _b.processCellCallback, processHeaderCallback = _b.processHeaderCallback, processGroupHeaderCallback = _b.processGroupHeaderCallback, processRowGroupCallback = _b.processRowGroupCallback, suppressQuotes = _b.suppressQuotes, columnSeparator = _b.columnSeparator;\n return new CsvSerializingSession({\n columnModel: columnModel,\n valueService: valueService,\n gridOptionsWrapper: gridOptionsWrapper,\n processCellCallback: processCellCallback || undefined,\n processHeaderCallback: processHeaderCallback || undefined,\n processGroupHeaderCallback: processGroupHeaderCallback || undefined,\n processRowGroupCallback: processRowGroupCallback || undefined,\n suppressQuotes: suppressQuotes || false,\n columnSeparator: columnSeparator || ','\n });\n };\n CsvCreator.prototype.isExportSuppressed = function () {\n return this.gridOptionsWrapper.isSuppressCsvExport();\n };\n __decorate$1([\n Autowired('columnModel')\n ], CsvCreator.prototype, \"columnModel\", void 0);\n __decorate$1([\n Autowired('valueService')\n ], CsvCreator.prototype, \"valueService\", void 0);\n __decorate$1([\n Autowired('gridSerializer')\n ], CsvCreator.prototype, \"gridSerializer\", void 0);\n __decorate$1([\n Autowired('gridOptionsWrapper')\n ], CsvCreator.prototype, \"gridOptionsWrapper\", void 0);\n __decorate$1([\n PostConstruct\n ], CsvCreator.prototype, \"postConstruct\", null);\n CsvCreator = __decorate$1([\n Bean('csvCreator')\n ], CsvCreator);\n return CsvCreator;\n}(BaseCreator));\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RowType;\n(function (RowType) {\n RowType[RowType[\"HEADER_GROUPING\"] = 0] = \"HEADER_GROUPING\";\n RowType[RowType[\"HEADER\"] = 1] = \"HEADER\";\n RowType[RowType[\"BODY\"] = 2] = \"BODY\";\n})(RowType || (RowType = {}));\nvar GridSerializer = /** @class */ (function (_super) {\n __extends(GridSerializer, _super);\n function GridSerializer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridSerializer.prototype.serialize = function (gridSerializingSession, params) {\n if (params === void 0) { params = {}; }\n var columnsToExport = this.getColumnsToExport(params.allColumns, params.columnKeys);\n var serializeChain = _.compose(\n // first pass, put in the header names of the cols\n this.prepareSession(columnsToExport), this.prependContent(params), this.exportColumnGroups(params, columnsToExport), this.exportHeaders(params, columnsToExport), this.processPinnedTopRows(params, columnsToExport), this.processRows(params, columnsToExport), this.processPinnedBottomRows(params, columnsToExport), this.appendContent(params));\n return serializeChain(gridSerializingSession).parse();\n };\n GridSerializer.prototype.processRow = function (gridSerializingSession, params, columnsToExport, node) {\n var rowSkipper = params.shouldRowBeSkipped || (function () { return false; });\n var gridOptionsWrapper = this.gridOptionsWrapper;\n var context = gridOptionsWrapper.getContext();\n var api = gridOptionsWrapper.getApi();\n var columnApi = gridOptionsWrapper.getColumnApi();\n var skipSingleChildrenGroup = gridOptionsWrapper.isGroupRemoveSingleChildren();\n var skipLowestSingleChildrenGroup = gridOptionsWrapper.isGroupRemoveLowestSingleChildren();\n // if onlySelected, we ignore groupHideOpenParents as the user has explicitly selected the rows they wish to export.\n // similarly, if specific rowNodes are provided we do the same. (the clipboard service uses rowNodes to define which rows to export)\n var isClipboardExport = params.rowPositions != null;\n var isExplicitExportSelection = isClipboardExport || !!params.onlySelected;\n var hideOpenParents = gridOptionsWrapper.isGroupHideOpenParents() && !isExplicitExportSelection;\n var isLeafNode = this.columnModel.isPivotMode() ? node.leafGroup : !node.group;\n var skipRowGroups = params.skipGroups || params.skipRowGroups;\n var shouldSkipLowestGroup = skipLowestSingleChildrenGroup && node.leafGroup;\n var shouldSkipCurrentGroup = node.allChildrenCount === 1 && (skipSingleChildrenGroup || shouldSkipLowestGroup);\n if (skipRowGroups && params.skipGroups) {\n _.doOnce(function () { return console.warn('AG Grid: Since v25.2 `skipGroups` has been renamed to `skipRowGroups`.'); }, 'gridSerializer-skipGroups');\n }\n if ((!isLeafNode && (params.skipRowGroups || shouldSkipCurrentGroup || hideOpenParents)) ||\n (params.onlySelected && !node.isSelected()) ||\n (params.skipPinnedTop && node.rowPinned === 'top') ||\n (params.skipPinnedBottom && node.rowPinned === 'bottom')) {\n return;\n }\n // if we are in pivotMode, then the grid will show the root node only\n // if it's not a leaf group\n var nodeIsRootNode = node.level === -1;\n if (nodeIsRootNode && !node.leafGroup && (!node.footer || !isClipboardExport)) {\n return;\n }\n var shouldRowBeSkipped = rowSkipper({ node: node, api: api, columnApi: columnApi, context: context });\n if (shouldRowBeSkipped) {\n return;\n }\n var rowAccumulator = gridSerializingSession.onNewBodyRow();\n columnsToExport.forEach(function (column, index) {\n rowAccumulator.onColumn(column, index, node);\n });\n if (params.getCustomContentBelowRow) {\n var content = params.getCustomContentBelowRow({ node: node, api: api, columnApi: columnApi, context: context });\n if (content) {\n gridSerializingSession.addCustomContent(content);\n }\n }\n };\n GridSerializer.prototype.appendContent = function (params) {\n return function (gridSerializingSession) {\n var appendContent = params.customFooter || params.appendContent;\n if (appendContent) {\n if (params.customFooter) {\n _.doOnce(function () { return console.warn('AG Grid: Since version 25.2.0 the `customFooter` param has been deprecated. Use `appendContent` instead.'); }, 'gridSerializer-customFooter');\n }\n gridSerializingSession.addCustomContent(appendContent);\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.prependContent = function (params) {\n return function (gridSerializingSession) {\n var prependContent = params.customHeader || params.prependContent;\n if (prependContent) {\n if (params.customHeader) {\n _.doOnce(function () { return console.warn('AG Grid: Since version 25.2.0 the `customHeader` param has been deprecated. Use `prependContent` instead.'); }, 'gridSerializer-customHeader');\n }\n gridSerializingSession.addCustomContent(prependContent);\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.prepareSession = function (columnsToExport) {\n return function (gridSerializingSession) {\n gridSerializingSession.prepare(columnsToExport);\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.exportColumnGroups = function (params, columnsToExport) {\n var _this = this;\n return function (gridSerializingSession) {\n if (!params.skipColumnGroupHeaders) {\n var groupInstanceIdCreator = new GroupInstanceIdCreator();\n var displayedGroups = _this.displayedGroupCreator.createDisplayedGroups(columnsToExport, _this.columnModel.getGridBalancedTree(), groupInstanceIdCreator, null);\n _this.recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession, params.processGroupHeaderCallback);\n }\n else if (params.columnGroups) {\n _.doOnce(function () { return console.warn('AG Grid: Since v25.2 the `columnGroups` param has deprecated, and groups are exported by default.'); }, 'gridSerializer-columnGroups');\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.exportHeaders = function (params, columnsToExport) {\n return function (gridSerializingSession) {\n if (!params.skipHeader && !params.skipColumnHeaders) {\n var gridRowIterator_1 = gridSerializingSession.onNewHeaderRow();\n columnsToExport.forEach(function (column, index) {\n gridRowIterator_1.onColumn(column, index, undefined);\n });\n }\n else if (params.skipHeader) {\n _.doOnce(function () { return console.warn('AG Grid: Since v25.2 the `skipHeader` param has been renamed to `skipColumnHeaders`.'); }, 'gridSerializer-skipHeader');\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.processPinnedTopRows = function (params, columnsToExport) {\n var _this = this;\n return function (gridSerializingSession) {\n var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);\n if (params.rowPositions) {\n params.rowPositions\n // only pinnedTop rows, other models are processed by `processRows` and `processPinnedBottomsRows`\n .filter(function (position) { return position.rowPinned === 'top'; })\n .sort(function (a, b) { return a.rowIndex - b.rowIndex; })\n .map(function (position) { return _this.pinnedRowModel.getPinnedTopRow(position.rowIndex); })\n .forEach(processRow);\n }\n else {\n _this.pinnedRowModel.forEachPinnedTopRow(processRow);\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.processRows = function (params, columnsToExport) {\n var _this = this;\n return function (gridSerializingSession) {\n // when in pivot mode, we always render cols on screen, never 'all columns'\n var rowModel = _this.rowModel;\n var rowModelType = rowModel.getType();\n var usingCsrm = rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n var usingSsrm = rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n var onlySelectedNonStandardModel = !usingCsrm && params.onlySelected;\n var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);\n var _a = params.exportedRows, exportedRows = _a === void 0 ? 'filteredAndSorted' : _a;\n if (params.rowPositions) {\n params.rowPositions\n // pinnedRows are processed by `processPinnedTopRows` and `processPinnedBottomsRows`\n .filter(function (position) { return position.rowPinned == null; })\n .sort(function (a, b) { return a.rowIndex - b.rowIndex; })\n .map(function (position) { return rowModel.getRow(position.rowIndex); })\n .forEach(processRow);\n }\n else if (_this.columnModel.isPivotMode()) {\n if (usingCsrm) {\n rowModel.forEachPivotNode(processRow);\n }\n else {\n // must be enterprise, so we can just loop through all the nodes\n rowModel.forEachNode(processRow);\n }\n }\n else {\n // onlySelectedAllPages: user doing pagination and wants selected items from\n // other pages, so cannot use the standard row model as it won't have rows from\n // other pages.\n // onlySelectedNonStandardModel: if user wants selected in non standard row model\n // (eg viewport) then again RowModel cannot be used, so need to use selected instead.\n if (params.onlySelectedAllPages || onlySelectedNonStandardModel) {\n var selectedNodes = _this.selectionService.getSelectedNodes();\n selectedNodes.forEach(processRow);\n }\n else {\n // here is everything else - including standard row model and selected. we don't use\n // the selection model even when just using selected, so that the result is the order\n // of the rows appearing on the screen.\n if (exportedRows === 'all') {\n rowModel.forEachNode(processRow);\n }\n else if (usingCsrm) {\n rowModel.forEachNodeAfterFilterAndSort(processRow);\n }\n else if (usingSsrm) {\n rowModel.forEachNodeAfterFilterAndSort(processRow);\n }\n else {\n rowModel.forEachNode(processRow);\n }\n }\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.processPinnedBottomRows = function (params, columnsToExport) {\n var _this = this;\n return function (gridSerializingSession) {\n var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);\n if (params.rowPositions) {\n params.rowPositions\n // only pinnedBottom rows, other models are processed by `processRows` and `processPinnedTopRows`\n .filter(function (position) { return position.rowPinned === 'bottom'; })\n .sort(function (a, b) { return a.rowIndex - b.rowIndex; })\n .map(function (position) { return _this.pinnedRowModel.getPinnedBottomRow(position.rowIndex); })\n .forEach(processRow);\n }\n else {\n _this.pinnedRowModel.forEachPinnedBottomRow(processRow);\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.getColumnsToExport = function (allColumns, columnKeys) {\n if (allColumns === void 0) { allColumns = false; }\n var isPivotMode = this.columnModel.isPivotMode();\n if (columnKeys && columnKeys.length) {\n return this.columnModel.getGridColumns(columnKeys);\n }\n if (allColumns && !isPivotMode) {\n // add auto group column for tree data\n var columns = this.gridOptionsWrapper.isTreeData()\n ? this.columnModel.getGridColumns([Constants.GROUP_AUTO_COLUMN_ID])\n : [];\n return columns.concat(this.columnModel.getAllPrimaryColumns() || []);\n }\n return this.columnModel.getAllDisplayedColumns();\n };\n GridSerializer.prototype.recursivelyAddHeaderGroups = function (displayedGroups, gridSerializingSession, processGroupHeaderCallback) {\n var directChildrenHeaderGroups = [];\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n if (!columnGroup.getChildren) {\n return;\n }\n columnGroup.getChildren().forEach(function (it) { return directChildrenHeaderGroups.push(it); });\n });\n if (displayedGroups.length > 0 && displayedGroups[0] instanceof ColumnGroup) {\n this.doAddHeaderHeader(gridSerializingSession, displayedGroups, processGroupHeaderCallback);\n }\n if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {\n this.recursivelyAddHeaderGroups(directChildrenHeaderGroups, gridSerializingSession, processGroupHeaderCallback);\n }\n };\n GridSerializer.prototype.doAddHeaderHeader = function (gridSerializingSession, displayedGroups, processGroupHeaderCallback) {\n var _this = this;\n var gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();\n var columnIndex = 0;\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n var name;\n if (processGroupHeaderCallback) {\n name = processGroupHeaderCallback({\n columnGroup: columnGroup,\n api: _this.gridOptionsWrapper.getApi(),\n columnApi: _this.gridOptionsWrapper.getColumnApi(),\n context: _this.gridOptionsWrapper.getContext()\n });\n }\n else {\n name = _this.columnModel.getDisplayNameForColumnGroup(columnGroup, 'header');\n }\n var collapsibleGroupRanges = columnGroup.getLeafColumns().reduce(function (collapsibleGroups, currentColumn, currentIdx, arr) {\n var lastGroup = _.last(collapsibleGroups);\n var groupShow = currentColumn.getColumnGroupShow() === 'open';\n if (!groupShow) {\n if (lastGroup && lastGroup[1] == null) {\n lastGroup[1] = currentIdx - 1;\n }\n }\n else if (!lastGroup || lastGroup[1] != null) {\n lastGroup = [currentIdx];\n collapsibleGroups.push(lastGroup);\n }\n if (currentIdx === arr.length - 1 && lastGroup && lastGroup[1] == null) {\n lastGroup[1] = currentIdx;\n }\n return collapsibleGroups;\n }, []);\n gridRowIterator.onColumn(columnGroup, name || '', columnIndex++, columnGroup.getLeafColumns().length - 1, collapsibleGroupRanges);\n });\n };\n __decorate([\n Autowired('displayedGroupCreator')\n ], GridSerializer.prototype, \"displayedGroupCreator\", void 0);\n __decorate([\n Autowired('columnModel')\n ], GridSerializer.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('rowModel')\n ], GridSerializer.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], GridSerializer.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('selectionService')\n ], GridSerializer.prototype, \"selectionService\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], GridSerializer.prototype, \"rowPositionUtils\", void 0);\n GridSerializer = __decorate([\n Bean(\"gridSerializer\")\n ], GridSerializer);\n return GridSerializer;\n}(BeanStub));\n\nvar CsvExportModule = {\n moduleName: ModuleNames.CsvExportModule,\n beans: [CsvCreator, GridSerializer]\n};\n\nvar LINE_SEPARATOR = '\\r\\n';\nvar XmlFactory = /** @class */ (function () {\n function XmlFactory() {\n }\n XmlFactory.createHeader = function (headerElement) {\n if (headerElement === void 0) { headerElement = {}; }\n var headerStart = '';\n var keys = ['version'];\n if (!headerElement.version) {\n headerElement.version = \"1.0\";\n }\n if (headerElement.encoding) {\n keys.push('encoding');\n }\n if (headerElement.standalone) {\n keys.push('standalone');\n }\n var att = keys.map(function (key) { return key + \"=\\\"\" + headerElement[key] + \"\\\"\"; }).join(' ');\n return headerStart + \"xml \" + att + \" \" + headerEnd;\n };\n XmlFactory.createXml = function (xmlElement, booleanTransformer) {\n var _this = this;\n var props = '';\n if (xmlElement.properties) {\n if (xmlElement.properties.prefixedAttributes) {\n xmlElement.properties.prefixedAttributes.forEach(function (prefixedSet) {\n Object.keys(prefixedSet.map).forEach(function (key) {\n props += _this.returnAttributeIfPopulated(prefixedSet.prefix + key, prefixedSet.map[key], booleanTransformer);\n });\n });\n }\n if (xmlElement.properties.rawMap) {\n Object.keys(xmlElement.properties.rawMap).forEach(function (key) {\n props += _this.returnAttributeIfPopulated(key, xmlElement.properties.rawMap[key], booleanTransformer);\n });\n }\n }\n var result = '<' + xmlElement.name + props;\n if (!xmlElement.children && xmlElement.textNode == null) {\n return result + '/>' + LINE_SEPARATOR;\n }\n if (xmlElement.textNode != null) {\n return result + '>' + xmlElement.textNode + '' + LINE_SEPARATOR;\n }\n result += '>' + LINE_SEPARATOR;\n if (xmlElement.children) {\n xmlElement.children.forEach(function (it) {\n result += _this.createXml(it, booleanTransformer);\n });\n }\n return result + '' + LINE_SEPARATOR;\n };\n XmlFactory.returnAttributeIfPopulated = function (key, value, booleanTransformer) {\n if (!value && value !== '' && value !== 0) {\n return '';\n }\n var xmlValue = value;\n if ((typeof (value) === 'boolean')) {\n if (booleanTransformer) {\n xmlValue = booleanTransformer(value);\n }\n }\n return \" \" + key + \"=\\\"\" + xmlValue + \"\\\"\";\n };\n return XmlFactory;\n}());\n\nvar __values = (undefined && undefined.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n// table for crc calculation\n// from: https://referencesource.microsoft.com/#System/sys/System/IO/compression/Crc32Helper.cs,3b31978c7d7f7246,references\nvar crcTable = new Uint32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,\n 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,\n 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,\n 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,\n 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,\n 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,\n 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,\n 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,\n 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,\n 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,\n 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,\n 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,\n 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,\n 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,\n 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,\n 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,\n 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,\n 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,\n 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,\n 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,\n 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,\n 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,\n 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,\n 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,\n 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,\n 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,\n 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,\n 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,\n 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,\n 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,\n 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,\n 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,\n 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d\n]);\nvar ZipContainer = /** @class */ (function () {\n function ZipContainer() {\n }\n ZipContainer.addFolders = function (paths) {\n paths.forEach(this.addFolder.bind(this));\n };\n ZipContainer.addFolder = function (path) {\n this.folders.push({\n path: path,\n created: new Date(),\n isBase64: false\n });\n };\n ZipContainer.addFile = function (path, content, isBase64) {\n if (isBase64 === void 0) { isBase64 = false; }\n this.files.push({\n path: path,\n created: new Date(),\n content: content,\n isBase64: isBase64\n });\n };\n ZipContainer.getContent = function (mimeType) {\n if (mimeType === void 0) { mimeType = 'application/zip'; }\n var textOutput = this.buildFileStream();\n var uInt8Output = this.buildUint8Array(textOutput);\n this.clearStream();\n return new Blob([uInt8Output], { type: mimeType });\n };\n ZipContainer.clearStream = function () {\n this.folders = [];\n this.files = [];\n };\n ZipContainer.buildFileStream = function (fData) {\n var e_1, _a;\n if (fData === void 0) { fData = ''; }\n var totalFiles = this.folders.concat(this.files);\n var len = totalFiles.length;\n var foData = '';\n var lL = 0;\n var cL = 0;\n try {\n for (var totalFiles_1 = __values(totalFiles), totalFiles_1_1 = totalFiles_1.next(); !totalFiles_1_1.done; totalFiles_1_1 = totalFiles_1.next()) {\n var currentFile = totalFiles_1_1.value;\n var _b = this.getHeader(currentFile, lL), fileHeader = _b.fileHeader, folderHeader = _b.folderHeader, content = _b.content;\n lL += fileHeader.length + content.length;\n cL += folderHeader.length;\n fData += fileHeader + content;\n foData += folderHeader;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (totalFiles_1_1 && !totalFiles_1_1.done && (_a = totalFiles_1.return)) _a.call(totalFiles_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n var foEnd = this.buildFolderEnd(len, cL, lL);\n return fData + foData + foEnd;\n };\n ZipContainer.getHeader = function (currentFile, offset) {\n var content = currentFile.content, path = currentFile.path, created = currentFile.created, isBase64 = currentFile.isBase64;\n var utf8_encode = _.utf8_encode, decToHex = _.decToHex;\n var utfPath = utf8_encode(path);\n var isUTF8 = utfPath !== path;\n var time = this.convertTime(created);\n var dt = this.convertDate(created);\n var extraFields = '';\n if (isUTF8) {\n var uExtraFieldPath = decToHex(1, 1) + decToHex(this.getFromCrc32Table(utfPath), 4) + utfPath;\n extraFields = \"\\x75\\x70\" + decToHex(uExtraFieldPath.length, 2) + uExtraFieldPath;\n }\n var _a = !content ? { size: 0, content: '' } : this.getConvertedContent(content, isBase64), size = _a.size, convertedContent = _a.content;\n var header = '\\x0A\\x00' +\n (isUTF8 ? '\\x00\\x08' : '\\x00\\x00') +\n '\\x00\\x00' +\n decToHex(time, 2) + // last modified time\n decToHex(dt, 2) + // last modified date\n decToHex(size ? this.getFromCrc32Table(convertedContent) : 0, 4) +\n decToHex(size, 4) + // compressed size\n decToHex(size, 4) + // uncompressed size\n decToHex(utfPath.length, 2) + // file name length\n decToHex(extraFields.length, 2); // extra field length\n var fileHeader = 'PK\\x03\\x04' + header + utfPath + extraFields;\n var folderHeader = 'PK\\x01\\x02' + // central header\n '\\x14\\x00' +\n header + // file header\n '\\x00\\x00' +\n '\\x00\\x00' +\n '\\x00\\x00' +\n (content ? '\\x00\\x00\\x00\\x00' : '\\x10\\x00\\x00\\x00') + // external file attributes\n decToHex(offset, 4) + // relative offset of local header\n utfPath + // file name\n extraFields; // extra field\n return { fileHeader: fileHeader, folderHeader: folderHeader, content: convertedContent || '' };\n };\n ZipContainer.getConvertedContent = function (content, isBase64) {\n if (isBase64 === void 0) { isBase64 = false; }\n if (isBase64) {\n content = content.split(';base64,')[1];\n }\n content = isBase64 ? atob(content) : content;\n return {\n size: content.length,\n content: content\n };\n };\n ZipContainer.buildFolderEnd = function (tLen, cLen, lLen) {\n var decToHex = _.decToHex;\n return 'PK\\x05\\x06' + // central folder end\n '\\x00\\x00' +\n '\\x00\\x00' +\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(cLen, 4) + // size of the central folder\n decToHex(lLen, 4) + // central folder start offset\n '\\x00\\x00';\n };\n ZipContainer.buildUint8Array = function (content) {\n var uint8 = new Uint8Array(content.length);\n for (var i = 0; i < uint8.length; i++) {\n uint8[i] = content.charCodeAt(i);\n }\n return uint8;\n };\n ZipContainer.getFromCrc32Table = function (content) {\n if (!content.length) {\n return 0;\n }\n var size = content.length;\n var iterable = new Uint8Array(size);\n for (var i = 0; i < size; i++) {\n iterable[i] = content.charCodeAt(i);\n }\n var crc = 0 ^ (-1);\n var j = 0;\n var k = 0;\n var l = 0;\n for (var i = 0; i < size; i++) {\n j = iterable[i];\n k = (crc ^ j) & 0xFF;\n l = crcTable[k];\n crc = (crc >>> 8) ^ l;\n }\n return crc ^ (-1);\n };\n ZipContainer.convertTime = function (date) {\n var time = date.getHours();\n time <<= 6;\n time = time | date.getMinutes();\n time <<= 5;\n time = time | date.getSeconds() / 2;\n return time;\n };\n ZipContainer.convertDate = function (date) {\n var dt = date.getFullYear() - 1980;\n dt <<= 4;\n dt = dt | (date.getMonth() + 1);\n dt <<= 5;\n dt = dt | date.getDate();\n return dt;\n };\n ZipContainer.folders = [];\n ZipContainer.files = [];\n return ZipContainer;\n}());\n\nvar AllCommunityModules = [ClientSideRowModelModule, InfiniteRowModelModule, CsvExportModule];\n\nModuleRegistry.registerModules(AllCommunityModules);\n\nexport { AbstractHeaderCellCtrl, AgAbstractField, AgAngleSelect, AgCheckbox, AgColorPicker, AgDialog, AgGroupComponent, AgInputNumberField, AgInputRange, AgInputTextArea, AgInputTextField, AgMenuItemComponent, AgMenuList, AgMenuPanel, AgPanel, AgPromise, AgPromiseStatus, AgRadioButton, AgSelect, AgSlider, AgStackComponentsRegistry, AgToggleButton, AlignedGridsService, AllCommunityModules, AnimateShowChangeCellRenderer, AnimateSlideCellRenderer, AnimationFrameService, AutoScrollService, AutoWidthCalculator, Autowired, BarColumnLabelPlacement, BaseComponentWrapper, BaseCreator, BaseGridSerializingSession, Bean, BeanStub, Beans, BodyDropPivotTarget, BodyDropTarget, CHART_TOOLBAR_ALLOW_LIST, CHART_TOOL_PANEL_ALLOW_LIST, CHART_TOOL_PANEL_MENU_OPTIONS, CellComp, CellCtrl, CellNavigationService, CellPositionUtils, CellRangeType, ChangedPath, CheckboxSelectionComponent, ClientSideRowModelModule, ClientSideRowModelSteps, ColDefUtil, Color, Column, ColumnApi, ColumnFactory, ColumnGroup, ColumnKeyCreator, ColumnModel, ColumnUtils, Component, ComponentUtil, Constants, Context, CssClassApplier, CssClassManager, CsvCreator, CsvExportModule, CtrlsService, CustomTooltipFeature, DEFAULT_CHART_GROUPS, DateFilter, DisplayedGroupCreator, Downloader, DragAndDropService, DragService, DragSourceType, Environment, EventService, Events, ExcelFactoryMode, ExpressionService, FilterManager, FloatingFilterMapper, FocusService, Grid, GridApi, GridBodyComp, GridBodyCtrl, GridComp, GridCoreCreator, GridCtrl, GridHeaderComp, GridHeaderCtrl, GridOptionsWrapper, GridSerializer, GroupCellRenderer, GroupCellRendererCtrl, GroupInstanceIdCreator, HeaderCellCtrl, HeaderFilterCellComp, HeaderFilterCellCtrl, HeaderGroupCellCtrl, HeaderNavigationDirection, HeaderNavigationService, HeaderPositionUtils, HeaderRowComp, HeaderRowContainerComp, HeaderRowContainerCtrl, HeaderRowCtrl, HeaderRowType, HorizontalDirection, HorizontalResizeService, InfiniteRowModelModule, KeyCode, LargeTextCellEditor, LayoutCssClasses, Logger, LoggerFactory, ManagedFocusFeature, ModuleNames, ModuleRegistry, MouseEventService, MoveColumnFeature, NavigationService, NumberFilter, NumberSequence, Optional, PaginationProxy, PinnedRowModel, PopupComponent, PopupEditorWrapper, PopupSelectCellEditor, PopupService, PopupTextCellEditor, PositionableFeature, PostConstruct, PreConstruct, PreDestroy, PropertyKeys, ProvidedColumnGroup, ProvidedFilter, Qualifier, QuerySelector, RefSelector, ResizeObserverService, RowAnimationCssClasses, RowContainerComp, RowContainerCtrl, RowContainerName, RowContainerType, RowCtrl, RowHighlightPosition, RowNode, RowNodeBlock, RowNodeBlockLoader, RowNodeSorter, RowPositionUtils, RowRenderer, RowType, ScalarFilter, ScrollVisibleService, SelectCellEditor, SelectableService, SelectionHandleType, SelectionService, ServerSideTransactionResultStatus, SetLeftFeature, SimpleFilter, SortController, SortIndicatorComp, StandardMenuFactory, StylingService, TabGuardComp, TabGuardCtrl, TabbedLayout, TemplateService, TextCellEditor, TextFilter, TextFloatingFilter, Timer, TouchListener, UserComponentFactory, UserComponentRegistry, ValueCache, ValueFormatterService, ValueService, VanillaFrameworkOverrides, VerticalDirection, VirtualList, XmlFactory, ZipContainer, _, defaultGroupComparator, getRowContainerTypeForName, simpleHttpRequest, stringToArray };\n","import { __rest } from 'tslib';\nimport * as i0 from '@angular/core';\nimport { Component, ContentChildren, Input, NgZone, Injectable, EventEmitter, ViewEncapsulation, Output, NgModule } from '@angular/core';\nimport { VanillaFrameworkOverrides, AgPromise, BaseComponentWrapper, ComponentUtil, Grid } from 'ag-grid-community';\n\nclass AgGridColumn {\n hasChildColumns() {\n if (this.childColumns && this.childColumns.length > 0) {\n // necessary because of https://github.com/angular/angular/issues/10098\n return !(this.childColumns.length === 1 && this.childColumns.first === this);\n }\n return false;\n }\n toColDef() {\n let colDef = this.createColDefFromGridColumn(this);\n if (this.hasChildColumns()) {\n colDef[\"children\"] = this.getChildColDefs(this.childColumns);\n }\n return colDef;\n }\n getChildColDefs(childColumns) {\n return childColumns\n // necessary because of https://github.com/angular/angular/issues/10098\n .filter(column => !column.hasChildColumns())\n .map((column) => {\n return column.toColDef();\n });\n }\n createColDefFromGridColumn(from) {\n let { childColumns } = from, colDef = __rest(from, [\"childColumns\"]);\n return colDef;\n }\n}\nAgGridColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgGridColumn, deps: [], target: i0.ɵɵFactoryTarget.Component });\nAgGridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AgGridColumn, selector: \"ag-grid-column\", inputs: { filterFramework: \"filterFramework\", filterParams: \"filterParams\", floatingFilterComponent: \"floatingFilterComponent\", floatingFilterComponentParams: \"floatingFilterComponentParams\", floatingFilterComponentFramework: \"floatingFilterComponentFramework\", filter: \"filter\", headerName: \"headerName\", headerValueGetter: \"headerValueGetter\", headerTooltip: \"headerTooltip\", headerClass: \"headerClass\", suppressHeaderKeyboardEvent: \"suppressHeaderKeyboardEvent\", columnGroupShow: \"columnGroupShow\", toolPanelClass: \"toolPanelClass\", suppressColumnsToolPanel: \"suppressColumnsToolPanel\", suppressFiltersToolPanel: \"suppressFiltersToolPanel\", tooltipComponent: \"tooltipComponent\", tooltipComponentFramework: \"tooltipComponentFramework\", tooltipComponentParams: \"tooltipComponentParams\", children: \"children\", groupId: \"groupId\", openByDefault: \"openByDefault\", marryChildren: \"marryChildren\", headerGroupComponent: \"headerGroupComponent\", headerGroupComponentFramework: \"headerGroupComponentFramework\", headerGroupComponentParams: \"headerGroupComponentParams\", colId: \"colId\", field: \"field\", type: \"type\", valueGetter: \"valueGetter\", valueFormatter: \"valueFormatter\", refData: \"refData\", keyCreator: \"keyCreator\", equals: \"equals\", tooltipField: \"tooltipField\", tooltipValueGetter: \"tooltipValueGetter\", checkboxSelection: \"checkboxSelection\", showDisabledCheckboxes: \"showDisabledCheckboxes\", icons: \"icons\", suppressNavigable: \"suppressNavigable\", suppressKeyboardEvent: \"suppressKeyboardEvent\", suppressPaste: \"suppressPaste\", suppressFillHandle: \"suppressFillHandle\", hide: \"hide\", initialHide: \"initialHide\", lockVisible: \"lockVisible\", lockPosition: \"lockPosition\", suppressMovable: \"suppressMovable\", editable: \"editable\", valueSetter: \"valueSetter\", valueParser: \"valueParser\", cellEditor: \"cellEditor\", cellEditorFramework: \"cellEditorFramework\", cellEditorParams: \"cellEditorParams\", cellEditorSelector: \"cellEditorSelector\", singleClickEdit: \"singleClickEdit\", newValueHandler: \"newValueHandler\", cellEditorPopup: \"cellEditorPopup\", cellEditorPopupPosition: \"cellEditorPopupPosition\", onCellValueChanged: \"onCellValueChanged\", onCellClicked: \"onCellClicked\", onCellDoubleClicked: \"onCellDoubleClicked\", onCellContextMenu: \"onCellContextMenu\", getQuickFilterText: \"getQuickFilterText\", filterValueGetter: \"filterValueGetter\", floatingFilter: \"floatingFilter\", wrapHeaderText: \"wrapHeaderText\", autoHeaderHeight: \"autoHeaderHeight\", headerComponent: \"headerComponent\", headerComponentFramework: \"headerComponentFramework\", headerComponentParams: \"headerComponentParams\", menuTabs: \"menuTabs\", columnsMenuParams: \"columnsMenuParams\", suppressMenu: \"suppressMenu\", headerCheckboxSelection: \"headerCheckboxSelection\", headerCheckboxSelectionFilteredOnly: \"headerCheckboxSelectionFilteredOnly\", chartDataType: \"chartDataType\", pinned: \"pinned\", initialPinned: \"initialPinned\", lockPinned: \"lockPinned\", pinnedRowCellRenderer: \"pinnedRowCellRenderer\", pinnedRowCellRendererFramework: \"pinnedRowCellRendererFramework\", pinnedRowCellRendererParams: \"pinnedRowCellRendererParams\", pinnedRowValueFormatter: \"pinnedRowValueFormatter\", pivot: \"pivot\", initialPivot: \"initialPivot\", pivotIndex: \"pivotIndex\", initialPivotIndex: \"initialPivotIndex\", pivotComparator: \"pivotComparator\", enablePivot: \"enablePivot\", cellStyle: \"cellStyle\", cellClass: \"cellClass\", cellClassRules: \"cellClassRules\", cellRenderer: \"cellRenderer\", cellRendererFramework: \"cellRendererFramework\", cellRendererParams: \"cellRendererParams\", cellRendererSelector: \"cellRendererSelector\", autoHeight: \"autoHeight\", wrapText: \"wrapText\", enableCellChangeFlash: \"enableCellChangeFlash\", suppressCellFlash: \"suppressCellFlash\", rowDrag: \"rowDrag\", rowDragText: \"rowDragText\", dndSource: \"dndSource\", dndSourceOnRowDrag: \"dndSourceOnRowDrag\", rowGroup: \"rowGroup\", initialRowGroup: \"initialRowGroup\", rowGroupIndex: \"rowGroupIndex\", initialRowGroupIndex: \"initialRowGroupIndex\", enableRowGroup: \"enableRowGroup\", enableValue: \"enableValue\", aggFunc: \"aggFunc\", initialAggFunc: \"initialAggFunc\", defaultAggFunc: \"defaultAggFunc\", allowedAggFuncs: \"allowedAggFuncs\", showRowGroup: \"showRowGroup\", sortable: \"sortable\", sort: \"sort\", initialSort: \"initialSort\", sortIndex: \"sortIndex\", initialSortIndex: \"initialSortIndex\", sortingOrder: \"sortingOrder\", comparator: \"comparator\", unSortIcon: \"unSortIcon\", sortedAt: \"sortedAt\", colSpan: \"colSpan\", rowSpan: \"rowSpan\", width: \"width\", initialWidth: \"initialWidth\", minWidth: \"minWidth\", maxWidth: \"maxWidth\", flex: \"flex\", initialFlex: \"initialFlex\", resizable: \"resizable\", suppressSizeToFit: \"suppressSizeToFit\", suppressAutoSize: \"suppressAutoSize\" }, queries: [{ propertyName: \"childColumns\", predicate: AgGridColumn }], ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgGridColumn, decorators: [{\n type: Component,\n args: [{\n selector: 'ag-grid-column',\n template: ''\n }]\n }], propDecorators: { childColumns: [{\n type: ContentChildren,\n args: [AgGridColumn]\n }], filterFramework: [{\n type: Input\n }], filterParams: [{\n type: Input\n }], floatingFilterComponent: [{\n type: Input\n }], floatingFilterComponentParams: [{\n type: Input\n }], floatingFilterComponentFramework: [{\n type: Input\n }], filter: [{\n type: Input\n }], headerName: [{\n type: Input\n }], headerValueGetter: [{\n type: Input\n }], headerTooltip: [{\n type: Input\n }], headerClass: [{\n type: Input\n }], suppressHeaderKeyboardEvent: [{\n type: Input\n }], columnGroupShow: [{\n type: Input\n }], toolPanelClass: [{\n type: Input\n }], suppressColumnsToolPanel: [{\n type: Input\n }], suppressFiltersToolPanel: [{\n type: Input\n }], tooltipComponent: [{\n type: Input\n }], tooltipComponentFramework: [{\n type: Input\n }], tooltipComponentParams: [{\n type: Input\n }], children: [{\n type: Input\n }], groupId: [{\n type: Input\n }], openByDefault: [{\n type: Input\n }], marryChildren: [{\n type: Input\n }], headerGroupComponent: [{\n type: Input\n }], headerGroupComponentFramework: [{\n type: Input\n }], headerGroupComponentParams: [{\n type: Input\n }], colId: [{\n type: Input\n }], field: [{\n type: Input\n }], type: [{\n type: Input\n }], valueGetter: [{\n type: Input\n }], valueFormatter: [{\n type: Input\n }], refData: [{\n type: Input\n }], keyCreator: [{\n type: Input\n }], equals: [{\n type: Input\n }], tooltipField: [{\n type: Input\n }], tooltipValueGetter: [{\n type: Input\n }], checkboxSelection: [{\n type: Input\n }], showDisabledCheckboxes: [{\n type: Input\n }], icons: [{\n type: Input\n }], suppressNavigable: [{\n type: Input\n }], suppressKeyboardEvent: [{\n type: Input\n }], suppressPaste: [{\n type: Input\n }], suppressFillHandle: [{\n type: Input\n }], hide: [{\n type: Input\n }], initialHide: [{\n type: Input\n }], lockVisible: [{\n type: Input\n }], lockPosition: [{\n type: Input\n }], suppressMovable: [{\n type: Input\n }], editable: [{\n type: Input\n }], valueSetter: [{\n type: Input\n }], valueParser: [{\n type: Input\n }], cellEditor: [{\n type: Input\n }], cellEditorFramework: [{\n type: Input\n }], cellEditorParams: [{\n type: Input\n }], cellEditorSelector: [{\n type: Input\n }], singleClickEdit: [{\n type: Input\n }], newValueHandler: [{\n type: Input\n }], cellEditorPopup: [{\n type: Input\n }], cellEditorPopupPosition: [{\n type: Input\n }], onCellValueChanged: [{\n type: Input\n }], onCellClicked: [{\n type: Input\n }], onCellDoubleClicked: [{\n type: Input\n }], onCellContextMenu: [{\n type: Input\n }], getQuickFilterText: [{\n type: Input\n }], filterValueGetter: [{\n type: Input\n }], floatingFilter: [{\n type: Input\n }], wrapHeaderText: [{\n type: Input\n }], autoHeaderHeight: [{\n type: Input\n }], headerComponent: [{\n type: Input\n }], headerComponentFramework: [{\n type: Input\n }], headerComponentParams: [{\n type: Input\n }], menuTabs: [{\n type: Input\n }], columnsMenuParams: [{\n type: Input\n }], suppressMenu: [{\n type: Input\n }], headerCheckboxSelection: [{\n type: Input\n }], headerCheckboxSelectionFilteredOnly: [{\n type: Input\n }], chartDataType: [{\n type: Input\n }], pinned: [{\n type: Input\n }], initialPinned: [{\n type: Input\n }], lockPinned: [{\n type: Input\n }], pinnedRowCellRenderer: [{\n type: Input\n }], pinnedRowCellRendererFramework: [{\n type: Input\n }], pinnedRowCellRendererParams: [{\n type: Input\n }], pinnedRowValueFormatter: [{\n type: Input\n }], pivot: [{\n type: Input\n }], initialPivot: [{\n type: Input\n }], pivotIndex: [{\n type: Input\n }], initialPivotIndex: [{\n type: Input\n }], pivotComparator: [{\n type: Input\n }], enablePivot: [{\n type: Input\n }], cellStyle: [{\n type: Input\n }], cellClass: [{\n type: Input\n }], cellClassRules: [{\n type: Input\n }], cellRenderer: [{\n type: Input\n }], cellRendererFramework: [{\n type: Input\n }], cellRendererParams: [{\n type: Input\n }], cellRendererSelector: [{\n type: Input\n }], autoHeight: [{\n type: Input\n }], wrapText: [{\n type: Input\n }], enableCellChangeFlash: [{\n type: Input\n }], suppressCellFlash: [{\n type: Input\n }], rowDrag: [{\n type: Input\n }], rowDragText: [{\n type: Input\n }], dndSource: [{\n type: Input\n }], dndSourceOnRowDrag: [{\n type: Input\n }], rowGroup: [{\n type: Input\n }], initialRowGroup: [{\n type: Input\n }], rowGroupIndex: [{\n type: Input\n }], initialRowGroupIndex: [{\n type: Input\n }], enableRowGroup: [{\n type: Input\n }], enableValue: [{\n type: Input\n }], aggFunc: [{\n type: Input\n }], initialAggFunc: [{\n type: Input\n }], defaultAggFunc: [{\n type: Input\n }], allowedAggFuncs: [{\n type: Input\n }], showRowGroup: [{\n type: Input\n }], sortable: [{\n type: Input\n }], sort: [{\n type: Input\n }], initialSort: [{\n type: Input\n }], sortIndex: [{\n type: Input\n }], initialSortIndex: [{\n type: Input\n }], sortingOrder: [{\n type: Input\n }], comparator: [{\n type: Input\n }], unSortIcon: [{\n type: Input\n }], sortedAt: [{\n type: Input\n }], colSpan: [{\n type: Input\n }], rowSpan: [{\n type: Input\n }], width: [{\n type: Input\n }], initialWidth: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], maxWidth: [{\n type: Input\n }], flex: [{\n type: Input\n }], initialFlex: [{\n type: Input\n }], resizable: [{\n type: Input\n }], suppressSizeToFit: [{\n type: Input\n }], suppressAutoSize: [{\n type: Input\n }] } });\n\nclass AngularFrameworkOverrides extends VanillaFrameworkOverrides {\n constructor(_ngZone) {\n super();\n this._ngZone = _ngZone;\n }\n setEmitterUsedCallback(isEmitterUsed) {\n this.isEmitterUsed = isEmitterUsed;\n }\n setTimeout(action, timeout) {\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => {\n window.setTimeout(() => {\n action();\n }, timeout);\n });\n }\n else {\n window.setTimeout(() => {\n action();\n }, timeout);\n }\n }\n setInterval(action, interval) {\n return new AgPromise(resolve => {\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => {\n resolve(window.setInterval(() => {\n action();\n }, interval));\n });\n }\n else {\n resolve(window.setInterval(() => {\n action();\n }, interval));\n }\n });\n }\n addEventListener(element, eventType, listener, useCapture) {\n if (this.isOutsideAngular(eventType) && this._ngZone) {\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener(eventType, listener, useCapture);\n });\n }\n else {\n element.addEventListener(eventType, listener, useCapture);\n }\n }\n dispatchEvent(eventType, listener, global = false) {\n if (this.isOutsideAngular(eventType)) {\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(listener);\n }\n else {\n listener();\n }\n }\n else if (this.isEmitterUsed(eventType) || global) {\n // only trigger off events (and potentially change detection) if actually used\n if (!NgZone.isInAngularZone() && this._ngZone) {\n this._ngZone.run(listener);\n }\n else {\n listener();\n }\n }\n }\n isFrameworkComponent(comp) {\n if (!comp) {\n return false;\n }\n const prototype = comp.prototype;\n const isAngularComp = prototype && 'agInit' in prototype;\n return isAngularComp;\n }\n}\nAngularFrameworkOverrides.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AngularFrameworkOverrides, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAngularFrameworkOverrides.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AngularFrameworkOverrides });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AngularFrameworkOverrides, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\nclass AngularFrameworkComponentWrapper extends BaseComponentWrapper {\n setViewContainerRef(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n setComponentFactoryResolver(componentFactoryResolver) {\n this.componentFactoryResolver = componentFactoryResolver;\n }\n createWrapper(OriginalConstructor) {\n let that = this;\n class DynamicAgNg2Component extends BaseGuiComponent {\n init(params) {\n super.init(params);\n this._componentRef.changeDetectorRef.detectChanges();\n }\n createComponent() {\n return that.createComponent(OriginalConstructor);\n }\n hasMethod(name) {\n return wrapper.getFrameworkComponentInstance()[name] != null;\n }\n callMethod(name, args) {\n const componentRef = this.getFrameworkComponentInstance();\n return wrapper.getFrameworkComponentInstance()[name].apply(componentRef, args);\n }\n addMethod(name, callback) {\n wrapper[name] = callback;\n }\n }\n let wrapper = new DynamicAgNg2Component();\n return wrapper;\n }\n createComponent(componentType) {\n // used to cache the factory, but this a) caused issues when used with either webpack/angularcli with --prod\n // but more significantly, the underlying implementation of resolveComponentFactory uses a map too, so us\n // caching the factory here yields no performance benefits\n let factory = this.componentFactoryResolver.resolveComponentFactory(componentType);\n return this.viewContainerRef.createComponent(factory);\n }\n}\nAngularFrameworkComponentWrapper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AngularFrameworkComponentWrapper, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nAngularFrameworkComponentWrapper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AngularFrameworkComponentWrapper });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AngularFrameworkComponentWrapper, decorators: [{\n type: Injectable\n }] });\nclass BaseGuiComponent {\n init(params) {\n this._params = params;\n this._componentRef = this.createComponent();\n this._agAwareComponent = this._componentRef.instance;\n this._frameworkComponentInstance = this._componentRef.instance;\n this._eGui = this._componentRef.location.nativeElement;\n this._agAwareComponent.agInit(this._params);\n }\n getGui() {\n return this._eGui;\n }\n destroy() {\n if (this._frameworkComponentInstance && typeof this._frameworkComponentInstance.destroy === 'function') {\n this._frameworkComponentInstance.destroy();\n }\n if (this._componentRef) {\n this._componentRef.destroy();\n }\n }\n getFrameworkComponentInstance() {\n return this._frameworkComponentInstance;\n }\n}\n\nclass AgGridAngular {\n constructor(elementDef, viewContainerRef, angularFrameworkOverrides, frameworkComponentWrapper, componentFactoryResolver) {\n this.viewContainerRef = viewContainerRef;\n this.angularFrameworkOverrides = angularFrameworkOverrides;\n this.frameworkComponentWrapper = frameworkComponentWrapper;\n this.componentFactoryResolver = componentFactoryResolver;\n this._initialised = false;\n this._destroyed = false;\n // in order to ensure firing of gridReady is deterministic\n this._fullyReady = AgPromise.resolve(true);\n // @START@\n /** Specifies the status bar components to use in the status bar. */\n this.statusBar = undefined;\n /** Specifies the side bar components. */\n this.sideBar = undefined;\n /** Set to `true` to not show the context menu. Use if you don't want to use the default 'right click' context menu. Default: `false` */\n this.suppressContextMenu = undefined;\n /** When using `suppressContextMenu`, you can use the `onCellContextMenu` function to provide your own code to handle cell `contextmenu` events.\n * This flag is useful to prevent the browser from showing its default context menu.\n * Default: `false` */\n this.preventDefaultOnContextMenu = undefined;\n /** Allows context menu to show, even when `Ctrl` key is held down. Default: `false` */\n this.allowContextMenuWithControlKey = undefined;\n /** Set to `true` to always show the column menu button, rather than only showing when the mouse is over the column header. Default: `false` */\n this.suppressMenuHide = undefined;\n /** Set to `true` to use the browser's default tooltip instead of using the grid's Tooltip Component. Default: `false` */\n this.enableBrowserTooltips = undefined;\n /** The delay in milliseconds that it takes for tooltips to show up once an element is hovered over.\n * **Note:** This property does not work if `enableBrowserTooltips` is `true`.\n * Default: `2000` */\n this.tooltipShowDelay = undefined;\n /** The delay in milliseconds that it takes for tooltips to hide once they have been displayed.\n * **Note:** This property does not work if `enableBrowserTooltips` is `true`.\n * Default: `10000` */\n this.tooltipHideDelay = undefined;\n /** Set to `true` to have tooltips follow the cursor once they are displayed. Default: `false` */\n this.tooltipMouseTrack = undefined;\n /** DOM element to use as the popup parent for grid popups (context menu, column menu etc). */\n this.popupParent = undefined;\n /** Set to `true` to also include headers when copying to clipboard using `Ctrl + C` clipboard. Default: `false` */\n this.copyHeadersToClipboard = undefined;\n /** Set to `true` to also include group headers when copying to clipboard using `Ctrl + C` clipboard. Default: `false` */\n this.copyGroupHeadersToClipboard = undefined;\n /** Specify the delimiter to use when copying to clipboard.\n * Default: `\\t` */\n this.clipboardDelimiter = undefined;\n /** Set to `true` to copy the cell range or focused cell to the clipboard and never the selected rows. Default: `false` */\n this.suppressCopyRowsToClipboard = undefined;\n /** Set to `true` to copy rows instead of ranges when a range with only a single cell is selected. Default: `false` */\n this.suppressCopySingleCellRanges = undefined;\n /** Set to `true` to work around a bug with Excel (Windows) that adds an extra empty line at the end of ranges copied to the clipboard. Default: `false` */\n this.suppressLastEmptyLineOnPaste = undefined;\n /** Set to `true` to turn off paste operations within the grid. */\n this.suppressClipboardPaste = undefined;\n /** Set to `true` to stop the grid trying to use the Clipboard API, if it is blocked, and immediately fallback to the workaround. */\n this.suppressClipboardApi = undefined;\n /** Array of Column / Column Group definitions. */\n this.columnDefs = undefined;\n /** A default column definition. Items defined in the actual column definitions get precedence. */\n this.defaultColDef = undefined;\n /** A default column group definition. All column group definitions will use these properties. Items defined in the actual column group definition get precedence. */\n this.defaultColGroupDef = undefined;\n /** An object map of custom column types which contain groups of properties that column definitions can inherit by referencing in their `type` property. */\n this.columnTypes = undefined;\n /** Keeps the order of Columns maintained after new Column Definitions are updated. Default: `false` */\n this.maintainColumnOrder = undefined;\n /** If `true`, then dots in field names (e.g. `'address.firstLine'`) are not treated as deep references. Allows you to use dots in your field name if you prefer. Default: `false` */\n this.suppressFieldDotNotation = undefined;\n /** @deprecated */\n this.deltaColumnMode = undefined;\n /** @deprecated */\n this.applyColumnDefOrder = undefined;\n /** @deprecated */\n this.immutableColumns = undefined;\n /** @deprecated */\n this.suppressSetColumnStateEvents = undefined;\n /** @deprecated */\n this.suppressColumnStateEvents = undefined;\n /** @deprecated Set via `defaultColDef.width` */\n this.colWidth = undefined;\n /** @deprecated Set via `defaultColDef.minWidth` */\n this.minColWidth = undefined;\n /** @deprecated Set via `defaultColDef.maxWidth` */\n this.maxColWidth = undefined;\n /** The height in pixels for the row containing the column label header. If not specified, it uses the theme value of `header-height`. */\n this.headerHeight = undefined;\n /** The height in pixels for the rows containing header column groups. If not specified, it uses `headerHeight`. */\n this.groupHeaderHeight = undefined;\n /** The height in pixels for the row containing the floating filters. If not specified, it uses the theme value of `header-height`. */\n this.floatingFiltersHeight = undefined;\n /** The height in pixels for the row containing the columns when in pivot mode. If not specified, it uses `headerHeight`. */\n this.pivotHeaderHeight = undefined;\n /** The height in pixels for the row containing header column groups when in pivot mode. If not specified, it uses `groupHeaderHeight`. */\n this.pivotGroupHeaderHeight = undefined;\n /** Allow reordering and pinning columns by dragging columns from the Columns Tool Panel to the grid. Default: `false` */\n this.allowDragFromColumnsToolPanel = undefined;\n /** Set to `true` to suppress column moving, i.e. to make the columns fixed position. Default: `false` */\n this.suppressMovableColumns = undefined;\n /** If `true`, the `ag-column-moving` class is not added to the grid while columns are moving. In the default themes, this results in no animation when moving columns. Default: `false` */\n this.suppressColumnMoveAnimation = undefined;\n /** If `true`, when you drag a column out of the grid (e.g. to the group zone) the column is not hidden. Default: `false` */\n this.suppressDragLeaveHidesColumns = undefined;\n /** If `true`, when you drag a column into a row group panel the column is not hidden. Default: `false` */\n this.suppressRowGroupHidesColumns = undefined;\n /** Set to `'shift'` to have shift-resize as the default resize operation (same as user holding down `Shift` while resizing). */\n this.colResizeDefault = undefined;\n /** Suppresses auto-sizing columns for columns. In other words, double clicking a column's header's edge will not auto-size. Default: `false` */\n this.suppressAutoSize = undefined;\n /** Number of pixels to add to a column width after the [auto-sizing](/column-sizing/#auto-size-columns) calculation.\n * Set this if you want to add extra room to accommodate (for example) sort icons, or some other dynamic nature of the header.\n * Default: `4` */\n this.autoSizePadding = undefined;\n /** Set this to `true` to skip the `headerName` when `autoSize` is called by default. Default: `false` */\n this.skipHeaderOnAutoSize = undefined;\n /** A map of component names to components. */\n this.components = undefined;\n /** @deprecated As of v27, use `components` for framework components too. */\n this.frameworkComponents = undefined;\n /** Set to `'fullRow'` to enable Full Row Editing. Otherwise leave blank to edit one cell at a time. */\n this.editType = undefined;\n /** Set to `true` to enable Single Click Editing for cells, to start editing with a single click. Default: `false` */\n this.singleClickEdit = undefined;\n /** Set to `true` so that neither single nor double click starts editing. Default: `false` */\n this.suppressClickEdit = undefined;\n /** Set to `true` so stop the grid updating data after and edit. When this is set, it is intended the application will update the data, eg in an external immutable store, and then pass the new dataset to the grid. */\n this.readOnlyEdit = undefined;\n /** Set this to `true` to stop cell editing when grid loses focus.\n * The default is that the grid stays editing until focus goes onto another cell.\n * Default: `false` */\n this.stopEditingWhenCellsLoseFocus = undefined;\n /** Set to `true` along with `enterMovesDownAfterEdit` to have Excel-style behaviour for the `Enter` key.\n * i.e. pressing the `Enter` key will move down to the cell beneath.\n * Default: `false` */\n this.enterMovesDown = undefined;\n /** Set to `true` along with `enterMovesDown` to have Excel-style behaviour for the 'Enter' key.\n * i.e. pressing the Enter key will move down to the cell beneath.\n * Default: `false` */\n this.enterMovesDownAfterEdit = undefined;\n /** Forces Cell Editing to start when backspace is pressed. This is only relevant for MacOS users. */\n this.enableCellEditingOnBackspace = undefined;\n /** Set to `true` to enable Undo / Redo while editing. */\n this.undoRedoCellEditing = undefined;\n /** Set the size of the undo / redo stack. Default: `10` */\n this.undoRedoCellEditingLimit = undefined;\n /** @deprecated Use stopEditingWhenCellsLoseFocus instead */\n this.stopEditingWhenGridLosesFocus = undefined;\n /** A default configuration object used to export to CSV. */\n this.defaultCsvExportParams = undefined;\n /** Prevents the user from exporting the grid to CSV. Default: `false` */\n this.suppressCsvExport = undefined;\n /** A default configuration object used to export to Excel. */\n this.defaultExcelExportParams = undefined;\n /** Prevents the user from exporting the grid to Excel. Default: `false` */\n this.suppressExcelExport = undefined;\n /** A list (array) of Excel styles to be used when exporting to Excel with styles. */\n this.excelStyles = undefined;\n /** @deprecated Use defaultCsvExportParams or defaultExcelExportParams */\n this.defaultExportParams = undefined;\n /** Rows are filtered using this text as a quick filter. */\n this.quickFilterText = undefined;\n /** Set to `true` to turn on the quick filter cache, used to improve performance when using the quick filter. Default: `false` */\n this.cacheQuickFilter = undefined;\n /** Set to `true` to override the default tree data filtering behaviour to instead exclude child nodes from filter results. Default: `false` */\n this.excludeChildrenWhenTreeDataFiltering = undefined;\n /** Set to `true` to Enable Charts. Default: `false` */\n this.enableCharts = undefined;\n /** The list of chart themes to be used. */\n this.chartThemes = undefined;\n /** A map containing custom chart themes. */\n this.customChartThemes = undefined;\n /** Chart theme overrides applied to all themes. */\n this.chartThemeOverrides = undefined;\n /** Set to `true` to show the Chart Tool Panels button. Note this will also remove the 'hamburger' menu option from the Chart Toolbar and always display the remaining toolbar buttons. Default: `false` */\n this.enableChartToolPanelsButton = undefined;\n /** Allows customisation of the Chart Tool Panels, such as changing the tool panels visibility and order, as well as choosing which charts should be displayed in the settings panel. */\n this.chartToolPanelsDef = undefined;\n /** Provide your own loading cell renderer to use when data is loading via a DataSource.\n * See [Loading Cell Renderer](https://www.ag-grid.com/javascript-data-grid/component-loading-cell-renderer/) for framework specific implementation details. */\n this.loadingCellRenderer = undefined;\n /** @deprecated As of v27, use `loadingCellRenderer` for framework components too. */\n this.loadingCellRendererFramework = undefined;\n /** Params to be passed to the `loadingCellRenderer` component. */\n this.loadingCellRendererParams = undefined;\n /** Callback to select which loading cell renderer to be used when data is loading via a DataSource. */\n this.loadingCellRendererSelector = undefined;\n /** A map of key->value pairs for localising text within the grid. */\n this.localeText = undefined;\n /** Set to `true` to enable Master Detail. Default: `false` */\n this.masterDetail = undefined;\n /** Set to `true` to keep detail rows for when they are displayed again. Default: `false` */\n this.keepDetailRows = undefined;\n /** Sets the number of details rows to keep. Default: `10` */\n this.keepDetailRowsCount = undefined;\n /** Provide a custom `detailCellRenderer` to use when a master row is expanded.\n * See [Detail Cell Renderer](https://www.ag-grid.com/javascript-data-grid/master-detail-custom-detail/) for framework specific implementation details. */\n this.detailCellRenderer = undefined;\n /** @deprecated As of v27, use `detailCellRenderer` for framework components too. */\n this.detailCellRendererFramework = undefined;\n /** Specifies the params to be used by the Detail Cell Renderer. Can also be a function that provides the params to enable dynamic definitions of the params. */\n this.detailCellRendererParams = undefined;\n /** Set fixed height in pixels for each detail row. */\n this.detailRowHeight = undefined;\n /** Set to `true` to have the detail grid dynamically change it's height to fit it's rows. */\n this.detailRowAutoHeight = undefined;\n /** Provides a context object that is provided to different callbacks the grid uses. Used for passing additional information to the callbacks by your application. */\n this.context = undefined;\n /** A list of grids to treat as Aligned Grids. If grids are aligned then the columns and horizontal scrolling will be kept in sync. */\n this.alignedGrids = undefined;\n /** Change this value to set the tabIndex order of the Grid within your application. Default: `0` */\n this.tabIndex = undefined;\n /** The number of rows rendered outside the viewable area the grid renders.\n * Having a buffer means the grid will have rows ready to show as the user slowly scrolls vertically.\n * Default: `10` */\n this.rowBuffer = undefined;\n /** Set to `true` to turn on the value cache. Default: `false` */\n this.valueCache = undefined;\n /** Set to `true` to configure the value cache to not expire after data updates. Default: `false` */\n this.valueCacheNeverExpires = undefined;\n /** Set to `true` to allow cell expressions. Default: `false` */\n this.enableCellExpressions = undefined;\n /** If `true`, row nodes do not have their parents set.\n * The grid doesn't use the parent reference, but it is included to help the client code navigate the node tree if it wants by providing bi-direction navigation up and down the tree.\n * If this is a problem (e.g. if you need to convert the tree to JSON, which does not allow cyclic dependencies) then set this to `true`.\n * Default: `false` */\n this.suppressParentsInRowNodes = undefined;\n /** Disables touch support (but does not remove the browser's efforts to simulate mouse events on touch). Default: `false` */\n this.suppressTouch = undefined;\n /** Set to `true` to not set focus back on the grid after a refresh. This can avoid issues where you want to keep the focus on another part of the browser. Default: `false` */\n this.suppressFocusAfterRefresh = undefined;\n /** Disables the asynchronous nature of the events introduced in v10, and makes them synchronous. This property only exists for the purpose of supporting legacy code which has a dependency on synchronous events from earlier versions (v9 or earlier) of AG Grid. **It is strongly recommended that you do not change this property unless you have legacy issues.** Default: `false` */\n this.suppressAsyncEvents = undefined;\n /** The grid will check for `ResizeObserver` and use it if it exists in the browser, otherwise it will use the grid's alternative implementation. Some users reported issues with Chrome's `ResizeObserver`. Use this property to always use the grid's alternative implementation should such problems exist. Default: `false` */\n this.suppressBrowserResizeObserver = undefined;\n /** Disables showing a warning message in the console if using a `gridOptions` or `colDef` property that doesn't exist. Default: `false` */\n this.suppressPropertyNamesCheck = undefined;\n /** Disables change detection. Default: `false` */\n this.suppressChangeDetection = undefined;\n /** Set this to `true` to enable debug information from the grid and related components. Will result in additional logging being output, but very useful when investigating problems. Default: `false` */\n this.debug = undefined;\n /** Provide a template for 'loading' overlay. */\n this.overlayLoadingTemplate = undefined;\n /** Provide a custom loading overlay component.\n * See [Loading Overlay Component](https://www.ag-grid.com/javascript-data-grid/component-overlay/#simple-loading-overlay-component) for framework specific implementation details. */\n this.loadingOverlayComponent = undefined;\n /** @deprecated As of v27, use `loadingOverlayComponent` for framework components too. */\n this.loadingOverlayComponentFramework = undefined;\n /** Customise the parameters provided to the loading overlay component. */\n this.loadingOverlayComponentParams = undefined;\n /** Disables the 'loading' overlay. Default: `false` */\n this.suppressLoadingOverlay = undefined;\n /** Provide a template for 'no rows' overlay. */\n this.overlayNoRowsTemplate = undefined;\n /** Provide a custom no rows overlay component.\n * See [No Rows Overlay Component](https://www.ag-grid.com/javascript-data-grid/component-overlay/#simple-no-rows-overlay-component) for framework specific implementation details. */\n this.noRowsOverlayComponent = undefined;\n /** @deprecated As of v27, use `noRowsOverlayComponent` for framework components too. */\n this.noRowsOverlayComponentFramework = undefined;\n /** Customise the parameters provided to the no rows overlay component. */\n this.noRowsOverlayComponentParams = undefined;\n /** Disables the 'no rows' overlay. Default: `false` */\n this.suppressNoRowsOverlay = undefined;\n /** Set whether pagination is enabled. Default: `false` */\n this.pagination = undefined;\n /** How many rows to load per page. If `paginationAutoPageSize` is specified, this property is ignored. Default: `100` */\n this.paginationPageSize = undefined;\n /** Set to `true` so that the number of rows to load per page is automatically adjusted by the grid so each page shows enough rows to just fill the area designated for the grid. If `false`, `paginationPageSize` is used. Default: `false` */\n this.paginationAutoPageSize = undefined;\n /** Set to `true` to have pages split children of groups when using Row Grouping or detail rows with Master Detail. Default: `false` */\n this.paginateChildRows = undefined;\n /** If `true`, the default grid controls for navigation are hidden.\n * This is useful if `pagination=true` and you want to provide your own pagination controls.\n * Otherwise, when `pagination=true` the grid automatically shows the necessary controls at the bottom so that the user can navigate through the different pages.\n * Default: `false` */\n this.suppressPaginationPanel = undefined;\n /** Set to `true` to enable pivot mode. Default: `false` */\n this.pivotMode = undefined;\n /** When to show the 'pivot panel' (where you drag rows to pivot) at the top. Note that the pivot panel will never show if `pivotMode` is off. Default: `never` */\n this.pivotPanelShow = undefined;\n /** When set and the grid is in pivot mode, automatically calculated totals will appear within the Pivot Column Groups, in the position specified. */\n this.pivotColumnGroupTotals = undefined;\n /** When set and the grid is in pivot mode, automatically calculated totals will appear for each value column in the position specified. */\n this.pivotRowTotals = undefined;\n /** If `true`, the grid will not swap in the grouping column when pivoting. Useful if pivoting using Server Side Row Model or Viewport Row Model and you want full control of all columns including the group column. Default: `false` */\n this.pivotSuppressAutoColumn = undefined;\n /** When enabled, pivot column groups will appear 'fixed', without the ability to expand and collapse the column groups. Default: `false` */\n this.suppressExpandablePivotGroups = undefined;\n /** If `true`, then row group, pivot and value aggregation will be read-only from the GUI. The grid will display what values are used for each, but will not allow the user to change the selection. Default: `false` */\n this.functionsReadOnly = undefined;\n /** A map of 'function name' to 'function' for custom aggregation functions. */\n this.aggFuncs = undefined;\n /** When `true`, column headers won't include the `aggFunc` name, e.g. `'sum(Bank Balance)`' will just be `'Bank Balance'`. Default: `false` */\n this.suppressAggFuncInHeader = undefined;\n /** When `true`, the aggregations won't be computed for the root node of the grid. Default: `false` */\n this.suppressAggAtRootLevel = undefined;\n /** When using change detection, only the updated column will be re-aggregated. Default: `false` */\n this.aggregateOnlyChangedColumns = undefined;\n /** Set to `true` so that aggregations are not impacted by filtering. Default: `false` */\n this.suppressAggFilteredOnly = undefined;\n /** Set to `true` to omit the value Column header when there is only a single value column. Default: `false` */\n this.removePivotHeaderRowWhenSingleValueColumn = undefined;\n /** Set to `true` to enable Row Animation. Default: `false` */\n this.animateRows = undefined;\n /** Set to `true` to have cells flash after data changes. Default: `false` */\n this.enableCellChangeFlash = undefined;\n /** To be used in combination with `enableCellChangeFlash`, this configuration will set the delay in milliseconds of how long a cell should remain in its \"flashed\" state.\n * Default: `500` */\n this.cellFlashDelay = undefined;\n /** To be used in combination with `enableCellChangeFlash`, this configuration will set the delay in milliseconds of how long the \"flashed\" state animation takes to fade away after the timer set by `cellFlashDelay` has completed.\n * Default: `1000` */\n this.cellFadeDelay = undefined;\n /** Set to `true` to have cells flash after data changes even when the change is due to filtering. Default: `false` */\n this.allowShowChangeAfterFilter = undefined;\n /** Switch between layout options: `normal`, `autoHeight`, `print`.\n * Default: `normal` */\n this.domLayout = undefined;\n /** When `true`, the order of rows and columns in the DOM are consistent with what is on screen. Default: `false` */\n this.ensureDomOrder = undefined;\n /** Set to `true` to operate the grid in RTL (Right to Left) mode. Default: `false` */\n this.enableRtl = undefined;\n /** Set to `true` so that the grid doesn't virtualise the columns. For example, if you have 100 columns, but only 10 visible due to scrolling, all 100 will always be rendered. Default: `false` */\n this.suppressColumnVirtualisation = undefined;\n /** By default the grid has a limit of rendering a maximum of 500 rows at once (remember the grid only renders rows you can see, so unless your display shows more than 500 rows without vertically scrolling this will never be an issue).\n *
**This is only relevant if you are manually setting `rowBuffer` to a high value (rendering more rows than can be seen), or `suppressRowVirtualisation` is true, or if your grid height is able to display more than 500 rows at once.**\n * Default: `false` */\n this.suppressMaxRenderedRowRestriction = undefined;\n /** Set to `true` so that the grid doesn't virtualise the rows. For example, if you have 100 rows, but only 10 visible due to scrolling, all 100 will always be rendered. Default: `false` */\n this.suppressRowVirtualisation = undefined;\n /** Set to `true` to enable Managed Row Dragging. Default: `false` */\n this.rowDragManaged = undefined;\n /** Set to `true` to suppress row dragging. Default: `false` */\n this.suppressRowDrag = undefined;\n /** Set to `true` to suppress moving rows while dragging the `rowDrag` waffle. This option highlights the position where the row will be placed and it will only move the row on mouse up. Default: `false` */\n this.suppressMoveWhenRowDragging = undefined;\n /** Set to `true` to enable clicking and dragging anywhere on the row without the need for a drag handle. Default: `false` */\n this.rowDragEntireRow = undefined;\n /** Set to `true` to enable dragging multiple rows at the same time. Default: `false` */\n this.rowDragMultiRow = undefined;\n /** A callback that should return a string to be displayed by the `rowDragComp` while dragging a row.\n * If this callback is not set, the current cell value will be used.\n * If the `rowDragText` callback is set in the ColDef it will take precedence over this, except when\n * `rowDragEntireRow=true`. */\n this.rowDragText = undefined;\n /** Provide your own cell renderer component to use for full width rows.\n * See [Full Width Rows](https://www.ag-grid.com/javascript-data-grid/full-width-rows/) for framework specific implementation details. */\n this.fullWidthCellRenderer = undefined;\n /** @deprecated As of v27, use `fullWidthCellRenderer` for framework components too. */\n this.fullWidthCellRendererFramework = undefined;\n /** Customise the parameters provided to the `fullWidthCellRenderer` component. */\n this.fullWidthCellRendererParams = undefined;\n /** Set to `true` to have the detail grid embedded in the master grid's container and so link their horizontal scrolling. */\n this.embedFullWidthRows = undefined;\n /** @deprecated */\n this.deprecatedEmbedFullWidthRows = undefined;\n /** Specifies how the results of row grouping should be displayed.\n *\n * The options are:\n *\n * - `'singleColumn'`: single group column automatically added by the grid.\n * - `'multipleColumns'`: a group column per row group is added automatically.\n * - `'groupRows'`: group rows are automatically added instead of group columns.\n * - `'custom'`: informs the grid that group columns will be provided. */\n this.groupDisplayType = undefined;\n /** If grouping, set to the number of levels to expand by default, e.g. `0` for none, `1` for first level only, etc. Set to `-1` to expand everything. Default: `0` */\n this.groupDefaultExpanded = undefined;\n /** Allows specifying the group 'auto column' if you are not happy with the default. If grouping, this column definition is included as the first column in the grid. If not grouping, this column is not included. */\n this.autoGroupColumnDef = undefined;\n /** When `true`, preserves the current group order when sorting on non-group columns. Default: `false` */\n this.groupMaintainOrder = undefined;\n /** When `true`, if you select a group, the children of the group will also be selected. Default: `false` */\n this.groupSelectsChildren = undefined;\n /** Set to determine whether filters should be applied on aggregated group values. Default: `false` */\n this.groupAggFiltering = undefined;\n /** If grouping, this controls whether to show a group footer when the group is expanded.\n * If `true`, then by default, the footer will contain aggregate data (if any) when shown and the header will be blank.\n * When closed, the header will contain the aggregate data regardless of this setting (as the footer is hidden anyway).\n * This is handy for 'total' rows, that are displayed below the data when the group is open, and alongside the group when it is closed.\n * Default: `false` */\n this.groupIncludeFooter = undefined;\n /** Set to `true` to show a 'grand total' group footer across all groups. Default: `false` */\n this.groupIncludeTotalFooter = undefined;\n /** If `true`, and showing footer, aggregate data will always be displayed at both the header and footer levels. This stops the possibly undesirable behaviour of the header details 'jumping' to the footer on expand. Default: `false` */\n this.groupSuppressBlankHeader = undefined;\n /** If using `groupSelectsChildren`, then only the children that pass the current filter will get selected. Default: `false` */\n this.groupSelectsFiltered = undefined;\n /** Shows the open group in the group column for non-group rows. Default: `false` */\n this.showOpenedGroup = undefined;\n /** Set to `true` to collapse groups that only have one child. */\n this.groupRemoveSingleChildren = undefined;\n /** Set to `true` to collapse lowest level groups that only have one child. Default: `false` */\n this.groupRemoveLowestSingleChildren = undefined;\n /** Set to `true` to hide parents that are open. When used with multiple columns for showing groups, it can give a more pleasing user experience. Default: `false` */\n this.groupHideOpenParents = undefined;\n /** When to show the 'row group panel' (where you drag rows to group) at the top. Default: `never` */\n this.rowGroupPanelShow = undefined;\n /** Provide the Cell Renderer to use when `groupDisplayType = 'groupRows'`.\n * See [Group Row Cell Renderer](https://www.ag-grid.com/javascript-data-grid/grouping-group-rows/#providing-cell-renderer) for framework specific implementation details. */\n this.groupRowRenderer = undefined;\n /** @deprecated As of v27, use `groupRowRenderer` for framework components too. */\n this.groupRowRendererFramework = undefined;\n /** Customise the parameters provided to the `groupRowRenderer` component. */\n this.groupRowRendererParams = undefined;\n /** By default, when a column is un-grouped, i.e. using the Row Group Panel, it is made visible in the grid. This property stops the column becoming visible again when un-grouping. Default: `false` */\n this.suppressMakeColumnVisibleAfterUnGroup = undefined;\n /** Set to `true` to enable the Grid to work with Tree Data. You must also implement the `getDataPath(data)` callback. */\n this.treeData = undefined;\n /** Set to `true` to suppress sort indicators and actions from the row group panel. Default: `false`. */\n this.rowGroupPanelSuppressSort = undefined;\n /** Set to `true` to keep open Group Rows visible at the top of the grid. Default: `false`. */\n this.groupRowsSticky = undefined;\n /** @deprecated - this is now groupRowRendererParams.innerRenderer */\n this.groupRowInnerRenderer = undefined;\n /** @deprecated - this is now groupRowRendererParams.innerRenderer */\n this.groupRowInnerRendererFramework = undefined;\n /** @deprecated - Use groupDisplayType = 'multipleColumns' instead */\n this.groupMultiAutoColumn = undefined;\n /** @deprecated - Use groupDisplayType = 'groupRows' instead */\n this.groupUseEntireRow = undefined;\n /** @deprecated - Use groupDisplayType = 'custom' instead */\n this.groupSuppressAutoColumn = undefined;\n /** @deprecated - no longer needed, transaction updates keep group state */\n this.rememberGroupStateWhenNewData = undefined;\n /** Data to be displayed as pinned top rows in the grid. */\n this.pinnedTopRowData = undefined;\n /** Data to be displayed as pinned bottom rows in the grid. */\n this.pinnedBottomRowData = undefined;\n /** Sets the row model type. Default: `clientSide` */\n this.rowModelType = undefined;\n /** Set the data to be displayed as rows in the grid. */\n this.rowData = undefined;\n /** @deprecated Immutable Data is on by default when grid callback getRowId() is implemented\n * Enables Immutable Data mode, for compatibility with immutable stores. Default: `false` */\n this.immutableData = undefined;\n /** How many milliseconds to wait before executing a batch of async transactions. */\n this.asyncTransactionWaitMillis = undefined;\n /** Prevents Transactions changing sort, filter, group or pivot state when transaction only contains updates. Default: `false` */\n this.suppressModelUpdateAfterUpdateTransaction = undefined;\n /** @deprecated */\n this.deltaRowDataMode = undefined;\n /** @deprecated use asyncTransactionWaitMillis instead */\n this.batchUpdateWaitMillis = undefined;\n /** Provide the datasource for infinite scrolling. */\n this.datasource = undefined;\n /** How many extra blank rows to display to the user at the end of the dataset, which sets the vertical scroll and then allows the grid to request viewing more rows of data.\n * Default: `1` */\n this.cacheOverflowSize = undefined;\n /** How many extra blank rows to display to the user at the end of the dataset, which sets the vertical scroll and then allows the grid to request viewing more rows of data.\n * Default: `1` */\n this.infiniteInitialRowCount = undefined;\n /** Set how many loading rows to display to the user for the root level group.\n * Default: `1` */\n this.serverSideInitialRowCount = undefined;\n /** @deprecated Whether to use Full Store or Partial Store for storing rows. Default: `full`.\n * Deprecated in favour of serverSideInfiniteScroll. When true, Partial Store is used. When false,\n * Full Store is used.\n */\n this.serverSideStoreType = undefined;\n /** Set whether Server-side Row Model will use Infinite Scrolling\n * Default: `false` */\n this.serverSideInfiniteScroll = undefined;\n /** How many rows for each block in the store, i.e. how many rows returned from the server at a time.\n * Default: `100` */\n this.cacheBlockSize = undefined;\n /** How many blocks to keep in the store. Default is no limit, so every requested block is kept. Use this if you have memory concerns, and blocks that were least recently viewed will be purged when the limit is hit. The grid will additionally make sure it has all the blocks needed to display what is currently visible, in case this property is set to a low value. */\n this.maxBlocksInCache = undefined;\n /** How many requests to hit the server with concurrently. If the max is reached, requests are queued.\n * Set to `-1` for no maximum restriction on requests.\n * Default: `2` */\n this.maxConcurrentDatasourceRequests = undefined;\n /** How many milliseconds to wait before loading a block. Useful when infinite scrolling and scrolling over many infinite blocks, as it prevents blocks loading until scrolling has settled. */\n this.blockLoadDebounceMillis = undefined;\n /** When enabled, closing group rows will remove children of that row. Next time the row is opened, child rows will be read from the datasource again. This property only applies when there is Row Grouping. Default: `false` */\n this.purgeClosedRowNodes = undefined;\n /** Provide the `serverSideDatasource` for server side row model. */\n this.serverSideDatasource = undefined;\n /** When enabled, always refreshes top level groups regardless of which column was sorted. This property only applies when there is Row Grouping & sorting is handled on the server. Default: `false` */\n this.serverSideSortAllLevels = undefined;\n /** When enabled, always refreshes top level groups regardless of which column was filtered. This property only applies when there is Row Grouping & filtering is handled on the server. Default: `false` */\n this.serverSideFilterAllLevels = undefined;\n /** When enabled, Sorting will be done on the server side. When serverSideInfiniteScroll=true, does nothing,\n * as Sorting is always server side when Infinite Scroll is active.\n * Default: `false` */\n this.serverSideSortOnServer = undefined;\n /** When enabled, Filtering will be done on the server side. When serverSideInfiniteScroll=true, does nothing,\n * as Filtering is always server side when Infinite Scroll is active.\n * Default: `false` */\n this.serverSideFilterOnServer = undefined;\n /** @deprecated This property has been deprecated. Use `serverSideSortAllLevels` instead. */\n this.serverSideSortingAlwaysResets = undefined;\n /** @deprecated This property has been deprecated. Use `serverSideFilterAllLevels` instead. */\n this.serverSideFilteringAlwaysResets = undefined;\n /** @deprecated */\n this.suppressEnterpriseResetOnNewColumns = undefined;\n /** To use the viewport row model you need to provide the grid with a `viewportDatasource`. */\n this.viewportDatasource = undefined;\n /** When using viewport row model, sets the page size for the viewport. */\n this.viewportRowModelPageSize = undefined;\n /** When using viewport row model, sets the buffer size for the viewport. */\n this.viewportRowModelBufferSize = undefined;\n /** Set to `true` to always show the horizontal scrollbar. Default: `false` */\n this.alwaysShowHorizontalScroll = undefined;\n /** Set to `true` to always show the vertical scrollbar. Default: `false` */\n this.alwaysShowVerticalScroll = undefined;\n /** Set to `true` to debounce the vertical scrollbar. Can provide smoother scrolling on slow machines. Default: `false` */\n this.debounceVerticalScrollbar = undefined;\n /** Set to `true` to never show the horizontal scroll. This is useful if the grid is aligned with another grid and will scroll when the other grid scrolls. (Should not be used in combination with `alwaysShowHorizontalScroll`.) Default: `false` */\n this.suppressHorizontalScroll = undefined;\n /** When `true`, the grid will not scroll to the top when new row data is provided. Use this if you don't want the default behaviour of scrolling to the top every time you load new data. Default: `false` */\n this.suppressScrollOnNewData = undefined;\n /** When `true`, the grid will not allow mousewheel / touchpad scroll when popup elements are present. Default: `false` */\n this.suppressScrollWhenPopupsAreOpen = undefined;\n /** When `true`, the grid will not use animation frames when drawing rows while scrolling. Use this if the grid is working fast enough that you don't need animation frames and you don't want the grid to flicker. Default: `false` */\n this.suppressAnimationFrame = undefined;\n /** If `true`, middle clicks will result in `click` events for cells and rows. Otherwise the browser will use middle click to scroll the grid.
**Note:** Not all browsers fire `click` events with the middle button. Most will fire only `mousedown` and `mouseup` events, which can be used to focus a cell, but will not work to call the `onCellClicked` function. Default: `false` */\n this.suppressMiddleClickScrolls = undefined;\n /** If `true`, mouse wheel events will be passed to the browser. Useful if your grid has no vertical scrolls and you want the mouse to scroll the browser page. Default: `false` */\n this.suppressPreventDefaultOnMouseWheel = undefined;\n /** Tell the grid how wide in pixels the scrollbar is, which is used in grid width calculations. Set only if using non-standard browser-provided scrollbars, so the grid can use the non-standard size in its calculations. */\n this.scrollbarWidth = undefined;\n /** Type of Row Selection: `single`, `multiple`. */\n this.rowSelection = undefined;\n /** Set to `true` to allow multiple rows to be selected using single click. Default: `false` */\n this.rowMultiSelectWithClick = undefined;\n /** If `true`, rows will not be deselected if you hold down `Ctrl` and click the row or press `Space`. Default: `false` */\n this.suppressRowDeselection = undefined;\n /** If `true`, row selection won't happen when rows are clicked. Use when you only want checkbox selection. Default: `false` */\n this.suppressRowClickSelection = undefined;\n /** @deprecated This property has been deprecated. Use `suppressCellFocus` instead.\n */\n this.suppressCellSelection = undefined;\n /** If `true`, cells won't be focusable. This means keyboard navigation will be disabled for grid cells, but remain enabled in other elements of the grid such as column headers, floating filters, tool panels. Default: `false` */\n this.suppressCellFocus = undefined;\n /** If `true`, only a single range can be selected. Default: `false` */\n this.suppressMultiRangeSelection = undefined;\n /** Set to `true` to be able to select the text within cells.\n *\n * **Note:** When this is set to `true`, the clipboard service is disabled.\n * Default: `false` */\n this.enableCellTextSelection = undefined;\n /** Set to `true` to enable Range Selection. Default: `false` */\n this.enableRangeSelection = undefined;\n /** Set to `true` to enable the Range Handle. Default: `false` */\n this.enableRangeHandle = undefined;\n /** Set to `true` to enable the Fill Handle. Default: `false` */\n this.enableFillHandle = undefined;\n /** Set to `'x'` to force the fill handle direction to horizontal, or set to `'y'` to force the fill handle direction to vertical. Default: `xy` */\n this.fillHandleDirection = undefined;\n /** Set this to `true` to prevent cell values from being cleared when the Range Selection is reduced by the Fill Handle. Default: `false` */\n this.suppressClearOnFillReduction = undefined;\n /** Array defining the order in which sorting occurs (if sorting is enabled). Values can be `'asc'`, `'desc'` or `null`. For example: `sortingOrder: ['asc', 'desc']`. Default: `[null, 'asc', 'desc']` */\n this.sortingOrder = undefined;\n /** Set to `true` to specify that the sort should take accented characters into account. If this feature is turned on the sort will be slower. Default: `false` */\n this.accentedSort = undefined;\n /** Set to `true` to show the 'no sort' icon. Default: `false` */\n this.unSortIcon = undefined;\n /** Set to `true` to suppress multi-sort when the user shift-clicks a column header. Default: `false` */\n this.suppressMultiSort = undefined;\n /** Set to `true` to always multi-sort when the user clicks a column header, regardless of key presses. Default: `false` */\n this.alwaysMultiSort = undefined;\n /** Set to `'ctrl'` to have multi sorting work using the `Ctrl` (or `Command ⌘` for Mac) key. */\n this.multiSortKey = undefined;\n /** Set to `true` to suppress sorting of un-sorted data to match original row data. Default: `false` */\n this.suppressMaintainUnsortedOrder = undefined;\n /** Icons to use inside the grid instead of the grid's default icons. */\n this.icons = undefined;\n /** Default row height in pixels. Default: `25` */\n this.rowHeight = undefined;\n /** The style properties to apply to all rows. Set to an object of key (style names) and values (style values) */\n this.rowStyle = undefined;\n /** CSS class(es) for all rows. Provide either a string (class name) or array of strings (array of class names). */\n this.rowClass = undefined;\n /** Rules which can be applied to include certain CSS classes. */\n this.rowClassRules = undefined;\n /** Set to `true` to not highlight rows by adding the `ag-row-hover` CSS class. Default: `false` */\n this.suppressRowHoverHighlight = undefined;\n /** Uses CSS `top` instead of CSS `transform` for positioning rows. Useful if the transform function is causing issues such as used in row spanning. Default: `false` */\n this.suppressRowTransform = undefined;\n /** Set to `true` to highlight columns by adding the `ag-column-hover` CSS class. Default: `false` */\n this.columnHoverHighlight = undefined;\n this.deltaSort = undefined;\n this.treeDataDisplayType = undefined;\n /** @deprecated */\n this.angularCompileRows = undefined;\n /** @deprecated */\n this.angularCompileFilters = undefined;\n this.functionsPassive = undefined;\n this.enableGroupEdit = undefined;\n /** For customising the context menu. */\n this.getContextMenuItems = undefined;\n /** For customising the main 'column header' menu. */\n this.getMainMenuItems = undefined;\n /** Allows user to process popups after they are created. Applications can use this if they want to, for example, reposition the popup. */\n this.postProcessPopup = undefined;\n /** Allows you to process cells for the clipboard. Handy if for example you have `Date` objects that need to have a particular format if importing into Excel. */\n this.processCellForClipboard = undefined;\n /** Allows you to process header values for the clipboard. */\n this.processHeaderForClipboard = undefined;\n /** Allows you to process group header values for the clipboard. */\n this.processGroupHeaderForClipboard = undefined;\n /** Allows you to process cells from the clipboard. Handy if for example you have number fields, and want to block non-numbers from getting into the grid. */\n this.processCellFromClipboard = undefined;\n /** Allows you to get the data that would otherwise go to the clipboard. To be used when you want to control the 'copy to clipboard' operation yourself. */\n this.sendToClipboard = undefined;\n /** Allows complete control of the paste operation, including cancelling the operation (so nothing happens) or replacing the data with other data. */\n this.processDataFromClipboard = undefined;\n /** Grid calls this method to know if an external filter is present. */\n this.isExternalFilterPresent = undefined;\n /** Should return `true` if external filter passes, otherwise `false`. */\n this.doesExternalFilterPass = undefined;\n /** Callback to be used to customise the chart toolbar items. */\n this.getChartToolbarItems = undefined;\n /** Callback to enable displaying the chart in an alternative chart container. */\n this.createChartContainer = undefined;\n /** Allows overriding the default behaviour for when user hits navigation (arrow) key when a header is focused. Return the next Header position to navigate to or `null` to stay on current header. */\n this.navigateToNextHeader = undefined;\n /** Allows overriding the default behaviour for when user hits `Tab` key when a header is focused. Return the next Header position to navigate to or `null` to stay on current header. */\n this.tabToNextHeader = undefined;\n /** Allows overriding the default behaviour for when user hits navigation (arrow) key when a cell is focused. Return the next Cell position to navigate to or `null` to stay on current cell. */\n this.navigateToNextCell = undefined;\n /** Allows overriding the default behaviour for when user hits `Tab` key when a cell is focused. Return the next Cell position to navigate to or null to stay on current cell. */\n this.tabToNextCell = undefined;\n /** @deprecated - Set via `colDef.suppressKeyboardEvent`. If you need this to be set for every column set via the `defaultColDef.suppressKeyboardEvent` property. */\n this.suppressKeyboardEvent = undefined;\n /** @deprecated - Use `getLocaleText` instead. */\n this.localeTextFunc = undefined;\n /** A callback for localising text within the grid. */\n this.getLocaleText = undefined;\n /** Allows overriding what `document` is used. Currently used by Drag and Drop (may extend to other places in the future). Use this when you want the grid to use a different `document` than the one available on the global scope. This can happen if docking out components (something which Electron supports) */\n this.getDocument = undefined;\n /** Allows user to format the numbers in the pagination panel, i.e. 'row count' and 'page number' labels. This is for pagination panel only, to format numbers inside the grid's cells (i.e. your data), then use `valueFormatter` in the column definitions. */\n this.paginationNumberFormatter = undefined;\n /** @deprecated - Use `getGroupRowAgg` instead. */\n this.groupRowAggNodes = undefined;\n /** Callback to use when you need access to more then the current column for aggregation. */\n this.getGroupRowAgg = undefined;\n /** (Client-side Row Model only) Allows groups to be open by default. */\n this.isGroupOpenByDefault = undefined;\n /** Allows default sorting of groups. */\n this.initialGroupOrderComparator = undefined;\n /** @deprecated - Use `initialGroupOrderComparator` instead */\n this.defaultGroupOrderComparator = undefined;\n /** @deprecated - Use `processPivotResultColDef` instead */\n this.processSecondaryColDef = undefined;\n /** @deprecated - Use `processPivotResultColGroupDef` instead */\n this.processSecondaryColGroupDef = undefined;\n /** Callback to be used with pivoting, to allow changing the second column definition. */\n this.processPivotResultColDef = undefined;\n /** Callback to be used with pivoting, to allow changing the second column group definition. */\n this.processPivotResultColGroupDef = undefined;\n /** Callback to be used when working with Tree Data when `treeData = true`. */\n this.getDataPath = undefined;\n /** @deprecated - Use initialGroupOrderComparator instead */\n this.defaultGroupSortComparator = undefined;\n /** Allows setting the child count for a group row. */\n this.getChildCount = undefined;\n /** Allows providing different params for different levels of grouping. */\n this.getServerSideGroupLevelParams = undefined;\n /** @deprecated use `getServerSideGroupLevelParams` instead. */\n this.getServerSideStoreParams = undefined;\n /** Allows groups to be open by default. */\n this.isServerSideGroupOpenByDefault = undefined;\n /** Allows cancelling transactions. */\n this.isApplyServerSideTransaction = undefined;\n /** SSRM Tree Data: Allows specifying which rows are expandable. */\n this.isServerSideGroup = undefined;\n /** SSRM Tree Data: Allows specifying group keys. */\n this.getServerSideGroupKey = undefined;\n /** Return a business key for the node. If implemented, each row in the DOM will have an attribute `row-id='abc'` where `abc` is what you return as the business key.\n * This is useful for automated testing, as it provides a way for your tool to identify rows based on unique business keys. */\n this.getBusinessKeyForNode = undefined;\n /** @deprecated Use `getRowId` instead - however be aware, `getRowId()` will also set grid option `immutableData=true`\n * Allows you to set the ID for a particular row node based on the data. */\n this.getRowNodeId = undefined;\n /** Allows setting the ID for a particular row node based on the data. */\n this.getRowId = undefined;\n /** When enabled, getRowId() callback is implemented and new Row Data is set, the grid will disregard all previous rows and treat the new Row Data as new data. As a consequence, all Row State (eg selection, rendered rows) will be reset. Default: `false` */\n this.resetRowDataOnUpdate = undefined;\n /** Allows you to process rows after they are created, so you can do final adding of custom attributes etc. */\n this.processRowPostCreate = undefined;\n /** Callback to be used to determine which rows are selectable. By default rows are selectable, so return `false` to make a row un-selectable. */\n this.isRowSelectable = undefined;\n /** Callback to be used with Master Detail to determine if a row should be a master row. If `false` is returned no detail row will exist for this row. */\n this.isRowMaster = undefined;\n /** Callback to fill values instead of simply copying values or increasing number values using linear progression. */\n this.fillOperation = undefined;\n /** @deprecated Use `postSortRows` instead */\n this.postSort = undefined;\n /** Callback to perform additional sorting after the grid has sorted the rows. */\n this.postSortRows = undefined;\n /** Callback version of property `rowStyle` to set style for each row individually. Function should return an object of CSS values or undefined for no styles. */\n this.getRowStyle = undefined;\n /** Callback version of property `rowClass` to set class(es) for each row individually. Function should return either a string (class name), array of strings (array of class names) or undefined for no class. */\n this.getRowClass = undefined;\n /** Callback version of property `rowHeight` to set height for each row individually. Function should return a positive number of pixels, or return `null`/`undefined` to use the default row height. */\n this.getRowHeight = undefined;\n /** @deprecated Use `isFullWidthRow` instead. */\n this.isFullWidthCell = undefined;\n /** Tells the grid if this row should be rendered as full width. */\n this.isFullWidthRow = undefined;\n /** The tool panel was hidden or shown. Use `api.isToolPanelShowing()` to get status. */\n this.toolPanelVisibleChanged = new EventEmitter();\n /** The tool panel size has been changed. */\n this.toolPanelSizeChanged = new EventEmitter();\n /** Paste operation has started. */\n this.pasteStart = new EventEmitter();\n /** Paste operation has ended. */\n this.pasteEnd = new EventEmitter();\n /** A column, or group of columns, was hidden / shown. */\n this.columnVisible = new EventEmitter();\n /** A column, or group of columns, was pinned / unpinned. */\n this.columnPinned = new EventEmitter();\n /** A column was resized. */\n this.columnResized = new EventEmitter();\n /** A column was moved. To find out when the column move is finished you can use the `dragStopped` event below. */\n this.columnMoved = new EventEmitter();\n /** A value column was added or removed. */\n this.columnValueChanged = new EventEmitter();\n /** The pivot mode flag was changed. */\n this.columnPivotModeChanged = new EventEmitter();\n /** A pivot column was added, removed or order changed. */\n this.columnPivotChanged = new EventEmitter();\n /** A column group was opened / closed. */\n this.columnGroupOpened = new EventEmitter();\n /** User set new columns. */\n this.newColumnsLoaded = new EventEmitter();\n /** The list of grid columns changed. */\n this.gridColumnsChanged = new EventEmitter();\n /** The list of displayed columns changed. This can result from columns open / close, column move, pivot, group, etc. */\n this.displayedColumnsChanged = new EventEmitter();\n /** The list of rendered columns changed (only columns in the visible scrolled viewport are rendered by default). */\n this.virtualColumnsChanged = new EventEmitter();\n /** Shotgun - gets called when either a) new columns are set or b) `columnApi.setState()` is used, so everything has changed. */\n this.columnEverythingChanged = new EventEmitter();\n /** Only used by Angular, React and VueJS AG Grid components (not used if doing plain JavaScript).\n * If the grid receives changes due to bound properties, this event fires after the grid has finished processing the change. */\n this.componentStateChanged = new EventEmitter();\n /** Value has changed after editing (this event will not fire if editing was cancelled, eg ESC was pressed) or\n * if cell value has changed as a result of paste operation. */\n this.cellValueChanged = new EventEmitter();\n /** Value has changed after editing. Only fires when doing Read Only Edits, ie `readOnlyEdit=true`. */\n this.cellEditRequest = new EventEmitter();\n /** A cell's value within a row has changed. This event corresponds to Full Row Editing only. */\n this.rowValueChanged = new EventEmitter();\n /** Editing a cell has started. */\n this.cellEditingStarted = new EventEmitter();\n /** Editing a cell has stopped. */\n this.cellEditingStopped = new EventEmitter();\n /** Editing a row has started (when row editing is enabled). When row editing, this event will be fired once and `cellEditingStarted` will be fired for each individual cell. Only fires when doing Full Row Editing. */\n this.rowEditingStarted = new EventEmitter();\n /** Editing a row has stopped (when row editing is enabled). When row editing, this event will be fired once and `cellEditingStopped` will be fired for each individual cell. Only fires when doing Full Row Editing. */\n this.rowEditingStopped = new EventEmitter();\n /** Filter has been opened. */\n this.filterOpened = new EventEmitter();\n /** Filter has been modified and applied. */\n this.filterChanged = new EventEmitter();\n /** Filter was modified but not applied. Used when filters have 'Apply' buttons. */\n this.filterModified = new EventEmitter();\n /** A chart has been created. */\n this.chartCreated = new EventEmitter();\n /** The data range for the chart has been changed. */\n this.chartRangeSelectionChanged = new EventEmitter();\n /** Formatting changes have been made by users through the Format Panel. */\n this.chartOptionsChanged = new EventEmitter();\n /** A chart has been destroyed. */\n this.chartDestroyed = new EventEmitter();\n /** DOM event `keyDown` happened on a cell. */\n this.cellKeyDown = new EventEmitter();\n /** DOM event `keyPress` happened on a cell. */\n this.cellKeyPress = new EventEmitter();\n /** The grid has initialised and is ready for most api calls, but may not be fully rendered yet */\n this.gridReady = new EventEmitter();\n /** Fired the first time data is rendered into the grid. Use this event if you want to auto resize columns based on their contents */\n this.firstDataRendered = new EventEmitter();\n /** The size of the grid `div` has changed. In other words, the grid was resized. */\n this.gridSizeChanged = new EventEmitter();\n /** Displayed rows have changed. Triggered after sort, filter or tree expand / collapse events. */\n this.modelUpdated = new EventEmitter();\n /** A row was removed from the DOM, for any reason. Use to clean up resources (if any) used by the row. */\n this.virtualRowRemoved = new EventEmitter();\n /** Which rows are rendered in the DOM has changed. */\n this.viewportChanged = new EventEmitter();\n /** The body was scrolled horizontally or vertically. */\n this.bodyScroll = new EventEmitter();\n /** Main body of the grid has stopped scrolling, either horizontally or vertically. */\n this.bodyScrollEnd = new EventEmitter();\n /** When dragging starts. This could be any action that uses the grid's Drag and Drop service, e.g. Column Moving, Column Resizing, Range Selection, Fill Handle, etc. */\n this.dragStarted = new EventEmitter();\n /** When dragging stops. This could be any action that uses the grid's Drag and Drop service, e.g. Column Moving, Column Resizing, Range Selection, Fill Handle, etc. */\n this.dragStopped = new EventEmitter();\n /** Triggered every time the paging state changes. Some of the most common scenarios for this event to be triggered are:\n *\n * - The page size changes.\n * - The current shown page is changed.\n * - New data is loaded onto the grid. */\n this.paginationChanged = new EventEmitter();\n /** A drag has started, or dragging was already started and the mouse has re-entered the grid having previously left the grid. */\n this.rowDragEnter = new EventEmitter();\n /** The mouse has moved while dragging. */\n this.rowDragMove = new EventEmitter();\n /** The mouse has left the grid while dragging. */\n this.rowDragLeave = new EventEmitter();\n /** The drag has finished over the grid. */\n this.rowDragEnd = new EventEmitter();\n /** A row group column was added or removed. */\n this.columnRowGroupChanged = new EventEmitter();\n /** A row group was opened or closed. */\n this.rowGroupOpened = new EventEmitter();\n /** Fired when calling either of the API methods `expandAll()` or `collapseAll()`. */\n this.expandOrCollapseAll = new EventEmitter();\n /** The client has set new pinned row data into the grid. */\n this.pinnedRowDataChanged = new EventEmitter();\n /** @deprecated No longer fired, use onRowDataUpdated instead */\n this.rowDataChanged = new EventEmitter();\n /** The client has updated data for the grid by either a) setting new Row Data or b) Applying a Row Transaction. */\n this.rowDataUpdated = new EventEmitter();\n /** Async transactions have been applied. Contains a list of all transaction results. */\n this.asyncTransactionsFlushed = new EventEmitter();\n /** Cell is clicked. */\n this.cellClicked = new EventEmitter();\n /** Cell is double clicked. */\n this.cellDoubleClicked = new EventEmitter();\n /** Cell is focused. */\n this.cellFocused = new EventEmitter();\n /** Mouse entered cell. */\n this.cellMouseOver = new EventEmitter();\n /** Mouse left cell. */\n this.cellMouseOut = new EventEmitter();\n /** Mouse down on cell. */\n this.cellMouseDown = new EventEmitter();\n /** Row is clicked. */\n this.rowClicked = new EventEmitter();\n /** Row is double clicked. */\n this.rowDoubleClicked = new EventEmitter();\n /** Row is selected or deselected. The event contains the node in question, so call the node's `isSelected()` method to see if it was just selected or deselected. */\n this.rowSelected = new EventEmitter();\n /** Row selection is changed. Use the grid API `getSelectedNodes()` or `getSelectedRows()` to get the new list of selected nodes / row data. */\n this.selectionChanged = new EventEmitter();\n /** Cell is right clicked. */\n this.cellContextMenu = new EventEmitter();\n /** A change to range selection has occurred. */\n this.rangeSelectionChanged = new EventEmitter();\n /** Sort has changed. The grid also listens for this and updates the model. */\n this.sortChanged = new EventEmitter();\n this.columnRowGroupChangeRequest = new EventEmitter();\n this.columnPivotChangeRequest = new EventEmitter();\n this.columnValueChangeRequest = new EventEmitter();\n this.columnAggFuncChangeRequest = new EventEmitter();\n this._nativeElement = elementDef.nativeElement;\n }\n ngAfterViewInit() {\n this.frameworkComponentWrapper.setViewContainerRef(this.viewContainerRef);\n this.frameworkComponentWrapper.setComponentFactoryResolver(this.componentFactoryResolver);\n this.angularFrameworkOverrides.setEmitterUsedCallback(this.isEmitterUsed.bind(this));\n this.gridOptions = ComponentUtil.copyAttributesToGridOptions(this.gridOptions, this, true);\n this.gridParams = {\n globalEventListener: this.globalEventListener.bind(this),\n frameworkOverrides: this.angularFrameworkOverrides,\n providedBeanInstances: {\n frameworkComponentWrapper: this.frameworkComponentWrapper\n },\n modules: (this.modules || [])\n };\n if (this.columns && this.columns.length > 0) {\n this.gridOptions.columnDefs = this.columns\n .map((column) => {\n return column.toColDef();\n });\n }\n new Grid(this._nativeElement, this.gridOptions, this.gridParams);\n if (this.gridOptions.api) {\n this.api = this.gridOptions.api;\n }\n if (this.gridOptions.columnApi) {\n this.columnApi = this.gridOptions.columnApi;\n }\n this._initialised = true;\n // sometimes, especially in large client apps gridReady can fire before ngAfterViewInit\n // this ties these together so that gridReady will always fire after agGridAngular's ngAfterViewInit\n // the actual containing component's ngAfterViewInit will fire just after agGridAngular's\n this._fullyReady.resolveNow(null, resolve => resolve);\n }\n ngOnChanges(changes) {\n if (this._initialised) {\n ComponentUtil.processOnChange(changes, this.gridOptions, this.api, this.columnApi);\n }\n }\n ngOnDestroy() {\n if (this._initialised) {\n // need to do this before the destroy, so we know not to emit any events\n // while tearing down the grid.\n this._destroyed = true;\n if (this.api) {\n this.api.destroy();\n }\n }\n }\n // we'll emit the emit if a user is listening for a given event either on the component via normal angular binding\n // or via gridOptions\n isEmitterUsed(eventType) {\n const emitter = this[eventType];\n const hasEmitter = !!emitter && emitter.observers && emitter.observers.length > 0;\n // gridReady => onGridReady\n const asEventName = `on${eventType.charAt(0).toUpperCase()}${eventType.substring(1)}`;\n const hasGridOptionListener = !!this.gridOptions && !!this.gridOptions[asEventName];\n return hasEmitter || hasGridOptionListener;\n }\n globalEventListener(eventType, event) {\n // if we are tearing down, don't emit angular events, as this causes\n // problems with the angular router\n if (this._destroyed) {\n return;\n }\n // generically look up the eventType\n const emitter = this[eventType];\n if (emitter && this.isEmitterUsed(eventType)) {\n if (eventType === 'gridReady') {\n // if the user is listening for gridReady, wait for ngAfterViewInit to fire first, then emit the\n // gridReady event\n this._fullyReady.then((result => {\n emitter.emit(event);\n }));\n }\n else {\n emitter.emit(event);\n }\n }\n }\n}\nAgGridAngular.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgGridAngular, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: AngularFrameworkOverrides }, { token: AngularFrameworkComponentWrapper }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });\nAgGridAngular.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"12.2.16\", type: AgGridAngular, selector: \"ag-grid-angular\", inputs: { gridOptions: \"gridOptions\", modules: \"modules\", statusBar: \"statusBar\", sideBar: \"sideBar\", suppressContextMenu: \"suppressContextMenu\", preventDefaultOnContextMenu: \"preventDefaultOnContextMenu\", allowContextMenuWithControlKey: \"allowContextMenuWithControlKey\", suppressMenuHide: \"suppressMenuHide\", enableBrowserTooltips: \"enableBrowserTooltips\", tooltipShowDelay: \"tooltipShowDelay\", tooltipHideDelay: \"tooltipHideDelay\", tooltipMouseTrack: \"tooltipMouseTrack\", popupParent: \"popupParent\", copyHeadersToClipboard: \"copyHeadersToClipboard\", copyGroupHeadersToClipboard: \"copyGroupHeadersToClipboard\", clipboardDelimiter: \"clipboardDelimiter\", suppressCopyRowsToClipboard: \"suppressCopyRowsToClipboard\", suppressCopySingleCellRanges: \"suppressCopySingleCellRanges\", suppressLastEmptyLineOnPaste: \"suppressLastEmptyLineOnPaste\", suppressClipboardPaste: \"suppressClipboardPaste\", suppressClipboardApi: \"suppressClipboardApi\", columnDefs: \"columnDefs\", defaultColDef: \"defaultColDef\", defaultColGroupDef: \"defaultColGroupDef\", columnTypes: \"columnTypes\", maintainColumnOrder: \"maintainColumnOrder\", suppressFieldDotNotation: \"suppressFieldDotNotation\", deltaColumnMode: \"deltaColumnMode\", applyColumnDefOrder: \"applyColumnDefOrder\", immutableColumns: \"immutableColumns\", suppressSetColumnStateEvents: \"suppressSetColumnStateEvents\", suppressColumnStateEvents: \"suppressColumnStateEvents\", colWidth: \"colWidth\", minColWidth: \"minColWidth\", maxColWidth: \"maxColWidth\", headerHeight: \"headerHeight\", groupHeaderHeight: \"groupHeaderHeight\", floatingFiltersHeight: \"floatingFiltersHeight\", pivotHeaderHeight: \"pivotHeaderHeight\", pivotGroupHeaderHeight: \"pivotGroupHeaderHeight\", allowDragFromColumnsToolPanel: \"allowDragFromColumnsToolPanel\", suppressMovableColumns: \"suppressMovableColumns\", suppressColumnMoveAnimation: \"suppressColumnMoveAnimation\", suppressDragLeaveHidesColumns: \"suppressDragLeaveHidesColumns\", suppressRowGroupHidesColumns: \"suppressRowGroupHidesColumns\", colResizeDefault: \"colResizeDefault\", suppressAutoSize: \"suppressAutoSize\", autoSizePadding: \"autoSizePadding\", skipHeaderOnAutoSize: \"skipHeaderOnAutoSize\", components: \"components\", frameworkComponents: \"frameworkComponents\", editType: \"editType\", singleClickEdit: \"singleClickEdit\", suppressClickEdit: \"suppressClickEdit\", readOnlyEdit: \"readOnlyEdit\", stopEditingWhenCellsLoseFocus: \"stopEditingWhenCellsLoseFocus\", enterMovesDown: \"enterMovesDown\", enterMovesDownAfterEdit: \"enterMovesDownAfterEdit\", enableCellEditingOnBackspace: \"enableCellEditingOnBackspace\", undoRedoCellEditing: \"undoRedoCellEditing\", undoRedoCellEditingLimit: \"undoRedoCellEditingLimit\", stopEditingWhenGridLosesFocus: \"stopEditingWhenGridLosesFocus\", defaultCsvExportParams: \"defaultCsvExportParams\", suppressCsvExport: \"suppressCsvExport\", defaultExcelExportParams: \"defaultExcelExportParams\", suppressExcelExport: \"suppressExcelExport\", excelStyles: \"excelStyles\", defaultExportParams: \"defaultExportParams\", quickFilterText: \"quickFilterText\", cacheQuickFilter: \"cacheQuickFilter\", excludeChildrenWhenTreeDataFiltering: \"excludeChildrenWhenTreeDataFiltering\", enableCharts: \"enableCharts\", chartThemes: \"chartThemes\", customChartThemes: \"customChartThemes\", chartThemeOverrides: \"chartThemeOverrides\", enableChartToolPanelsButton: \"enableChartToolPanelsButton\", chartToolPanelsDef: \"chartToolPanelsDef\", loadingCellRenderer: \"loadingCellRenderer\", loadingCellRendererFramework: \"loadingCellRendererFramework\", loadingCellRendererParams: \"loadingCellRendererParams\", loadingCellRendererSelector: \"loadingCellRendererSelector\", localeText: \"localeText\", masterDetail: \"masterDetail\", keepDetailRows: \"keepDetailRows\", keepDetailRowsCount: \"keepDetailRowsCount\", detailCellRenderer: \"detailCellRenderer\", detailCellRendererFramework: \"detailCellRendererFramework\", detailCellRendererParams: \"detailCellRendererParams\", detailRowHeight: \"detailRowHeight\", detailRowAutoHeight: \"detailRowAutoHeight\", context: \"context\", alignedGrids: \"alignedGrids\", tabIndex: \"tabIndex\", rowBuffer: \"rowBuffer\", valueCache: \"valueCache\", valueCacheNeverExpires: \"valueCacheNeverExpires\", enableCellExpressions: \"enableCellExpressions\", suppressParentsInRowNodes: \"suppressParentsInRowNodes\", suppressTouch: \"suppressTouch\", suppressFocusAfterRefresh: \"suppressFocusAfterRefresh\", suppressAsyncEvents: \"suppressAsyncEvents\", suppressBrowserResizeObserver: \"suppressBrowserResizeObserver\", suppressPropertyNamesCheck: \"suppressPropertyNamesCheck\", suppressChangeDetection: \"suppressChangeDetection\", debug: \"debug\", overlayLoadingTemplate: \"overlayLoadingTemplate\", loadingOverlayComponent: \"loadingOverlayComponent\", loadingOverlayComponentFramework: \"loadingOverlayComponentFramework\", loadingOverlayComponentParams: \"loadingOverlayComponentParams\", suppressLoadingOverlay: \"suppressLoadingOverlay\", overlayNoRowsTemplate: \"overlayNoRowsTemplate\", noRowsOverlayComponent: \"noRowsOverlayComponent\", noRowsOverlayComponentFramework: \"noRowsOverlayComponentFramework\", noRowsOverlayComponentParams: \"noRowsOverlayComponentParams\", suppressNoRowsOverlay: \"suppressNoRowsOverlay\", pagination: \"pagination\", paginationPageSize: \"paginationPageSize\", paginationAutoPageSize: \"paginationAutoPageSize\", paginateChildRows: \"paginateChildRows\", suppressPaginationPanel: \"suppressPaginationPanel\", pivotMode: \"pivotMode\", pivotPanelShow: \"pivotPanelShow\", pivotColumnGroupTotals: \"pivotColumnGroupTotals\", pivotRowTotals: \"pivotRowTotals\", pivotSuppressAutoColumn: \"pivotSuppressAutoColumn\", suppressExpandablePivotGroups: \"suppressExpandablePivotGroups\", functionsReadOnly: \"functionsReadOnly\", aggFuncs: \"aggFuncs\", suppressAggFuncInHeader: \"suppressAggFuncInHeader\", suppressAggAtRootLevel: \"suppressAggAtRootLevel\", aggregateOnlyChangedColumns: \"aggregateOnlyChangedColumns\", suppressAggFilteredOnly: \"suppressAggFilteredOnly\", removePivotHeaderRowWhenSingleValueColumn: \"removePivotHeaderRowWhenSingleValueColumn\", animateRows: \"animateRows\", enableCellChangeFlash: \"enableCellChangeFlash\", cellFlashDelay: \"cellFlashDelay\", cellFadeDelay: \"cellFadeDelay\", allowShowChangeAfterFilter: \"allowShowChangeAfterFilter\", domLayout: \"domLayout\", ensureDomOrder: \"ensureDomOrder\", enableRtl: \"enableRtl\", suppressColumnVirtualisation: \"suppressColumnVirtualisation\", suppressMaxRenderedRowRestriction: \"suppressMaxRenderedRowRestriction\", suppressRowVirtualisation: \"suppressRowVirtualisation\", rowDragManaged: \"rowDragManaged\", suppressRowDrag: \"suppressRowDrag\", suppressMoveWhenRowDragging: \"suppressMoveWhenRowDragging\", rowDragEntireRow: \"rowDragEntireRow\", rowDragMultiRow: \"rowDragMultiRow\", rowDragText: \"rowDragText\", fullWidthCellRenderer: \"fullWidthCellRenderer\", fullWidthCellRendererFramework: \"fullWidthCellRendererFramework\", fullWidthCellRendererParams: \"fullWidthCellRendererParams\", embedFullWidthRows: \"embedFullWidthRows\", deprecatedEmbedFullWidthRows: \"deprecatedEmbedFullWidthRows\", groupDisplayType: \"groupDisplayType\", groupDefaultExpanded: \"groupDefaultExpanded\", autoGroupColumnDef: \"autoGroupColumnDef\", groupMaintainOrder: \"groupMaintainOrder\", groupSelectsChildren: \"groupSelectsChildren\", groupAggFiltering: \"groupAggFiltering\", groupIncludeFooter: \"groupIncludeFooter\", groupIncludeTotalFooter: \"groupIncludeTotalFooter\", groupSuppressBlankHeader: \"groupSuppressBlankHeader\", groupSelectsFiltered: \"groupSelectsFiltered\", showOpenedGroup: \"showOpenedGroup\", groupRemoveSingleChildren: \"groupRemoveSingleChildren\", groupRemoveLowestSingleChildren: \"groupRemoveLowestSingleChildren\", groupHideOpenParents: \"groupHideOpenParents\", rowGroupPanelShow: \"rowGroupPanelShow\", groupRowRenderer: \"groupRowRenderer\", groupRowRendererFramework: \"groupRowRendererFramework\", groupRowRendererParams: \"groupRowRendererParams\", suppressMakeColumnVisibleAfterUnGroup: \"suppressMakeColumnVisibleAfterUnGroup\", treeData: \"treeData\", rowGroupPanelSuppressSort: \"rowGroupPanelSuppressSort\", groupRowsSticky: \"groupRowsSticky\", groupRowInnerRenderer: \"groupRowInnerRenderer\", groupRowInnerRendererFramework: \"groupRowInnerRendererFramework\", groupMultiAutoColumn: \"groupMultiAutoColumn\", groupUseEntireRow: \"groupUseEntireRow\", groupSuppressAutoColumn: \"groupSuppressAutoColumn\", rememberGroupStateWhenNewData: \"rememberGroupStateWhenNewData\", pinnedTopRowData: \"pinnedTopRowData\", pinnedBottomRowData: \"pinnedBottomRowData\", rowModelType: \"rowModelType\", rowData: \"rowData\", immutableData: \"immutableData\", asyncTransactionWaitMillis: \"asyncTransactionWaitMillis\", suppressModelUpdateAfterUpdateTransaction: \"suppressModelUpdateAfterUpdateTransaction\", deltaRowDataMode: \"deltaRowDataMode\", batchUpdateWaitMillis: \"batchUpdateWaitMillis\", datasource: \"datasource\", cacheOverflowSize: \"cacheOverflowSize\", infiniteInitialRowCount: \"infiniteInitialRowCount\", serverSideInitialRowCount: \"serverSideInitialRowCount\", serverSideStoreType: \"serverSideStoreType\", serverSideInfiniteScroll: \"serverSideInfiniteScroll\", cacheBlockSize: \"cacheBlockSize\", maxBlocksInCache: \"maxBlocksInCache\", maxConcurrentDatasourceRequests: \"maxConcurrentDatasourceRequests\", blockLoadDebounceMillis: \"blockLoadDebounceMillis\", purgeClosedRowNodes: \"purgeClosedRowNodes\", serverSideDatasource: \"serverSideDatasource\", serverSideSortAllLevels: \"serverSideSortAllLevels\", serverSideFilterAllLevels: \"serverSideFilterAllLevels\", serverSideSortOnServer: \"serverSideSortOnServer\", serverSideFilterOnServer: \"serverSideFilterOnServer\", serverSideSortingAlwaysResets: \"serverSideSortingAlwaysResets\", serverSideFilteringAlwaysResets: \"serverSideFilteringAlwaysResets\", suppressEnterpriseResetOnNewColumns: \"suppressEnterpriseResetOnNewColumns\", viewportDatasource: \"viewportDatasource\", viewportRowModelPageSize: \"viewportRowModelPageSize\", viewportRowModelBufferSize: \"viewportRowModelBufferSize\", alwaysShowHorizontalScroll: \"alwaysShowHorizontalScroll\", alwaysShowVerticalScroll: \"alwaysShowVerticalScroll\", debounceVerticalScrollbar: \"debounceVerticalScrollbar\", suppressHorizontalScroll: \"suppressHorizontalScroll\", suppressScrollOnNewData: \"suppressScrollOnNewData\", suppressScrollWhenPopupsAreOpen: \"suppressScrollWhenPopupsAreOpen\", suppressAnimationFrame: \"suppressAnimationFrame\", suppressMiddleClickScrolls: \"suppressMiddleClickScrolls\", suppressPreventDefaultOnMouseWheel: \"suppressPreventDefaultOnMouseWheel\", scrollbarWidth: \"scrollbarWidth\", rowSelection: \"rowSelection\", rowMultiSelectWithClick: \"rowMultiSelectWithClick\", suppressRowDeselection: \"suppressRowDeselection\", suppressRowClickSelection: \"suppressRowClickSelection\", suppressCellSelection: \"suppressCellSelection\", suppressCellFocus: \"suppressCellFocus\", suppressMultiRangeSelection: \"suppressMultiRangeSelection\", enableCellTextSelection: \"enableCellTextSelection\", enableRangeSelection: \"enableRangeSelection\", enableRangeHandle: \"enableRangeHandle\", enableFillHandle: \"enableFillHandle\", fillHandleDirection: \"fillHandleDirection\", suppressClearOnFillReduction: \"suppressClearOnFillReduction\", sortingOrder: \"sortingOrder\", accentedSort: \"accentedSort\", unSortIcon: \"unSortIcon\", suppressMultiSort: \"suppressMultiSort\", alwaysMultiSort: \"alwaysMultiSort\", multiSortKey: \"multiSortKey\", suppressMaintainUnsortedOrder: \"suppressMaintainUnsortedOrder\", icons: \"icons\", rowHeight: \"rowHeight\", rowStyle: \"rowStyle\", rowClass: \"rowClass\", rowClassRules: \"rowClassRules\", suppressRowHoverHighlight: \"suppressRowHoverHighlight\", suppressRowTransform: \"suppressRowTransform\", columnHoverHighlight: \"columnHoverHighlight\", deltaSort: \"deltaSort\", treeDataDisplayType: \"treeDataDisplayType\", angularCompileRows: \"angularCompileRows\", angularCompileFilters: \"angularCompileFilters\", functionsPassive: \"functionsPassive\", enableGroupEdit: \"enableGroupEdit\", getContextMenuItems: \"getContextMenuItems\", getMainMenuItems: \"getMainMenuItems\", postProcessPopup: \"postProcessPopup\", processCellForClipboard: \"processCellForClipboard\", processHeaderForClipboard: \"processHeaderForClipboard\", processGroupHeaderForClipboard: \"processGroupHeaderForClipboard\", processCellFromClipboard: \"processCellFromClipboard\", sendToClipboard: \"sendToClipboard\", processDataFromClipboard: \"processDataFromClipboard\", isExternalFilterPresent: \"isExternalFilterPresent\", doesExternalFilterPass: \"doesExternalFilterPass\", getChartToolbarItems: \"getChartToolbarItems\", createChartContainer: \"createChartContainer\", navigateToNextHeader: \"navigateToNextHeader\", tabToNextHeader: \"tabToNextHeader\", navigateToNextCell: \"navigateToNextCell\", tabToNextCell: \"tabToNextCell\", suppressKeyboardEvent: \"suppressKeyboardEvent\", localeTextFunc: \"localeTextFunc\", getLocaleText: \"getLocaleText\", getDocument: \"getDocument\", paginationNumberFormatter: \"paginationNumberFormatter\", groupRowAggNodes: \"groupRowAggNodes\", getGroupRowAgg: \"getGroupRowAgg\", isGroupOpenByDefault: \"isGroupOpenByDefault\", initialGroupOrderComparator: \"initialGroupOrderComparator\", defaultGroupOrderComparator: \"defaultGroupOrderComparator\", processSecondaryColDef: \"processSecondaryColDef\", processSecondaryColGroupDef: \"processSecondaryColGroupDef\", processPivotResultColDef: \"processPivotResultColDef\", processPivotResultColGroupDef: \"processPivotResultColGroupDef\", getDataPath: \"getDataPath\", defaultGroupSortComparator: \"defaultGroupSortComparator\", getChildCount: \"getChildCount\", getServerSideGroupLevelParams: \"getServerSideGroupLevelParams\", getServerSideStoreParams: \"getServerSideStoreParams\", isServerSideGroupOpenByDefault: \"isServerSideGroupOpenByDefault\", isApplyServerSideTransaction: \"isApplyServerSideTransaction\", isServerSideGroup: \"isServerSideGroup\", getServerSideGroupKey: \"getServerSideGroupKey\", getBusinessKeyForNode: \"getBusinessKeyForNode\", getRowNodeId: \"getRowNodeId\", getRowId: \"getRowId\", resetRowDataOnUpdate: \"resetRowDataOnUpdate\", processRowPostCreate: \"processRowPostCreate\", isRowSelectable: \"isRowSelectable\", isRowMaster: \"isRowMaster\", fillOperation: \"fillOperation\", postSort: \"postSort\", postSortRows: \"postSortRows\", getRowStyle: \"getRowStyle\", getRowClass: \"getRowClass\", getRowHeight: \"getRowHeight\", isFullWidthCell: \"isFullWidthCell\", isFullWidthRow: \"isFullWidthRow\" }, outputs: { toolPanelVisibleChanged: \"toolPanelVisibleChanged\", toolPanelSizeChanged: \"toolPanelSizeChanged\", pasteStart: \"pasteStart\", pasteEnd: \"pasteEnd\", columnVisible: \"columnVisible\", columnPinned: \"columnPinned\", columnResized: \"columnResized\", columnMoved: \"columnMoved\", columnValueChanged: \"columnValueChanged\", columnPivotModeChanged: \"columnPivotModeChanged\", columnPivotChanged: \"columnPivotChanged\", columnGroupOpened: \"columnGroupOpened\", newColumnsLoaded: \"newColumnsLoaded\", gridColumnsChanged: \"gridColumnsChanged\", displayedColumnsChanged: \"displayedColumnsChanged\", virtualColumnsChanged: \"virtualColumnsChanged\", columnEverythingChanged: \"columnEverythingChanged\", componentStateChanged: \"componentStateChanged\", cellValueChanged: \"cellValueChanged\", cellEditRequest: \"cellEditRequest\", rowValueChanged: \"rowValueChanged\", cellEditingStarted: \"cellEditingStarted\", cellEditingStopped: \"cellEditingStopped\", rowEditingStarted: \"rowEditingStarted\", rowEditingStopped: \"rowEditingStopped\", filterOpened: \"filterOpened\", filterChanged: \"filterChanged\", filterModified: \"filterModified\", chartCreated: \"chartCreated\", chartRangeSelectionChanged: \"chartRangeSelectionChanged\", chartOptionsChanged: \"chartOptionsChanged\", chartDestroyed: \"chartDestroyed\", cellKeyDown: \"cellKeyDown\", cellKeyPress: \"cellKeyPress\", gridReady: \"gridReady\", firstDataRendered: \"firstDataRendered\", gridSizeChanged: \"gridSizeChanged\", modelUpdated: \"modelUpdated\", virtualRowRemoved: \"virtualRowRemoved\", viewportChanged: \"viewportChanged\", bodyScroll: \"bodyScroll\", bodyScrollEnd: \"bodyScrollEnd\", dragStarted: \"dragStarted\", dragStopped: \"dragStopped\", paginationChanged: \"paginationChanged\", rowDragEnter: \"rowDragEnter\", rowDragMove: \"rowDragMove\", rowDragLeave: \"rowDragLeave\", rowDragEnd: \"rowDragEnd\", columnRowGroupChanged: \"columnRowGroupChanged\", rowGroupOpened: \"rowGroupOpened\", expandOrCollapseAll: \"expandOrCollapseAll\", pinnedRowDataChanged: \"pinnedRowDataChanged\", rowDataChanged: \"rowDataChanged\", rowDataUpdated: \"rowDataUpdated\", asyncTransactionsFlushed: \"asyncTransactionsFlushed\", cellClicked: \"cellClicked\", cellDoubleClicked: \"cellDoubleClicked\", cellFocused: \"cellFocused\", cellMouseOver: \"cellMouseOver\", cellMouseOut: \"cellMouseOut\", cellMouseDown: \"cellMouseDown\", rowClicked: \"rowClicked\", rowDoubleClicked: \"rowDoubleClicked\", rowSelected: \"rowSelected\", selectionChanged: \"selectionChanged\", cellContextMenu: \"cellContextMenu\", rangeSelectionChanged: \"rangeSelectionChanged\", sortChanged: \"sortChanged\", columnRowGroupChangeRequest: \"columnRowGroupChangeRequest\", columnPivotChangeRequest: \"columnPivotChangeRequest\", columnValueChangeRequest: \"columnValueChangeRequest\", columnAggFuncChangeRequest: \"columnAggFuncChangeRequest\" }, providers: [\n AngularFrameworkOverrides,\n AngularFrameworkComponentWrapper\n ], queries: [{ propertyName: \"columns\", predicate: AgGridColumn }], usesOnChanges: true, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgGridAngular, decorators: [{\n type: Component,\n args: [{\n selector: 'ag-grid-angular',\n template: '',\n providers: [\n AngularFrameworkOverrides,\n AngularFrameworkComponentWrapper\n ],\n // tell angular we don't want view encapsulation, we don't want a shadow root\n encapsulation: ViewEncapsulation.None\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: AngularFrameworkOverrides }, { type: AngularFrameworkComponentWrapper }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { columns: [{\n type: ContentChildren,\n args: [AgGridColumn]\n }], gridOptions: [{\n type: Input\n }], modules: [{\n type: Input\n }], statusBar: [{\n type: Input\n }], sideBar: [{\n type: Input\n }], suppressContextMenu: [{\n type: Input\n }], preventDefaultOnContextMenu: [{\n type: Input\n }], allowContextMenuWithControlKey: [{\n type: Input\n }], suppressMenuHide: [{\n type: Input\n }], enableBrowserTooltips: [{\n type: Input\n }], tooltipShowDelay: [{\n type: Input\n }], tooltipHideDelay: [{\n type: Input\n }], tooltipMouseTrack: [{\n type: Input\n }], popupParent: [{\n type: Input\n }], copyHeadersToClipboard: [{\n type: Input\n }], copyGroupHeadersToClipboard: [{\n type: Input\n }], clipboardDelimiter: [{\n type: Input\n }], suppressCopyRowsToClipboard: [{\n type: Input\n }], suppressCopySingleCellRanges: [{\n type: Input\n }], suppressLastEmptyLineOnPaste: [{\n type: Input\n }], suppressClipboardPaste: [{\n type: Input\n }], suppressClipboardApi: [{\n type: Input\n }], columnDefs: [{\n type: Input\n }], defaultColDef: [{\n type: Input\n }], defaultColGroupDef: [{\n type: Input\n }], columnTypes: [{\n type: Input\n }], maintainColumnOrder: [{\n type: Input\n }], suppressFieldDotNotation: [{\n type: Input\n }], deltaColumnMode: [{\n type: Input\n }], applyColumnDefOrder: [{\n type: Input\n }], immutableColumns: [{\n type: Input\n }], suppressSetColumnStateEvents: [{\n type: Input\n }], suppressColumnStateEvents: [{\n type: Input\n }], colWidth: [{\n type: Input\n }], minColWidth: [{\n type: Input\n }], maxColWidth: [{\n type: Input\n }], headerHeight: [{\n type: Input\n }], groupHeaderHeight: [{\n type: Input\n }], floatingFiltersHeight: [{\n type: Input\n }], pivotHeaderHeight: [{\n type: Input\n }], pivotGroupHeaderHeight: [{\n type: Input\n }], allowDragFromColumnsToolPanel: [{\n type: Input\n }], suppressMovableColumns: [{\n type: Input\n }], suppressColumnMoveAnimation: [{\n type: Input\n }], suppressDragLeaveHidesColumns: [{\n type: Input\n }], suppressRowGroupHidesColumns: [{\n type: Input\n }], colResizeDefault: [{\n type: Input\n }], suppressAutoSize: [{\n type: Input\n }], autoSizePadding: [{\n type: Input\n }], skipHeaderOnAutoSize: [{\n type: Input\n }], components: [{\n type: Input\n }], frameworkComponents: [{\n type: Input\n }], editType: [{\n type: Input\n }], singleClickEdit: [{\n type: Input\n }], suppressClickEdit: [{\n type: Input\n }], readOnlyEdit: [{\n type: Input\n }], stopEditingWhenCellsLoseFocus: [{\n type: Input\n }], enterMovesDown: [{\n type: Input\n }], enterMovesDownAfterEdit: [{\n type: Input\n }], enableCellEditingOnBackspace: [{\n type: Input\n }], undoRedoCellEditing: [{\n type: Input\n }], undoRedoCellEditingLimit: [{\n type: Input\n }], stopEditingWhenGridLosesFocus: [{\n type: Input\n }], defaultCsvExportParams: [{\n type: Input\n }], suppressCsvExport: [{\n type: Input\n }], defaultExcelExportParams: [{\n type: Input\n }], suppressExcelExport: [{\n type: Input\n }], excelStyles: [{\n type: Input\n }], defaultExportParams: [{\n type: Input\n }], quickFilterText: [{\n type: Input\n }], cacheQuickFilter: [{\n type: Input\n }], excludeChildrenWhenTreeDataFiltering: [{\n type: Input\n }], enableCharts: [{\n type: Input\n }], chartThemes: [{\n type: Input\n }], customChartThemes: [{\n type: Input\n }], chartThemeOverrides: [{\n type: Input\n }], enableChartToolPanelsButton: [{\n type: Input\n }], chartToolPanelsDef: [{\n type: Input\n }], loadingCellRenderer: [{\n type: Input\n }], loadingCellRendererFramework: [{\n type: Input\n }], loadingCellRendererParams: [{\n type: Input\n }], loadingCellRendererSelector: [{\n type: Input\n }], localeText: [{\n type: Input\n }], masterDetail: [{\n type: Input\n }], keepDetailRows: [{\n type: Input\n }], keepDetailRowsCount: [{\n type: Input\n }], detailCellRenderer: [{\n type: Input\n }], detailCellRendererFramework: [{\n type: Input\n }], detailCellRendererParams: [{\n type: Input\n }], detailRowHeight: [{\n type: Input\n }], detailRowAutoHeight: [{\n type: Input\n }], context: [{\n type: Input\n }], alignedGrids: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], rowBuffer: [{\n type: Input\n }], valueCache: [{\n type: Input\n }], valueCacheNeverExpires: [{\n type: Input\n }], enableCellExpressions: [{\n type: Input\n }], suppressParentsInRowNodes: [{\n type: Input\n }], suppressTouch: [{\n type: Input\n }], suppressFocusAfterRefresh: [{\n type: Input\n }], suppressAsyncEvents: [{\n type: Input\n }], suppressBrowserResizeObserver: [{\n type: Input\n }], suppressPropertyNamesCheck: [{\n type: Input\n }], suppressChangeDetection: [{\n type: Input\n }], debug: [{\n type: Input\n }], overlayLoadingTemplate: [{\n type: Input\n }], loadingOverlayComponent: [{\n type: Input\n }], loadingOverlayComponentFramework: [{\n type: Input\n }], loadingOverlayComponentParams: [{\n type: Input\n }], suppressLoadingOverlay: [{\n type: Input\n }], overlayNoRowsTemplate: [{\n type: Input\n }], noRowsOverlayComponent: [{\n type: Input\n }], noRowsOverlayComponentFramework: [{\n type: Input\n }], noRowsOverlayComponentParams: [{\n type: Input\n }], suppressNoRowsOverlay: [{\n type: Input\n }], pagination: [{\n type: Input\n }], paginationPageSize: [{\n type: Input\n }], paginationAutoPageSize: [{\n type: Input\n }], paginateChildRows: [{\n type: Input\n }], suppressPaginationPanel: [{\n type: Input\n }], pivotMode: [{\n type: Input\n }], pivotPanelShow: [{\n type: Input\n }], pivotColumnGroupTotals: [{\n type: Input\n }], pivotRowTotals: [{\n type: Input\n }], pivotSuppressAutoColumn: [{\n type: Input\n }], suppressExpandablePivotGroups: [{\n type: Input\n }], functionsReadOnly: [{\n type: Input\n }], aggFuncs: [{\n type: Input\n }], suppressAggFuncInHeader: [{\n type: Input\n }], suppressAggAtRootLevel: [{\n type: Input\n }], aggregateOnlyChangedColumns: [{\n type: Input\n }], suppressAggFilteredOnly: [{\n type: Input\n }], removePivotHeaderRowWhenSingleValueColumn: [{\n type: Input\n }], animateRows: [{\n type: Input\n }], enableCellChangeFlash: [{\n type: Input\n }], cellFlashDelay: [{\n type: Input\n }], cellFadeDelay: [{\n type: Input\n }], allowShowChangeAfterFilter: [{\n type: Input\n }], domLayout: [{\n type: Input\n }], ensureDomOrder: [{\n type: Input\n }], enableRtl: [{\n type: Input\n }], suppressColumnVirtualisation: [{\n type: Input\n }], suppressMaxRenderedRowRestriction: [{\n type: Input\n }], suppressRowVirtualisation: [{\n type: Input\n }], rowDragManaged: [{\n type: Input\n }], suppressRowDrag: [{\n type: Input\n }], suppressMoveWhenRowDragging: [{\n type: Input\n }], rowDragEntireRow: [{\n type: Input\n }], rowDragMultiRow: [{\n type: Input\n }], rowDragText: [{\n type: Input\n }], fullWidthCellRenderer: [{\n type: Input\n }], fullWidthCellRendererFramework: [{\n type: Input\n }], fullWidthCellRendererParams: [{\n type: Input\n }], embedFullWidthRows: [{\n type: Input\n }], deprecatedEmbedFullWidthRows: [{\n type: Input\n }], groupDisplayType: [{\n type: Input\n }], groupDefaultExpanded: [{\n type: Input\n }], autoGroupColumnDef: [{\n type: Input\n }], groupMaintainOrder: [{\n type: Input\n }], groupSelectsChildren: [{\n type: Input\n }], groupAggFiltering: [{\n type: Input\n }], groupIncludeFooter: [{\n type: Input\n }], groupIncludeTotalFooter: [{\n type: Input\n }], groupSuppressBlankHeader: [{\n type: Input\n }], groupSelectsFiltered: [{\n type: Input\n }], showOpenedGroup: [{\n type: Input\n }], groupRemoveSingleChildren: [{\n type: Input\n }], groupRemoveLowestSingleChildren: [{\n type: Input\n }], groupHideOpenParents: [{\n type: Input\n }], rowGroupPanelShow: [{\n type: Input\n }], groupRowRenderer: [{\n type: Input\n }], groupRowRendererFramework: [{\n type: Input\n }], groupRowRendererParams: [{\n type: Input\n }], suppressMakeColumnVisibleAfterUnGroup: [{\n type: Input\n }], treeData: [{\n type: Input\n }], rowGroupPanelSuppressSort: [{\n type: Input\n }], groupRowsSticky: [{\n type: Input\n }], groupRowInnerRenderer: [{\n type: Input\n }], groupRowInnerRendererFramework: [{\n type: Input\n }], groupMultiAutoColumn: [{\n type: Input\n }], groupUseEntireRow: [{\n type: Input\n }], groupSuppressAutoColumn: [{\n type: Input\n }], rememberGroupStateWhenNewData: [{\n type: Input\n }], pinnedTopRowData: [{\n type: Input\n }], pinnedBottomRowData: [{\n type: Input\n }], rowModelType: [{\n type: Input\n }], rowData: [{\n type: Input\n }], immutableData: [{\n type: Input\n }], asyncTransactionWaitMillis: [{\n type: Input\n }], suppressModelUpdateAfterUpdateTransaction: [{\n type: Input\n }], deltaRowDataMode: [{\n type: Input\n }], batchUpdateWaitMillis: [{\n type: Input\n }], datasource: [{\n type: Input\n }], cacheOverflowSize: [{\n type: Input\n }], infiniteInitialRowCount: [{\n type: Input\n }], serverSideInitialRowCount: [{\n type: Input\n }], serverSideStoreType: [{\n type: Input\n }], serverSideInfiniteScroll: [{\n type: Input\n }], cacheBlockSize: [{\n type: Input\n }], maxBlocksInCache: [{\n type: Input\n }], maxConcurrentDatasourceRequests: [{\n type: Input\n }], blockLoadDebounceMillis: [{\n type: Input\n }], purgeClosedRowNodes: [{\n type: Input\n }], serverSideDatasource: [{\n type: Input\n }], serverSideSortAllLevels: [{\n type: Input\n }], serverSideFilterAllLevels: [{\n type: Input\n }], serverSideSortOnServer: [{\n type: Input\n }], serverSideFilterOnServer: [{\n type: Input\n }], serverSideSortingAlwaysResets: [{\n type: Input\n }], serverSideFilteringAlwaysResets: [{\n type: Input\n }], suppressEnterpriseResetOnNewColumns: [{\n type: Input\n }], viewportDatasource: [{\n type: Input\n }], viewportRowModelPageSize: [{\n type: Input\n }], viewportRowModelBufferSize: [{\n type: Input\n }], alwaysShowHorizontalScroll: [{\n type: Input\n }], alwaysShowVerticalScroll: [{\n type: Input\n }], debounceVerticalScrollbar: [{\n type: Input\n }], suppressHorizontalScroll: [{\n type: Input\n }], suppressScrollOnNewData: [{\n type: Input\n }], suppressScrollWhenPopupsAreOpen: [{\n type: Input\n }], suppressAnimationFrame: [{\n type: Input\n }], suppressMiddleClickScrolls: [{\n type: Input\n }], suppressPreventDefaultOnMouseWheel: [{\n type: Input\n }], scrollbarWidth: [{\n type: Input\n }], rowSelection: [{\n type: Input\n }], rowMultiSelectWithClick: [{\n type: Input\n }], suppressRowDeselection: [{\n type: Input\n }], suppressRowClickSelection: [{\n type: Input\n }], suppressCellSelection: [{\n type: Input\n }], suppressCellFocus: [{\n type: Input\n }], suppressMultiRangeSelection: [{\n type: Input\n }], enableCellTextSelection: [{\n type: Input\n }], enableRangeSelection: [{\n type: Input\n }], enableRangeHandle: [{\n type: Input\n }], enableFillHandle: [{\n type: Input\n }], fillHandleDirection: [{\n type: Input\n }], suppressClearOnFillReduction: [{\n type: Input\n }], sortingOrder: [{\n type: Input\n }], accentedSort: [{\n type: Input\n }], unSortIcon: [{\n type: Input\n }], suppressMultiSort: [{\n type: Input\n }], alwaysMultiSort: [{\n type: Input\n }], multiSortKey: [{\n type: Input\n }], suppressMaintainUnsortedOrder: [{\n type: Input\n }], icons: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], rowStyle: [{\n type: Input\n }], rowClass: [{\n type: Input\n }], rowClassRules: [{\n type: Input\n }], suppressRowHoverHighlight: [{\n type: Input\n }], suppressRowTransform: [{\n type: Input\n }], columnHoverHighlight: [{\n type: Input\n }], deltaSort: [{\n type: Input\n }], treeDataDisplayType: [{\n type: Input\n }], angularCompileRows: [{\n type: Input\n }], angularCompileFilters: [{\n type: Input\n }], functionsPassive: [{\n type: Input\n }], enableGroupEdit: [{\n type: Input\n }], getContextMenuItems: [{\n type: Input\n }], getMainMenuItems: [{\n type: Input\n }], postProcessPopup: [{\n type: Input\n }], processCellForClipboard: [{\n type: Input\n }], processHeaderForClipboard: [{\n type: Input\n }], processGroupHeaderForClipboard: [{\n type: Input\n }], processCellFromClipboard: [{\n type: Input\n }], sendToClipboard: [{\n type: Input\n }], processDataFromClipboard: [{\n type: Input\n }], isExternalFilterPresent: [{\n type: Input\n }], doesExternalFilterPass: [{\n type: Input\n }], getChartToolbarItems: [{\n type: Input\n }], createChartContainer: [{\n type: Input\n }], navigateToNextHeader: [{\n type: Input\n }], tabToNextHeader: [{\n type: Input\n }], navigateToNextCell: [{\n type: Input\n }], tabToNextCell: [{\n type: Input\n }], suppressKeyboardEvent: [{\n type: Input\n }], localeTextFunc: [{\n type: Input\n }], getLocaleText: [{\n type: Input\n }], getDocument: [{\n type: Input\n }], paginationNumberFormatter: [{\n type: Input\n }], groupRowAggNodes: [{\n type: Input\n }], getGroupRowAgg: [{\n type: Input\n }], isGroupOpenByDefault: [{\n type: Input\n }], initialGroupOrderComparator: [{\n type: Input\n }], defaultGroupOrderComparator: [{\n type: Input\n }], processSecondaryColDef: [{\n type: Input\n }], processSecondaryColGroupDef: [{\n type: Input\n }], processPivotResultColDef: [{\n type: Input\n }], processPivotResultColGroupDef: [{\n type: Input\n }], getDataPath: [{\n type: Input\n }], defaultGroupSortComparator: [{\n type: Input\n }], getChildCount: [{\n type: Input\n }], getServerSideGroupLevelParams: [{\n type: Input\n }], getServerSideStoreParams: [{\n type: Input\n }], isServerSideGroupOpenByDefault: [{\n type: Input\n }], isApplyServerSideTransaction: [{\n type: Input\n }], isServerSideGroup: [{\n type: Input\n }], getServerSideGroupKey: [{\n type: Input\n }], getBusinessKeyForNode: [{\n type: Input\n }], getRowNodeId: [{\n type: Input\n }], getRowId: [{\n type: Input\n }], resetRowDataOnUpdate: [{\n type: Input\n }], processRowPostCreate: [{\n type: Input\n }], isRowSelectable: [{\n type: Input\n }], isRowMaster: [{\n type: Input\n }], fillOperation: [{\n type: Input\n }], postSort: [{\n type: Input\n }], postSortRows: [{\n type: Input\n }], getRowStyle: [{\n type: Input\n }], getRowClass: [{\n type: Input\n }], getRowHeight: [{\n type: Input\n }], isFullWidthCell: [{\n type: Input\n }], isFullWidthRow: [{\n type: Input\n }], toolPanelVisibleChanged: [{\n type: Output\n }], toolPanelSizeChanged: [{\n type: Output\n }], pasteStart: [{\n type: Output\n }], pasteEnd: [{\n type: Output\n }], columnVisible: [{\n type: Output\n }], columnPinned: [{\n type: Output\n }], columnResized: [{\n type: Output\n }], columnMoved: [{\n type: Output\n }], columnValueChanged: [{\n type: Output\n }], columnPivotModeChanged: [{\n type: Output\n }], columnPivotChanged: [{\n type: Output\n }], columnGroupOpened: [{\n type: Output\n }], newColumnsLoaded: [{\n type: Output\n }], gridColumnsChanged: [{\n type: Output\n }], displayedColumnsChanged: [{\n type: Output\n }], virtualColumnsChanged: [{\n type: Output\n }], columnEverythingChanged: [{\n type: Output\n }], componentStateChanged: [{\n type: Output\n }], cellValueChanged: [{\n type: Output\n }], cellEditRequest: [{\n type: Output\n }], rowValueChanged: [{\n type: Output\n }], cellEditingStarted: [{\n type: Output\n }], cellEditingStopped: [{\n type: Output\n }], rowEditingStarted: [{\n type: Output\n }], rowEditingStopped: [{\n type: Output\n }], filterOpened: [{\n type: Output\n }], filterChanged: [{\n type: Output\n }], filterModified: [{\n type: Output\n }], chartCreated: [{\n type: Output\n }], chartRangeSelectionChanged: [{\n type: Output\n }], chartOptionsChanged: [{\n type: Output\n }], chartDestroyed: [{\n type: Output\n }], cellKeyDown: [{\n type: Output\n }], cellKeyPress: [{\n type: Output\n }], gridReady: [{\n type: Output\n }], firstDataRendered: [{\n type: Output\n }], gridSizeChanged: [{\n type: Output\n }], modelUpdated: [{\n type: Output\n }], virtualRowRemoved: [{\n type: Output\n }], viewportChanged: [{\n type: Output\n }], bodyScroll: [{\n type: Output\n }], bodyScrollEnd: [{\n type: Output\n }], dragStarted: [{\n type: Output\n }], dragStopped: [{\n type: Output\n }], paginationChanged: [{\n type: Output\n }], rowDragEnter: [{\n type: Output\n }], rowDragMove: [{\n type: Output\n }], rowDragLeave: [{\n type: Output\n }], rowDragEnd: [{\n type: Output\n }], columnRowGroupChanged: [{\n type: Output\n }], rowGroupOpened: [{\n type: Output\n }], expandOrCollapseAll: [{\n type: Output\n }], pinnedRowDataChanged: [{\n type: Output\n }], rowDataChanged: [{\n type: Output\n }], rowDataUpdated: [{\n type: Output\n }], asyncTransactionsFlushed: [{\n type: Output\n }], cellClicked: [{\n type: Output\n }], cellDoubleClicked: [{\n type: Output\n }], cellFocused: [{\n type: Output\n }], cellMouseOver: [{\n type: Output\n }], cellMouseOut: [{\n type: Output\n }], cellMouseDown: [{\n type: Output\n }], rowClicked: [{\n type: Output\n }], rowDoubleClicked: [{\n type: Output\n }], rowSelected: [{\n type: Output\n }], selectionChanged: [{\n type: Output\n }], cellContextMenu: [{\n type: Output\n }], rangeSelectionChanged: [{\n type: Output\n }], sortChanged: [{\n type: Output\n }], columnRowGroupChangeRequest: [{\n type: Output\n }], columnPivotChangeRequest: [{\n type: Output\n }], columnValueChangeRequest: [{\n type: Output\n }], columnAggFuncChangeRequest: [{\n type: Output\n }] } });\n\nclass AgGridModule {\n}\nAgGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAgGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgGridModule, declarations: [AgGridAngular, AgGridColumn], exports: [AgGridAngular, AgGridColumn] });\nAgGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgGridModule, imports: [[]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: AgGridModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [AgGridAngular, AgGridColumn],\n imports: [],\n exports: [AgGridAngular, AgGridColumn]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AgGridAngular, AgGridColumn, AgGridModule, AngularFrameworkComponentWrapper, AngularFrameworkOverrides };\n","import * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from './interfaces';\nimport * as ɵngcc2 from '@angular/common/http';\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { HttpHeaders, HttpParams, HttpResponse, HttpXhrBackend, XhrFactory } from '@angular/common/http';\r\nimport { map } from 'rxjs/operators';\r\nimport { STATUS } from './http-status-codes';\r\nimport { InMemoryBackendConfig, InMemoryBackendConfigArgs, InMemoryDbService } from './interfaces';\r\nimport { BackendService } from './backend.service';\r\n/**\r\n * For Angular `HttpClient` simulate the behavior of a RESTy web api\r\n * backed by the simple in-memory data store provided by the injected `InMemoryDbService`.\r\n * Conforms mostly to behavior described here:\r\n * http://www.restapitutorial.com/lessons/httpmethods.html\r\n *\r\n * ### Usage\r\n *\r\n * Create an in-memory data store class that implements `InMemoryDbService`.\r\n * Call `config` static method with this service class and optional configuration object:\r\n * ```\r\n * // other imports\r\n * import { HttpClientModule } from '@angular/common/http';\r\n * import { HttpClientInMemoryWebApiModule } from 'angular-in-memory-web-api';\r\n *\r\n * import { InMemHeroService, inMemConfig } from '../api/in-memory-hero.service';\r\n * @NgModule({\r\n * imports: [\r\n * HttpModule,\r\n * HttpClientInMemoryWebApiModule.forRoot(InMemHeroService, inMemConfig),\r\n * ...\r\n * ],\r\n * ...\r\n * })\r\n * export class AppModule { ... }\r\n * ```\r\n */\r\nvar HttpClientBackendService = /** @class */ (function (_super) {\r\n __extends(HttpClientBackendService, _super);\r\n function HttpClientBackendService(inMemDbService, config, xhrFactory) {\r\n var _this = _super.call(this, inMemDbService, config) || this;\r\n _this.xhrFactory = xhrFactory;\r\n return _this;\r\n }\r\n HttpClientBackendService.prototype.handle = function (req) {\r\n try {\r\n return this.handleRequest(req);\r\n }\r\n catch (error) {\r\n var err = error.message || error;\r\n var resOptions_1 = this.createErrorResponseOptions(req.url, STATUS.INTERNAL_SERVER_ERROR, \"\" + err);\r\n return this.createResponse$(function () { return resOptions_1; });\r\n }\r\n };\r\n //// protected overrides /////\r\n HttpClientBackendService.prototype.getJsonBody = function (req) {\r\n return req.body;\r\n };\r\n HttpClientBackendService.prototype.getRequestMethod = function (req) {\r\n return (req.method || 'get').toLowerCase();\r\n };\r\n HttpClientBackendService.prototype.createHeaders = function (headers) {\r\n return new HttpHeaders(headers);\r\n };\r\n HttpClientBackendService.prototype.createQueryMap = function (search) {\r\n var map = new Map();\r\n if (search) {\r\n var params_1 = new HttpParams({ fromString: search });\r\n params_1.keys().forEach(function (p) { return map.set(p, params_1.getAll(p)); });\r\n }\r\n return map;\r\n };\r\n HttpClientBackendService.prototype.createResponse$fromResponseOptions$ = function (resOptions$) {\r\n return resOptions$.pipe(map(function (opts) { return new HttpResponse(opts); }));\r\n };\r\n HttpClientBackendService.prototype.createPassThruBackend = function () {\r\n try {\r\n return new HttpXhrBackend(this.xhrFactory);\r\n }\r\n catch (ex) {\r\n ex.message = 'Cannot create passThru404 backend; ' + (ex.message || '');\r\n throw ex;\r\n }\r\n };\r\n HttpClientBackendService = __decorate([ __param(1, Inject(InMemoryBackendConfig)), __param(1, Optional()),\r\n __metadata(\"design:paramtypes\", [InMemoryDbService,\r\n InMemoryBackendConfigArgs,\r\n XhrFactory])\r\n ], HttpClientBackendService);\nHttpClientBackendService.ɵfac = function HttpClientBackendService_Factory(t) { return new (t || HttpClientBackendService)(ɵngcc0.ɵɵinject(ɵngcc1.InMemoryDbService), ɵngcc0.ɵɵinject(InMemoryBackendConfig, 8), ɵngcc0.ɵɵinject(ɵngcc2.XhrFactory)); };\nHttpClientBackendService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: HttpClientBackendService, factory: function (t) { return HttpClientBackendService.ɵfac(t); } });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HttpClientBackendService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.InMemoryDbService }, { type: ɵngcc1.InMemoryBackendConfigArgs, decorators: [{\n type: Inject,\n args: [InMemoryBackendConfig]\n }, {\n type: Optional\n }] }, { type: ɵngcc2.XhrFactory }]; }, null); })();\r\n return HttpClientBackendService;\r\n}(BackendService));\r\nexport { HttpClientBackendService };\r\n\n","export var STATUS = {\r\n CONTINUE: 100,\r\n SWITCHING_PROTOCOLS: 101,\r\n OK: 200,\r\n CREATED: 201,\r\n ACCEPTED: 202,\r\n NON_AUTHORITATIVE_INFORMATION: 203,\r\n NO_CONTENT: 204,\r\n RESET_CONTENT: 205,\r\n PARTIAL_CONTENT: 206,\r\n MULTIPLE_CHOICES: 300,\r\n MOVED_PERMANTENTLY: 301,\r\n FOUND: 302,\r\n SEE_OTHER: 303,\r\n NOT_MODIFIED: 304,\r\n USE_PROXY: 305,\r\n TEMPORARY_REDIRECT: 307,\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n PAYMENT_REQUIRED: 402,\r\n FORBIDDEN: 403,\r\n NOT_FOUND: 404,\r\n METHOD_NOT_ALLOWED: 405,\r\n NOT_ACCEPTABLE: 406,\r\n PROXY_AUTHENTICATION_REQUIRED: 407,\r\n REQUEST_TIMEOUT: 408,\r\n CONFLICT: 409,\r\n GONE: 410,\r\n LENGTH_REQUIRED: 411,\r\n PRECONDITION_FAILED: 412,\r\n PAYLOAD_TO_LARGE: 413,\r\n URI_TOO_LONG: 414,\r\n UNSUPPORTED_MEDIA_TYPE: 415,\r\n RANGE_NOT_SATISFIABLE: 416,\r\n EXPECTATION_FAILED: 417,\r\n IM_A_TEAPOT: 418,\r\n UPGRADE_REQUIRED: 426,\r\n INTERNAL_SERVER_ERROR: 500,\r\n NOT_IMPLEMENTED: 501,\r\n BAD_GATEWAY: 502,\r\n SERVICE_UNAVAILABLE: 503,\r\n GATEWAY_TIMEOUT: 504,\r\n HTTP_VERSION_NOT_SUPPORTED: 505,\r\n PROCESSING: 102,\r\n MULTI_STATUS: 207,\r\n IM_USED: 226,\r\n PERMANENT_REDIRECT: 308,\r\n UNPROCESSABLE_ENTRY: 422,\r\n LOCKED: 423,\r\n FAILED_DEPENDENCY: 424,\r\n PRECONDITION_REQUIRED: 428,\r\n TOO_MANY_REQUESTS: 429,\r\n REQUEST_HEADER_FIELDS_TOO_LARGE: 431,\r\n UNAVAILABLE_FOR_LEGAL_REASONS: 451,\r\n VARIANT_ALSO_NEGOTIATES: 506,\r\n INSUFFICIENT_STORAGE: 507,\r\n NETWORK_AUTHENTICATION_REQUIRED: 511\r\n};\r\n/*tslint:disable:quotemark max-line-length one-line */\r\nexport var STATUS_CODE_INFO = {\r\n '100': {\r\n 'code': 100,\r\n 'text': 'Continue',\r\n 'description': '\\\"The initial part of a request has been received and has not yet been rejected by the server.\\\"',\r\n 'spec_title': 'RFC7231#6.2.1',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.2.1'\r\n },\r\n '101': {\r\n 'code': 101,\r\n 'text': 'Switching Protocols',\r\n 'description': '\\\"The server understands and is willing to comply with the client\\'s request, via the Upgrade header field, for a change in the application protocol being used on this connection.\\\"',\r\n 'spec_title': 'RFC7231#6.2.2',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.2.2'\r\n },\r\n '200': {\r\n 'code': 200,\r\n 'text': 'OK',\r\n 'description': '\\\"The request has succeeded.\\\"',\r\n 'spec_title': 'RFC7231#6.3.1',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.3.1'\r\n },\r\n '201': {\r\n 'code': 201,\r\n 'text': 'Created',\r\n 'description': '\\\"The request has been fulfilled and has resulted in one or more new resources being created.\\\"',\r\n 'spec_title': 'RFC7231#6.3.2',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.3.2'\r\n },\r\n '202': {\r\n 'code': 202,\r\n 'text': 'Accepted',\r\n 'description': '\\\"The request has been accepted for processing, but the processing has not been completed.\\\"',\r\n 'spec_title': 'RFC7231#6.3.3',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.3.3'\r\n },\r\n '203': {\r\n 'code': 203,\r\n 'text': 'Non-Authoritative Information',\r\n 'description': '\\\"The request was successful but the enclosed payload has been modified from that of the origin server\\'s 200 (OK) response by a transforming proxy.\\\"',\r\n 'spec_title': 'RFC7231#6.3.4',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.3.4'\r\n },\r\n '204': {\r\n 'code': 204,\r\n 'text': 'No Content',\r\n 'description': '\\\"The server has successfully fulfilled the request and that there is no additional content to send in the response payload body.\\\"',\r\n 'spec_title': 'RFC7231#6.3.5',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.3.5'\r\n },\r\n '205': {\r\n 'code': 205,\r\n 'text': 'Reset Content',\r\n 'description': '\\\"The server has fulfilled the request and desires that the user agent reset the \\\"document view\\\", which caused the request to be sent, to its original state as received from the origin server.\\\"',\r\n 'spec_title': 'RFC7231#6.3.6',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.3.6'\r\n },\r\n '206': {\r\n 'code': 206,\r\n 'text': 'Partial Content',\r\n 'description': '\\\"The server is successfully fulfilling a range request for the target resource by transferring one or more parts of the selected representation that correspond to the satisfiable ranges found in the requests\\'s Range header field.\\\"',\r\n 'spec_title': 'RFC7233#4.1',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7233#section-4.1'\r\n },\r\n '300': {\r\n 'code': 300,\r\n 'text': 'Multiple Choices',\r\n 'description': '\\\"The target resource has more than one representation, each with its own more specific identifier, and information about the alternatives is being provided so that the user (or user agent) can select a preferred representation by redirecting its request to one or more of those identifiers.\\\"',\r\n 'spec_title': 'RFC7231#6.4.1',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.4.1'\r\n },\r\n '301': {\r\n 'code': 301,\r\n 'text': 'Moved Permanently',\r\n 'description': '\\\"The target resource has been assigned a new permanent URI and any future references to this resource ought to use one of the enclosed URIs.\\\"',\r\n 'spec_title': 'RFC7231#6.4.2',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.4.2'\r\n },\r\n '302': {\r\n 'code': 302,\r\n 'text': 'Found',\r\n 'description': '\\\"The target resource resides temporarily under a different URI.\\\"',\r\n 'spec_title': 'RFC7231#6.4.3',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.4.3'\r\n },\r\n '303': {\r\n 'code': 303,\r\n 'text': 'See Other',\r\n 'description': '\\\"The server is redirecting the user agent to a different resource, as indicated by a URI in the Location header field, that is intended to provide an indirect response to the original request.\\\"',\r\n 'spec_title': 'RFC7231#6.4.4',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.4.4'\r\n },\r\n '304': {\r\n 'code': 304,\r\n 'text': 'Not Modified',\r\n 'description': '\\\"A conditional GET request has been received and would have resulted in a 200 (OK) response if it were not for the fact that the condition has evaluated to false.\\\"',\r\n 'spec_title': 'RFC7232#4.1',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7232#section-4.1'\r\n },\r\n '305': {\r\n 'code': 305,\r\n 'text': 'Use Proxy',\r\n 'description': '*deprecated*',\r\n 'spec_title': 'RFC7231#6.4.5',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.4.5'\r\n },\r\n '307': {\r\n 'code': 307,\r\n 'text': 'Temporary Redirect',\r\n 'description': '\\\"The target resource resides temporarily under a different URI and the user agent MUST NOT change the request method if it performs an automatic redirection to that URI.\\\"',\r\n 'spec_title': 'RFC7231#6.4.7',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.4.7'\r\n },\r\n '400': {\r\n 'code': 400,\r\n 'text': 'Bad Request',\r\n 'description': '\\\"The server cannot or will not process the request because the received syntax is invalid, nonsensical, or exceeds some limitation on what the server is willing to process.\\\"',\r\n 'spec_title': 'RFC7231#6.5.1',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.1'\r\n },\r\n '401': {\r\n 'code': 401,\r\n 'text': 'Unauthorized',\r\n 'description': '\\\"The request has not been applied because it lacks valid authentication credentials for the target resource.\\\"',\r\n 'spec_title': 'RFC7235#6.3.1',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7235#section-3.1'\r\n },\r\n '402': {\r\n 'code': 402,\r\n 'text': 'Payment Required',\r\n 'description': '*reserved*',\r\n 'spec_title': 'RFC7231#6.5.2',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.2'\r\n },\r\n '403': {\r\n 'code': 403,\r\n 'text': 'Forbidden',\r\n 'description': '\\\"The server understood the request but refuses to authorize it.\\\"',\r\n 'spec_title': 'RFC7231#6.5.3',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.3'\r\n },\r\n '404': {\r\n 'code': 404,\r\n 'text': 'Not Found',\r\n 'description': '\\\"The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.\\\"',\r\n 'spec_title': 'RFC7231#6.5.4',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.4'\r\n },\r\n '405': {\r\n 'code': 405,\r\n 'text': 'Method Not Allowed',\r\n 'description': '\\\"The method specified in the request-line is known by the origin server but not supported by the target resource.\\\"',\r\n 'spec_title': 'RFC7231#6.5.5',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.5'\r\n },\r\n '406': {\r\n 'code': 406,\r\n 'text': 'Not Acceptable',\r\n 'description': '\\\"The target resource does not have a current representation that would be acceptable to the user agent, according to the proactive negotiation header fields received in the request, and the server is unwilling to supply a default representation.\\\"',\r\n 'spec_title': 'RFC7231#6.5.6',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.6'\r\n },\r\n '407': {\r\n 'code': 407,\r\n 'text': 'Proxy Authentication Required',\r\n 'description': '\\\"The client needs to authenticate itself in order to use a proxy.\\\"',\r\n 'spec_title': 'RFC7231#6.3.2',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.3.2'\r\n },\r\n '408': {\r\n 'code': 408,\r\n 'text': 'Request Timeout',\r\n 'description': '\\\"The server did not receive a complete request message within the time that it was prepared to wait.\\\"',\r\n 'spec_title': 'RFC7231#6.5.7',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.7'\r\n },\r\n '409': {\r\n 'code': 409,\r\n 'text': 'Conflict',\r\n 'description': '\\\"The request could not be completed due to a conflict with the current state of the resource.\\\"',\r\n 'spec_title': 'RFC7231#6.5.8',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.8'\r\n },\r\n '410': {\r\n 'code': 410,\r\n 'text': 'Gone',\r\n 'description': '\\\"Access to the target resource is no longer available at the origin server and that this condition is likely to be permanent.\\\"',\r\n 'spec_title': 'RFC7231#6.5.9',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.9'\r\n },\r\n '411': {\r\n 'code': 411,\r\n 'text': 'Length Required',\r\n 'description': '\\\"The server refuses to accept the request without a defined Content-Length.\\\"',\r\n 'spec_title': 'RFC7231#6.5.10',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.10'\r\n },\r\n '412': {\r\n 'code': 412,\r\n 'text': 'Precondition Failed',\r\n 'description': '\\\"One or more preconditions given in the request header fields evaluated to false when tested on the server.\\\"',\r\n 'spec_title': 'RFC7232#4.2',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7232#section-4.2'\r\n },\r\n '413': {\r\n 'code': 413,\r\n 'text': 'Payload Too Large',\r\n 'description': '\\\"The server is refusing to process a request because the request payload is larger than the server is willing or able to process.\\\"',\r\n 'spec_title': 'RFC7231#6.5.11',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.11'\r\n },\r\n '414': {\r\n 'code': 414,\r\n 'text': 'URI Too Long',\r\n 'description': '\\\"The server is refusing to service the request because the request-target is longer than the server is willing to interpret.\\\"',\r\n 'spec_title': 'RFC7231#6.5.12',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.12'\r\n },\r\n '415': {\r\n 'code': 415,\r\n 'text': 'Unsupported Media Type',\r\n 'description': '\\\"The origin server is refusing to service the request because the payload is in a format not supported by the target resource for this method.\\\"',\r\n 'spec_title': 'RFC7231#6.5.13',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.13'\r\n },\r\n '416': {\r\n 'code': 416,\r\n 'text': 'Range Not Satisfiable',\r\n 'description': '\\\"None of the ranges in the request\\'s Range header field overlap the current extent of the selected resource or that the set of ranges requested has been rejected due to invalid ranges or an excessive request of small or overlapping ranges.\\\"',\r\n 'spec_title': 'RFC7233#4.4',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7233#section-4.4'\r\n },\r\n '417': {\r\n 'code': 417,\r\n 'text': 'Expectation Failed',\r\n 'description': '\\\"The expectation given in the request\\'s Expect header field could not be met by at least one of the inbound servers.\\\"',\r\n 'spec_title': 'RFC7231#6.5.14',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.14'\r\n },\r\n '418': {\r\n 'code': 418,\r\n 'text': 'I\\'m a teapot',\r\n 'description': '\\\"1988 April Fools Joke. Returned by tea pots requested to brew coffee.\\\"',\r\n 'spec_title': 'RFC 2324',\r\n 'spec_href': 'https://tools.ietf.org/html/rfc2324'\r\n },\r\n '426': {\r\n 'code': 426,\r\n 'text': 'Upgrade Required',\r\n 'description': '\\\"The server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol.\\\"',\r\n 'spec_title': 'RFC7231#6.5.15',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.5.15'\r\n },\r\n '500': {\r\n 'code': 500,\r\n 'text': 'Internal Server Error',\r\n 'description': '\\\"The server encountered an unexpected condition that prevented it from fulfilling the request.\\\"',\r\n 'spec_title': 'RFC7231#6.6.1',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.6.1'\r\n },\r\n '501': {\r\n 'code': 501,\r\n 'text': 'Not Implemented',\r\n 'description': '\\\"The server does not support the functionality required to fulfill the request.\\\"',\r\n 'spec_title': 'RFC7231#6.6.2',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.6.2'\r\n },\r\n '502': {\r\n 'code': 502,\r\n 'text': 'Bad Gateway',\r\n 'description': '\\\"The server, while acting as a gateway or proxy, received an invalid response from an inbound server it accessed while attempting to fulfill the request.\\\"',\r\n 'spec_title': 'RFC7231#6.6.3',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.6.3'\r\n },\r\n '503': {\r\n 'code': 503,\r\n 'text': 'Service Unavailable',\r\n 'description': '\\\"The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.\\\"',\r\n 'spec_title': 'RFC7231#6.6.4',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.6.4'\r\n },\r\n '504': {\r\n 'code': 504,\r\n 'text': 'Gateway Time-out',\r\n 'description': '\\\"The server, while acting as a gateway or proxy, did not receive a timely response from an upstream server it needed to access in order to complete the request.\\\"',\r\n 'spec_title': 'RFC7231#6.6.5',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.6.5'\r\n },\r\n '505': {\r\n 'code': 505,\r\n 'text': 'HTTP Version Not Supported',\r\n 'description': '\\\"The server does not support, or refuses to support, the protocol version that was used in the request message.\\\"',\r\n 'spec_title': 'RFC7231#6.6.6',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7231#section-6.6.6'\r\n },\r\n '102': {\r\n 'code': 102,\r\n 'text': 'Processing',\r\n 'description': '\\\"An interim response to inform the client that the server has accepted the complete request, but has not yet completed it.\\\"',\r\n 'spec_title': 'RFC5218#10.1',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc2518#section-10.1'\r\n },\r\n '207': {\r\n 'code': 207,\r\n 'text': 'Multi-Status',\r\n 'description': '\\\"Status for multiple independent operations.\\\"',\r\n 'spec_title': 'RFC5218#10.2',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc2518#section-10.2'\r\n },\r\n '226': {\r\n 'code': 226,\r\n 'text': 'IM Used',\r\n 'description': '\\\"The server has fulfilled a GET request for the resource, and the response is a representation of the result of one or more instance-manipulations applied to the current instance.\\\"',\r\n 'spec_title': 'RFC3229#10.4.1',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc3229#section-10.4.1'\r\n },\r\n '308': {\r\n 'code': 308,\r\n 'text': 'Permanent Redirect',\r\n 'description': '\\\"The target resource has been assigned a new permanent URI and any future references to this resource SHOULD use one of the returned URIs. [...] This status code is similar to 301 Moved Permanently (Section 7.3.2 of rfc7231), except that it does not allow rewriting the request method from POST to GET.\\\"',\r\n 'spec_title': 'RFC7238',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc7238'\r\n },\r\n '422': {\r\n 'code': 422,\r\n 'text': 'Unprocessable Entity',\r\n 'description': '\\\"The server understands the content type of the request entity (hence a 415(Unsupported Media Type) status code is inappropriate), and the syntax of the request entity is correct (thus a 400 (Bad Request) status code is inappropriate) but was unable to process the contained instructions.\\\"',\r\n 'spec_title': 'RFC5218#10.3',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc2518#section-10.3'\r\n },\r\n '423': {\r\n 'code': 423,\r\n 'text': 'Locked',\r\n 'description': '\\\"The source or destination resource of a method is locked.\\\"',\r\n 'spec_title': 'RFC5218#10.4',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc2518#section-10.4'\r\n },\r\n '424': {\r\n 'code': 424,\r\n 'text': 'Failed Dependency',\r\n 'description': '\\\"The method could not be performed on the resource because the requested action depended on another action and that action failed.\\\"',\r\n 'spec_title': 'RFC5218#10.5',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc2518#section-10.5'\r\n },\r\n '428': {\r\n 'code': 428,\r\n 'text': 'Precondition Required',\r\n 'description': '\\\"The origin server requires the request to be conditional.\\\"',\r\n 'spec_title': 'RFC6585#3',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc6585#section-3'\r\n },\r\n '429': {\r\n 'code': 429,\r\n 'text': 'Too Many Requests',\r\n 'description': '\\\"The user has sent too many requests in a given amount of time (\\\"rate limiting\\\").\\\"',\r\n 'spec_title': 'RFC6585#4',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc6585#section-4'\r\n },\r\n '431': {\r\n 'code': 431,\r\n 'text': 'Request Header Fields Too Large',\r\n 'description': '\\\"The server is unwilling to process the request because its header fields are too large.\\\"',\r\n 'spec_title': 'RFC6585#5',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc6585#section-5'\r\n },\r\n '451': {\r\n 'code': 451,\r\n 'text': 'Unavailable For Legal Reasons',\r\n 'description': '\\\"The server is denying access to the resource in response to a legal demand.\\\"',\r\n 'spec_title': 'draft-ietf-httpbis-legally-restricted-status',\r\n 'spec_href': 'http://tools.ietf.org/html/draft-ietf-httpbis-legally-restricted-status'\r\n },\r\n '506': {\r\n 'code': 506,\r\n 'text': 'Variant Also Negotiates',\r\n 'description': '\\\"The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper end point in the negotiation process.\\\"',\r\n 'spec_title': 'RFC2295#8.1',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc2295#section-8.1'\r\n },\r\n '507': {\r\n 'code': 507,\r\n 'text': 'Insufficient Storage',\r\n 'description': '\\The method could not be performed on the resource because the server is unable to store the representation needed to successfully complete the request.\\\"',\r\n 'spec_title': 'RFC5218#10.6',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc2518#section-10.6'\r\n },\r\n '511': {\r\n 'code': 511,\r\n 'text': 'Network Authentication Required',\r\n 'description': '\\\"The client needs to authenticate to gain network access.\\\"',\r\n 'spec_title': 'RFC6585#6',\r\n 'spec_href': 'http://tools.ietf.org/html/rfc6585#section-6'\r\n }\r\n};\r\n/**\r\n * get the status text from StatusCode\r\n */\r\nexport function getStatusText(status) {\r\n return STATUS_CODE_INFO[status].text || 'Unknown Status';\r\n}\r\n/**\r\n * Returns true if the the Http Status Code is 200-299 (success)\r\n */\r\nexport function isSuccess(status) { return status >= 200 && status < 300; }\r\n;\r\n","import * as ɵngcc0 from '@angular/core';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nimport { Injectable } from '@angular/core';\r\n/**\r\n* Interface for a class that creates an in-memory database\r\n*\r\n* Its `createDb` method creates a hash of named collections that represents the database\r\n*\r\n* For maximum flexibility, the service may define HTTP method overrides.\r\n* Such methods must match the spelling of an HTTP method in lower case (e.g, \"get\").\r\n* If a request has a matching method, it will be called as in\r\n* `get(info: requestInfo, db: {})` where `db` is the database object described above.\r\n*/\r\nvar InMemoryDbService = /** @class */ (function () {\r\n function InMemoryDbService() {\r\n }\r\n return InMemoryDbService;\r\n}());\r\nexport { InMemoryDbService };\r\n/**\r\n* Interface for InMemoryBackend configuration options\r\n*/\r\nvar InMemoryBackendConfigArgs = /** @class */ (function () {\r\n function InMemoryBackendConfigArgs() {\r\n }\r\n return InMemoryBackendConfigArgs;\r\n}());\r\nexport { InMemoryBackendConfigArgs };\r\n/////////////////////////////////\r\n/**\r\n* InMemoryBackendService configuration options\r\n* Usage:\r\n* InMemoryWebApiModule.forRoot(InMemHeroService, {delay: 600})\r\n*\r\n* or if providing separately:\r\n* provide(InMemoryBackendConfig, {useValue: {delay: 600}}),\r\n*/\r\nvar InMemoryBackendConfig = /** @class */ (function () {\r\n function InMemoryBackendConfig(config) {\r\n if (config === void 0) { config = {}; }\r\n Object.assign(this, {\r\n // default config:\r\n caseSensitiveSearch: false,\r\n dataEncapsulation: false,\r\n delay: 500,\r\n delete404: false,\r\n passThruUnknownUrl: false,\r\n post204: true,\r\n post409: false,\r\n put204: true,\r\n put404: false,\r\n apiBase: undefined,\r\n host: undefined,\r\n rootPath: undefined // default value is actually set in InMemoryBackendService ctor\r\n }, config);\r\n }\r\n InMemoryBackendConfig = __decorate([ __metadata(\"design:paramtypes\", [InMemoryBackendConfigArgs])\r\n ], InMemoryBackendConfig);\nInMemoryBackendConfig.ɵfac = function InMemoryBackendConfig_Factory(t) { return new (t || InMemoryBackendConfig)(ɵngcc0.ɵɵinject(InMemoryBackendConfigArgs)); };\nInMemoryBackendConfig.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: InMemoryBackendConfig, factory: function (t) { return InMemoryBackendConfig.ɵfac(t); } });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InMemoryBackendConfig, [{\n type: Injectable\n }], function () { return [{ type: InMemoryBackendConfigArgs }]; }, null); })();\r\n return InMemoryBackendConfig;\r\n}());\r\nexport { InMemoryBackendConfig };\r\n/** Return information (UriInfo) about a URI */\r\nexport function parseUri(str) {\r\n // Adapted from parseuri package - http://blog.stevenlevithan.com/archives/parseuri\r\n // tslint:disable-next-line:max-line-length\r\n var URL_REGEX = /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\r\n var m = URL_REGEX.exec(str);\r\n var uri = {\r\n source: '',\r\n protocol: '',\r\n authority: '',\r\n userInfo: '',\r\n user: '',\r\n password: '',\r\n host: '',\r\n port: '',\r\n relative: '',\r\n path: '',\r\n directory: '',\r\n file: '',\r\n query: '',\r\n anchor: ''\r\n };\r\n var keys = Object.keys(uri);\r\n var i = keys.length;\r\n while (i--) {\r\n uri[keys[i]] = m[i] || '';\r\n }\r\n return uri;\r\n}\r\nexport function removeTrailingSlash(path) {\r\n return path.replace(/\\/$/, '');\r\n}\r\n\n","import { Observable, BehaviorSubject, of, from } from 'rxjs';\r\nimport { concatMap, first } from 'rxjs/operators';\r\nimport { getStatusText, isSuccess, STATUS } from './http-status-codes';\r\nimport { delayResponse } from './delay-response';\r\nimport { InMemoryBackendConfig, parseUri, removeTrailingSlash } from './interfaces';\r\n/**\r\n * Base class for in-memory web api back-ends\r\n * Simulate the behavior of a RESTy web api\r\n * backed by the simple in-memory data store provided by the injected `InMemoryDbService` service.\r\n * Conforms mostly to behavior described here:\r\n * http://www.restapitutorial.com/lessons/httpmethods.html\r\n */\r\nvar BackendService = /** @class */ (function () {\r\n function BackendService(inMemDbService, config) {\r\n if (config === void 0) { config = {}; }\r\n this.inMemDbService = inMemDbService;\r\n this.config = new InMemoryBackendConfig();\r\n this.requestInfoUtils = this.getRequestInfoUtils();\r\n var loc = this.getLocation('/');\r\n this.config.host = loc.host; // default to app web server host\r\n this.config.rootPath = loc.path; // default to path when app is served (e.g.'/')\r\n Object.assign(this.config, config);\r\n }\r\n Object.defineProperty(BackendService.prototype, \"dbReady\", {\r\n //// protected /////\r\n get: function () {\r\n if (!this.dbReadySubject) {\r\n // first time the service is called.\r\n this.dbReadySubject = new BehaviorSubject(false);\r\n this.resetDb();\r\n }\r\n return this.dbReadySubject.asObservable().pipe(first(function (r) { return r; }));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Process Request and return an Observable of Http Response object\r\n * in the manner of a RESTy web api.\r\n *\r\n * Expect URI pattern in the form :base/:collectionName/:id?\r\n * Examples:\r\n * // for store with a 'customers' collection\r\n * GET api/customers // all customers\r\n * GET api/customers/42 // the character with id=42\r\n * GET api/customers?name=^j // 'j' is a regex; returns customers whose name starts with 'j' or 'J'\r\n * GET api/customers.json/42 // ignores the \".json\"\r\n *\r\n * Also accepts direct commands to the service in which the last segment of the apiBase is the word \"commands\"\r\n * Examples:\r\n * POST commands/resetDb,\r\n * GET/POST commands/config - get or (re)set the config\r\n *\r\n * HTTP overrides:\r\n * If the injected inMemDbService defines an HTTP method (lowercase)\r\n * The request is forwarded to that method as in\r\n * `inMemDbService.get(requestInfo)`\r\n * which must return either an Observable of the response type\r\n * for this http library or null|undefined (which means \"keep processing\").\r\n */\r\n BackendService.prototype.handleRequest = function (req) {\r\n var _this = this;\r\n // handle the request when there is an in-memory database\r\n return this.dbReady.pipe(concatMap(function () { return _this.handleRequest_(req); }));\r\n };\r\n BackendService.prototype.handleRequest_ = function (req) {\r\n var _this = this;\r\n var url = req.urlWithParams ? req.urlWithParams : req.url;\r\n // Try override parser\r\n // If no override parser or it returns nothing, use default parser\r\n var parser = this.bind('parseRequestUrl');\r\n var parsed = (parser && parser(url, this.requestInfoUtils)) ||\r\n this.parseRequestUrl(url);\r\n var collectionName = parsed.collectionName;\r\n var collection = this.db[collectionName];\r\n var reqInfo = {\r\n req: req,\r\n apiBase: parsed.apiBase,\r\n collection: collection,\r\n collectionName: collectionName,\r\n headers: this.createHeaders({ 'Content-Type': 'application/json' }),\r\n id: this.parseId(collection, collectionName, parsed.id),\r\n method: this.getRequestMethod(req),\r\n query: parsed.query,\r\n resourceUrl: parsed.resourceUrl,\r\n url: url,\r\n utils: this.requestInfoUtils\r\n };\r\n var resOptions;\r\n if (/commands\\/?$/i.test(reqInfo.apiBase)) {\r\n return this.commands(reqInfo);\r\n }\r\n var methodInterceptor = this.bind(reqInfo.method);\r\n if (methodInterceptor) {\r\n // InMemoryDbService intercepts this HTTP method.\r\n // if interceptor produced a response, return it.\r\n // else InMemoryDbService chose not to intercept; continue processing.\r\n var interceptorResponse = methodInterceptor(reqInfo);\r\n if (interceptorResponse) {\r\n return interceptorResponse;\r\n }\r\n ;\r\n }\r\n if (this.db[collectionName]) {\r\n // request is for a known collection of the InMemoryDbService\r\n return this.createResponse$(function () { return _this.collectionHandler(reqInfo); });\r\n }\r\n if (this.config.passThruUnknownUrl) {\r\n // unknown collection; pass request thru to a \"real\" backend.\r\n return this.getPassThruBackend().handle(req);\r\n }\r\n // 404 - can't handle this request\r\n resOptions = this.createErrorResponseOptions(url, STATUS.NOT_FOUND, \"Collection '\" + collectionName + \"' not found\");\r\n return this.createResponse$(function () { return resOptions; });\r\n };\r\n /**\r\n * Add configured delay to response observable unless delay === 0\r\n */\r\n BackendService.prototype.addDelay = function (response) {\r\n var d = this.config.delay;\r\n return d === 0 ? response : delayResponse(response, d || 500);\r\n };\r\n /**\r\n * Apply query/search parameters as a filter over the collection\r\n * This impl only supports RegExp queries on string properties of the collection\r\n * ANDs the conditions together\r\n */\r\n BackendService.prototype.applyQuery = function (collection, query) {\r\n // extract filtering conditions - {propertyName, RegExps) - from query/search parameters\r\n var conditions = [];\r\n var caseSensitive = this.config.caseSensitiveSearch ? undefined : 'i';\r\n query.forEach(function (value, name) {\r\n value.forEach(function (v) { return conditions.push({ name: name, rx: new RegExp(decodeURI(v), caseSensitive) }); });\r\n });\r\n var len = conditions.length;\r\n if (!len) {\r\n return collection;\r\n }\r\n // AND the RegExp conditions\r\n return collection.filter(function (row) {\r\n var ok = true;\r\n var i = len;\r\n while (ok && i) {\r\n i -= 1;\r\n var cond = conditions[i];\r\n ok = cond.rx.test(row[cond.name]);\r\n }\r\n return ok;\r\n });\r\n };\r\n /**\r\n * Get a method from the `InMemoryDbService` (if it exists), bound to that service\r\n */\r\n BackendService.prototype.bind = function (methodName) {\r\n var fn = this.inMemDbService[methodName];\r\n return fn ? fn.bind(this.inMemDbService) : undefined;\r\n };\r\n BackendService.prototype.bodify = function (data) {\r\n return this.config.dataEncapsulation ? { data: data } : data;\r\n };\r\n BackendService.prototype.clone = function (data) {\r\n return JSON.parse(JSON.stringify(data));\r\n };\r\n BackendService.prototype.collectionHandler = function (reqInfo) {\r\n // const req = reqInfo.req;\r\n var resOptions;\r\n switch (reqInfo.method) {\r\n case 'get':\r\n resOptions = this.get(reqInfo);\r\n break;\r\n case 'post':\r\n resOptions = this.post(reqInfo);\r\n break;\r\n case 'put':\r\n resOptions = this.put(reqInfo);\r\n break;\r\n case 'delete':\r\n resOptions = this.delete(reqInfo);\r\n break;\r\n default:\r\n resOptions = this.createErrorResponseOptions(reqInfo.url, STATUS.METHOD_NOT_ALLOWED, 'Method not allowed');\r\n break;\r\n }\r\n // If `inMemDbService.responseInterceptor` exists, let it morph the response options\r\n var interceptor = this.bind('responseInterceptor');\r\n return interceptor ? interceptor(resOptions, reqInfo) : resOptions;\r\n };\r\n /**\r\n * Commands reconfigure the in-memory web api service or extract information from it.\r\n * Commands ignore the latency delay and respond ASAP.\r\n *\r\n * When the last segment of the `apiBase` path is \"commands\",\r\n * the `collectionName` is the command.\r\n *\r\n * Example URLs:\r\n * commands/resetdb (POST) // Reset the \"database\" to its original state\r\n * commands/config (GET) // Return this service's config object\r\n * commands/config (POST) // Update the config (e.g. the delay)\r\n *\r\n * Usage:\r\n * http.post('commands/resetdb', undefined);\r\n * http.get('commands/config');\r\n * http.post('commands/config', '{\"delay\":1000}');\r\n */\r\n BackendService.prototype.commands = function (reqInfo) {\r\n var _this = this;\r\n var command = reqInfo.collectionName.toLowerCase();\r\n var method = reqInfo.method;\r\n var resOptions = {\r\n url: reqInfo.url\r\n };\r\n switch (command) {\r\n case 'resetdb':\r\n resOptions.status = STATUS.NO_CONTENT;\r\n return this.resetDb(reqInfo).pipe(concatMap(function () { return _this.createResponse$(function () { return resOptions; }, false /* no latency delay */); }));\r\n case 'config':\r\n if (method === 'get') {\r\n resOptions.status = STATUS.OK;\r\n resOptions.body = this.clone(this.config);\r\n // any other HTTP method is assumed to be a config update\r\n }\r\n else {\r\n var body = this.getJsonBody(reqInfo.req);\r\n Object.assign(this.config, body);\r\n this.passThruBackend = undefined; // re-create when needed\r\n resOptions.status = STATUS.NO_CONTENT;\r\n }\r\n break;\r\n default:\r\n resOptions = this.createErrorResponseOptions(reqInfo.url, STATUS.INTERNAL_SERVER_ERROR, \"Unknown command \\\"\" + command + \"\\\"\");\r\n }\r\n return this.createResponse$(function () { return resOptions; }, false /* no latency delay */);\r\n };\r\n BackendService.prototype.createErrorResponseOptions = function (url, status, message) {\r\n return {\r\n body: { error: \"\" + message },\r\n url: url,\r\n headers: this.createHeaders({ 'Content-Type': 'application/json' }),\r\n status: status\r\n };\r\n };\r\n /**\r\n * Create a cold response Observable from a factory for ResponseOptions\r\n * @param resOptionsFactory - creates ResponseOptions when observable is subscribed\r\n * @param withDelay - if true (default), add simulated latency delay from configuration\r\n */\r\n BackendService.prototype.createResponse$ = function (resOptionsFactory, withDelay) {\r\n if (withDelay === void 0) { withDelay = true; }\r\n var resOptions$ = this.createResponseOptions$(resOptionsFactory);\r\n var resp$ = this.createResponse$fromResponseOptions$(resOptions$);\r\n return withDelay ? this.addDelay(resp$) : resp$;\r\n };\r\n /**\r\n * Create a cold Observable of ResponseOptions.\r\n * @param resOptionsFactory - creates ResponseOptions when observable is subscribed\r\n */\r\n BackendService.prototype.createResponseOptions$ = function (resOptionsFactory) {\r\n var _this = this;\r\n return new Observable(function (responseObserver) {\r\n var resOptions;\r\n try {\r\n resOptions = resOptionsFactory();\r\n }\r\n catch (error) {\r\n var err = error.message || error;\r\n resOptions = _this.createErrorResponseOptions('', STATUS.INTERNAL_SERVER_ERROR, \"\" + err);\r\n }\r\n var status = resOptions.status;\r\n try {\r\n resOptions.statusText = getStatusText(status);\r\n }\r\n catch (e) { /* ignore failure */ }\r\n if (isSuccess(status)) {\r\n responseObserver.next(resOptions);\r\n responseObserver.complete();\r\n }\r\n else {\r\n responseObserver.error(resOptions);\r\n }\r\n return function () { }; // unsubscribe function\r\n });\r\n };\r\n BackendService.prototype.delete = function (_a) {\r\n var collection = _a.collection, collectionName = _a.collectionName, headers = _a.headers, id = _a.id, url = _a.url;\r\n // tslint:disable-next-line:triple-equals\r\n if (id == undefined) {\r\n return this.createErrorResponseOptions(url, STATUS.NOT_FOUND, \"Missing \\\"\" + collectionName + \"\\\" id\");\r\n }\r\n var exists = this.removeById(collection, id);\r\n return {\r\n headers: headers,\r\n status: (exists || !this.config.delete404) ? STATUS.NO_CONTENT : STATUS.NOT_FOUND\r\n };\r\n };\r\n /**\r\n * Find first instance of item in collection by `item.id`\r\n * @param collection\r\n * @param id\r\n */\r\n BackendService.prototype.findById = function (collection, id) {\r\n return collection.find(function (item) { return item.id === id; });\r\n };\r\n /**\r\n * Generate the next available id for item in this collection\r\n * Use method from `inMemDbService` if it exists and returns a value,\r\n * else delegates to `genIdDefault`.\r\n * @param collection - collection of items with `id` key property\r\n */\r\n BackendService.prototype.genId = function (collection, collectionName) {\r\n var genId = this.bind('genId');\r\n if (genId) {\r\n var id = genId(collection, collectionName);\r\n // tslint:disable-next-line:triple-equals\r\n if (id != undefined) {\r\n return id;\r\n }\r\n }\r\n return this.genIdDefault(collection, collectionName);\r\n };\r\n /**\r\n * Default generator of the next available id for item in this collection\r\n * This default implementation works only for numeric ids.\r\n * @param collection - collection of items with `id` key property\r\n * @param collectionName - name of the collection\r\n */\r\n BackendService.prototype.genIdDefault = function (collection, collectionName) {\r\n if (!this.isCollectionIdNumeric(collection, collectionName)) {\r\n throw new Error(\"Collection '\" + collectionName + \"' id type is non-numeric or unknown. Can only generate numeric ids.\");\r\n }\r\n var maxId = 0;\r\n collection.reduce(function (prev, item) {\r\n maxId = Math.max(maxId, typeof item.id === 'number' ? item.id : maxId);\r\n }, undefined);\r\n return maxId + 1;\r\n };\r\n BackendService.prototype.get = function (_a) {\r\n var collection = _a.collection, collectionName = _a.collectionName, headers = _a.headers, id = _a.id, query = _a.query, url = _a.url;\r\n var data = collection;\r\n // tslint:disable-next-line:triple-equals\r\n if (id != undefined && id !== '') {\r\n data = this.findById(collection, id);\r\n }\r\n else if (query) {\r\n data = this.applyQuery(collection, query);\r\n }\r\n if (!data) {\r\n return this.createErrorResponseOptions(url, STATUS.NOT_FOUND, \"'\" + collectionName + \"' with id='\" + id + \"' not found\");\r\n }\r\n return {\r\n body: this.bodify(this.clone(data)),\r\n headers: headers,\r\n status: STATUS.OK\r\n };\r\n };\r\n /**\r\n * Get location info from a url, even on server where `document` is not defined\r\n */\r\n BackendService.prototype.getLocation = function (url) {\r\n if (!url.startsWith('http')) {\r\n // get the document iff running in browser\r\n var doc = (typeof document === 'undefined') ? undefined : document;\r\n // add host info to url before parsing. Use a fake host when not in browser.\r\n var base = doc ? doc.location.protocol + '//' + doc.location.host : 'http://fake';\r\n url = url.startsWith('/') ? base + url : base + '/' + url;\r\n }\r\n return parseUri(url);\r\n };\r\n ;\r\n /**\r\n * get or create the function that passes unhandled requests\r\n * through to the \"real\" backend.\r\n */\r\n BackendService.prototype.getPassThruBackend = function () {\r\n return this.passThruBackend ?\r\n this.passThruBackend :\r\n this.passThruBackend = this.createPassThruBackend();\r\n };\r\n /**\r\n * Get utility methods from this service instance.\r\n * Useful within an HTTP method override\r\n */\r\n BackendService.prototype.getRequestInfoUtils = function () {\r\n var _this = this;\r\n return {\r\n createResponse$: this.createResponse$.bind(this),\r\n findById: this.findById.bind(this),\r\n isCollectionIdNumeric: this.isCollectionIdNumeric.bind(this),\r\n getConfig: function () { return _this.config; },\r\n getDb: function () { return _this.db; },\r\n getJsonBody: this.getJsonBody.bind(this),\r\n getLocation: this.getLocation.bind(this),\r\n getPassThruBackend: this.getPassThruBackend.bind(this),\r\n parseRequestUrl: this.parseRequestUrl.bind(this),\r\n };\r\n };\r\n BackendService.prototype.indexOf = function (collection, id) {\r\n return collection.findIndex(function (item) { return item.id === id; });\r\n };\r\n /** Parse the id as a number. Return original value if not a number. */\r\n BackendService.prototype.parseId = function (collection, collectionName, id) {\r\n if (!this.isCollectionIdNumeric(collection, collectionName)) {\r\n // Can't confirm that `id` is a numeric type; don't parse as a number\r\n // or else `'42'` -> `42` and _get by id_ fails.\r\n return id;\r\n }\r\n var idNum = parseFloat(id);\r\n return isNaN(idNum) ? id : idNum;\r\n };\r\n /**\r\n * return true if can determine that the collection's `item.id` is a number\r\n * This implementation can't tell if the collection is empty so it assumes NO\r\n * */\r\n BackendService.prototype.isCollectionIdNumeric = function (collection, collectionName) {\r\n // collectionName not used now but override might maintain collection type information\r\n // so that it could know the type of the `id` even when the collection is empty.\r\n return !!(collection && collection[0]) && typeof collection[0].id === 'number';\r\n };\r\n /**\r\n * Parses the request URL into a `ParsedRequestUrl` object.\r\n * Parsing depends upon certain values of `config`: `apiBase`, `host`, and `urlRoot`.\r\n *\r\n * Configuring the `apiBase` yields the most interesting changes to `parseRequestUrl` behavior:\r\n * When apiBase=undefined and url='http://localhost/api/collection/42'\r\n * {base: 'api/', collectionName: 'collection', id: '42', ...}\r\n * When apiBase='some/api/root/' and url='http://localhost/some/api/root/collection'\r\n * {base: 'some/api/root/', collectionName: 'collection', id: undefined, ...}\r\n * When apiBase='/' and url='http://localhost/collection'\r\n * {base: '/', collectionName: 'collection', id: undefined, ...}\r\n *\r\n * The actual api base segment values are ignored. Only the number of segments matters.\r\n * The following api base strings are considered identical: 'a/b' ~ 'some/api/' ~ `two/segments'\r\n *\r\n * To replace this default method, assign your alternative to your InMemDbService['parseRequestUrl']\r\n */\r\n BackendService.prototype.parseRequestUrl = function (url) {\r\n try {\r\n var loc = this.getLocation(url);\r\n var drop = this.config.rootPath.length;\r\n var urlRoot = '';\r\n if (loc.host !== this.config.host) {\r\n // url for a server on a different host!\r\n // assume it's collection is actually here too.\r\n drop = 1; // the leading slash\r\n urlRoot = loc.protocol + '//' + loc.host + '/';\r\n }\r\n var path = loc.path.substring(drop);\r\n var pathSegments = path.split('/');\r\n var segmentIx = 0;\r\n // apiBase: the front part of the path devoted to getting to the api route\r\n // Assumes first path segment if no config.apiBase\r\n // else ignores as many path segments as are in config.apiBase\r\n // Does NOT care what the api base chars actually are.\r\n var apiBase = void 0;\r\n // tslint:disable-next-line:triple-equals\r\n if (this.config.apiBase == undefined) {\r\n apiBase = pathSegments[segmentIx++];\r\n }\r\n else {\r\n apiBase = removeTrailingSlash(this.config.apiBase.trim());\r\n if (apiBase) {\r\n segmentIx = apiBase.split('/').length;\r\n }\r\n else {\r\n segmentIx = 0; // no api base at all; unwise but allowed.\r\n }\r\n }\r\n apiBase += '/';\r\n var collectionName = pathSegments[segmentIx++];\r\n // ignore anything after a '.' (e.g.,the \"json\" in \"customers.json\")\r\n collectionName = collectionName && collectionName.split('.')[0];\r\n var id = pathSegments[segmentIx++];\r\n var query = this.createQueryMap(loc.query);\r\n var resourceUrl = urlRoot + apiBase + collectionName + '/';\r\n return { apiBase: apiBase, collectionName: collectionName, id: id, query: query, resourceUrl: resourceUrl };\r\n }\r\n catch (err) {\r\n var msg = \"unable to parse url '\" + url + \"'; original error: \" + err.message;\r\n throw new Error(msg);\r\n }\r\n };\r\n // Create entity\r\n // Can update an existing entity too if post409 is false.\r\n BackendService.prototype.post = function (_a) {\r\n var collection = _a.collection, collectionName = _a.collectionName, headers = _a.headers, id = _a.id, req = _a.req, resourceUrl = _a.resourceUrl, url = _a.url;\r\n var item = this.clone(this.getJsonBody(req));\r\n // tslint:disable-next-line:triple-equals\r\n if (item.id == undefined) {\r\n try {\r\n item.id = id || this.genId(collection, collectionName);\r\n }\r\n catch (err) {\r\n var emsg = err.message || '';\r\n if (/id type is non-numeric/.test(emsg)) {\r\n return this.createErrorResponseOptions(url, STATUS.UNPROCESSABLE_ENTRY, emsg);\r\n }\r\n else {\r\n console.error(err);\r\n return this.createErrorResponseOptions(url, STATUS.INTERNAL_SERVER_ERROR, \"Failed to generate new id for '\" + collectionName + \"'\");\r\n }\r\n }\r\n }\r\n if (id && id !== item.id) {\r\n return this.createErrorResponseOptions(url, STATUS.BAD_REQUEST, \"Request id does not match item.id\");\r\n }\r\n else {\r\n id = item.id;\r\n }\r\n var existingIx = this.indexOf(collection, id);\r\n var body = this.bodify(item);\r\n if (existingIx === -1) {\r\n collection.push(item);\r\n headers.set('Location', resourceUrl + '/' + id);\r\n return { headers: headers, body: body, status: STATUS.CREATED };\r\n }\r\n else if (this.config.post409) {\r\n return this.createErrorResponseOptions(url, STATUS.CONFLICT, \"'\" + collectionName + \"' item with id='\" + id + \" exists and may not be updated with POST; use PUT instead.\");\r\n }\r\n else {\r\n collection[existingIx] = item;\r\n return this.config.post204 ?\r\n { headers: headers, status: STATUS.NO_CONTENT } : // successful; no content\r\n { headers: headers, body: body, status: STATUS.OK }; // successful; return entity\r\n }\r\n };\r\n // Update existing entity\r\n // Can create an entity too if put404 is false.\r\n BackendService.prototype.put = function (_a) {\r\n var collection = _a.collection, collectionName = _a.collectionName, headers = _a.headers, id = _a.id, req = _a.req, url = _a.url;\r\n var item = this.clone(this.getJsonBody(req));\r\n // tslint:disable-next-line:triple-equals\r\n if (item.id == undefined) {\r\n return this.createErrorResponseOptions(url, STATUS.NOT_FOUND, \"Missing '\" + collectionName + \"' id\");\r\n }\r\n if (id && id !== item.id) {\r\n return this.createErrorResponseOptions(url, STATUS.BAD_REQUEST, \"Request for '\" + collectionName + \"' id does not match item.id\");\r\n }\r\n else {\r\n id = item.id;\r\n }\r\n var existingIx = this.indexOf(collection, id);\r\n var body = this.bodify(item);\r\n if (existingIx > -1) {\r\n collection[existingIx] = item;\r\n return this.config.put204 ?\r\n { headers: headers, status: STATUS.NO_CONTENT } : // successful; no content\r\n { headers: headers, body: body, status: STATUS.OK }; // successful; return entity\r\n }\r\n else if (this.config.put404) {\r\n // item to update not found; use POST to create new item for this id.\r\n return this.createErrorResponseOptions(url, STATUS.NOT_FOUND, \"'\" + collectionName + \"' item with id='\" + id + \" not found and may not be created with PUT; use POST instead.\");\r\n }\r\n else {\r\n // create new item for id not found\r\n collection.push(item);\r\n return { headers: headers, body: body, status: STATUS.CREATED };\r\n }\r\n };\r\n BackendService.prototype.removeById = function (collection, id) {\r\n var ix = this.indexOf(collection, id);\r\n if (ix > -1) {\r\n collection.splice(ix, 1);\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n * Tell your in-mem \"database\" to reset.\r\n * returns Observable of the database because resetting it could be async\r\n */\r\n BackendService.prototype.resetDb = function (reqInfo) {\r\n var _this = this;\r\n this.dbReadySubject.next(false);\r\n var db = this.inMemDbService.createDb(reqInfo);\r\n var db$ = db instanceof Observable ? db :\r\n typeof db.then === 'function' ? from(db) :\r\n of(db);\r\n db$.pipe(first()).subscribe(function (d) {\r\n _this.db = d;\r\n _this.dbReadySubject.next(true);\r\n });\r\n return this.dbReady;\r\n };\r\n return BackendService;\r\n}());\r\nexport { BackendService };\r\n","import { Observable } from 'rxjs';\r\n// Replaces use of RxJS delay. See v0.5.4.\r\n/** adds specified delay (in ms) to both next and error channels of the response observable */\r\nexport function delayResponse(response$, delayMs) {\r\n return new Observable(function (observer) {\r\n var completePending = false;\r\n var nextPending = false;\r\n var subscription = response$.subscribe(function (value) {\r\n nextPending = true;\r\n setTimeout(function () {\r\n observer.next(value);\r\n if (completePending) {\r\n observer.complete();\r\n }\r\n }, delayMs);\r\n }, function (error) { return setTimeout(function () { return observer.error(error); }, delayMs); }, function () {\r\n completePending = true;\r\n if (!nextPending) {\r\n observer.complete();\r\n }\r\n });\r\n return function () {\r\n return subscription.unsubscribe();\r\n };\r\n });\r\n}\r\n","////// HttpClient-Only version ////\r\nimport * as ɵngcc0 from '@angular/core';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { NgModule } from '@angular/core';\r\nimport { HttpBackend, XhrFactory } from '@angular/common/http';\r\nimport { InMemoryBackendConfig, InMemoryDbService } from './interfaces';\r\nimport { HttpClientBackendService } from './http-client-backend.service';\r\n// Internal - Creates the in-mem backend for the HttpClient module\r\n// AoT requires factory to be exported\r\nexport function httpClientInMemBackendServiceFactory(dbService, options, xhrFactory) {\r\n var backend = new HttpClientBackendService(dbService, options, xhrFactory);\r\n return backend;\r\n}\r\nvar HttpClientInMemoryWebApiModule = /** @class */ (function () {\r\n function HttpClientInMemoryWebApiModule() {\r\n }\r\n HttpClientInMemoryWebApiModule_1 = HttpClientInMemoryWebApiModule;\r\n /**\r\n * Redirect the Angular `HttpClient` XHR calls\r\n * to in-memory data store that implements `InMemoryDbService`.\r\n * with class that implements InMemoryDbService and creates an in-memory database.\r\n *\r\n * Usually imported in the root application module.\r\n * Can import in a lazy feature module too, which will shadow modules loaded earlier\r\n *\r\n * @param {Type} dbCreator - Class that creates seed data for in-memory database. Must implement InMemoryDbService.\r\n * @param {InMemoryBackendConfigArgs} [options]\r\n *\r\n * @example\r\n * HttpInMemoryWebApiModule.forRoot(dbCreator);\r\n * HttpInMemoryWebApiModule.forRoot(dbCreator, {useValue: {delay:600}});\r\n */\r\n HttpClientInMemoryWebApiModule.forRoot = function (dbCreator, options) {\r\n return {\r\n ngModule: HttpClientInMemoryWebApiModule_1,\r\n providers: [\r\n { provide: InMemoryDbService, useClass: dbCreator },\r\n { provide: InMemoryBackendConfig, useValue: options },\r\n { provide: HttpBackend,\r\n useFactory: httpClientInMemBackendServiceFactory,\r\n deps: [InMemoryDbService, InMemoryBackendConfig, XhrFactory] }\r\n ]\r\n };\r\n };\r\n /**\r\n *\r\n * Enable and configure the in-memory web api in a lazy-loaded feature module.\r\n * Same as `forRoot`.\r\n * This is a feel-good method so you can follow the Angular style guide for lazy-loaded modules.\r\n */\r\n HttpClientInMemoryWebApiModule.forFeature = function (dbCreator, options) {\r\n return HttpClientInMemoryWebApiModule_1.forRoot(dbCreator, options);\r\n };\r\n var HttpClientInMemoryWebApiModule_1;\nHttpClientInMemoryWebApiModule.ɵfac = function HttpClientInMemoryWebApiModule_Factory(t) { return new (t || HttpClientInMemoryWebApiModule)(); };\nHttpClientInMemoryWebApiModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: HttpClientInMemoryWebApiModule });\nHttpClientInMemoryWebApiModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HttpClientInMemoryWebApiModule, [{\n type: NgModule,\n args: [{}]\n }], function () { return []; }, null); })();\r\n return HttpClientInMemoryWebApiModule;\r\n}());\r\nexport { HttpClientInMemoryWebApiModule };\r\n\n","////// For apps with both Http and HttpClient ////\r\nimport * as ɵngcc0 from '@angular/core';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { NgModule } from '@angular/core';\r\nimport { HttpBackend, XhrFactory } from '@angular/common/http';\r\nimport { InMemoryBackendConfig, InMemoryDbService } from './interfaces';\r\nimport { httpClientInMemBackendServiceFactory } from './http-client-in-memory-web-api.module';\r\nvar InMemoryWebApiModule = /** @class */ (function () {\r\n function InMemoryWebApiModule() {\r\n }\r\n InMemoryWebApiModule_1 = InMemoryWebApiModule;\r\n /**\r\n * Redirect BOTH Angular `Http` and `HttpClient` XHR calls\r\n * to in-memory data store that implements `InMemoryDbService`.\r\n * with class that implements InMemoryDbService and creates an in-memory database.\r\n *\r\n * Usually imported in the root application module.\r\n * Can import in a lazy feature module too, which will shadow modules loaded earlier\r\n *\r\n * @param {Type} dbCreator - Class that creates seed data for in-memory database. Must implement InMemoryDbService.\r\n * @param {InMemoryBackendConfigArgs} [options]\r\n *\r\n * @example\r\n * InMemoryWebApiModule.forRoot(dbCreator);\r\n * InMemoryWebApiModule.forRoot(dbCreator, {useValue: {delay:600}});\r\n */\r\n InMemoryWebApiModule.forRoot = function (dbCreator, options) {\r\n return {\r\n ngModule: InMemoryWebApiModule_1,\r\n providers: [\r\n { provide: InMemoryDbService, useClass: dbCreator },\r\n { provide: InMemoryBackendConfig, useValue: options },\r\n { provide: HttpBackend,\r\n useFactory: httpClientInMemBackendServiceFactory,\r\n deps: [InMemoryDbService, InMemoryBackendConfig, XhrFactory] }\r\n ]\r\n };\r\n };\r\n /**\r\n *\r\n * Enable and configure the in-memory web api in a lazy-loaded feature module.\r\n * Same as `forRoot`.\r\n * This is a feel-good method so you can follow the Angular style guide for lazy-loaded modules.\r\n */\r\n InMemoryWebApiModule.forFeature = function (dbCreator, options) {\r\n return InMemoryWebApiModule_1.forRoot(dbCreator, options);\r\n };\r\n var InMemoryWebApiModule_1;\nInMemoryWebApiModule.ɵfac = function InMemoryWebApiModule_Factory(t) { return new (t || InMemoryWebApiModule)(); };\nInMemoryWebApiModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: InMemoryWebApiModule });\nInMemoryWebApiModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InMemoryWebApiModule, [{\n type: NgModule,\n args: [{}]\n }], function () { return []; }, null); })();\r\n return InMemoryWebApiModule;\r\n}());\r\nexport { InMemoryWebApiModule };\r\n\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe=true) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe=true) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"feather\"] = factory();\n\telse\n\t\troot[\"feather\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./dist/icons.json\":\n/*!*************************!*\\\n !*** ./dist/icons.json ***!\n \\*************************/\n/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, divide-circle, divide-square, divide, dollar-sign, download-cloud, download, dribbble, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitch, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */\n/***/ (function(module) {\n\nmodule.exports = {\"activity\":\"\",\"airplay\":\"\",\"alert-circle\":\"\",\"alert-octagon\":\"\",\"alert-triangle\":\"\",\"align-center\":\"\",\"align-justify\":\"\",\"align-left\":\"\",\"align-right\":\"\",\"anchor\":\"\",\"aperture\":\"\",\"archive\":\"\",\"arrow-down-circle\":\"\",\"arrow-down-left\":\"\",\"arrow-down-right\":\"\",\"arrow-down\":\"\",\"arrow-left-circle\":\"\",\"arrow-left\":\"\",\"arrow-right-circle\":\"\",\"arrow-right\":\"\",\"arrow-up-circle\":\"\",\"arrow-up-left\":\"\",\"arrow-up-right\":\"\",\"arrow-up\":\"\",\"at-sign\":\"\",\"award\":\"\",\"bar-chart-2\":\"\",\"bar-chart\":\"\",\"battery-charging\":\"\",\"battery\":\"\",\"bell-off\":\"\",\"bell\":\"\",\"bluetooth\":\"\",\"bold\":\"\",\"book-open\":\"\",\"book\":\"\",\"bookmark\":\"\",\"box\":\"\",\"briefcase\":\"\",\"calendar\":\"\",\"camera-off\":\"\",\"camera\":\"\",\"cast\":\"\",\"check-circle\":\"\",\"check-square\":\"\",\"check\":\"\",\"chevron-down\":\"\",\"chevron-left\":\"\",\"chevron-right\":\"\",\"chevron-up\":\"\",\"chevrons-down\":\"\",\"chevrons-left\":\"\",\"chevrons-right\":\"\",\"chevrons-up\":\"\",\"chrome\":\"\",\"circle\":\"\",\"clipboard\":\"\",\"clock\":\"\",\"cloud-drizzle\":\"\",\"cloud-lightning\":\"\",\"cloud-off\":\"\",\"cloud-rain\":\"\",\"cloud-snow\":\"\",\"cloud\":\"\",\"code\":\"\",\"codepen\":\"\",\"codesandbox\":\"\",\"coffee\":\"\",\"columns\":\"\",\"command\":\"\",\"compass\":\"\",\"copy\":\"\",\"corner-down-left\":\"\",\"corner-down-right\":\"\",\"corner-left-down\":\"\",\"corner-left-up\":\"\",\"corner-right-down\":\"\",\"corner-right-up\":\"\",\"corner-up-left\":\"\",\"corner-up-right\":\"\",\"cpu\":\"\",\"credit-card\":\"\",\"crop\":\"\",\"crosshair\":\"\",\"database\":\"\",\"delete\":\"\",\"disc\":\"\",\"divide-circle\":\"\",\"divide-square\":\"\",\"divide\":\"\",\"dollar-sign\":\"\",\"download-cloud\":\"\",\"download\":\"\",\"dribbble\":\"\",\"droplet\":\"\",\"edit-2\":\"\",\"edit-3\":\"\",\"edit\":\"\",\"external-link\":\"\",\"eye-off\":\"\",\"eye\":\"\",\"facebook\":\"\",\"fast-forward\":\"\",\"feather\":\"\",\"figma\":\"\",\"file-minus\":\"\",\"file-plus\":\"\",\"file-text\":\"\",\"file\":\"\",\"film\":\"\",\"filter\":\"\",\"flag\":\"\",\"folder-minus\":\"\",\"folder-plus\":\"\",\"folder\":\"\",\"framer\":\"\",\"frown\":\"\",\"gift\":\"\",\"git-branch\":\"\",\"git-commit\":\"\",\"git-merge\":\"\",\"git-pull-request\":\"\",\"github\":\"\",\"gitlab\":\"\",\"globe\":\"\",\"grid\":\"\",\"hard-drive\":\"\",\"hash\":\"\",\"headphones\":\"\",\"heart\":\"\",\"help-circle\":\"\",\"hexagon\":\"\",\"home\":\"\",\"image\":\"\",\"inbox\":\"\",\"info\":\"\",\"instagram\":\"\",\"italic\":\"\",\"key\":\"\",\"layers\":\"\",\"layout\":\"\",\"life-buoy\":\"\",\"link-2\":\"\",\"link\":\"\",\"linkedin\":\"\",\"list\":\"\",\"loader\":\"\",\"lock\":\"\",\"log-in\":\"\",\"log-out\":\"\",\"mail\":\"\",\"map-pin\":\"\",\"map\":\"\",\"maximize-2\":\"\",\"maximize\":\"\",\"meh\":\"\",\"menu\":\"\",\"message-circle\":\"\",\"message-square\":\"\",\"mic-off\":\"\",\"mic\":\"\",\"minimize-2\":\"\",\"minimize\":\"\",\"minus-circle\":\"\",\"minus-square\":\"\",\"minus\":\"\",\"monitor\":\"\",\"moon\":\"\",\"more-horizontal\":\"\",\"more-vertical\":\"\",\"mouse-pointer\":\"\",\"move\":\"\",\"music\":\"\",\"navigation-2\":\"\",\"navigation\":\"\",\"octagon\":\"\",\"package\":\"\",\"paperclip\":\"\",\"pause-circle\":\"\",\"pause\":\"\",\"pen-tool\":\"\",\"percent\":\"\",\"phone-call\":\"\",\"phone-forwarded\":\"\",\"phone-incoming\":\"\",\"phone-missed\":\"\",\"phone-off\":\"\",\"phone-outgoing\":\"\",\"phone\":\"\",\"pie-chart\":\"\",\"play-circle\":\"\",\"play\":\"\",\"plus-circle\":\"\",\"plus-square\":\"\",\"plus\":\"\",\"pocket\":\"\",\"power\":\"\",\"printer\":\"\",\"radio\":\"\",\"refresh-ccw\":\"\",\"refresh-cw\":\"\",\"repeat\":\"\",\"rewind\":\"\",\"rotate-ccw\":\"\",\"rotate-cw\":\"\",\"rss\":\"\",\"save\":\"\",\"scissors\":\"\",\"search\":\"\",\"send\":\"\",\"server\":\"\",\"settings\":\"\",\"share-2\":\"\",\"share\":\"\",\"shield-off\":\"\",\"shield\":\"\",\"shopping-bag\":\"\",\"shopping-cart\":\"\",\"shuffle\":\"\",\"sidebar\":\"\",\"skip-back\":\"\",\"skip-forward\":\"\",\"slack\":\"\",\"slash\":\"\",\"sliders\":\"\",\"smartphone\":\"\",\"smile\":\"\",\"speaker\":\"\",\"square\":\"\",\"star\":\"\",\"stop-circle\":\"\",\"sun\":\"\",\"sunrise\":\"\",\"sunset\":\"\",\"tablet\":\"\",\"tag\":\"\",\"target\":\"\",\"terminal\":\"\",\"thermometer\":\"\",\"thumbs-down\":\"\",\"thumbs-up\":\"\",\"toggle-left\":\"\",\"toggle-right\":\"\",\"tool\":\"\",\"trash-2\":\"\",\"trash\":\"\",\"trello\":\"\",\"trending-down\":\"\",\"trending-up\":\"\",\"triangle\":\"\",\"truck\":\"\",\"tv\":\"\",\"twitch\":\"\",\"twitter\":\"\",\"type\":\"\",\"umbrella\":\"\",\"underline\":\"\",\"unlock\":\"\",\"upload-cloud\":\"\",\"upload\":\"\",\"user-check\":\"\",\"user-minus\":\"\",\"user-plus\":\"\",\"user-x\":\"\",\"user\":\"\",\"users\":\"\",\"video-off\":\"\",\"video\":\"\",\"voicemail\":\"\",\"volume-1\":\"\",\"volume-2\":\"\",\"volume-x\":\"\",\"volume\":\"\",\"watch\":\"\",\"wifi-off\":\"\",\"wifi\":\"\",\"wind\":\"\",\"x-circle\":\"\",\"x-octagon\":\"\",\"x-square\":\"\",\"x\":\"\",\"youtube\":\"\",\"zap-off\":\"\",\"zap\":\"\",\"zoom-in\":\"\",\"zoom-out\":\"\"};\n\n/***/ }),\n\n/***/ \"./node_modules/classnames/dedupe.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/classnames/dedupe.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar classNames = (function () {\n\t\t// don't inherit from Object so we can skip hasOwnProperty check later\n\t\t// http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232\n\t\tfunction StorageObject() {}\n\t\tStorageObject.prototype = Object.create(null);\n\n\t\tfunction _parseArray (resultSet, array) {\n\t\t\tvar length = array.length;\n\n\t\t\tfor (var i = 0; i < length; ++i) {\n\t\t\t\t_parse(resultSet, array[i]);\n\t\t\t}\n\t\t}\n\n\t\tvar hasOwn = {}.hasOwnProperty;\n\n\t\tfunction _parseNumber (resultSet, num) {\n\t\t\tresultSet[num] = true;\n\t\t}\n\n\t\tfunction _parseObject (resultSet, object) {\n\t\t\tfor (var k in object) {\n\t\t\t\tif (hasOwn.call(object, k)) {\n\t\t\t\t\t// set value to false instead of deleting it to avoid changing object structure\n\t\t\t\t\t// https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions\n\t\t\t\t\tresultSet[k] = !!object[k];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar SPACE = /\\s+/;\n\t\tfunction _parseString (resultSet, str) {\n\t\t\tvar array = str.split(SPACE);\n\t\t\tvar length = array.length;\n\n\t\t\tfor (var i = 0; i < length; ++i) {\n\t\t\t\tresultSet[array[i]] = true;\n\t\t\t}\n\t\t}\n\n\t\tfunction _parse (resultSet, arg) {\n\t\t\tif (!arg) return;\n\t\t\tvar argType = typeof arg;\n\n\t\t\t// 'foo bar'\n\t\t\tif (argType === 'string') {\n\t\t\t\t_parseString(resultSet, arg);\n\n\t\t\t// ['foo', 'bar', ...]\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\t_parseArray(resultSet, arg);\n\n\t\t\t// { 'foo': true, ... }\n\t\t\t} else if (argType === 'object') {\n\t\t\t\t_parseObject(resultSet, arg);\n\n\t\t\t// '130'\n\t\t\t} else if (argType === 'number') {\n\t\t\t\t_parseNumber(resultSet, arg);\n\t\t\t}\n\t\t}\n\n\t\tfunction _classNames () {\n\t\t\t// don't leak arguments\n\t\t\t// https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\t\t\tvar len = arguments.length;\n\t\t\tvar args = Array(len);\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\targs[i] = arguments[i];\n\t\t\t}\n\n\t\t\tvar classSet = new StorageObject();\n\t\t\t_parseArray(classSet, args);\n\n\t\t\tvar list = [];\n\n\t\t\tfor (var k in classSet) {\n\t\t\t\tif (classSet[k]) {\n\t\t\t\t\tlist.push(k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn list.join(' ');\n\t\t}\n\n\t\treturn _classNames;\n\t})();\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/es/array/from.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/es/array/from.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(/*! ../../modules/es.string.iterator */ \"./node_modules/core-js/modules/es.string.iterator.js\");\n__webpack_require__(/*! ../../modules/es.array.from */ \"./node_modules/core-js/modules/es.array.from.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js/internals/path.js\");\n\nmodule.exports = path.Array.from;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/a-function.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/a-function.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/an-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/an-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/array-from.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/array-from.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(/*! ../internals/bind-context */ \"./node_modules/core-js/internals/bind-context.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ \"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \"./node_modules/core-js/internals/is-array-iterator-method.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js/internals/create-property.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iteratorMethod = getIteratorMethod(O);\n var length, result, step, iterator;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n result = new C();\n for (;!(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping\n ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true)\n : step.value\n );\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/array-includes.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/array-includes.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js/internals/to-absolute-index.js\");\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\n// false -> Array#indexOf\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n// true -> Array#includes\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/bind-context.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/core-js/internals/bind-context.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(/*! ../internals/a-function */ \"./node_modules/core-js/internals/a-function.js\");\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/classof-raw.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/classof-raw.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/classof.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/core-js/internals/classof.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/copy-constructor-properties.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar ownKeys = __webpack_require__(/*! ../internals/own-keys */ \"./node_modules/core-js/internals/own-keys.js\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/correct-prototype-getter.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-iterator-constructor.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\").IteratorPrototype;\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-property-descriptor.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/core-js/internals/create-property-descriptor.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-property.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/create-property.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/define-iterator.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/define-iterator.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ \"./node_modules/core-js/internals/create-iterator-constructor.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\");\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n hide(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n hide(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/descriptors.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/descriptors.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/document-create-element.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/document-create-element.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar exist = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return exist ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/enum-bug-keys.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/enum-bug-keys.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/export.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/export.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\").f;\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \"./node_modules/core-js/internals/copy-constructor-properties.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js/internals/is-forced.js\");\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n hide(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/fails.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/core-js/internals/fails.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/function-to-string.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/core-js/internals/function-to-string.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/get-iterator-method.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/core-js/internals/get-iterator-method.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/global.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/global.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var O = 'object';\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == O && globalThis) ||\n check(typeof window == O && window) ||\n check(typeof self == O && self) ||\n check(typeof global == O && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/has.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/internals/has.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/hidden-keys.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/hidden-keys.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/hide.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/hide.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/html.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/html.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nvar document = global.document;\n\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/ie8-dom-define.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/ie8-dom-define.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/indexed-object.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/indexed-object.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\n\nvar split = ''.split;\n\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/internal-state.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/internal-state.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ \"./node_modules/core-js/internals/native-weak-map.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar objectHas = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n hide(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-array-iterator-method.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-forced.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/is-forced.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/is-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-pure.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/core-js/internals/is-pure.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/iterators-core.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/iterators-core.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/iterators.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/iterators.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/native-symbol.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/native-symbol.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/native-weak-map.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/native-weak-map.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ \"./node_modules/core-js/internals/function-to-string.js\");\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-create.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/object-create.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js/internals/object-define-properties.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js/internals/html.js\");\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-define-properties.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-define-properties.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js/internals/object-keys.js\");\n\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var i = 0;\n var key;\n while (length > i) definePropertyModule.f(O, key = keys[i++], Properties[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-define-property.js\":\n/*!******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-define-property.js ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\n\nvar nativeDefineProperty = Object.defineProperty;\n\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***!\n \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js/internals/object-property-is-enumerable.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-names.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\":\n/*!***************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***!\n \\***************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-prototype-of.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ \"./node_modules/core-js/internals/correct-prototype-getter.js\");\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-keys-internal.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-keys-internal.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar arrayIncludes = __webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js/internals/array-includes.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar arrayIndexOf = arrayIncludes(false);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-keys.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/object-keys.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-property-is-enumerable.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-set-prototype-of.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar validateSetPrototypeOfArguments = __webpack_require__(/*! ../internals/validate-set-prototype-of-arguments */ \"./node_modules/core-js/internals/validate-set-prototype-of-arguments.js\");\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var correctSetter = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n correctSetter = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n validateSetPrototypeOfArguments(O, proto);\n if (correctSetter) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/own-keys.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/core-js/internals/own-keys.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\");\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar Reflect = global.Reflect;\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/path.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/path.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/redefine.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/core-js/internals/redefine.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ \"./node_modules/core-js/internals/function-to-string.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else hide(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/require-object-coercible.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/require-object-coercible.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/set-global.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/set-global.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\n\nmodule.exports = function (key, value) {\n try {\n hide(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/set-to-string-tag.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/set-to-string-tag.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f;\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/shared-key.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/shared-key.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/shared.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/shared.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.1.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/string-at.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/string-at.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\n// CONVERT_TO_STRING: true -> String#at\n// CONVERT_TO_STRING: false -> String#codePointAt\nmodule.exports = function (that, pos, CONVERT_TO_STRING) {\n var S = String(requireObjectCoercible(that));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-absolute-index.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/to-absolute-index.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-indexed-object.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/to-indexed-object.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-integer.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/to-integer.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-length.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/to-length.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/to-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-primitive.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/core-js/internals/to-primitive.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/uid.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/internals/uid.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/validate-set-prototype-of-arguments.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nmodule.exports = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) {\n throw TypeError(\"Can't set \" + String(proto) + ' as a prototype');\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/well-known-symbol.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/well-known-symbol.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ \"./node_modules/core-js/internals/native-symbol.js\");\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/modules/es.array.from.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/modules/es.array.from.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar from = __webpack_require__(/*! ../internals/array-from */ \"./node_modules/core-js/internals/array-from.js\");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\");\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/modules/es.string.iterator.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/core-js/modules/es.string.iterator.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar codePointAt = __webpack_require__(/*! ../internals/string-at */ \"./node_modules/core-js/internals/string-at.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar defineIterator = __webpack_require__(/*! ../internals/define-iterator */ \"./node_modules/core-js/internals/define-iterator.js\");\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = codePointAt(string, index, true);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/webpack/buildin/global.js\":\n/*!***********************************!*\\\n !*** (webpack)/buildin/global.js ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n\n/***/ \"./src/default-attrs.json\":\n/*!********************************!*\\\n !*** ./src/default-attrs.json ***!\n \\********************************/\n/*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */\n/***/ (function(module) {\n\nmodule.exports = {\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"stroke-width\":2,\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"};\n\n/***/ }),\n\n/***/ \"./src/icon.js\":\n/*!*********************!*\\\n !*** ./src/icon.js ***!\n \\*********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _dedupe = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n\nvar _dedupe2 = _interopRequireDefault(_dedupe);\n\nvar _defaultAttrs = __webpack_require__(/*! ./default-attrs.json */ \"./src/default-attrs.json\");\n\nvar _defaultAttrs2 = _interopRequireDefault(_defaultAttrs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Icon = function () {\n function Icon(name, contents) {\n var tags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n _classCallCheck(this, Icon);\n\n this.name = name;\n this.contents = contents;\n this.tags = tags;\n this.attrs = _extends({}, _defaultAttrs2.default, { class: 'feather feather-' + name });\n }\n\n /**\n * Create an SVG string.\n * @param {Object} attrs\n * @returns {string}\n */\n\n\n _createClass(Icon, [{\n key: 'toSvg',\n value: function toSvg() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) });\n\n return '' + this.contents + '';\n }\n\n /**\n * Return string representation of an `Icon`.\n *\n * Added for backward compatibility. If old code expects `feather.icons.`\n * to be a string, `toString()` will get implicitly called.\n *\n * @returns {string}\n */\n\n }, {\n key: 'toString',\n value: function toString() {\n return this.contents;\n }\n }]);\n\n return Icon;\n}();\n\n/**\n * Convert attributes object to string of HTML attributes.\n * @param {Object} attrs\n * @returns {string}\n */\n\n\nfunction attrsToString(attrs) {\n return Object.keys(attrs).map(function (key) {\n return key + '=\"' + attrs[key] + '\"';\n }).join(' ');\n}\n\nexports.default = Icon;\n\n/***/ }),\n\n/***/ \"./src/icons.js\":\n/*!**********************!*\\\n !*** ./src/icons.js ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _icon = __webpack_require__(/*! ./icon */ \"./src/icon.js\");\n\nvar _icon2 = _interopRequireDefault(_icon);\n\nvar _icons = __webpack_require__(/*! ../dist/icons.json */ \"./dist/icons.json\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _tags = __webpack_require__(/*! ./tags.json */ \"./src/tags.json\");\n\nvar _tags2 = _interopRequireDefault(_tags);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = Object.keys(_icons2.default).map(function (key) {\n return new _icon2.default(key, _icons2.default[key], _tags2.default[key]);\n}).reduce(function (object, icon) {\n object[icon.name] = icon;\n return object;\n}, {});\n\n/***/ }),\n\n/***/ \"./src/index.js\":\n/*!**********************!*\\\n !*** ./src/index.js ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _toSvg = __webpack_require__(/*! ./to-svg */ \"./src/to-svg.js\");\n\nvar _toSvg2 = _interopRequireDefault(_toSvg);\n\nvar _replace = __webpack_require__(/*! ./replace */ \"./src/replace.js\");\n\nvar _replace2 = _interopRequireDefault(_replace);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default };\n\n/***/ }),\n\n/***/ \"./src/replace.js\":\n/*!************************!*\\\n !*** ./src/replace.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint-env browser */\n\n\nvar _dedupe = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n\nvar _dedupe2 = _interopRequireDefault(_dedupe);\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Replace all HTML elements that have a `data-feather` attribute with SVG markup\n * corresponding to the element's `data-feather` attribute value.\n * @param {Object} attrs\n */\nfunction replace() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (typeof document === 'undefined') {\n throw new Error('`feather.replace()` only works in a browser environment.');\n }\n\n var elementsToReplace = document.querySelectorAll('[data-feather]');\n\n Array.from(elementsToReplace).forEach(function (element) {\n return replaceElement(element, attrs);\n });\n}\n\n/**\n * Replace a single HTML element with SVG markup\n * corresponding to the element's `data-feather` attribute value.\n * @param {HTMLElement} element\n * @param {Object} attrs\n */\nfunction replaceElement(element) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var elementAttrs = getAttrs(element);\n var name = elementAttrs['data-feather'];\n delete elementAttrs['data-feather'];\n\n var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) }));\n var svgDocument = new DOMParser().parseFromString(svgString, 'image/svg+xml');\n var svgElement = svgDocument.querySelector('svg');\n\n element.parentNode.replaceChild(svgElement, element);\n}\n\n/**\n * Get the attributes of an HTML element.\n * @param {HTMLElement} element\n * @returns {Object}\n */\nfunction getAttrs(element) {\n return Array.from(element.attributes).reduce(function (attrs, attr) {\n attrs[attr.name] = attr.value;\n return attrs;\n }, {});\n}\n\nexports.default = replace;\n\n/***/ }),\n\n/***/ \"./src/tags.json\":\n/*!***********************!*\\\n !*** ./src/tags.json ***!\n \\***********************/\n/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, archive, at-sign, award, aperture, bar-chart, bar-chart-2, battery, battery-charging, bell, bell-off, bluetooth, book-open, book, bookmark, box, briefcase, calendar, camera, cast, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, code, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, file-minus, file-plus, file-text, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, layers, layout, life-bouy, link, link-2, linkedin, list, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, play, pie-chart, play-circle, plus, plus-circle, plus-square, pocket, power, printer, radio, refresh-cw, refresh-ccw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, settings, share-2, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash, trash-2, triangle, truck, tv, twitch, twitter, type, umbrella, unlock, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */\n/***/ (function(module) {\n\nmodule.exports = {\"activity\":[\"pulse\",\"health\",\"action\",\"motion\"],\"airplay\":[\"stream\",\"cast\",\"mirroring\"],\"alert-circle\":[\"warning\",\"alert\",\"danger\"],\"alert-octagon\":[\"warning\",\"alert\",\"danger\"],\"alert-triangle\":[\"warning\",\"alert\",\"danger\"],\"align-center\":[\"text alignment\",\"center\"],\"align-justify\":[\"text alignment\",\"justified\"],\"align-left\":[\"text alignment\",\"left\"],\"align-right\":[\"text alignment\",\"right\"],\"anchor\":[],\"archive\":[\"index\",\"box\"],\"at-sign\":[\"mention\",\"at\",\"email\",\"message\"],\"award\":[\"achievement\",\"badge\"],\"aperture\":[\"camera\",\"photo\"],\"bar-chart\":[\"statistics\",\"diagram\",\"graph\"],\"bar-chart-2\":[\"statistics\",\"diagram\",\"graph\"],\"battery\":[\"power\",\"electricity\"],\"battery-charging\":[\"power\",\"electricity\"],\"bell\":[\"alarm\",\"notification\",\"sound\"],\"bell-off\":[\"alarm\",\"notification\",\"silent\"],\"bluetooth\":[\"wireless\"],\"book-open\":[\"read\",\"library\"],\"book\":[\"read\",\"dictionary\",\"booklet\",\"magazine\",\"library\"],\"bookmark\":[\"read\",\"clip\",\"marker\",\"tag\"],\"box\":[\"cube\"],\"briefcase\":[\"work\",\"bag\",\"baggage\",\"folder\"],\"calendar\":[\"date\"],\"camera\":[\"photo\"],\"cast\":[\"chromecast\",\"airplay\"],\"circle\":[\"off\",\"zero\",\"record\"],\"clipboard\":[\"copy\"],\"clock\":[\"time\",\"watch\",\"alarm\"],\"cloud-drizzle\":[\"weather\",\"shower\"],\"cloud-lightning\":[\"weather\",\"bolt\"],\"cloud-rain\":[\"weather\"],\"cloud-snow\":[\"weather\",\"blizzard\"],\"cloud\":[\"weather\"],\"codepen\":[\"logo\"],\"codesandbox\":[\"logo\"],\"code\":[\"source\",\"programming\"],\"coffee\":[\"drink\",\"cup\",\"mug\",\"tea\",\"cafe\",\"hot\",\"beverage\"],\"columns\":[\"layout\"],\"command\":[\"keyboard\",\"cmd\",\"terminal\",\"prompt\"],\"compass\":[\"navigation\",\"safari\",\"travel\",\"direction\"],\"copy\":[\"clone\",\"duplicate\"],\"corner-down-left\":[\"arrow\",\"return\"],\"corner-down-right\":[\"arrow\"],\"corner-left-down\":[\"arrow\"],\"corner-left-up\":[\"arrow\"],\"corner-right-down\":[\"arrow\"],\"corner-right-up\":[\"arrow\"],\"corner-up-left\":[\"arrow\"],\"corner-up-right\":[\"arrow\"],\"cpu\":[\"processor\",\"technology\"],\"credit-card\":[\"purchase\",\"payment\",\"cc\"],\"crop\":[\"photo\",\"image\"],\"crosshair\":[\"aim\",\"target\"],\"database\":[\"storage\",\"memory\"],\"delete\":[\"remove\"],\"disc\":[\"album\",\"cd\",\"dvd\",\"music\"],\"dollar-sign\":[\"currency\",\"money\",\"payment\"],\"droplet\":[\"water\"],\"edit\":[\"pencil\",\"change\"],\"edit-2\":[\"pencil\",\"change\"],\"edit-3\":[\"pencil\",\"change\"],\"eye\":[\"view\",\"watch\"],\"eye-off\":[\"view\",\"watch\",\"hide\",\"hidden\"],\"external-link\":[\"outbound\"],\"facebook\":[\"logo\",\"social\"],\"fast-forward\":[\"music\"],\"figma\":[\"logo\",\"design\",\"tool\"],\"file-minus\":[\"delete\",\"remove\",\"erase\"],\"file-plus\":[\"add\",\"create\",\"new\"],\"file-text\":[\"data\",\"txt\",\"pdf\"],\"film\":[\"movie\",\"video\"],\"filter\":[\"funnel\",\"hopper\"],\"flag\":[\"report\"],\"folder-minus\":[\"directory\"],\"folder-plus\":[\"directory\"],\"folder\":[\"directory\"],\"framer\":[\"logo\",\"design\",\"tool\"],\"frown\":[\"emoji\",\"face\",\"bad\",\"sad\",\"emotion\"],\"gift\":[\"present\",\"box\",\"birthday\",\"party\"],\"git-branch\":[\"code\",\"version control\"],\"git-commit\":[\"code\",\"version control\"],\"git-merge\":[\"code\",\"version control\"],\"git-pull-request\":[\"code\",\"version control\"],\"github\":[\"logo\",\"version control\"],\"gitlab\":[\"logo\",\"version control\"],\"globe\":[\"world\",\"browser\",\"language\",\"translate\"],\"hard-drive\":[\"computer\",\"server\",\"memory\",\"data\"],\"hash\":[\"hashtag\",\"number\",\"pound\"],\"headphones\":[\"music\",\"audio\",\"sound\"],\"heart\":[\"like\",\"love\",\"emotion\"],\"help-circle\":[\"question mark\"],\"hexagon\":[\"shape\",\"node.js\",\"logo\"],\"home\":[\"house\",\"living\"],\"image\":[\"picture\"],\"inbox\":[\"email\"],\"instagram\":[\"logo\",\"camera\"],\"key\":[\"password\",\"login\",\"authentication\",\"secure\"],\"layers\":[\"stack\"],\"layout\":[\"window\",\"webpage\"],\"life-bouy\":[\"help\",\"life ring\",\"support\"],\"link\":[\"chain\",\"url\"],\"link-2\":[\"chain\",\"url\"],\"linkedin\":[\"logo\",\"social media\"],\"list\":[\"options\"],\"lock\":[\"security\",\"password\",\"secure\"],\"log-in\":[\"sign in\",\"arrow\",\"enter\"],\"log-out\":[\"sign out\",\"arrow\",\"exit\"],\"mail\":[\"email\",\"message\"],\"map-pin\":[\"location\",\"navigation\",\"travel\",\"marker\"],\"map\":[\"location\",\"navigation\",\"travel\"],\"maximize\":[\"fullscreen\"],\"maximize-2\":[\"fullscreen\",\"arrows\",\"expand\"],\"meh\":[\"emoji\",\"face\",\"neutral\",\"emotion\"],\"menu\":[\"bars\",\"navigation\",\"hamburger\"],\"message-circle\":[\"comment\",\"chat\"],\"message-square\":[\"comment\",\"chat\"],\"mic-off\":[\"record\",\"sound\",\"mute\"],\"mic\":[\"record\",\"sound\",\"listen\"],\"minimize\":[\"exit fullscreen\",\"close\"],\"minimize-2\":[\"exit fullscreen\",\"arrows\",\"close\"],\"minus\":[\"subtract\"],\"monitor\":[\"tv\",\"screen\",\"display\"],\"moon\":[\"dark\",\"night\"],\"more-horizontal\":[\"ellipsis\"],\"more-vertical\":[\"ellipsis\"],\"mouse-pointer\":[\"arrow\",\"cursor\"],\"move\":[\"arrows\"],\"music\":[\"note\"],\"navigation\":[\"location\",\"travel\"],\"navigation-2\":[\"location\",\"travel\"],\"octagon\":[\"stop\"],\"package\":[\"box\",\"container\"],\"paperclip\":[\"attachment\"],\"pause\":[\"music\",\"stop\"],\"pause-circle\":[\"music\",\"audio\",\"stop\"],\"pen-tool\":[\"vector\",\"drawing\"],\"percent\":[\"discount\"],\"phone-call\":[\"ring\"],\"phone-forwarded\":[\"call\"],\"phone-incoming\":[\"call\"],\"phone-missed\":[\"call\"],\"phone-off\":[\"call\",\"mute\"],\"phone-outgoing\":[\"call\"],\"phone\":[\"call\"],\"play\":[\"music\",\"start\"],\"pie-chart\":[\"statistics\",\"diagram\"],\"play-circle\":[\"music\",\"start\"],\"plus\":[\"add\",\"new\"],\"plus-circle\":[\"add\",\"new\"],\"plus-square\":[\"add\",\"new\"],\"pocket\":[\"logo\",\"save\"],\"power\":[\"on\",\"off\"],\"printer\":[\"fax\",\"office\",\"device\"],\"radio\":[\"signal\"],\"refresh-cw\":[\"synchronise\",\"arrows\"],\"refresh-ccw\":[\"arrows\"],\"repeat\":[\"loop\",\"arrows\"],\"rewind\":[\"music\"],\"rotate-ccw\":[\"arrow\"],\"rotate-cw\":[\"arrow\"],\"rss\":[\"feed\",\"subscribe\"],\"save\":[\"floppy disk\"],\"scissors\":[\"cut\"],\"search\":[\"find\",\"magnifier\",\"magnifying glass\"],\"send\":[\"message\",\"mail\",\"email\",\"paper airplane\",\"paper aeroplane\"],\"settings\":[\"cog\",\"edit\",\"gear\",\"preferences\"],\"share-2\":[\"network\",\"connections\"],\"shield\":[\"security\",\"secure\"],\"shield-off\":[\"security\",\"insecure\"],\"shopping-bag\":[\"ecommerce\",\"cart\",\"purchase\",\"store\"],\"shopping-cart\":[\"ecommerce\",\"cart\",\"purchase\",\"store\"],\"shuffle\":[\"music\"],\"skip-back\":[\"music\"],\"skip-forward\":[\"music\"],\"slack\":[\"logo\"],\"slash\":[\"ban\",\"no\"],\"sliders\":[\"settings\",\"controls\"],\"smartphone\":[\"cellphone\",\"device\"],\"smile\":[\"emoji\",\"face\",\"happy\",\"good\",\"emotion\"],\"speaker\":[\"audio\",\"music\"],\"star\":[\"bookmark\",\"favorite\",\"like\"],\"stop-circle\":[\"media\",\"music\"],\"sun\":[\"brightness\",\"weather\",\"light\"],\"sunrise\":[\"weather\",\"time\",\"morning\",\"day\"],\"sunset\":[\"weather\",\"time\",\"evening\",\"night\"],\"tablet\":[\"device\"],\"tag\":[\"label\"],\"target\":[\"logo\",\"bullseye\"],\"terminal\":[\"code\",\"command line\",\"prompt\"],\"thermometer\":[\"temperature\",\"celsius\",\"fahrenheit\",\"weather\"],\"thumbs-down\":[\"dislike\",\"bad\",\"emotion\"],\"thumbs-up\":[\"like\",\"good\",\"emotion\"],\"toggle-left\":[\"on\",\"off\",\"switch\"],\"toggle-right\":[\"on\",\"off\",\"switch\"],\"tool\":[\"settings\",\"spanner\"],\"trash\":[\"garbage\",\"delete\",\"remove\",\"bin\"],\"trash-2\":[\"garbage\",\"delete\",\"remove\",\"bin\"],\"triangle\":[\"delta\"],\"truck\":[\"delivery\",\"van\",\"shipping\",\"transport\",\"lorry\"],\"tv\":[\"television\",\"stream\"],\"twitch\":[\"logo\"],\"twitter\":[\"logo\",\"social\"],\"type\":[\"text\"],\"umbrella\":[\"rain\",\"weather\"],\"unlock\":[\"security\"],\"user-check\":[\"followed\",\"subscribed\"],\"user-minus\":[\"delete\",\"remove\",\"unfollow\",\"unsubscribe\"],\"user-plus\":[\"new\",\"add\",\"create\",\"follow\",\"subscribe\"],\"user-x\":[\"delete\",\"remove\",\"unfollow\",\"unsubscribe\",\"unavailable\"],\"user\":[\"person\",\"account\"],\"users\":[\"group\"],\"video-off\":[\"camera\",\"movie\",\"film\"],\"video\":[\"camera\",\"movie\",\"film\"],\"voicemail\":[\"phone\"],\"volume\":[\"music\",\"sound\",\"mute\"],\"volume-1\":[\"music\",\"sound\"],\"volume-2\":[\"music\",\"sound\"],\"volume-x\":[\"music\",\"sound\",\"mute\"],\"watch\":[\"clock\",\"time\"],\"wifi-off\":[\"disabled\"],\"wifi\":[\"connection\",\"signal\",\"wireless\"],\"wind\":[\"weather\",\"air\"],\"x-circle\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\",\"clear\"],\"x-octagon\":[\"delete\",\"stop\",\"alert\",\"warning\",\"times\",\"clear\"],\"x-square\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\",\"clear\"],\"x\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\",\"clear\"],\"youtube\":[\"logo\",\"video\",\"play\"],\"zap-off\":[\"flash\",\"camera\",\"lightning\"],\"zap\":[\"flash\",\"camera\",\"lightning\"],\"zoom-in\":[\"magnifying glass\"],\"zoom-out\":[\"magnifying glass\"]};\n\n/***/ }),\n\n/***/ \"./src/to-svg.js\":\n/*!***********************!*\\\n !*** ./src/to-svg.js ***!\n \\***********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create an SVG string.\n * @deprecated\n * @param {string} name\n * @param {Object} attrs\n * @returns {string}\n */\nfunction toSvg(name) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n console.warn('feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead.');\n\n if (!name) {\n throw new Error('The required `key` (icon name) parameter is missing.');\n }\n\n if (!_icons2.default[name]) {\n throw new Error('No icon matching \\'' + name + '\\'. See the complete list of icons at https://feathericons.com');\n }\n\n return _icons2.default[name].toSvg(attrs);\n}\n\nexports.default = toSvg;\n\n/***/ }),\n\n/***/ 0:\n/*!**************************************************!*\\\n !*** multi core-js/es/array/from ./src/index.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(/*! core-js/es/array/from */\"./node_modules/core-js/es/array/from.js\");\nmodule.exports = __webpack_require__(/*! /home/travis/build/feathericons/feather/src/index.js */\"./src/index.js\");\n\n\n/***/ })\n\n/******/ });\n});\n","import firebase from '@firebase/app';\nexport { default } from '@firebase/app';\n\nvar name = \"firebase\";\nvar version = \"8.10.0\";\n\n/**\r\n * @license\r\n * Copyright 2018 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfirebase.registerVersion(name, version, 'app');\r\nfirebase.SDK_VERSION = version;\n","import firebase from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { __awaiter, __generator, __spreadArray, __read, __values, __assign } from 'tslib';\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { openDb } from 'idb';\n\nvar name = \"@firebase/installations\";\nvar version = \"0.4.32\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar PENDING_TIMEOUT_MS = 10000;\r\nvar PACKAGE_VERSION = \"w:\" + version;\r\nvar INTERNAL_AUTH_VERSION = 'FIS_v2';\r\nvar INSTALLATIONS_API_URL = 'https://firebaseinstallations.googleapis.com/v1';\r\nvar TOKEN_EXPIRATION_BUFFER = 60 * 60 * 1000; // One hour\r\nvar SERVICE = 'installations';\r\nvar SERVICE_NAME = 'Installations';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar _a;\r\nvar ERROR_DESCRIPTION_MAP = (_a = {},\r\n _a[\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */] = 'Missing App configuration value: \"{$valueName}\"',\r\n _a[\"not-registered\" /* NOT_REGISTERED */] = 'Firebase Installation is not registered.',\r\n _a[\"installation-not-found\" /* INSTALLATION_NOT_FOUND */] = 'Firebase Installation not found.',\r\n _a[\"request-failed\" /* REQUEST_FAILED */] = '{$requestName} request failed with error \"{$serverCode} {$serverStatus}: {$serverMessage}\"',\r\n _a[\"app-offline\" /* APP_OFFLINE */] = 'Could not process request. Application offline.',\r\n _a[\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */] = \"Can't delete installation while there is a pending registration request.\",\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\r\n/** Returns true if error is a FirebaseError that is based on an error from the server. */\r\nfunction isServerError(error) {\r\n return (error instanceof FirebaseError &&\r\n error.code.includes(\"request-failed\" /* REQUEST_FAILED */));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getInstallationsEndpoint(_a) {\r\n var projectId = _a.projectId;\r\n return INSTALLATIONS_API_URL + \"/projects/\" + projectId + \"/installations\";\r\n}\r\nfunction extractAuthTokenInfoFromResponse(response) {\r\n return {\r\n token: response.token,\r\n requestStatus: 2 /* COMPLETED */,\r\n expiresIn: getExpiresInFromResponseExpiresIn(response.expiresIn),\r\n creationTime: Date.now()\r\n };\r\n}\r\nfunction getErrorFromResponse(requestName, response) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var responseJson, errorData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, response.json()];\r\n case 1:\r\n responseJson = _a.sent();\r\n errorData = responseJson.error;\r\n return [2 /*return*/, ERROR_FACTORY.create(\"request-failed\" /* REQUEST_FAILED */, {\r\n requestName: requestName,\r\n serverCode: errorData.code,\r\n serverMessage: errorData.message,\r\n serverStatus: errorData.status\r\n })];\r\n }\r\n });\r\n });\r\n}\r\nfunction getHeaders(_a) {\r\n var apiKey = _a.apiKey;\r\n return new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': apiKey\r\n });\r\n}\r\nfunction getHeadersWithAuth(appConfig, _a) {\r\n var refreshToken = _a.refreshToken;\r\n var headers = getHeaders(appConfig);\r\n headers.append('Authorization', getAuthorizationHeader(refreshToken));\r\n return headers;\r\n}\r\n/**\r\n * Calls the passed in fetch wrapper and returns the response.\r\n * If the returned response has a status of 5xx, re-runs the function once and\r\n * returns the response.\r\n */\r\nfunction retryIfServerError(fn) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, fn()];\r\n case 1:\r\n result = _a.sent();\r\n if (result.status >= 500 && result.status < 600) {\r\n // Internal Server Error. Retry request.\r\n return [2 /*return*/, fn()];\r\n }\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n}\r\nfunction getExpiresInFromResponseExpiresIn(responseExpiresIn) {\r\n // This works because the server will never respond with fractions of a second.\r\n return Number(responseExpiresIn.replace('s', '000'));\r\n}\r\nfunction getAuthorizationHeader(refreshToken) {\r\n return INTERNAL_AUTH_VERSION + \" \" + refreshToken;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createInstallationRequest(appConfig, _a) {\r\n var fid = _a.fid;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var endpoint, headers, body, request, response, responseValue, registeredInstallationEntry;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n endpoint = getInstallationsEndpoint(appConfig);\r\n headers = getHeaders(appConfig);\r\n body = {\r\n fid: fid,\r\n authVersion: INTERNAL_AUTH_VERSION,\r\n appId: appConfig.appId,\r\n sdkVersion: PACKAGE_VERSION\r\n };\r\n request = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n return [4 /*yield*/, retryIfServerError(function () { return fetch(endpoint, request); })];\r\n case 1:\r\n response = _b.sent();\r\n if (!response.ok) return [3 /*break*/, 3];\r\n return [4 /*yield*/, response.json()];\r\n case 2:\r\n responseValue = _b.sent();\r\n registeredInstallationEntry = {\r\n fid: responseValue.fid || fid,\r\n registrationStatus: 2 /* COMPLETED */,\r\n refreshToken: responseValue.refreshToken,\r\n authToken: extractAuthTokenInfoFromResponse(responseValue.authToken)\r\n };\r\n return [2 /*return*/, registeredInstallationEntry];\r\n case 3: return [4 /*yield*/, getErrorFromResponse('Create Installation', response)];\r\n case 4: throw _b.sent();\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a promise that resolves after given time passes. */\r\nfunction sleep(ms) {\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction bufferToBase64UrlSafe(array) {\r\n var b64 = btoa(String.fromCharCode.apply(String, __spreadArray([], __read(array))));\r\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar VALID_FID_PATTERN = /^[cdef][\\w-]{21}$/;\r\nvar INVALID_FID = '';\r\n/**\r\n * Generates a new FID using random values from Web Crypto API.\r\n * Returns an empty string if FID generation fails for any reason.\r\n */\r\nfunction generateFid() {\r\n try {\r\n // A valid FID has exactly 22 base64 characters, which is 132 bits, or 16.5\r\n // bytes. our implementation generates a 17 byte array instead.\r\n var fidByteArray = new Uint8Array(17);\r\n var crypto_1 = self.crypto || self.msCrypto;\r\n crypto_1.getRandomValues(fidByteArray);\r\n // Replace the first 4 random bits with the constant FID header of 0b0111.\r\n fidByteArray[0] = 112 + (fidByteArray[0] % 16);\r\n var fid = encode(fidByteArray);\r\n return VALID_FID_PATTERN.test(fid) ? fid : INVALID_FID;\r\n }\r\n catch (_a) {\r\n // FID generation errored\r\n return INVALID_FID;\r\n }\r\n}\r\n/** Converts a FID Uint8Array to a base64 string representation. */\r\nfunction encode(fidByteArray) {\r\n var b64String = bufferToBase64UrlSafe(fidByteArray);\r\n // Remove the 23rd character that was added because of the extra 4 bits at the\r\n // end of our 17 byte array, and the '=' padding.\r\n return b64String.substr(0, 22);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a string key that can be used to identify the app. */\r\nfunction getKey(appConfig) {\r\n return appConfig.appName + \"!\" + appConfig.appId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar fidChangeCallbacks = new Map();\r\n/**\r\n * Calls the onIdChange callbacks with the new FID value, and broadcasts the\r\n * change to other tabs.\r\n */\r\nfunction fidChanged(appConfig, fid) {\r\n var key = getKey(appConfig);\r\n callFidChangeCallbacks(key, fid);\r\n broadcastFidChange(key, fid);\r\n}\r\nfunction addCallback(appConfig, callback) {\r\n // Open the broadcast channel if it's not already open,\r\n // to be able to listen to change events from other tabs.\r\n getBroadcastChannel();\r\n var key = getKey(appConfig);\r\n var callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n callbackSet = new Set();\r\n fidChangeCallbacks.set(key, callbackSet);\r\n }\r\n callbackSet.add(callback);\r\n}\r\nfunction removeCallback(appConfig, callback) {\r\n var key = getKey(appConfig);\r\n var callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n return;\r\n }\r\n callbackSet.delete(callback);\r\n if (callbackSet.size === 0) {\r\n fidChangeCallbacks.delete(key);\r\n }\r\n // Close broadcast channel if there are no more callbacks.\r\n closeBroadcastChannel();\r\n}\r\nfunction callFidChangeCallbacks(key, fid) {\r\n var e_1, _a;\r\n var callbacks = fidChangeCallbacks.get(key);\r\n if (!callbacks) {\r\n return;\r\n }\r\n try {\r\n for (var callbacks_1 = __values(callbacks), callbacks_1_1 = callbacks_1.next(); !callbacks_1_1.done; callbacks_1_1 = callbacks_1.next()) {\r\n var callback = callbacks_1_1.value;\r\n callback(fid);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (callbacks_1_1 && !callbacks_1_1.done && (_a = callbacks_1.return)) _a.call(callbacks_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n}\r\nfunction broadcastFidChange(key, fid) {\r\n var channel = getBroadcastChannel();\r\n if (channel) {\r\n channel.postMessage({ key: key, fid: fid });\r\n }\r\n closeBroadcastChannel();\r\n}\r\nvar broadcastChannel = null;\r\n/** Opens and returns a BroadcastChannel if it is supported by the browser. */\r\nfunction getBroadcastChannel() {\r\n if (!broadcastChannel && 'BroadcastChannel' in self) {\r\n broadcastChannel = new BroadcastChannel('[Firebase] FID Change');\r\n broadcastChannel.onmessage = function (e) {\r\n callFidChangeCallbacks(e.data.key, e.data.fid);\r\n };\r\n }\r\n return broadcastChannel;\r\n}\r\nfunction closeBroadcastChannel() {\r\n if (fidChangeCallbacks.size === 0 && broadcastChannel) {\r\n broadcastChannel.close();\r\n broadcastChannel = null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DATABASE_NAME = 'firebase-installations-database';\r\nvar DATABASE_VERSION = 1;\r\nvar OBJECT_STORE_NAME = 'firebase-installations-store';\r\nvar dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, function (upgradeDB) {\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (upgradeDB.oldVersion) {\r\n case 0:\r\n upgradeDB.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nfunction set(appConfig, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx, objectStore, oldValue;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(appConfig);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n objectStore = tx.objectStore(OBJECT_STORE_NAME);\r\n return [4 /*yield*/, objectStore.get(key)];\r\n case 2:\r\n oldValue = _a.sent();\r\n return [4 /*yield*/, objectStore.put(value, key)];\r\n case 3:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 4:\r\n _a.sent();\r\n if (!oldValue || oldValue.fid !== value.fid) {\r\n fidChanged(appConfig, value.fid);\r\n }\r\n return [2 /*return*/, value];\r\n }\r\n });\r\n });\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nfunction remove(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(appConfig);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).delete(key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Atomically updates a record with the result of updateFn, which gets\r\n * called with the current value. If newValue is undefined, the record is\r\n * deleted instead.\r\n * @return Updated value\r\n */\r\nfunction update(appConfig, updateFn) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx, store, oldValue, newValue;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(appConfig);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n store = tx.objectStore(OBJECT_STORE_NAME);\r\n return [4 /*yield*/, store.get(key)];\r\n case 2:\r\n oldValue = _a.sent();\r\n newValue = updateFn(oldValue);\r\n if (!(newValue === undefined)) return [3 /*break*/, 4];\r\n return [4 /*yield*/, store.delete(key)];\r\n case 3:\r\n _a.sent();\r\n return [3 /*break*/, 6];\r\n case 4: return [4 /*yield*/, store.put(newValue, key)];\r\n case 5:\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: return [4 /*yield*/, tx.complete];\r\n case 7:\r\n _a.sent();\r\n if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {\r\n fidChanged(appConfig, newValue.fid);\r\n }\r\n return [2 /*return*/, newValue];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Updates and returns the InstallationEntry from the database.\r\n * Also triggers a registration request if it is necessary and possible.\r\n */\r\nfunction getInstallationEntry(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var registrationPromise, installationEntry;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, update(appConfig, function (oldEntry) {\r\n var installationEntry = updateOrCreateInstallationEntry(oldEntry);\r\n var entryWithPromise = triggerRegistrationIfNecessary(appConfig, installationEntry);\r\n registrationPromise = entryWithPromise.registrationPromise;\r\n return entryWithPromise.installationEntry;\r\n })];\r\n case 1:\r\n installationEntry = _b.sent();\r\n if (!(installationEntry.fid === INVALID_FID)) return [3 /*break*/, 3];\r\n _a = {};\r\n return [4 /*yield*/, registrationPromise];\r\n case 2: \r\n // FID generation failed. Waiting for the FID from the server.\r\n return [2 /*return*/, (_a.installationEntry = _b.sent(), _a)];\r\n case 3: return [2 /*return*/, {\r\n installationEntry: installationEntry,\r\n registrationPromise: registrationPromise\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Creates a new Installation Entry if one does not exist.\r\n * Also clears timed out pending requests.\r\n */\r\nfunction updateOrCreateInstallationEntry(oldEntry) {\r\n var entry = oldEntry || {\r\n fid: generateFid(),\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n return clearTimedOutRequest(entry);\r\n}\r\n/**\r\n * If the Firebase Installation is not registered yet, this will trigger the\r\n * registration and return an InProgressInstallationEntry.\r\n *\r\n * If registrationPromise does not exist, the installationEntry is guaranteed\r\n * to be registered.\r\n */\r\nfunction triggerRegistrationIfNecessary(appConfig, installationEntry) {\r\n if (installationEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n if (!navigator.onLine) {\r\n // Registration required but app is offline.\r\n var registrationPromiseWithError = Promise.reject(ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */));\r\n return {\r\n installationEntry: installationEntry,\r\n registrationPromise: registrationPromiseWithError\r\n };\r\n }\r\n // Try registering. Change status to IN_PROGRESS.\r\n var inProgressEntry = {\r\n fid: installationEntry.fid,\r\n registrationStatus: 1 /* IN_PROGRESS */,\r\n registrationTime: Date.now()\r\n };\r\n var registrationPromise = registerInstallation(appConfig, inProgressEntry);\r\n return { installationEntry: inProgressEntry, registrationPromise: registrationPromise };\r\n }\r\n else if (installationEntry.registrationStatus === 1 /* IN_PROGRESS */) {\r\n return {\r\n installationEntry: installationEntry,\r\n registrationPromise: waitUntilFidRegistration(appConfig)\r\n };\r\n }\r\n else {\r\n return { installationEntry: installationEntry };\r\n }\r\n}\r\n/** This will be executed only once for each new Firebase Installation. */\r\nfunction registerInstallation(appConfig, installationEntry) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var registeredInstallationEntry, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 7]);\r\n return [4 /*yield*/, createInstallationRequest(appConfig, installationEntry)];\r\n case 1:\r\n registeredInstallationEntry = _a.sent();\r\n return [2 /*return*/, set(appConfig, registeredInstallationEntry)];\r\n case 2:\r\n e_1 = _a.sent();\r\n if (!(isServerError(e_1) && e_1.customData.serverCode === 409)) return [3 /*break*/, 4];\r\n // Server returned a \"FID can not be used\" error.\r\n // Generate a new ID next time.\r\n return [4 /*yield*/, remove(appConfig)];\r\n case 3:\r\n // Server returned a \"FID can not be used\" error.\r\n // Generate a new ID next time.\r\n _a.sent();\r\n return [3 /*break*/, 6];\r\n case 4: \r\n // Registration failed. Set FID as not registered.\r\n return [4 /*yield*/, set(appConfig, {\r\n fid: installationEntry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n })];\r\n case 5:\r\n // Registration failed. Set FID as not registered.\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: throw e_1;\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** Call if FID registration is pending in another request. */\r\nfunction waitUntilFidRegistration(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var entry, _a, installationEntry, registrationPromise;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, updateInstallationRequest(appConfig)];\r\n case 1:\r\n entry = _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n if (!(entry.registrationStatus === 1 /* IN_PROGRESS */)) return [3 /*break*/, 5];\r\n // createInstallation request still in progress.\r\n return [4 /*yield*/, sleep(100)];\r\n case 3:\r\n // createInstallation request still in progress.\r\n _b.sent();\r\n return [4 /*yield*/, updateInstallationRequest(appConfig)];\r\n case 4:\r\n entry = _b.sent();\r\n return [3 /*break*/, 2];\r\n case 5:\r\n if (!(entry.registrationStatus === 0 /* NOT_STARTED */)) return [3 /*break*/, 7];\r\n return [4 /*yield*/, getInstallationEntry(appConfig)];\r\n case 6:\r\n _a = _b.sent(), installationEntry = _a.installationEntry, registrationPromise = _a.registrationPromise;\r\n if (registrationPromise) {\r\n return [2 /*return*/, registrationPromise];\r\n }\r\n else {\r\n // if there is no registrationPromise, entry is registered.\r\n return [2 /*return*/, installationEntry];\r\n }\r\n case 7: return [2 /*return*/, entry];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Called only if there is a CreateInstallation request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * CreateInstallation request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateInstallationRequest(appConfig) {\r\n return update(appConfig, function (oldEntry) {\r\n if (!oldEntry) {\r\n throw ERROR_FACTORY.create(\"installation-not-found\" /* INSTALLATION_NOT_FOUND */);\r\n }\r\n return clearTimedOutRequest(oldEntry);\r\n });\r\n}\r\nfunction clearTimedOutRequest(entry) {\r\n if (hasInstallationRequestTimedOut(entry)) {\r\n return {\r\n fid: entry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n }\r\n return entry;\r\n}\r\nfunction hasInstallationRequestTimedOut(installationEntry) {\r\n return (installationEntry.registrationStatus === 1 /* IN_PROGRESS */ &&\r\n installationEntry.registrationTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction generateAuthTokenRequest(_a, installationEntry) {\r\n var appConfig = _a.appConfig, platformLoggerProvider = _a.platformLoggerProvider;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var endpoint, headers, platformLogger, body, request, response, responseValue, completedAuthToken;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);\r\n headers = getHeadersWithAuth(appConfig, installationEntry);\r\n platformLogger = platformLoggerProvider.getImmediate({\r\n optional: true\r\n });\r\n if (platformLogger) {\r\n headers.append('x-firebase-client', platformLogger.getPlatformInfoString());\r\n }\r\n body = {\r\n installation: {\r\n sdkVersion: PACKAGE_VERSION\r\n }\r\n };\r\n request = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n return [4 /*yield*/, retryIfServerError(function () { return fetch(endpoint, request); })];\r\n case 1:\r\n response = _b.sent();\r\n if (!response.ok) return [3 /*break*/, 3];\r\n return [4 /*yield*/, response.json()];\r\n case 2:\r\n responseValue = _b.sent();\r\n completedAuthToken = extractAuthTokenInfoFromResponse(responseValue);\r\n return [2 /*return*/, completedAuthToken];\r\n case 3: return [4 /*yield*/, getErrorFromResponse('Generate Auth Token', response)];\r\n case 4: throw _b.sent();\r\n }\r\n });\r\n });\r\n}\r\nfunction getGenerateAuthTokenEndpoint(appConfig, _a) {\r\n var fid = _a.fid;\r\n return getInstallationsEndpoint(appConfig) + \"/\" + fid + \"/authTokens:generate\";\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a valid authentication token for the installation. Generates a new\r\n * token if one doesn't exist, is expired or about to expire.\r\n *\r\n * Should only be called if the Firebase Installation is registered.\r\n */\r\nfunction refreshAuthToken(dependencies, forceRefresh) {\r\n if (forceRefresh === void 0) { forceRefresh = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenPromise, entry, authToken, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, update(dependencies.appConfig, function (oldEntry) {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n var oldAuthToken = oldEntry.authToken;\r\n if (!forceRefresh && isAuthTokenValid(oldAuthToken)) {\r\n // There is a valid token in the DB.\r\n return oldEntry;\r\n }\r\n else if (oldAuthToken.requestStatus === 1 /* IN_PROGRESS */) {\r\n // There already is a token request in progress.\r\n tokenPromise = waitUntilAuthTokenRequest(dependencies, forceRefresh);\r\n return oldEntry;\r\n }\r\n else {\r\n // No token or token expired.\r\n if (!navigator.onLine) {\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n }\r\n var inProgressEntry = makeAuthTokenRequestInProgressEntry(oldEntry);\r\n tokenPromise = fetchAuthTokenFromServer(dependencies, inProgressEntry);\r\n return inProgressEntry;\r\n }\r\n })];\r\n case 1:\r\n entry = _b.sent();\r\n if (!tokenPromise) return [3 /*break*/, 3];\r\n return [4 /*yield*/, tokenPromise];\r\n case 2:\r\n _a = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a = entry.authToken;\r\n _b.label = 4;\r\n case 4:\r\n authToken = _a;\r\n return [2 /*return*/, authToken];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Call only if FID is registered and Auth Token request is in progress.\r\n *\r\n * Waits until the current pending request finishes. If the request times out,\r\n * tries once in this thread as well.\r\n */\r\nfunction waitUntilAuthTokenRequest(dependencies, forceRefresh) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var entry, authToken;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, updateAuthTokenRequest(dependencies.appConfig)];\r\n case 1:\r\n entry = _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (!(entry.authToken.requestStatus === 1 /* IN_PROGRESS */)) return [3 /*break*/, 5];\r\n // generateAuthToken still in progress.\r\n return [4 /*yield*/, sleep(100)];\r\n case 3:\r\n // generateAuthToken still in progress.\r\n _a.sent();\r\n return [4 /*yield*/, updateAuthTokenRequest(dependencies.appConfig)];\r\n case 4:\r\n entry = _a.sent();\r\n return [3 /*break*/, 2];\r\n case 5:\r\n authToken = entry.authToken;\r\n if (authToken.requestStatus === 0 /* NOT_STARTED */) {\r\n // The request timed out or failed in a different call. Try again.\r\n return [2 /*return*/, refreshAuthToken(dependencies, forceRefresh)];\r\n }\r\n else {\r\n return [2 /*return*/, authToken];\r\n }\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Called only if there is a GenerateAuthToken request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * GenerateAuthToken request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateAuthTokenRequest(appConfig) {\r\n return update(appConfig, function (oldEntry) {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n var oldAuthToken = oldEntry.authToken;\r\n if (hasAuthTokenRequestTimedOut(oldAuthToken)) {\r\n return __assign(__assign({}, oldEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n }\r\n return oldEntry;\r\n });\r\n}\r\nfunction fetchAuthTokenFromServer(dependencies, installationEntry) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken, updatedInstallationEntry, e_1, updatedInstallationEntry;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 3, , 8]);\r\n return [4 /*yield*/, generateAuthTokenRequest(dependencies, installationEntry)];\r\n case 1:\r\n authToken = _a.sent();\r\n updatedInstallationEntry = __assign(__assign({}, installationEntry), { authToken: authToken });\r\n return [4 /*yield*/, set(dependencies.appConfig, updatedInstallationEntry)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, authToken];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (!(isServerError(e_1) &&\r\n (e_1.customData.serverCode === 401 || e_1.customData.serverCode === 404))) return [3 /*break*/, 5];\r\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\r\n // Generate a new ID next time.\r\n return [4 /*yield*/, remove(dependencies.appConfig)];\r\n case 4:\r\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\r\n // Generate a new ID next time.\r\n _a.sent();\r\n return [3 /*break*/, 7];\r\n case 5:\r\n updatedInstallationEntry = __assign(__assign({}, installationEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n return [4 /*yield*/, set(dependencies.appConfig, updatedInstallationEntry)];\r\n case 6:\r\n _a.sent();\r\n _a.label = 7;\r\n case 7: throw e_1;\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction isEntryRegistered(installationEntry) {\r\n return (installationEntry !== undefined &&\r\n installationEntry.registrationStatus === 2 /* COMPLETED */);\r\n}\r\nfunction isAuthTokenValid(authToken) {\r\n return (authToken.requestStatus === 2 /* COMPLETED */ &&\r\n !isAuthTokenExpired(authToken));\r\n}\r\nfunction isAuthTokenExpired(authToken) {\r\n var now = Date.now();\r\n return (now < authToken.creationTime ||\r\n authToken.creationTime + authToken.expiresIn < now + TOKEN_EXPIRATION_BUFFER);\r\n}\r\n/** Returns an updated InstallationEntry with an InProgressAuthToken. */\r\nfunction makeAuthTokenRequestInProgressEntry(oldEntry) {\r\n var inProgressAuthToken = {\r\n requestStatus: 1 /* IN_PROGRESS */,\r\n requestTime: Date.now()\r\n };\r\n return __assign(__assign({}, oldEntry), { authToken: inProgressAuthToken });\r\n}\r\nfunction hasAuthTokenRequestTimedOut(authToken) {\r\n return (authToken.requestStatus === 1 /* IN_PROGRESS */ &&\r\n authToken.requestTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getId(dependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, installationEntry, registrationPromise;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, getInstallationEntry(dependencies.appConfig)];\r\n case 1:\r\n _a = _b.sent(), installationEntry = _a.installationEntry, registrationPromise = _a.registrationPromise;\r\n if (registrationPromise) {\r\n registrationPromise.catch(console.error);\r\n }\r\n else {\r\n // If the installation is already registered, update the authentication\r\n // token if needed.\r\n refreshAuthToken(dependencies).catch(console.error);\r\n }\r\n return [2 /*return*/, installationEntry.fid];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getToken(dependencies, forceRefresh) {\r\n if (forceRefresh === void 0) { forceRefresh = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, completeInstallationRegistration(dependencies.appConfig)];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, refreshAuthToken(dependencies, forceRefresh)];\r\n case 2:\r\n authToken = _a.sent();\r\n return [2 /*return*/, authToken.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction completeInstallationRegistration(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var registrationPromise;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getInstallationEntry(appConfig)];\r\n case 1:\r\n registrationPromise = (_a.sent()).registrationPromise;\r\n if (!registrationPromise) return [3 /*break*/, 3];\r\n // A createInstallation request is in progress. Wait until it finishes.\r\n return [4 /*yield*/, registrationPromise];\r\n case 2:\r\n // A createInstallation request is in progress. Wait until it finishes.\r\n _a.sent();\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction deleteInstallationRequest(appConfig, installationEntry) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var endpoint, headers, request, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n endpoint = getDeleteEndpoint(appConfig, installationEntry);\r\n headers = getHeadersWithAuth(appConfig, installationEntry);\r\n request = {\r\n method: 'DELETE',\r\n headers: headers\r\n };\r\n return [4 /*yield*/, retryIfServerError(function () { return fetch(endpoint, request); })];\r\n case 1:\r\n response = _a.sent();\r\n if (!!response.ok) return [3 /*break*/, 3];\r\n return [4 /*yield*/, getErrorFromResponse('Delete Installation', response)];\r\n case 2: throw _a.sent();\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getDeleteEndpoint(appConfig, _a) {\r\n var fid = _a.fid;\r\n return getInstallationsEndpoint(appConfig) + \"/\" + fid;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction deleteInstallation(dependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appConfig, entry;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n appConfig = dependencies.appConfig;\r\n return [4 /*yield*/, update(appConfig, function (oldEntry) {\r\n if (oldEntry && oldEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n // Delete the unregistered entry without sending a deleteInstallation request.\r\n return undefined;\r\n }\r\n return oldEntry;\r\n })];\r\n case 1:\r\n entry = _a.sent();\r\n if (!entry) return [3 /*break*/, 6];\r\n if (!(entry.registrationStatus === 1 /* IN_PROGRESS */)) return [3 /*break*/, 2];\r\n // Can't delete while trying to register.\r\n throw ERROR_FACTORY.create(\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */);\r\n case 2:\r\n if (!(entry.registrationStatus === 2 /* COMPLETED */)) return [3 /*break*/, 6];\r\n if (!!navigator.onLine) return [3 /*break*/, 3];\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n case 3: return [4 /*yield*/, deleteInstallationRequest(appConfig, entry)];\r\n case 4:\r\n _a.sent();\r\n return [4 /*yield*/, remove(appConfig)];\r\n case 5:\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Sets a new callback that will get called when Installation ID changes.\r\n * Returns an unsubscribe function that will remove the callback when called.\r\n */\r\nfunction onIdChange(_a, callback) {\r\n var appConfig = _a.appConfig;\r\n addCallback(appConfig, callback);\r\n return function () {\r\n removeCallback(appConfig, callback);\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n var e_1, _a;\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n var configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId'\r\n ];\r\n try {\r\n for (var configKeys_1 = __values(configKeys), configKeys_1_1 = configKeys_1.next(); !configKeys_1_1.done; configKeys_1_1 = configKeys_1.next()) {\r\n var keyName = configKeys_1_1.value;\r\n if (!app.options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (configKeys_1_1 && !configKeys_1_1.done && (_a = configKeys_1.return)) _a.call(configKeys_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: app.options.projectId,\r\n apiKey: app.options.apiKey,\r\n appId: app.options.appId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName: valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerInstallations(instance) {\r\n var installationsName = 'installations';\r\n instance.INTERNAL.registerComponent(new Component(installationsName, function (container) {\r\n var app = container.getProvider('app').getImmediate();\r\n // Throws if app isn't configured properly.\r\n var appConfig = extractAppConfig(app);\r\n var platformLoggerProvider = container.getProvider('platform-logger');\r\n var dependencies = {\r\n appConfig: appConfig,\r\n platformLoggerProvider: platformLoggerProvider\r\n };\r\n var installations = {\r\n app: app,\r\n getId: function () { return getId(dependencies); },\r\n getToken: function (forceRefresh) {\r\n return getToken(dependencies, forceRefresh);\r\n },\r\n delete: function () { return deleteInstallation(dependencies); },\r\n onIdChange: function (callback) {\r\n return onIdChange(dependencies, callback);\r\n }\r\n };\r\n return installations;\r\n }, \"PUBLIC\" /* PUBLIC */));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterInstallations(firebase);\n\nexport { registerInstallations };\n","import '@firebase/installations';\nimport { Component } from '@firebase/component';\nimport { ErrorFactory } from '@firebase/util';\nimport { __spreadArray, __read, __awaiter, __generator, __assign, __values } from 'tslib';\nimport { deleteDb, openDb } from 'idb';\nimport firebase from '@firebase/app';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar _a;\r\nvar ERROR_MAP = (_a = {},\r\n _a[\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */] = 'Missing App configuration value: \"{$valueName}\"',\r\n _a[\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */] = 'This method is available in a Window context.',\r\n _a[\"only-available-in-sw\" /* AVAILABLE_IN_SW */] = 'This method is available in a service worker context.',\r\n _a[\"permission-default\" /* PERMISSION_DEFAULT */] = 'The notification permission was not granted and dismissed instead.',\r\n _a[\"permission-blocked\" /* PERMISSION_BLOCKED */] = 'The notification permission was not granted and blocked instead.',\r\n _a[\"unsupported-browser\" /* UNSUPPORTED_BROWSER */] = \"This browser doesn't support the API's required to use the firebase SDK.\",\r\n _a[\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */] = 'We are unable to register the default service worker. {$browserErrorMessage}',\r\n _a[\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */] = 'A problem occurred while subscribing the user to FCM: {$errorInfo}',\r\n _a[\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */] = 'FCM returned no token when subscribing the user to push.',\r\n _a[\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */] = 'A problem occurred while unsubscribing the ' +\r\n 'user from FCM: {$errorInfo}',\r\n _a[\"token-update-failed\" /* TOKEN_UPDATE_FAILED */] = 'A problem occurred while updating the user from FCM: {$errorInfo}',\r\n _a[\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */] = 'FCM returned no token when updating the user to push.',\r\n _a[\"use-sw-after-get-token\" /* USE_SW_AFTER_GET_TOKEN */] = 'The useServiceWorker() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your service worker is used.',\r\n _a[\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */] = 'The input to useServiceWorker() must be a ServiceWorkerRegistration.',\r\n _a[\"invalid-bg-handler\" /* INVALID_BG_HANDLER */] = 'The input to setBackgroundMessageHandler() must be a function.',\r\n _a[\"invalid-vapid-key\" /* INVALID_VAPID_KEY */] = 'The public VAPID key must be a string.',\r\n _a[\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */] = 'The usePublicVapidKey() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your VAPID key is used.',\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory('messaging', 'Messaging', ERROR_MAP);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DEFAULT_SW_PATH = '/firebase-messaging-sw.js';\r\nvar DEFAULT_SW_SCOPE = '/firebase-cloud-messaging-push-scope';\r\nvar DEFAULT_VAPID_KEY = 'BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4';\r\nvar ENDPOINT = 'https://fcmregistrations.googleapis.com/v1';\r\n// Key of FCM Payload in Notification's data field.\r\nvar FCM_MSG = 'FCM_MSG';\r\nvar TAG = 'FirebaseMessaging: ';\r\n// Set to '1' if Analytics is enabled for the campaign\r\nvar CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\r\nvar CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\r\nvar CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\r\nvar CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l';\r\n// Due to the fact that onBackgroundMessage can't be awaited (to support rxjs), a silent push\r\n// warning might be shown by the browser if the callback fails to completes by the end of onPush.\r\n// Experiments were ran to determine the majority onBackground message clock time. This brief\r\n// blocking time would allow majority of the onBackgroundMessage callback to finish.\r\nvar BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS = 1000;\r\n// Preparation time for client to initialize and set up the message handler.\r\nvar FOREGROUND_HANDLE_PREPARATION_TIME_MS = 3000;\n\n/**\r\n * @license\r\n * Copyright 2018 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\r\n * in compliance with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under the License\r\n * is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r\n * or implied. See the License for the specific language governing permissions and limitations under\r\n * the License.\r\n */\r\nvar MessageType;\r\n(function (MessageType) {\r\n MessageType[\"PUSH_RECEIVED\"] = \"push-received\";\r\n MessageType[\"NOTIFICATION_CLICKED\"] = \"notification-clicked\";\r\n})(MessageType || (MessageType = {}));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction arrayToBase64(array) {\r\n var uint8Array = new Uint8Array(array);\r\n var base64String = btoa(String.fromCharCode.apply(String, __spreadArray([], __read(uint8Array))));\r\n return base64String.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\r\nfunction base64ToArray(base64String) {\r\n var padding = '='.repeat((4 - (base64String.length % 4)) % 4);\r\n var base64 = (base64String + padding)\r\n .replace(/\\-/g, '+')\r\n .replace(/_/g, '/');\r\n var rawData = atob(base64);\r\n var outputArray = new Uint8Array(rawData.length);\r\n for (var i = 0; i < rawData.length; ++i) {\r\n outputArray[i] = rawData.charCodeAt(i);\r\n }\r\n return outputArray;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar OLD_DB_NAME = 'fcm_token_details_db';\r\n/**\r\n * The last DB version of 'fcm_token_details_db' was 4. This is one higher, so that the upgrade\r\n * callback is called for all versions of the old DB.\r\n */\r\nvar OLD_DB_VERSION = 5;\r\nvar OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\r\nfunction migrateOldDatabase(senderId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var databases, dbNames, tokenDetails, db;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!('databases' in indexedDB)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, indexedDB.databases()];\r\n case 1:\r\n databases = _a.sent();\r\n dbNames = databases.map(function (db) { return db.name; });\r\n if (!dbNames.includes(OLD_DB_NAME)) {\r\n // old DB didn't exist, no need to open.\r\n return [2 /*return*/, null];\r\n }\r\n _a.label = 2;\r\n case 2:\r\n tokenDetails = null;\r\n return [4 /*yield*/, openDb(OLD_DB_NAME, OLD_DB_VERSION, function (db) { return __awaiter(_this, void 0, void 0, function () {\r\n var objectStore, value, oldDetails, oldDetails, oldDetails;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (db.oldVersion < 2) {\r\n // Database too old, skip migration.\r\n return [2 /*return*/];\r\n }\r\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\r\n // Database did not exist. Nothing to do.\r\n return [2 /*return*/];\r\n }\r\n objectStore = db.transaction.objectStore(OLD_OBJECT_STORE_NAME);\r\n return [4 /*yield*/, objectStore.index('fcmSenderId').get(senderId)];\r\n case 1:\r\n value = _b.sent();\r\n return [4 /*yield*/, objectStore.clear()];\r\n case 2:\r\n _b.sent();\r\n if (!value) {\r\n // No entry in the database, nothing to migrate.\r\n return [2 /*return*/];\r\n }\r\n if (db.oldVersion === 2) {\r\n oldDetails = value;\r\n if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {\r\n return [2 /*return*/];\r\n }\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: (_a = oldDetails.createTime) !== null && _a !== void 0 ? _a : Date.now(),\r\n subscriptionOptions: {\r\n auth: oldDetails.auth,\r\n p256dh: oldDetails.p256dh,\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: typeof oldDetails.vapidKey === 'string'\r\n ? oldDetails.vapidKey\r\n : arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (db.oldVersion === 3) {\r\n oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (db.oldVersion === 4) {\r\n oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); })];\r\n case 3:\r\n db = _a.sent();\r\n db.close();\r\n // Delete all old databases.\r\n return [4 /*yield*/, deleteDb(OLD_DB_NAME)];\r\n case 4:\r\n // Delete all old databases.\r\n _a.sent();\r\n return [4 /*yield*/, deleteDb('fcm_vapid_details_db')];\r\n case 5:\r\n _a.sent();\r\n return [4 /*yield*/, deleteDb('undefined')];\r\n case 6:\r\n _a.sent();\r\n return [2 /*return*/, checkTokenDetails(tokenDetails) ? tokenDetails : null];\r\n }\r\n });\r\n });\r\n}\r\nfunction checkTokenDetails(tokenDetails) {\r\n if (!tokenDetails || !tokenDetails.subscriptionOptions) {\r\n return false;\r\n }\r\n var subscriptionOptions = tokenDetails.subscriptionOptions;\r\n return (typeof tokenDetails.createTime === 'number' &&\r\n tokenDetails.createTime > 0 &&\r\n typeof tokenDetails.token === 'string' &&\r\n tokenDetails.token.length > 0 &&\r\n typeof subscriptionOptions.auth === 'string' &&\r\n subscriptionOptions.auth.length > 0 &&\r\n typeof subscriptionOptions.p256dh === 'string' &&\r\n subscriptionOptions.p256dh.length > 0 &&\r\n typeof subscriptionOptions.endpoint === 'string' &&\r\n subscriptionOptions.endpoint.length > 0 &&\r\n typeof subscriptionOptions.swScope === 'string' &&\r\n subscriptionOptions.swScope.length > 0 &&\r\n typeof subscriptionOptions.vapidKey === 'string' &&\r\n subscriptionOptions.vapidKey.length > 0);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Exported for tests.\r\nvar DATABASE_NAME = 'firebase-messaging-database';\r\nvar DATABASE_VERSION = 1;\r\nvar OBJECT_STORE_NAME = 'firebase-messaging-store';\r\nvar dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, function (upgradeDb) {\r\n // We don't use 'break' in this switch statement, the fall-through behavior is what we want,\r\n // because if there are multiple versions between the old version and the current version, we\r\n // want ALL the migrations that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (upgradeDb.oldVersion) {\r\n case 0:\r\n upgradeDb.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Gets record(s) from the objectStore that match the given key. */\r\nfunction dbGet(firebaseDependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tokenDetails, oldTokenDetails;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n return [4 /*yield*/, db\r\n .transaction(OBJECT_STORE_NAME)\r\n .objectStore(OBJECT_STORE_NAME)\r\n .get(key)];\r\n case 2:\r\n tokenDetails = _a.sent();\r\n if (!tokenDetails) return [3 /*break*/, 3];\r\n return [2 /*return*/, tokenDetails];\r\n case 3: return [4 /*yield*/, migrateOldDatabase(firebaseDependencies.appConfig.senderId)];\r\n case 4:\r\n oldTokenDetails = _a.sent();\r\n if (!oldTokenDetails) return [3 /*break*/, 6];\r\n return [4 /*yield*/, dbSet(firebaseDependencies, oldTokenDetails)];\r\n case 5:\r\n _a.sent();\r\n return [2 /*return*/, oldTokenDetails];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nfunction dbSet(firebaseDependencies, tokenDetails) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/, tokenDetails];\r\n }\r\n });\r\n });\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nfunction dbRemove(firebaseDependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).delete(key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getKey(_a) {\r\n var appConfig = _a.appConfig;\r\n return appConfig.appId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction requestGetToken(firebaseDependencies, subscriptionOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, body, subscribeOptions, responseData, response, err_1, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n body = getBody(subscriptionOptions);\r\n subscribeOptions = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig), subscribeOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_1 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: err_1\r\n });\r\n case 6:\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */);\r\n }\r\n return [2 /*return*/, responseData.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction requestUpdateToken(firebaseDependencies, tokenDetails) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, body, updateOptions, responseData, response, err_2, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n body = getBody(tokenDetails.subscriptionOptions);\r\n updateOptions = {\r\n method: 'PATCH',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig) + \"/\" + tokenDetails.token, updateOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_2 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: err_2\r\n });\r\n case 6:\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */);\r\n }\r\n return [2 /*return*/, responseData.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction requestDeleteToken(firebaseDependencies, token) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, unsubscribeOptions, response, responseData, message, err_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n unsubscribeOptions = {\r\n method: 'DELETE',\r\n headers: headers\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig) + \"/\" + token, unsubscribeOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_3 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: err_3\r\n });\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getEndpoint(_a) {\r\n var projectId = _a.projectId;\r\n return ENDPOINT + \"/projects/\" + projectId + \"/registrations\";\r\n}\r\nfunction getHeaders(_a) {\r\n var appConfig = _a.appConfig, installations = _a.installations;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, installations.getToken()];\r\n case 1:\r\n authToken = _b.sent();\r\n return [2 /*return*/, new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': appConfig.apiKey,\r\n 'x-goog-firebase-installations-auth': \"FIS \" + authToken\r\n })];\r\n }\r\n });\r\n });\r\n}\r\nfunction getBody(_a) {\r\n var p256dh = _a.p256dh, auth = _a.auth, endpoint = _a.endpoint, vapidKey = _a.vapidKey;\r\n var body = {\r\n web: {\r\n endpoint: endpoint,\r\n auth: auth,\r\n p256dh: p256dh\r\n }\r\n };\r\n if (vapidKey !== DEFAULT_VAPID_KEY) {\r\n body.web.applicationPubKey = vapidKey;\r\n }\r\n return body;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** UpdateRegistration will be called once every week. */\r\nvar TOKEN_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\r\nfunction getToken(firebaseDependencies, swRegistration, vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pushSubscription, tokenDetails, subscriptionOptions, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n return [4 /*yield*/, getPushSubscription(swRegistration, vapidKey)];\r\n case 1:\r\n pushSubscription = _a.sent();\r\n return [4 /*yield*/, dbGet(firebaseDependencies)];\r\n case 2:\r\n tokenDetails = _a.sent();\r\n subscriptionOptions = {\r\n vapidKey: vapidKey,\r\n swScope: swRegistration.scope,\r\n endpoint: pushSubscription.endpoint,\r\n auth: arrayToBase64(pushSubscription.getKey('auth')),\r\n p256dh: arrayToBase64(pushSubscription.getKey('p256dh'))\r\n };\r\n if (!!tokenDetails) return [3 /*break*/, 3];\r\n // No token, get a new one.\r\n return [2 /*return*/, getNewToken(firebaseDependencies, subscriptionOptions)];\r\n case 3:\r\n if (!!isTokenValid(tokenDetails.subscriptionOptions, subscriptionOptions)) return [3 /*break*/, 8];\r\n _a.label = 4;\r\n case 4:\r\n _a.trys.push([4, 6, , 7]);\r\n return [4 /*yield*/, requestDeleteToken(firebaseDependencies, tokenDetails.token)];\r\n case 5:\r\n _a.sent();\r\n return [3 /*break*/, 7];\r\n case 6:\r\n e_1 = _a.sent();\r\n // Suppress errors because of #2364\r\n console.warn(e_1);\r\n return [3 /*break*/, 7];\r\n case 7: return [2 /*return*/, getNewToken(firebaseDependencies, subscriptionOptions)];\r\n case 8:\r\n if (Date.now() >= tokenDetails.createTime + TOKEN_EXPIRATION_MS) {\r\n // Weekly token refresh\r\n return [2 /*return*/, updateToken({\r\n token: tokenDetails.token,\r\n createTime: Date.now(),\r\n subscriptionOptions: subscriptionOptions\r\n }, firebaseDependencies, swRegistration)];\r\n }\r\n else {\r\n // Valid token, nothing to do.\r\n return [2 /*return*/, tokenDetails.token];\r\n }\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * This method deletes the token from the database, unsubscribes the token from FCM, and unregisters\r\n * the push subscription if it exists.\r\n */\r\nfunction deleteToken(firebaseDependencies, swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenDetails, pushSubscription;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, dbGet(firebaseDependencies)];\r\n case 1:\r\n tokenDetails = _a.sent();\r\n if (!tokenDetails) return [3 /*break*/, 4];\r\n return [4 /*yield*/, requestDeleteToken(firebaseDependencies, tokenDetails.token)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, dbRemove(firebaseDependencies)];\r\n case 3:\r\n _a.sent();\r\n _a.label = 4;\r\n case 4: return [4 /*yield*/, swRegistration.pushManager.getSubscription()];\r\n case 5:\r\n pushSubscription = _a.sent();\r\n if (pushSubscription) {\r\n return [2 /*return*/, pushSubscription.unsubscribe()];\r\n }\r\n // If there's no SW, consider it a success.\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n}\r\nfunction updateToken(tokenDetails, firebaseDependencies, swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var updatedToken, updatedTokenDetails, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 3, , 5]);\r\n return [4 /*yield*/, requestUpdateToken(firebaseDependencies, tokenDetails)];\r\n case 1:\r\n updatedToken = _a.sent();\r\n updatedTokenDetails = __assign(__assign({}, tokenDetails), { token: updatedToken, createTime: Date.now() });\r\n return [4 /*yield*/, dbSet(firebaseDependencies, updatedTokenDetails)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, updatedToken];\r\n case 3:\r\n e_2 = _a.sent();\r\n return [4 /*yield*/, deleteToken(firebaseDependencies, swRegistration)];\r\n case 4:\r\n _a.sent();\r\n throw e_2;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getNewToken(firebaseDependencies, subscriptionOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token, tokenDetails;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, requestGetToken(firebaseDependencies, subscriptionOptions)];\r\n case 1:\r\n token = _a.sent();\r\n tokenDetails = {\r\n token: token,\r\n createTime: Date.now(),\r\n subscriptionOptions: subscriptionOptions\r\n };\r\n return [4 /*yield*/, dbSet(firebaseDependencies, tokenDetails)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, tokenDetails.token];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Gets a PushSubscription for the current user.\r\n */\r\nfunction getPushSubscription(swRegistration, vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var subscription;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, swRegistration.pushManager.getSubscription()];\r\n case 1:\r\n subscription = _a.sent();\r\n if (subscription) {\r\n return [2 /*return*/, subscription];\r\n }\r\n return [2 /*return*/, swRegistration.pushManager.subscribe({\r\n userVisibleOnly: true,\r\n // Chrome <= 75 doesn't support base64-encoded VAPID key. For backward compatibility, VAPID key\r\n // submitted to pushManager#subscribe must be of type Uint8Array.\r\n applicationServerKey: base64ToArray(vapidKey)\r\n })];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Checks if the saved tokenDetails object matches the configuration provided.\r\n */\r\nfunction isTokenValid(dbOptions, currentOptions) {\r\n var isVapidKeyEqual = currentOptions.vapidKey === dbOptions.vapidKey;\r\n var isEndpointEqual = currentOptions.endpoint === dbOptions.endpoint;\r\n var isAuthEqual = currentOptions.auth === dbOptions.auth;\r\n var isP256dhEqual = currentOptions.p256dh === dbOptions.p256dh;\r\n return isVapidKeyEqual && isEndpointEqual && isAuthEqual && isP256dhEqual;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction externalizePayload(internalPayload) {\r\n var payload = {\r\n from: internalPayload.from,\r\n // eslint-disable-next-line camelcase\r\n collapseKey: internalPayload.collapse_key,\r\n // eslint-disable-next-line camelcase\r\n messageId: internalPayload.fcm_message_id\r\n };\r\n propagateNotificationPayload(payload, internalPayload);\r\n propagateDataPayload(payload, internalPayload);\r\n propagateFcmOptions(payload, internalPayload);\r\n return payload;\r\n}\r\nfunction propagateNotificationPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.notification) {\r\n return;\r\n }\r\n payload.notification = {};\r\n var title = messagePayloadInternal.notification.title;\r\n if (!!title) {\r\n payload.notification.title = title;\r\n }\r\n var body = messagePayloadInternal.notification.body;\r\n if (!!body) {\r\n payload.notification.body = body;\r\n }\r\n var image = messagePayloadInternal.notification.image;\r\n if (!!image) {\r\n payload.notification.image = image;\r\n }\r\n}\r\nfunction propagateDataPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.data) {\r\n return;\r\n }\r\n payload.data = messagePayloadInternal.data;\r\n}\r\nfunction propagateFcmOptions(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.fcmOptions) {\r\n return;\r\n }\r\n payload.fcmOptions = {};\r\n var link = messagePayloadInternal.fcmOptions.link;\r\n if (!!link) {\r\n payload.fcmOptions.link = link;\r\n }\r\n // eslint-disable-next-line camelcase\r\n var analyticsLabel = messagePayloadInternal.fcmOptions.analytics_label;\r\n if (!!analyticsLabel) {\r\n payload.fcmOptions.analyticsLabel = analyticsLabel;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isConsoleMessage(data) {\r\n // This message has a campaign ID, meaning it was sent using the Firebase Console.\r\n return typeof data === 'object' && !!data && CONSOLE_CAMPAIGN_ID in data;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a promise that resolves after given time passes. */\r\nfunction sleep(ms) {\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar SwController = /** @class */ (function () {\r\n function SwController(firebaseDependencies) {\r\n var _this = this;\r\n this.firebaseDependencies = firebaseDependencies;\r\n // A boolean flag to determine wether an app is using onBackgroundMessage or\r\n // setBackgroundMessageHandler. onBackgroundMessage will receive a MessagePayload regardless of if\r\n // a notification is displayed. Whereas, setBackgroundMessageHandler will swallow the\r\n // MessagePayload if a NotificationPayload is included.\r\n this.isOnBackgroundMessageUsed = null;\r\n this.vapidKey = null;\r\n this.bgMessageHandler = null;\r\n self.addEventListener('push', function (e) {\r\n e.waitUntil(_this.onPush(e));\r\n });\r\n self.addEventListener('pushsubscriptionchange', function (e) {\r\n e.waitUntil(_this.onSubChange(e));\r\n });\r\n self.addEventListener('notificationclick', function (e) {\r\n e.waitUntil(_this.onNotificationClick(e));\r\n });\r\n }\r\n Object.defineProperty(SwController.prototype, \"app\", {\r\n get: function () {\r\n return this.firebaseDependencies.app;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * @deprecated. Use onBackgroundMessage(nextOrObserver: NextFn | Observer):\r\n * Unsubscribe instead.\r\n *\r\n * Calling setBackgroundMessageHandler will opt in to some specific behaviors.\r\n *\r\n * 1.) If a notification doesn't need to be shown due to a window already being visible, then push\r\n * messages will be sent to the page. 2.) If a notification needs to be shown, and the message\r\n * contains no notification data this method will be called and the promise it returns will be\r\n * passed to event.waitUntil. If you do not set this callback then all push messages will let and\r\n * the developer can handle them in a their own 'push' event callback\r\n *\r\n * @param callback The callback to be called when a push message is received and a notification\r\n * must be shown. The callback will be given the data from the push message.\r\n */\r\n SwController.prototype.setBackgroundMessageHandler = function (callback) {\r\n this.isOnBackgroundMessageUsed = false;\r\n if (!callback || typeof callback !== 'function') {\r\n throw ERROR_FACTORY.create(\"invalid-bg-handler\" /* INVALID_BG_HANDLER */);\r\n }\r\n this.bgMessageHandler = callback;\r\n };\r\n SwController.prototype.onBackgroundMessage = function (nextOrObserver) {\r\n var _this = this;\r\n this.isOnBackgroundMessageUsed = true;\r\n this.bgMessageHandler = nextOrObserver;\r\n return function () {\r\n _this.bgMessageHandler = null;\r\n };\r\n };\r\n // TODO: Remove getToken from SW Controller. Calling this from an old SW can cause all kinds of\r\n // trouble.\r\n SwController.prototype.getToken = function () {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenDetails;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n if (!!this.vapidKey) return [3 /*break*/, 2];\r\n return [4 /*yield*/, dbGet(this.firebaseDependencies)];\r\n case 1:\r\n tokenDetails = _c.sent();\r\n this.vapidKey =\r\n (_b = (_a = tokenDetails === null || tokenDetails === void 0 ? void 0 : tokenDetails.subscriptionOptions) === null || _a === void 0 ? void 0 : _a.vapidKey) !== null && _b !== void 0 ? _b : DEFAULT_VAPID_KEY;\r\n _c.label = 2;\r\n case 2: return [2 /*return*/, getToken(this.firebaseDependencies, self.registration, this.vapidKey)];\r\n }\r\n });\r\n });\r\n };\r\n // TODO: Remove deleteToken from SW Controller. Calling this from an old SW can cause all kinds of\r\n // trouble.\r\n SwController.prototype.deleteToken = function () {\r\n return deleteToken(this.firebaseDependencies, self.registration);\r\n };\r\n SwController.prototype.requestPermission = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n // TODO: Remove this together with getToken from SW Controller.\r\n SwController.prototype.usePublicVapidKey = function (vapidKey) {\r\n if (this.vapidKey !== null) {\r\n throw ERROR_FACTORY.create(\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */);\r\n }\r\n if (typeof vapidKey !== 'string' || vapidKey.length === 0) {\r\n throw ERROR_FACTORY.create(\"invalid-vapid-key\" /* INVALID_VAPID_KEY */);\r\n }\r\n this.vapidKey = vapidKey;\r\n };\r\n SwController.prototype.useServiceWorker = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n SwController.prototype.onMessage = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n SwController.prototype.onTokenRefresh = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n /**\r\n * A handler for push events that shows notifications based on the content of the payload.\r\n *\r\n * The payload must be a JSON-encoded Object with a `notification` key. The value of the\r\n * `notification` property will be used as the NotificationOptions object passed to\r\n * showNotification. Additionally, the `title` property of the notification object will be used as\r\n * the title.\r\n *\r\n * If there is no notification data in the payload then no notification will be shown.\r\n */\r\n SwController.prototype.onPush = function (event) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, clientList, isNotificationShown, payload;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n internalPayload = getMessagePayloadInternal(event);\r\n if (!internalPayload) {\r\n console.debug(TAG +\r\n 'failed to get parsed MessagePayload from the PushEvent. Skip handling the push.');\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, getClientList()];\r\n case 1:\r\n clientList = _a.sent();\r\n if (hasVisibleClients(clientList)) {\r\n return [2 /*return*/, sendMessagePayloadInternalToWindows(clientList, internalPayload)];\r\n }\r\n isNotificationShown = false;\r\n if (!!!internalPayload.notification) return [3 /*break*/, 3];\r\n return [4 /*yield*/, showNotification(wrapInternalPayload(internalPayload))];\r\n case 2:\r\n _a.sent();\r\n isNotificationShown = true;\r\n _a.label = 3;\r\n case 3:\r\n // MessagePayload is only passed to `onBackgroundMessage`. Skip passing MessagePayload for\r\n // the legacy `setBackgroundMessageHandler` to preserve the SDK behaviors.\r\n if (isNotificationShown === true &&\r\n this.isOnBackgroundMessageUsed === false) {\r\n return [2 /*return*/];\r\n }\r\n if (!!this.bgMessageHandler) {\r\n payload = externalizePayload(internalPayload);\r\n if (typeof this.bgMessageHandler === 'function') {\r\n this.bgMessageHandler(payload);\r\n }\r\n else {\r\n this.bgMessageHandler.next(payload);\r\n }\r\n }\r\n // wait briefly to allow onBackgroundMessage to complete\r\n return [4 /*yield*/, sleep(BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS)];\r\n case 4:\r\n // wait briefly to allow onBackgroundMessage to complete\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n SwController.prototype.onSubChange = function (event) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newSubscription, tokenDetails;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n newSubscription = event.newSubscription;\r\n if (!!newSubscription) return [3 /*break*/, 2];\r\n // Subscription revoked, delete token\r\n return [4 /*yield*/, deleteToken(this.firebaseDependencies, self.registration)];\r\n case 1:\r\n // Subscription revoked, delete token\r\n _c.sent();\r\n return [2 /*return*/];\r\n case 2: return [4 /*yield*/, dbGet(this.firebaseDependencies)];\r\n case 3:\r\n tokenDetails = _c.sent();\r\n return [4 /*yield*/, deleteToken(this.firebaseDependencies, self.registration)];\r\n case 4:\r\n _c.sent();\r\n return [4 /*yield*/, getToken(this.firebaseDependencies, self.registration, (_b = (_a = tokenDetails === null || tokenDetails === void 0 ? void 0 : tokenDetails.subscriptionOptions) === null || _a === void 0 ? void 0 : _a.vapidKey) !== null && _b !== void 0 ? _b : DEFAULT_VAPID_KEY)];\r\n case 5:\r\n _c.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n SwController.prototype.onNotificationClick = function (event) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, link, url, originUrl, client;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n internalPayload = (_b = (_a = event.notification) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b[FCM_MSG];\r\n if (!internalPayload) {\r\n return [2 /*return*/];\r\n }\r\n else if (event.action) {\r\n // User clicked on an action button. This will allow developers to act on action button clicks\r\n // by using a custom onNotificationClick listener that they define.\r\n return [2 /*return*/];\r\n }\r\n // Prevent other listeners from receiving the event\r\n event.stopImmediatePropagation();\r\n event.notification.close();\r\n link = getLink(internalPayload);\r\n if (!link) {\r\n return [2 /*return*/];\r\n }\r\n url = new URL(link, self.location.href);\r\n originUrl = new URL(self.location.origin);\r\n if (url.host !== originUrl.host) {\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, getWindowClient(url)];\r\n case 1:\r\n client = _c.sent();\r\n if (!!client) return [3 /*break*/, 4];\r\n return [4 /*yield*/, self.clients.openWindow(link)];\r\n case 2:\r\n client = _c.sent();\r\n // Wait three seconds for the client to initialize and set up the message handler so that it\r\n // can receive the message.\r\n return [4 /*yield*/, sleep(FOREGROUND_HANDLE_PREPARATION_TIME_MS)];\r\n case 3:\r\n // Wait three seconds for the client to initialize and set up the message handler so that it\r\n // can receive the message.\r\n _c.sent();\r\n return [3 /*break*/, 6];\r\n case 4: return [4 /*yield*/, client.focus()];\r\n case 5:\r\n client = _c.sent();\r\n _c.label = 6;\r\n case 6:\r\n if (!client) {\r\n // Window Client will not be returned if it's for a third party origin.\r\n return [2 /*return*/];\r\n }\r\n internalPayload.messageType = MessageType.NOTIFICATION_CLICKED;\r\n internalPayload.isFirebaseMessaging = true;\r\n return [2 /*return*/, client.postMessage(internalPayload)];\r\n }\r\n });\r\n });\r\n };\r\n return SwController;\r\n}());\r\nfunction wrapInternalPayload(internalPayload) {\r\n var _a;\r\n var wrappedInternalPayload = __assign({}, internalPayload.notification);\r\n // Put the message payload under FCM_MSG name so we can identify the notification as being an FCM\r\n // notification vs a notification from somewhere else (i.e. normal web push or developer generated\r\n // notification).\r\n wrappedInternalPayload.data = (_a = {},\r\n _a[FCM_MSG] = internalPayload,\r\n _a);\r\n return wrappedInternalPayload;\r\n}\r\nfunction getMessagePayloadInternal(_a) {\r\n var data = _a.data;\r\n if (!data) {\r\n return null;\r\n }\r\n try {\r\n return data.json();\r\n }\r\n catch (err) {\r\n // Not JSON so not an FCM message.\r\n return null;\r\n }\r\n}\r\n/**\r\n * @param url The URL to look for when focusing a client.\r\n * @return Returns an existing window client or a newly opened WindowClient.\r\n */\r\nfunction getWindowClient(url) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientList, clientList_1, clientList_1_1, client, clientUrl;\r\n var e_1, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, getClientList()];\r\n case 1:\r\n clientList = _b.sent();\r\n try {\r\n for (clientList_1 = __values(clientList), clientList_1_1 = clientList_1.next(); !clientList_1_1.done; clientList_1_1 = clientList_1.next()) {\r\n client = clientList_1_1.value;\r\n clientUrl = new URL(client.url, self.location.href);\r\n if (url.host === clientUrl.host) {\r\n return [2 /*return*/, client];\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (clientList_1_1 && !clientList_1_1.done && (_a = clientList_1.return)) _a.call(clientList_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * @returns If there is currently a visible WindowClient, this method will resolve to true,\r\n * otherwise false.\r\n */\r\nfunction hasVisibleClients(clientList) {\r\n return clientList.some(function (client) {\r\n return client.visibilityState === 'visible' &&\r\n // Ignore chrome-extension clients as that matches the background pages of extensions, which\r\n // are always considered visible for some reason.\r\n !client.url.startsWith('chrome-extension://');\r\n });\r\n}\r\nfunction sendMessagePayloadInternalToWindows(clientList, internalPayload) {\r\n var e_2, _a;\r\n internalPayload.isFirebaseMessaging = true;\r\n internalPayload.messageType = MessageType.PUSH_RECEIVED;\r\n try {\r\n for (var clientList_2 = __values(clientList), clientList_2_1 = clientList_2.next(); !clientList_2_1.done; clientList_2_1 = clientList_2.next()) {\r\n var client = clientList_2_1.value;\r\n client.postMessage(internalPayload);\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (clientList_2_1 && !clientList_2_1.done && (_a = clientList_2.return)) _a.call(clientList_2);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n}\r\nfunction getClientList() {\r\n return self.clients.matchAll({\r\n type: 'window',\r\n includeUncontrolled: true\r\n // TS doesn't know that \"type: 'window'\" means it'll return WindowClient[]\r\n });\r\n}\r\nfunction showNotification(notificationPayloadInternal) {\r\n var _a;\r\n // Note: Firefox does not support the maxActions property.\r\n // https://developer.mozilla.org/en-US/docs/Web/API/notification/maxActions\r\n var actions = notificationPayloadInternal.actions;\r\n var maxActions = Notification.maxActions;\r\n if (actions && maxActions && actions.length > maxActions) {\r\n console.warn(\"This browser only supports \" + maxActions + \" actions. The remaining actions will not be displayed.\");\r\n }\r\n return self.registration.showNotification(\r\n /* title= */ (_a = notificationPayloadInternal.title) !== null && _a !== void 0 ? _a : '', notificationPayloadInternal);\r\n}\r\nfunction getLink(payload) {\r\n var _a, _b, _c;\r\n // eslint-disable-next-line camelcase\r\n var link = (_b = (_a = payload.fcmOptions) === null || _a === void 0 ? void 0 : _a.link) !== null && _b !== void 0 ? _b : (_c = payload.notification) === null || _c === void 0 ? void 0 : _c.click_action;\r\n if (link) {\r\n return link;\r\n }\r\n if (isConsoleMessage(payload.data)) {\r\n // Notification created in the Firebase Console. Redirect to origin.\r\n return self.location.origin;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar WindowController = /** @class */ (function () {\r\n function WindowController(firebaseDependencies) {\r\n var _this = this;\r\n this.firebaseDependencies = firebaseDependencies;\r\n this.vapidKey = null;\r\n this.onMessageCallback = null;\r\n navigator.serviceWorker.addEventListener('message', function (e) {\r\n return _this.messageEventListener(e);\r\n });\r\n }\r\n Object.defineProperty(WindowController.prototype, \"app\", {\r\n get: function () {\r\n return this.firebaseDependencies.app;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WindowController.prototype.messageEventListener = function (event) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, dataPayload;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n internalPayload = event.data;\r\n if (!internalPayload.isFirebaseMessaging) {\r\n return [2 /*return*/];\r\n }\r\n // onMessageCallback is either a function or observer/subscriber.\r\n // TODO: in the modularization release, have onMessage handle type MessagePayload as supposed to\r\n // the legacy payload where some fields are in snake cases.\r\n if (this.onMessageCallback &&\r\n internalPayload.messageType === MessageType.PUSH_RECEIVED) {\r\n if (typeof this.onMessageCallback === 'function') {\r\n this.onMessageCallback(stripInternalFields(Object.assign({}, internalPayload)));\r\n }\r\n else {\r\n this.onMessageCallback.next(Object.assign({}, internalPayload));\r\n }\r\n }\r\n dataPayload = internalPayload.data;\r\n if (!(isConsoleMessage(dataPayload) &&\r\n dataPayload[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1')) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.logEvent(internalPayload.messageType, dataPayload)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.getVapidKey = function () {\r\n return this.vapidKey;\r\n };\r\n WindowController.prototype.getSwReg = function () {\r\n return this.swRegistration;\r\n };\r\n WindowController.prototype.getToken = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(Notification.permission === 'default')) return [3 /*break*/, 2];\r\n return [4 /*yield*/, Notification.requestPermission()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n return [4 /*yield*/, this.updateVapidKey(options === null || options === void 0 ? void 0 : options.vapidKey)];\r\n case 3:\r\n _a.sent();\r\n return [4 /*yield*/, this.updateSwReg(options === null || options === void 0 ? void 0 : options.serviceWorkerRegistration)];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/, getToken(this.firebaseDependencies, this.swRegistration, this.vapidKey)];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.updateVapidKey = function (vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!!vapidKey) {\r\n this.vapidKey = vapidKey;\r\n }\r\n else if (!this.vapidKey) {\r\n this.vapidKey = DEFAULT_VAPID_KEY;\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n WindowController.prototype.updateSwReg = function (swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(!swRegistration && !this.swRegistration)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.registerDefaultSw()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (!swRegistration && !!this.swRegistration) {\r\n return [2 /*return*/];\r\n }\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */);\r\n }\r\n this.swRegistration = swRegistration;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.registerDefaultSw = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, e_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, 2, , 3]);\r\n _a = this;\r\n return [4 /*yield*/, navigator.serviceWorker.register(DEFAULT_SW_PATH, {\r\n scope: DEFAULT_SW_SCOPE\r\n })];\r\n case 1:\r\n _a.swRegistration = _b.sent();\r\n // The timing when browser updates sw when sw has an update is unreliable by my experiment. It\r\n // leads to version conflict when the SDK upgrades to a newer version in the main page, but sw\r\n // is stuck with the old version. For example,\r\n // https://github.com/firebase/firebase-js-sdk/issues/2590 The following line reliably updates\r\n // sw if there was an update.\r\n this.swRegistration.update().catch(function () {\r\n /* it is non blocking and we don't care if it failed */\r\n });\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_1 = _b.sent();\r\n throw ERROR_FACTORY.create(\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */, {\r\n browserErrorMessage: e_1.message\r\n });\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.deleteToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!this.swRegistration) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.registerDefaultSw()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, deleteToken(this.firebaseDependencies, this.swRegistration)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Request permission if it is not currently granted.\r\n *\r\n * @return Resolves if the permission was granted, rejects otherwise.\r\n *\r\n * @deprecated Use Notification.requestPermission() instead.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Notification/requestPermission\r\n */\r\n WindowController.prototype.requestPermission = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var permissionResult;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (Notification.permission === 'granted') {\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, Notification.requestPermission()];\r\n case 1:\r\n permissionResult = _a.sent();\r\n if (permissionResult === 'granted') {\r\n return [2 /*return*/];\r\n }\r\n else if (permissionResult === 'denied') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"permission-default\" /* PERMISSION_DEFAULT */);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @deprecated. Use getToken(options?: {vapidKey?: string; serviceWorkerRegistration?:\r\n * ServiceWorkerRegistration;}): Promise instead.\r\n */\r\n WindowController.prototype.usePublicVapidKey = function (vapidKey) {\r\n if (this.vapidKey !== null) {\r\n throw ERROR_FACTORY.create(\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */);\r\n }\r\n if (typeof vapidKey !== 'string' || vapidKey.length === 0) {\r\n throw ERROR_FACTORY.create(\"invalid-vapid-key\" /* INVALID_VAPID_KEY */);\r\n }\r\n this.vapidKey = vapidKey;\r\n };\r\n /**\r\n * @deprecated. Use getToken(options?: {vapidKey?: string; serviceWorkerRegistration?:\r\n * ServiceWorkerRegistration;}): Promise instead.\r\n */\r\n WindowController.prototype.useServiceWorker = function (swRegistration) {\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */);\r\n }\r\n if (this.swRegistration) {\r\n throw ERROR_FACTORY.create(\"use-sw-after-get-token\" /* USE_SW_AFTER_GET_TOKEN */);\r\n }\r\n this.swRegistration = swRegistration;\r\n };\r\n /**\r\n * @param nextOrObserver An observer object or a function triggered on message.\r\n *\r\n * @return The unsubscribe function for the observer.\r\n */\r\n WindowController.prototype.onMessage = function (nextOrObserver) {\r\n var _this = this;\r\n this.onMessageCallback = nextOrObserver;\r\n return function () {\r\n _this.onMessageCallback = null;\r\n };\r\n };\r\n WindowController.prototype.setBackgroundMessageHandler = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-sw\" /* AVAILABLE_IN_SW */);\r\n };\r\n WindowController.prototype.onBackgroundMessage = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-sw\" /* AVAILABLE_IN_SW */);\r\n };\r\n /**\r\n * @deprecated No-op. It was initially designed with token rotation requests from server in mind.\r\n * However, the plan to implement such feature was abandoned.\r\n */\r\n WindowController.prototype.onTokenRefresh = function () {\r\n return function () { };\r\n };\r\n WindowController.prototype.logEvent = function (messageType, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var eventType, analytics;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n eventType = getEventType(messageType);\r\n return [4 /*yield*/, this.firebaseDependencies.analyticsProvider.get()];\r\n case 1:\r\n analytics = _a.sent();\r\n analytics.logEvent(eventType, {\r\n /* eslint-disable camelcase */\r\n message_id: data[CONSOLE_CAMPAIGN_ID],\r\n message_name: data[CONSOLE_CAMPAIGN_NAME],\r\n message_time: data[CONSOLE_CAMPAIGN_TIME],\r\n message_device_time: Math.floor(Date.now() / 1000)\r\n /* eslint-enable camelcase */\r\n });\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return WindowController;\r\n}());\r\nfunction getEventType(messageType) {\r\n switch (messageType) {\r\n case MessageType.NOTIFICATION_CLICKED:\r\n return 'notification_open';\r\n case MessageType.PUSH_RECEIVED:\r\n return 'notification_foreground';\r\n default:\r\n throw new Error();\r\n }\r\n}\r\nfunction stripInternalFields(internalPayload) {\r\n delete internalPayload.messageType;\r\n delete internalPayload.isFirebaseMessaging;\r\n return internalPayload;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n var e_1, _a;\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration Object');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n var configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId',\r\n 'messagingSenderId'\r\n ];\r\n var options = app.options;\r\n try {\r\n for (var configKeys_1 = __values(configKeys), configKeys_1_1 = configKeys_1.next(); !configKeys_1_1.done; configKeys_1_1 = configKeys_1.next()) {\r\n var keyName = configKeys_1_1.value;\r\n if (!options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (configKeys_1_1 && !configKeys_1_1.done && (_a = configKeys_1.return)) _a.call(configKeys_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: options.projectId,\r\n apiKey: options.apiKey,\r\n appId: options.appId,\r\n senderId: options.messagingSenderId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName: valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar MESSAGING_NAME = 'messaging';\r\nfunction factoryMethod(container) {\r\n // Dependencies.\r\n var app = container.getProvider('app').getImmediate();\r\n var appConfig = extractAppConfig(app);\r\n var installations = container.getProvider('installations').getImmediate();\r\n var analyticsProvider = container.getProvider('analytics-internal');\r\n var firebaseDependencies = {\r\n app: app,\r\n appConfig: appConfig,\r\n installations: installations,\r\n analyticsProvider: analyticsProvider\r\n };\r\n if (!isSupported()) {\r\n throw ERROR_FACTORY.create(\"unsupported-browser\" /* UNSUPPORTED_BROWSER */);\r\n }\r\n if (self && 'ServiceWorkerGlobalScope' in self) {\r\n // Running in ServiceWorker context\r\n return new SwController(firebaseDependencies);\r\n }\r\n else {\r\n // Assume we are in the window context.\r\n return new WindowController(firebaseDependencies);\r\n }\r\n}\r\nvar NAMESPACE_EXPORTS = {\r\n isSupported: isSupported\r\n};\r\nfirebase.INTERNAL.registerComponent(new Component(MESSAGING_NAME, factoryMethod, \"PUBLIC\" /* PUBLIC */).setServiceProps(NAMESPACE_EXPORTS));\r\nfunction isSupported() {\r\n if (self && 'ServiceWorkerGlobalScope' in self) {\r\n // Running in ServiceWorker context\r\n return isSWControllerSupported();\r\n }\r\n else {\r\n // Assume we are in the window context.\r\n return isWindowControllerSupported();\r\n }\r\n}\r\n/**\r\n * Checks to see if the required APIs exist.\r\n */\r\nfunction isWindowControllerSupported() {\r\n return ('indexedDB' in window &&\r\n indexedDB !== null &&\r\n navigator.cookieEnabled &&\r\n 'serviceWorker' in navigator &&\r\n 'PushManager' in window &&\r\n 'Notification' in window &&\r\n 'fetch' in window &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\r\n/**\r\n * Checks to see if the required APIs exist within SW Context.\r\n */\r\nfunction isSWControllerSupported() {\r\n return ('indexedDB' in self &&\r\n indexedDB !== null &&\r\n 'PushManager' in self &&\r\n 'Notification' in self &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\n","export const HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport const defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: (err) => typeof console !== \"undefined\" && console.warn(err),\n getWeek: (givenDate) => {\n const date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export const english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: (nth) => {\n const s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export const pad = (number, length = 2) => `000${number}`.slice(length * -1);\nexport const int = (bool) => (bool === true ? 1 : 0);\nexport function debounce(fn, wait) {\n let t;\n return function () {\n clearTimeout(t);\n t = setTimeout(() => fn.apply(this, arguments), wait);\n };\n}\nexport const arrayify = (obj) => obj instanceof Array ? obj : [obj];\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n const e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n const wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (const key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n const path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nconst doNothing = () => undefined;\nexport const monthToStr = (monthNumber, shorthand, locale) => locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\nexport const revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n H: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n J: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n K: (dateObj, amPM, locale) => {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: (_, unixSeconds) => new Date(parseFloat(unixSeconds) * 1000),\n W: function (dateObj, weekNum, locale) {\n const weekNumber = parseInt(weekNum);\n const date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: (dateObj, year) => {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: (_, ISODate) => new Date(ISODate),\n d: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n h: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n i: (dateObj, minutes) => {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: (_, unixMillSeconds) => new Date(parseFloat(unixMillSeconds)),\n w: doNothing,\n y: (dateObj, year) => {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport const tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport const formats = {\n Z: (date) => date.toISOString(),\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: (date) => pad(date.getHours()),\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: (date, locale) => locale.amPM[int(date.getHours() > 11)],\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: (date) => pad(date.getSeconds()),\n U: (date) => date.getTime() / 1000,\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: (date) => pad(date.getFullYear(), 4),\n d: (date) => pad(date.getDate()),\n h: (date) => (date.getHours() % 12 ? date.getHours() % 12 : 12),\n i: (date) => pad(date.getMinutes()),\n j: (date) => date.getDate(),\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: (date) => pad(date.getMonth() + 1),\n n: (date) => date.getMonth() + 1,\n s: (date) => date.getSeconds(),\n u: (date) => date.getTime(),\n w: (date) => date.getDay(),\n y: (date) => String(date.getFullYear()).substring(2),\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport const createDateFormatter = ({ config = defaults, l10n = english, isMobile = false, }) => (dateObj, frmt, overrideLocale) => {\n const locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map((c, i, arr) => formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\")\n .join(\"\");\n};\nexport const createDateParser = ({ config = defaults, l10n = english }) => (date, givenFormat, timeless, customLocale) => {\n if (date !== 0 && !date)\n return undefined;\n const locale = customLocale || l10n;\n let parsedDate;\n const dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n const format = givenFormat || (config || defaults).dateFormat;\n const datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr))\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n let matched, ops = [];\n for (let i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n const token = format[i];\n const isBackSlash = token === \"\\\\\";\n const escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n const match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n ops.forEach(({ fn, val }) => (parsedDate = fn(parsedDate, val, locale) || parsedDate));\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(`Invalid date provided: ${dateOrig}`));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n};\nexport function compareDates(date1, date2, timeless = true) {\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport const isBetween = (ts, ts1, ts2) => {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport const duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n let hours = config.defaultHour;\n let minutes = config.defaultMinute;\n let seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n const minHour = config.minDate.getHours();\n const minMinutes = config.minDate.getMinutes();\n const minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n const maxHr = config.maxDate.getHours();\n const maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours, minutes, seconds };\n}\n","import { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nconst DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n const self = {\n config: Object.assign(Object.assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth(month = self.currentMonth, yr = self.currentYear) {\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n const config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n const daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n const defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n const defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n const prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n let hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n const limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n const limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n const maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n const minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n const date = dateObj || self.latestSelectedDateObj;\n if (date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n const eventTarget = getEventTarget(event);\n const year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach((ev) => bind(element, ev, handler, options));\n if (element instanceof Array)\n return element.forEach((el) => bind(el, event, handler, options));\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: () => element.removeEventListener(event, handler),\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach((evt) => {\n Array.prototype.forEach.call(self.element.querySelectorAll(`[data-${evt}]`), (el) => bind(el, \"click\", self[evt]));\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n const debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", (e) => {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n const selText = (e) => getEventTarget(e).select();\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", () => self.secondElement && self.secondElement.select());\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", (e) => {\n updateTime(e);\n triggerChange();\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n const jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n const oldYear = self.currentYear;\n const oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n const eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n const target = e && getEventTarget(e);\n const input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n const event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n const fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n const { weekWrapper, weekNumbers } = buildWeeks();\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n const customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n const wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n const dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n const startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n for (let m = startMonth; m != endMonth; m += delta) {\n const month = self.daysContainer.children[m];\n const startIndex = delta > 0 ? 0 : month.children.length - 1;\n const endIndex = delta > 0 ? month.children.length : -1;\n for (let i = startIndex; i != endIndex; i += delta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n const givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n const loopDelta = delta > 0 ? 1 : -1;\n for (let m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n const month = self.daysContainer.children[m];\n const startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n const numMonthDays = month.children.length;\n for (let i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n const dayFocused = isInView(document.activeElement || document.body);\n const startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n const firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n const prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n const daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n let dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (let dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n const dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n const frag = document.createDocumentFragment();\n for (let i = 0; i < self.config.showMonths; i++) {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n const shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (let i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n const month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n const container = createElement(\"div\", \"flatpickr-month\");\n const monthNavFragment = window.document.createDocumentFragment();\n let monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", (e) => {\n const target = getEventTarget(e);\n const selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n const yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n const yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n const currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container,\n yearElement,\n monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (let m = self.config.showMonths; m--;) {\n const month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: () => self.__hidePrevMonthArrow,\n set(bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: () => self.__hideNextMonthArrow,\n set(bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n const defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n const separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n const hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n const minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n const secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (let i = self.config.showMonths; i--;) {\n const container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n const firstDayOfWeek = self.l10n.firstDayOfWeek;\n let weekdays = [...self.l10n.weekdays.shorthand];\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = [\n ...weekdays.splice(firstDayOfWeek, weekdays.length),\n ...weekdays.splice(0, firstDayOfWeek),\n ];\n }\n for (let i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = `\n \n ${weekdays.join(\"\")}\n \n `;\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n const weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n const weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper,\n weekNumbers,\n };\n }\n function changeMonth(value, isOffset = true) {\n const delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent = true, toInitial = true) {\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n const { hours, minutes, seconds } = getDefaultHours(self.config);\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (let i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n const wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach((k) => {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n const eventTarget = getEventTarget(e);\n const isCalendarElement = isCalendarElem(eventTarget);\n const isInput = eventTarget === self.input ||\n eventTarget === self.altInput ||\n self.element.contains(eventTarget) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n const lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n const isIgnored = !self.config.ignoredFocusElements.some((elem) => elem.contains(eventTarget));\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n const newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless = true) {\n var _a;\n const dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n const bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (let i = 0, d; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n const parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n const isInput = e.target === self._input;\n if (isInput &&\n (self.selectedDates.length > 0 || self._input.value.length > 0) &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n const eventTarget = getEventTarget(e);\n const isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n const allowInput = self.config.allowInput;\n const allowKeydown = self.isOpen && (!allowInput || !isInput);\n const allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n const isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n const delta = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta);\n else {\n e.stopPropagation();\n changeMonth(delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n const delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n const elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter((x) => x);\n const i = elems.indexOf(eventTarget);\n if (i !== -1) {\n const target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n const hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n let containsDisabled = false;\n let minRange = 0, maxRange = 0;\n for (let t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (let m = 0; m < self.config.showMonths; m++) {\n const month = self.daysContainer.children[m];\n for (let i = 0, l = month.children.length; i < l; i++) {\n const dayElem = month.children[i], date = dayElem.dateObj;\n const timestamp = date.getTime();\n const outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n continue;\n }\n else if (containsDisabled && !outOfRange)\n continue;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement = self._positionElement) {\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n const eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n const wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(() => self.hourElement.select(), 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return (date) => {\n const dateObj = (self.config[`_${type}Date`] = self.parseDate(date, self.config.dateFormat));\n const inverseDateObj = self.config[`_${type === \"min\" ? \"max\" : \"min\"}Date`];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter((d) => isEnabled(d));\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n const boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n const userConfig = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n const formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: () => self.config._enable,\n set: (dates) => {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: () => self.config._disable,\n set: (dates) => {\n self.config._disable = parseDateRules(dates);\n },\n });\n const timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n const defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n const defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + ` h:i${userConfig.enableSeconds ? \":S\" : \"\"} K`;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: () => self.config._minDate,\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: () => self.config._maxDate,\n set: minMaxDateSetter(\"max\"),\n });\n const minMaxTimeSetter = (type) => (val) => {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n };\n Object.defineProperty(self.config, \"minTime\", {\n get: () => self.config._minTime,\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: () => self.config._maxTime,\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (let i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter((hook) => self.config[hook] !== undefined).forEach((hook) => {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (let i = 0; i < self.config.plugins.length; i++) {\n const pluginConf = self.config.plugins[i](self) || {};\n for (const key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(`flatpickr: invalid locale ${self.config.locale}`));\n self.l10n = Object.assign(Object.assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = `(${self.l10n.amPM[0]}|${self.l10n.amPM[1]}|${self.l10n.amPM[0].toLowerCase()}|${self.l10n.amPM[1].toLowerCase()})`;\n const userConfig = Object.assign(Object.assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n const positionElement = customPositionElement || self._positionElement;\n const calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, ((acc, child) => acc + child.offsetHeight), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n const top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n let left = window.pageXOffset + inputBounds.left;\n let isCenter = false;\n let isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n const right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n const rightMost = left + calendarWidth > window.document.body.offsetWidth;\n const centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = `${top}px`;\n if (!rightMost) {\n self.calendarContainer.style.left = `${left}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = `${right}px`;\n }\n else {\n const doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n const bodyWidth = window.document.body.offsetWidth;\n const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n const centerBefore = \".flatpickr-calendar.centerMost:before\";\n const centerAfter = \".flatpickr-calendar.centerMost:after\";\n const centerIndex = doc.cssRules.length;\n const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);\n self.calendarContainer.style.left = `${centerLeft}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n let editableSheet = null;\n for (let i = 0; i < document.styleSheets.length; i++) {\n const sheet = document.styleSheets[i];\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n const isSelectable = (day) => day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n const t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n const target = t;\n const selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n const shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n const selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n const isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n const single = self.config.mode === \"single\" && !self.config.enableTime;\n const range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n const CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n clickOpens: [\n () => {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (const key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach((x) => x());\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach((x) => x());\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n let dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map((d) => self.parseDate(d, format));\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map((date) => self.parseDate(date, format));\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map((date) => self.parseDate(date, format));\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(inputDate)}`));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter((d) => d instanceof Date && isEnabled(d, false)));\n if (self.config.mode === \"range\")\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n function setDate(date, triggerChange = false, format = self.config.dateFormat) {\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map((rule) => {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter((x) => x);\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n const preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n const inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", (e) => {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n const hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (let i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n const e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (let i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach((yearElement, i) => {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map((dObj) => self.formatDate(dObj, format))\n .filter((d, i, arr) => self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i)\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange = true) {\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n const eventTarget = getEventTarget(e);\n const isPrevMonth = self.prevMonthNav.contains(eventTarget);\n const isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n const isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n const min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n let newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n const isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n const nodes = Array.prototype.slice\n .call(nodeList)\n .filter((x) => x instanceof HTMLElement);\n const instances = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: Object.assign({}, English),\n default: Object.assign({}, English),\n};\nflatpickr.localize = (l10n) => {\n flatpickr.l10ns.default = Object.assign(Object.assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = (config) => {\n flatpickr.defaultConfig = Object.assign(Object.assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target, ...args) {\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n for (const source of args) {\n if (source) {\n Object.keys(source).forEach((key) => (target[key] = source[key]));\n }\n }\n return target;\n };\n}\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.libphonenumber = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i=e}},\"es6\",\"es3\");\n$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e=f}},\"es6\",\"es3\");\n$jscomp.polyfill(\"String.prototype.repeat\",function(a){return a?a:function(b){var c=$jscomp.checkStringArgs(this,null,\"repeat\");if(0>b||1342177279>>=1)c+=c;return d}},\"es6\",\"es3\");$jscomp.initSymbol=function(){};\n$jscomp.polyfill(\"Symbol\",function(a){if(a)return a;var b=function(e,f){this.$jscomp$symbol$id_=e;$jscomp.defineProperty(this,\"description\",{configurable:!0,writable:!0,value:f})};b.prototype.toString=function(){return this.$jscomp$symbol$id_};var c=0,d=function(e){if(this instanceof d)throw new TypeError(\"Symbol is not a constructor\");return new b(\"jscomp_symbol_\"+(e||\"\")+\"_\"+c++,e)};return d},\"es6\",\"es3\");\n$jscomp.polyfill(\"Symbol.iterator\",function(a){if(a)return a;a=Symbol(\"Symbol.iterator\");for(var b=\"Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array\".split(\" \"),c=0;cc&&(c=Math.max(c+e,0));c>>0);\ngoog.uidCounter_=0;goog.cloneObject=function(a){var b=goog.typeOf(a);if(\"object\"==b||\"array\"==b){if(\"function\"===typeof a.clone)return a.clone();b=\"array\"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2\").replace(/'/g,\"'\").replace(/"/g,'\"').replace(/&/g,\"&\"));b&&(a=a.replace(/\\{\\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};\ngoog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,!0,c)};goog.exportProperty=function(a,b,c){a[b]=c};goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h{\"use strict\";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()')});\na(\"es7\",function(){return b(\"2 ** 2 == 4\")});a(\"es8\",function(){return b(\"async () => 1, true\")});a(\"es9\",function(){return b(\"({...rest} = {}), true\")});a(\"es_next\",function(){return!1});return{target:c,map:d}},goog.Transpiler.prototype.needsTranspile=function(a,b){if(\"always\"==goog.TRANSPILE)return!0;if(\"never\"==goog.TRANSPILE)return!1;if(!this.requiresTranspilation_){var c=this.createRequiresTranspilation_();this.requiresTranspilation_=c.map;this.transpilationTarget_=this.transpilationTarget_||\nc.target}if(a in this.requiresTranspilation_)return this.requiresTranspilation_[a]?!0:!goog.inHtmlDocument_()||\"es6\"!=b||\"noModule\"in goog.global.document.createElement(\"script\")?!1:!0;throw Error(\"Unknown language mode: \"+a);},goog.Transpiler.prototype.transpile=function(a,b){return goog.transpile_(a,b,this.transpilationTarget_)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(a){return a.replace(/<\\/(SCRIPT)/ig,\"\\\\x3c/$1\")},goog.DebugLoader_=function(){this.dependencies_={};\nthis.idToPath_={};this.written_={};this.loadingDeps_=[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory(goog.transpiler_);this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e\\x3c/script>';f+=\"\";f=goog.Dependency.defer_?f+(\"document.getElementById('script-\"+e+\"').onload = function() {\\n goog.Dependency.callback_('\"+e+\"', this);\\n};\\n\"):f+(\"goog.Dependency.callback_('\"+e+\"', document.getElementById('script-\"+e+\"'));\");f+=\"\\x3c/script>\";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(f):f)}else{var g=b.createElement(\"script\");g.defer=goog.Dependency.defer_;\ng.async=!1;c&&(g.nonce=c);goog.DebugLoader_.IS_OLD_IE_?(a.pause(),g.onreadystatechange=function(){if(\"loaded\"==g.readyState||\"complete\"==g.readyState)a.loaded(),a.resume()}):g.onload=function(){g.onload=null;a.loaded()};g.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(g)}}else goog.logToConsole_(\"Cannot use default debug loader outside of HTML documents.\"),\"deps.js\"==this.relativePath?(goog.logToConsole_(\"Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true.\"),\na.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(l,p){var m=\"\",n=goog.getScriptNonce();n&&(m=' nonce=\"'+n+'\"');l=p?'\n * ```\n */\nvar Splitter = /** @__PURE__ @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n var isPaneContentChanged = paneCounts.some(function (count) {\n return !isNullOrUndefined(newProp.paneSettings[count].content);\n });\n if (this.isReact && isPaneContentChanged) {\n var cPaneCount = 0;\n for (var k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n var hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[\"\" + property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[\"\" + property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n if (newProp.paneSettings[index].collapsed) {\n this.isCollapsed(index);\n }\n else {\n this.collapsedOnchange(index);\n }\n break;\n case 'cssClass':\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[\"\" + property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.clearTemplate();\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n if (rtl) {\n addClass([this.element], RTL);\n }\n else {\n removeClass([this.element], RTL);\n }\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n if (this.orientation === 'Horizontal') {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width);\n }\n else {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n }\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n if (enabled) {\n removeClass([this.element], DISABLED);\n }\n else {\n addClass([this.element], DISABLED);\n }\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n if (this.orientation === 'Horizontal') {\n resizeHanlder.style.width = sizeValue;\n }\n else {\n resizeHanlder.style.height = sizeValue;\n }\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n if (this.paneSettings[index].collapsible) {\n removeClass([arrow2], [HIDE_ICON]);\n }\n else {\n addClass([arrow2], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n arrow1.setAttribute('aria-label', 'Toggle navigation');\n arrow2.setAttribute('aria-label', 'Toggle navigation');\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n var proxy = this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '-1');\n separator.setAttribute('aria-hidden', 'true');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n if (this.isResizable()) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-valuenow', i.toString());\n if (!isNullOrUndefined(this.orientation)) {\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n }\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.addEventListener('mouseenter', function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n separator.addEventListener('mouseleave', function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', function () {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n });\n });\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n if (this.allPanes[i].style.flexBasis === '') {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) :\n parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, true);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x && pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (draggedPos > nextPaneRange - pane2MinSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n else if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n EventHandler.remove(this.element, 'keydown', this.onMove);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n var separators = this.element.querySelectorAll('.e-split-bar');\n if (separators.length > 0) {\n for (var i = 0; i < separators.length; i++) {\n EventHandler.remove(separators[i], 'touchstart', this.clickHandler);\n EventHandler.remove(separators[i], 'touchstart', this.onMouseDown);\n EventHandler.remove(separators[i], 'click', this.clickHandler);\n EventHandler.remove(separators[i], 'mousedown', this.onMouseDown);\n separators[i].parentNode.removeChild(separators[i]); // Use parentNode for broader compatibility\n }\n }\n var panes = this.element.querySelectorAll('.e-pane');\n if (panes.length > 0) {\n for (var i = 0; i < panes.length; i++) {\n panes[i].classList.remove(SPLIT_H_PANE, SPLIT_V_PANE, STATIC_PANE, SCROLL_PANE, PANE, RESIZABLE_PANE, HIDE_HANDLER, COLLAPSIBLE, EXPAND_PANE, PANE_HIDDEN);\n while (panes[i].attributes.length > 0) {\n panes[i].removeAttribute(panes[i].attributes[0].name);\n }\n }\n }\n this.allBars = [];\n this.allBars = null;\n this.allPanes = [];\n this.allPanes = null;\n this.previousPane = null;\n this.nextPane = null;\n this.currentSeparator = null;\n this.wrapper = null;\n this.prevBar = null;\n this.nextBar = null;\n this.templateElement = null;\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n if (this.orientation === 'Horizontal') {\n addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n }\n else {\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n }\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @__PURE__ @class */ (function (_super) {\n __extends$1(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate$1([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate$1([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate$1([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate$1([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate$1([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate$1([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate$1([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate$1([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate$1([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate$1([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate$1([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate$1([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar DashboardLayout = /** @__PURE__ @class */ (function (_super) {\n __extends$1(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n _this.eventVar = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.element.setAttribute('role', 'list');\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n this.table.setAttribute('role', 'presentation');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col ||\n this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n if (!isNullOrUndefined(this.cellSpacing)) {\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n }\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (this.element.querySelector('[id=\\'' + id + '\\']')) {\n var row = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-row'), 10);\n var col = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n cellElement.setAttribute('role', 'listitem');\n if (this.allowDragging) {\n cellElement.setAttribute('aria-grabbed', 'false');\n }\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyleAttribute(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n this.oldRowCol[model.id] = { row: model.row, col: model.col };\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n var el = closest((e.currentTarget), '.e-panel');\n for (var i = 0; this.panels.length > i; i++) {\n if (this.panels[i].enabled && this.panels[i].id === el.id) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n }\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.checkCollision = [];\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n if (!isNullOrUndefined(this.panelCollection)) {\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n }\n this.resizeEvents();\n if (!isNullOrUndefined(this.panelCollection)) {\n this.checkDragging(this.dragCollection);\n }\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n var updatedHeight = void 0;\n if (panelElement) {\n setStyleAttribute(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 10);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n if (!isNullOrUndefined(this.panelCollection)) {\n this.setClasses(this.panelCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n if (!isNullOrUndefined(this.dragCollection)) {\n this.checkDragging(this.dragCollection);\n }\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n if (isNullOrUndefined(this.cellSpacing)) {\n return;\n }\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyleAttribute(this.element, { 'height': heightValue });\n var widthValue = window.getComputedStyle(this.element).width;\n setStyleAttribute(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyleAttribute(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyleAttribute(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyleAttribute(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col ||\n this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) &&\n items.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) {\n items.push(this.element.querySelector('[id=\\'' + item.id + '\\']'));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = this.element.querySelector('[id=\\'' + this.panels[i].id + '\\']');\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] &&\n this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n var _this = this;\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n collisionModels.forEach(function (item1) {\n if (_this.overlapElement.indexOf(item1) === -1) {\n _this.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[\"\" + key].row, this.overlapElement, this.collisionChecker[\"\" + key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var _this = this;\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n var rowVal = parseInt(this.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this.collisions(rowVal, colValue_1, sizeX, sizeY, this.overlapSubElementClone);\n if (this.mainElement && collisionModels1.indexOf(this.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this.mainElement), 1);\n }\n collisionModels1.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this.updateRowColumn(rowVal, this.overlapElement, this.overlapSubElementClone[p]);\n }\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector('.e-resize')) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: !isNullOrUndefined(panelModel.sizeX) ? panelModel.sizeX.toString() : undefined,\n sizeY: !isNullOrUndefined(panelModel.sizeY) ? panelModel.sizeY.toString() : undefined,\n minSizeX: !isNullOrUndefined(panelModel.minSizeX) ? panelModel.minSizeX.toString() : undefined,\n minSizeY: !isNullOrUndefined(panelModel.minSizeY) ? panelModel.minSizeY.toString() : undefined,\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: !isNullOrUndefined(panelModel.row) ? panelModel.row.toString() : undefined,\n col: !isNullOrUndefined(panelModel.col) ? panelModel.col.toString() : undefined\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row ||\n this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n var _loop_5 = function (i) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this_3.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this_3.element,\n isDragScroll: true,\n handle: this_3.draggableHandle ? this_3.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this_3.onDraggingStart.bind(this_3),\n dragStop: function (args) {\n _this.trigger('dragStop', args);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n }\n else {\n var currentPanel = _this.getCellInstance(_this.mainElement.id);\n for (i = 0; i < _this.panels.length; i++) {\n if (_this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', _this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', _this.panelsInitialModel[i].row.toString());\n currentPanel.col = _this.panelsInitialModel[i].col;\n currentPanel.row = _this.panelsInitialModel[i].row;\n _this.setPanelPosition(_this.mainElement, _this.panelsInitialModel[i].row, _this.panelsInitialModel[i].col);\n _this.updatePanelLayout(_this.mainElement, currentPanel);\n }\n }\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n }\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this_3.dragCollection.indexOf(this_3.dragobj) === -1) {\n this_3.dragCollection.push(this_3.dragobj);\n }\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < collections.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n dragobj.setDragArea();\n });\n };\n /**\n * Method to update the draggable handle when draggable panel elements are bound dynamically.\n *\n * @returns void\n *\n */\n DashboardLayout.prototype.refreshDraggableHandle = function () {\n if (this.dragCollection && this.dragCollection.length > 0) {\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n EventHandler.clearEvents(this.dragCollection[i].element);\n }\n this.ensureDrag();\n }\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function () {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n this.shadowEle.classList.add('e-holder-transition');\n setStyleAttribute(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n this.shadowEle.style.height = (this.getCellInstance(args.element.id).sizeY * this.cellSize[1]) + 'px';\n this.shadowEle.style.width = (this.getCellInstance(args.element.id).sizeX * this.cellSize[0]) + 'px';\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][\"\" + k] = source[i][\"\" + k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n if (!this.eventVar) {\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= 0 || panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n var cellSizeOne = this.getCellSize()[1];\n var cellSizeZero = this.getCellSize()[0];\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n this.elementRef.height = this.shadowEle.style.height = ((sizeY * cellSizeOne) + ((sizeY - 1) * this.cellSpacing[1])) + 'px';\n this.elementRef.width = this.shadowEle.style.width = ((sizeX * cellSizeZero) + ((sizeX - 1) * this.cellSpacing[0])) + 'px';\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.addPanelCalled = false;\n this.updatePanelLayout(cell, panelProp);\n }\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyleAttribute(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n this.panelCollection = null;\n this.checkCollision = null;\n this.mainElement = null;\n this.dragobj = null;\n this.dragStartArgs = null;\n this.dragStopEventArgs = null;\n this.draggedEventArgs = null;\n this.sortedArray = null;\n this.cloneArray = null;\n this.overlapElement = null;\n this.overlapElementClone = null;\n this.dragCollection = [];\n this.allItems = null;\n this.moveTarget = null;\n this.upTarget = null;\n this.downTarget = null;\n this.checkingElement = null;\n this.panelHeaderElement = null;\n this.panelContent = null;\n this.panelBody = null;\n this.table = null;\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.onPropertyChanged = function (newProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\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 this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n this.mergePanels(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_6 = function (i) {\n this_4.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate$1([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate$1([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate$1([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate$1([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$1([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate$1([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate$1([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate$1([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate$1([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate$1([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate$1([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate$1([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate$1([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate$1([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate$1([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ITEMLISTCONTAINER = 'e-timeline-items';\nvar ITEMCONTAINER = 'e-timeline-item';\nvar OPPOSITECONTENT = 'e-opposite-content';\nvar DOTCONTAINER = 'e-dot-item';\nvar DOTCONTENT = 'e-dot';\nvar CONTENT = 'e-content';\nvar ITEMCONNECTOR = 'e-connector';\nvar VERTICAL = 'e-vertical';\nvar HORIZONTAL = 'e-horizontal';\nvar TIMELINEREVERSE = 'e-timeline-reverse';\nvar RTL$1 = 'e-rtl';\nvar DISABLED$1 = 'e-item-disabled';\nvar TEMPLATE = 'e-item-template';\n/**\n * Defines the orientation type of the Timeline.\n */\nvar TimelineOrientation;\n(function (TimelineOrientation) {\n /**\n * Items are displayed horizontally.\n */\n TimelineOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Items are displayed vertically.\n */\n TimelineOrientation[\"Vertical\"] = \"Vertical\";\n})(TimelineOrientation || (TimelineOrientation = {}));\n/**\n * Specifies the alignment of item content within the Timeline.\n */\nvar TimelineAlign;\n(function (TimelineAlign) {\n /**\n * Aligns item content to the top and opposite content to the bottom when the Timeline is in a horizontal orientation, or the content to the left and opposite content to the right when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"Before\"] = \"Before\";\n /**\n * Aligns item content to the bottom and opposite content to the top when the Timeline is in a horizontal orientation, or the content to the right and opposite content to the left when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"After\"] = \"After\";\n /**\n * Aligns item content alternatively, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"Alternate\"] = \"Alternate\";\n /**\n * Aligns item content in alternate reverse, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"AlternateReverse\"] = \"AlternateReverse\";\n})(TimelineAlign || (TimelineAlign = {}));\n/**\n * Specifies the items of the Timeline.\n */\nvar TimelineItem = /** @__PURE__ @class */ (function (_super) {\n __extends$2(TimelineItem, _super);\n function TimelineItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('')\n ], TimelineItem.prototype, \"dotCss\", void 0);\n __decorate$2([\n Property('')\n ], TimelineItem.prototype, \"content\", void 0);\n __decorate$2([\n Property('')\n ], TimelineItem.prototype, \"oppositeContent\", void 0);\n __decorate$2([\n Property(false)\n ], TimelineItem.prototype, \"disabled\", void 0);\n __decorate$2([\n Property('')\n ], TimelineItem.prototype, \"cssClass\", void 0);\n return TimelineItem;\n}(ChildProperty));\n/**\n * The Timeline component presents a series of events or activities in chronological order, allowing users to track the progression of time.\n *\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Timeline = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Timeline, _super);\n /**\n * * Constructor for creating the Timeline component.\n *\n * @param {TimelineModel} options - Specifies the Timeline model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Timeline(options, element) {\n return _super.call(this, options, element) || this;\n }\n Timeline.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Timeline.prototype.getModuleName = function () {\n return 'timeline';\n };\n /**\n * This method is abstract member of the Component.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n Timeline.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Timeline.prototype.render = function () {\n attributes(this.element, { 'role': 'navigation', 'aria-label': this.element.id });\n this.timelineListEle = this.createElement('ol', { className: ITEMLISTCONTAINER });\n this.updateOrientation();\n this.updateCssClass(this.cssClass);\n this.updateAlign();\n this.updateReverse();\n this.updateRtl();\n this.updateTemplateFunction();\n this.renderItems();\n this.element.appendChild(this.timelineListEle);\n };\n Timeline.prototype.updateOrientation = function () {\n if (!(isNullOrUndefined(this.orientation))) {\n var orientation_1 = this.orientation.toLowerCase();\n if (orientation_1 === 'horizontal' || orientation_1 === 'vertical') {\n this.element.classList.remove(HORIZONTAL, VERTICAL);\n this.element.classList.add('e-' + orientation_1);\n }\n }\n };\n Timeline.prototype.updateCssClass = function (addCss, removeCss) {\n if (removeCss === void 0) { removeCss = ''; }\n var _a, _b;\n var cssClasses;\n if (removeCss) {\n cssClasses = removeCss.trim().split(' ');\n (_a = this.element.classList).remove.apply(_a, cssClasses);\n }\n if (addCss) {\n cssClasses = addCss.trim().split(' ');\n (_b = this.element.classList).add.apply(_b, cssClasses);\n }\n };\n Timeline.prototype.updateRtl = function () {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL$1);\n };\n Timeline.prototype.updateAlign = function () {\n if (!(isNullOrUndefined(this.align))) {\n var align = this.align.toLowerCase();\n if (align === 'before' || align === 'after' || align === 'alternate' || align === 'alternatereverse') {\n this.element.classList.remove('e-align-before', 'e-align-after', 'e-align-alternate', 'e-align-alternatereverse');\n this.element.classList.add('e-align-' + align);\n }\n }\n };\n Timeline.prototype.updateReverse = function () {\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n };\n Timeline.prototype.renderItems = function () {\n var _this = this;\n var _a;\n this.haveOneSidecontent();\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n var timelineItem = this.createElement('li', { className: ITEMCONTAINER + ' ' + ITEMCONNECTOR });\n if (!this.template) {\n var oppositeTextEle = this.createElement('div', { className: OPPOSITECONTENT });\n if (item.oppositeContent) {\n this.updateItemContent(false, item, index, oppositeTextEle);\n }\n timelineItem.appendChild(oppositeTextEle);\n var dotContainer = this.createElement('div', { className: DOTCONTAINER });\n var dotEleCss = item.dotCss ? DOTCONTENT + ' ' + item.dotCss.trim() : DOTCONTENT;\n var dotEle = this.createElement('div', { className: dotEleCss });\n dotContainer.appendChild(dotEle);\n timelineItem.appendChild(dotContainer);\n var contentEle = this.createElement('div', { className: CONTENT });\n if (item.content) {\n this.updateItemContent(true, item, index, contentEle);\n }\n timelineItem.appendChild(contentEle);\n if (item.cssClass) {\n (_a = timelineItem.classList).add.apply(_a, item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n timelineItem.classList.add(DISABLED$1);\n }\n }\n else {\n this.renderItemContent(index, false, timelineItem);\n }\n var eventArgs = { element: timelineItem, index: index };\n this.trigger('beforeItemRender', eventArgs, function (args) { _this.timelineListEle.appendChild(args.element); });\n }\n };\n Timeline.prototype.haveOneSidecontent = function () {\n var haveContent = false;\n var haveOppContent = false;\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n if (!haveContent) {\n (haveContent = item.content.length > 0 || !isNullOrUndefined(item.content));\n }\n if (!haveOppContent) {\n (haveOppContent = item.oppositeContent.length > 0 || !isNullOrUndefined(item.content));\n }\n }\n this.element.classList.remove('e-content-only', 'e-opposite-content-only');\n if (haveContent && !haveOppContent) {\n this.element.classList.add('e-content-only');\n }\n if (haveOppContent && !haveContent) {\n this.element.classList.add('e-opposite-content-only');\n }\n };\n Timeline.prototype.updateItemContent = function (isContent, item, index, contentEle) {\n var notCompile = !(this.isReact || this.isVue);\n var ctn = this.getTemplateFunction(isContent ? item.content : item.oppositeContent, notCompile);\n if (typeof ctn === 'string') {\n contentEle.innerText = ctn;\n }\n else {\n append(ctn({ item: item, itemIndex: index }, this), contentEle);\n }\n };\n Timeline.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template, false) : null;\n };\n Timeline.prototype.renderItemContent = function (index, isrerender, timelineItem) {\n var listItems = this.timelineListEle.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt((index).toString(), 10)]);\n }\n if (this.template) {\n if (isrerender) {\n listItems[parseInt((index).toString(), 10)].classList.add(TEMPLATE);\n }\n else {\n timelineItem.classList.add(TEMPLATE);\n }\n var item = this.items[parseInt(index.toString(), 10)];\n append(this.templateFunction({ item: item, itemIndex: index }, this, 'timelineTemplate', (this.element.id + '_timelineTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : timelineItem);\n }\n this.renderReactTemplates();\n };\n Timeline.prototype.removeItemContent = function (ele) {\n ele.classList.remove(TEMPLATE);\n var firstChild = ele.firstElementChild;\n for (var i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @param {boolean} notCompile - Compile property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Timeline.prototype.getTemplateFunction = function (template, notCompile) {\n if (notCompile === void 0) { notCompile = true; }\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n notCompile = false;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return notCompile ? content : compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Timeline.prototype.removeItemElements = function () {\n var listItems = this.timelineListEle.querySelectorAll('li');\n for (var i = 0; i < listItems.length; i++) {\n remove(listItems[parseInt(i.toString(), 10)]);\n }\n };\n Timeline.prototype.updateElementClassArray = function () {\n var classArray = [RTL$1, 'e-align-before', 'e-align-after', 'e-outline', 'e-fill', 'e-align-alternate',\n 'e-align-alternatereverse', TIMELINEREVERSE, HORIZONTAL, VERTICAL];\n removeClass([this.element], classArray);\n };\n Timeline.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['timelineTemplate']);\n }\n for (var i = 0; i < this.items.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n Timeline.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.element.removeAttribute('role');\n this.element.removeAttribute('aria-label');\n this.clearTemplate();\n if (this.timelineListEle) {\n remove(this.timelineListEle);\n }\n this.timelineListEle = null;\n this.updateElementClassArray();\n };\n Timeline.prototype.updateItems = function (newProp, oldPropItems, index, item) {\n var _a, _b, _c, _d;\n var timelineItemElements = this.timelineListEle.querySelectorAll('li');\n var dotEle;\n var contentEle;\n var oppositeEle;\n switch (newProp) {\n case 'dotCss':\n dotEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + DOTCONTENT);\n if (oldPropItems.dotCss !== '') {\n (_a = dotEle.classList).remove.apply(_a, oldPropItems.dotCss.trim().split(' '));\n }\n if (item.dotCss !== '') {\n (_b = dotEle.classList).add.apply(_b, this.items[parseInt(index.toString(), 10)].dotCss.trim().split(' '));\n }\n break;\n case 'content':\n contentEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + CONTENT);\n contentEle.innerText = '';\n this.updateItemContent(true, item, index, contentEle);\n this.haveOneSidecontent();\n break;\n case 'oppositeContent':\n oppositeEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + OPPOSITECONTENT);\n oppositeEle.innerText = '';\n this.updateItemContent(false, item, index, oppositeEle);\n this.haveOneSidecontent();\n break;\n case 'disabled':\n timelineItemElements[parseInt(index.toString(), 10)].classList[this.items[parseInt(index.toString(), 10)].disabled ? 'add' : 'remove'](DISABLED$1);\n break;\n case 'cssClass':\n if (oldPropItems.cssClass !== '') {\n (_c = timelineItemElements[parseInt(index.toString(), 10)].classList).remove.apply(_c, oldPropItems.cssClass.trim().split(' '));\n }\n if (item.cssClass !== '') {\n (_d = timelineItemElements[parseInt(index.toString(), 10)].classList).add.apply(_d, item.cssClass.trim().split(' '));\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimelineModel} newProp - Specifies new properties\n * @param {TimelineModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Timeline.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 'items':\n if (Array.isArray(newProp.items)) {\n this.removeItemElements();\n this.renderItems();\n }\n else {\n var itemLength = Object.keys(newProp.items).length;\n for (var i = 0; i < itemLength; i++) {\n var itemPropLength = parseInt(Object.keys(newProp.items)[i], 10);\n for (var j = 0; j < Object.keys(newProp.items[itemPropLength]).length; j++) {\n var property = Object.keys(newProp.items[itemPropLength])[j];\n this.updateItems(property, oldProp.items[itemPropLength], itemPropLength, newProp.items[itemPropLength]);\n }\n }\n }\n break;\n case 'orientation':\n this.updateOrientation();\n break;\n case 'align':\n this.updateAlign();\n break;\n case 'enableRtl':\n this.updateRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'reverse':\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n }\n }\n };\n __decorate$2([\n Property(TimelineOrientation.Vertical)\n ], Timeline.prototype, \"orientation\", void 0);\n __decorate$2([\n Property(TimelineAlign.After)\n ], Timeline.prototype, \"align\", void 0);\n __decorate$2([\n Collection([], TimelineItem)\n ], Timeline.prototype, \"items\", void 0);\n __decorate$2([\n Property('')\n ], Timeline.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property(false)\n ], Timeline.prototype, \"reverse\", void 0);\n __decorate$2([\n Property('')\n ], Timeline.prototype, \"template\", void 0);\n __decorate$2([\n Event()\n ], Timeline.prototype, \"created\", void 0);\n __decorate$2([\n Event()\n ], Timeline.prototype, \"beforeItemRender\", void 0);\n Timeline = __decorate$2([\n NotifyPropertyChanges\n ], Timeline);\n return Timeline;\n}(Component));\n\nexport { DashboardLayout, PaneProperties, Panel, Splitter, Timeline, TimelineAlign, TimelineItem, TimelineOrientation };\n","import { getValue, attributes, setValue, deleteObject, detach, getUniqueID, addClass, rippleEffect, Observer, isBlazor, SanitizeHtmlHelper, EventHandler, removeClass, isRippleEnabled, Property, Event, NotifyPropertyChanges, Component, closest, isNullOrUndefined, getInstance, compile, append, select, ChildProperty, KeyboardEvents, remove, selectAll, formatUnit, animationMode, extend, Complex, Collection, Animation } from '@syncfusion/ej2-base';\n\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 */\nfunction 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 element.classList.add(role);\n element.classList.remove(role);\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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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/**\n * Represents the event arguments for a \"beforeChange\" event.\n *\n * This object contains details about an action that is about to occur, allowing you to intercept and cancel the action before it's finalized.\n */\nvar BeforeChangeEventArgs = /** @__PURE__ @class */ (function () {\n function BeforeChangeEventArgs() {\n }\n return BeforeChangeEventArgs;\n}());\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * Defines the icon position of button.\n */\nvar 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 = {}));\nvar 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 = /** @__PURE__ @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));\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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', 'tabindex', 'aria-label', 'required'];\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$1(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 _this.type = 'checkbox';\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize, isInterAction) {\n var wrapper = this.getWrapper();\n var rippleSpan = null;\n var frameSpan = null;\n if (wrapper) {\n frameSpan = wrapper.getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = wrapper.getElementsByClassName(RIPPLE)[0];\n }\n }\n if (state === 'check') {\n if (frameSpan) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize && isInterAction) {\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 this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize && isInterAction) {\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 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 this.changeState(this.checked ? 'check' : 'uncheck');\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL' ||\n closest(event.target, '.e-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', false, true);\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck', false, true);\n this.checked = false;\n }\n else {\n this.changeState('check', false, true);\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.htmlAttributes.id ? this.htmlAttributes.id : 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 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.innerHTML = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : 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 if (label) {\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(label, 'mouseleave', this.labelMouseLeaveHandler);\n }\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$1([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate$1([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate$1([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate$1([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate$1([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate$1([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate$1([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate$1([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate$1([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate$1([\n Property(true)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$1([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate$1([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar LABEL$1 = 'e-label';\nvar RIPPLE$1 = 'e-ripple-container';\nvar RTL$1 = 'e-rtl';\nvar WRAPPER$1 = '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 = /** @__PURE__ @class */ (function (_super) {\n __extends$2(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 _this.type = 'radio';\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$1)) {\n wrapper = this.createElement('div', { className: WRAPPER$1 });\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$1) });\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$1);\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$1)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE$1)[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$1)[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$1);\n }\n else {\n label.classList.remove(RTL$1);\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 // eslint-disable-next-line no-case-declarations\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$1, '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 RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL$1)[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$1, 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$1)[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$2([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate$2([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate$2([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate$2([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate$2([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate$2([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate$2([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate$2([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate$2([\n Property(true)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$2([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate$2([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DISABLED$1 = 'e-switch-disabled';\nvar RIPPLE$2 = 'e-ripple-container';\nvar RIPPLE_CHECK = 'e-ripple-check';\nvar RTL$2 = 'e-rtl';\nvar WRAPPER$2 = 'e-switch-wrapper';\nvar ACTIVE = 'e-switch-active';\nvar ATTRIBUTES$1 = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'aria-label', 'id', 'role', 'tabindex'];\n/**\n * The Switch is a graphical user interface element that allows you to toggle between checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar Switch = /** @__PURE__ @class */ (function (_super) {\n __extends$3(Switch, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n *\n * @param {SwitchModel} options switch model\n * @param {string | HTMLInputElement} element target element\n *\n */\n function Switch(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isDrag = false;\n _this.isWireEvents = false;\n return _this;\n }\n Switch.prototype.changeState = function (state) {\n var rippleSpan = null;\n var wrapper = this.getWrapper();\n var bar = wrapper.querySelector('.e-switch-inner');\n var handle = wrapper.querySelector('.e-switch-handle');\n if (isRippleEnabled) {\n rippleSpan = wrapper.getElementsByClassName(RIPPLE$2)[0];\n }\n if (state) {\n addClass([bar, handle], ACTIVE);\n this.element.checked = true;\n this.checked = true;\n if (rippleSpan) {\n addClass([rippleSpan], [RIPPLE_CHECK]);\n }\n }\n else {\n removeClass([bar, handle], ACTIVE);\n this.element.checked = false;\n this.checked = false;\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLE_CHECK]);\n }\n }\n };\n Switch.prototype.clickHandler = function (evt) {\n this.isDrag = false;\n this.focusOutHandler();\n var beforeChangeEventArgs = { event: evt, cancel: false, checked: this.element.checked };\n this.trigger('beforeChange', beforeChangeEventArgs);\n if (!beforeChangeEventArgs.cancel) {\n this.changeState(!beforeChangeEventArgs.checked);\n this.element.focus();\n var changeEventArgs = { checked: this.element.checked, event: evt };\n this.trigger('change', changeEventArgs);\n }\n };\n /**\n * Destroys the Switch widget.\n *\n * @returns {void}\n */\n Switch.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n destroy(this, this.getWrapper(), this.tagName);\n if (this.refreshing) {\n ['e-control', 'e-switch', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n };\n Switch.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n Switch.prototype.focusOutHandler = function () {\n this.getWrapper().classList.remove('e-focus');\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Switch.prototype.getModuleName = function () {\n return 'switch';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist data\n */\n Switch.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n Switch.prototype.getWrapper = function () {\n if (this.element.parentElement) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n Switch.prototype.initialize = function () {\n this.element.setAttribute('role', 'switch');\n if (isNullOrUndefined(this.initialSwitchCheckedValue)) {\n this.initialSwitchCheckedValue = 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 }\n if (this.checked) {\n this.changeState(true);\n }\n if (this.disabled) {\n this.setDisabled();\n }\n if (this.onLabel || this.offLabel) {\n this.setLabel(this.onLabel, this.offLabel);\n }\n };\n Switch.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER$2)) {\n wrapper = this.createElement('div', {\n className: WRAPPER$2\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var switchInner = this.createElement('span', { className: 'e-switch-inner' });\n var onLabel = this.createElement('span', { className: 'e-switch-on' });\n var offLabel = this.createElement('span', { className: 'e-switch-off' });\n var handle = this.createElement('span', { className: 'e-switch-handle' });\n wrapper.appendChild(this.element);\n setHiddenInput(this, wrapper);\n switchInner.appendChild(onLabel);\n switchInner.appendChild(offLabel);\n wrapper.appendChild(switchInner);\n wrapper.appendChild(handle);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE$2 });\n handle.appendChild(rippleSpan);\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL$2);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {SwitchModel} newProp - Specifies New Properties\n * @param {SwitchModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n Switch.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.changeState(newProp.checked);\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n this.isWireEvents = false;\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED$1);\n wrapper.setAttribute('aria-disabled', 'false');\n if (!this.isWireEvents) {\n this.wireEvents();\n this.isWireEvents = true;\n }\n }\n break;\n case 'value':\n this.element.setAttribute('value', newProp.value);\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'onLabel':\n case 'offLabel':\n this.setLabel(newProp.onLabel, newProp.offLabel);\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL$2);\n }\n else {\n wrapper.classList.remove(RTL$2);\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 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n Switch.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n preRender(this, 'EJS-SWITCH', WRAPPER$2, element, this.getModuleName());\n };\n /**\n * Initialize control rendering.\n *\n * @private\n * @returns {void}\n */\n Switch.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n this.renderComplete();\n this.updateHtmlAttribute();\n };\n Switch.prototype.rippleHandler = function (e) {\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE$2)[0];\n rippleMouseHandler(e, rippleSpan);\n if (e.type === 'mousedown' && e.currentTarget.classList.contains('e-switch-wrapper') && e.which === 1) {\n this.isDrag = true;\n this.isFocused = false;\n }\n };\n Switch.prototype.mouseLeaveHandler = function (e) {\n var rippleSpan = this.element.parentElement.getElementsByClassName(RIPPLE$2)[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 Switch.prototype.rippleTouchHandler = function (eventType) {\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE$2)[0];\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(eventType, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n };\n Switch.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED$1);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n Switch.prototype.setLabel = function (onText, offText) {\n var wrapper = this.getWrapper();\n if (onText) {\n wrapper.querySelector('.e-switch-on').textContent = onText;\n }\n if (offText) {\n wrapper.querySelector('.e-switch-off').textContent = offText;\n }\n };\n Switch.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.getWrapper();\n if (ATTRIBUTES$1.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 wrapper.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 Switch.prototype.switchFocusHandler = function (e) {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n if (e && e.type === 'keyup' && e.code === 'Space' && this.isAngular) {\n this.clickHandler(e);\n e.stopPropagation();\n e.preventDefault();\n }\n };\n Switch.prototype.switchMouseUp = function (e) {\n var aTouchY = 0;\n var yDiff = 0;\n var aTouchX = 0;\n var xDiff = 0;\n var target = e.target;\n if (e.type === 'touchmove') {\n e.preventDefault();\n aTouchX = e.changedTouches[0].clientX;\n aTouchY = e.changedTouches[0].clientY;\n xDiff = this.bTouchX - aTouchX;\n yDiff = this.bTouchY - aTouchY;\n if (Math.abs(xDiff) < Math.abs(yDiff)) {\n this.isDrag = false;\n this.rippleTouchHandler('mouseup');\n }\n else {\n this.isDrag = true;\n }\n }\n if (e.type === 'touchstart') {\n this.bTouchX = e.changedTouches[0].clientX;\n this.bTouchY = e.changedTouches[0].clientY;\n this.isDrag = true;\n this.rippleTouchHandler('mousedown');\n }\n if (this.isDrag) {\n if ((e.type === 'mouseup' && target.className.indexOf('e-switch') < 0) || e.type === 'touchend') {\n xDiff = this.bTouchX - e.changedTouches[0].clientX;\n yDiff = this.bTouchY - e.changedTouches[0].clientY;\n if (Math.abs(xDiff) >= Math.abs(yDiff)) {\n this.clickHandler(e);\n this.rippleTouchHandler('mouseup');\n e.preventDefault();\n }\n }\n }\n };\n Switch.prototype.formResetHandler = function () {\n this.checked = this.initialSwitchCheckedValue;\n this.element.checked = this.initialSwitchCheckedValue;\n };\n /**\n * Toggle the Switch component state into checked/unchecked.\n *\n * @returns {void}\n */\n Switch.prototype.toggle = function () {\n this.clickHandler();\n };\n Switch.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n this.delegateMouseUpHandler = this.switchMouseUp.bind(this);\n this.delegateKeyUpHandler = this.switchFocusHandler.bind(this);\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'mouseup', this.delegateMouseUpHandler, this);\n EventHandler.add(this.element, 'keyup', this.delegateKeyUpHandler, this);\n EventHandler.add(wrapper, 'mousedown mouseup', this.rippleHandler, this);\n EventHandler.add(wrapper, 'mouseleave', this.mouseLeaveHandler, this);\n EventHandler.add(wrapper, 'touchstart touchmove touchend', this.switchMouseUp, this);\n };\n Switch.prototype.unWireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'mouseup', this.delegateMouseUpHandler);\n EventHandler.remove(this.element, 'keyup', this.delegateKeyUpHandler);\n EventHandler.remove(wrapper, 'mousedown mouseup', this.rippleHandler);\n EventHandler.remove(wrapper, 'mouseleave', this.mouseLeaveHandler);\n EventHandler.remove(wrapper, 'touchstart touchmove touchend', this.switchMouseUp);\n };\n /**\n * Click the switch element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Switch.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Switch\n * its native method\n *\n * @public\n */\n Switch.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate$3([\n Event()\n ], Switch.prototype, \"beforeChange\", void 0);\n __decorate$3([\n Event()\n ], Switch.prototype, \"change\", void 0);\n __decorate$3([\n Event()\n ], Switch.prototype, \"created\", void 0);\n __decorate$3([\n Property(false)\n ], Switch.prototype, \"checked\", void 0);\n __decorate$3([\n Property('')\n ], Switch.prototype, \"cssClass\", void 0);\n __decorate$3([\n Property(false)\n ], Switch.prototype, \"disabled\", void 0);\n __decorate$3([\n Property('')\n ], Switch.prototype, \"name\", void 0);\n __decorate$3([\n Property('')\n ], Switch.prototype, \"onLabel\", void 0);\n __decorate$3([\n Property('')\n ], Switch.prototype, \"offLabel\", void 0);\n __decorate$3([\n Property('')\n ], Switch.prototype, \"value\", void 0);\n __decorate$3([\n Property({})\n ], Switch.prototype, \"htmlAttributes\", void 0);\n Switch = __decorate$3([\n NotifyPropertyChanges\n ], Switch);\n return Switch;\n}(Component));\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar classNames = {\n chipSet: 'e-chip-set',\n chip: 'e-chip',\n avatar: 'e-chip-avatar',\n text: 'e-chip-text',\n icon: 'e-chip-icon',\n delete: 'e-chip-delete',\n deleteIcon: 'e-dlt-btn',\n multiSelection: 'e-multi-selection',\n singleSelection: 'e-selection',\n active: 'e-active',\n chipWrapper: 'e-chip-avatar-wrap',\n iconWrapper: 'e-chip-icon-wrap',\n focused: 'e-focused',\n disabled: 'e-disabled',\n rtl: 'e-rtl',\n template: 'e-chip-template'\n};\n/**\n * A chip component is a small block of essential information, mostly used on contacts or filter tags.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar ChipList = /** @__PURE__ @class */ (function (_super) {\n __extends$4(ChipList, _super);\n function ChipList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.multiSelectedChip = [];\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n ChipList.prototype.preRender = function () {\n //prerender\n };\n /**\n * To find the chips length.\n *\n * @returns boolean\n * @private\n */\n ChipList.prototype.chipType = function () {\n return (this.chips && this.chips.length && this.chips.length > 0);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n ChipList.prototype.render = function () {\n this.type = (!isNullOrUndefined(this.chips) && this.chips.length) ? 'chipset' : (this.text || this.element.innerText ? 'chip' : 'chipset');\n this.setAttributes();\n this.createChip();\n this.setRtl();\n this.select(this.selectedChips);\n this.wireEvent(false);\n this.rippleFunction = rippleEffect(this.element, {\n selector: '.e-chip'\n });\n this.renderComplete();\n };\n ChipList.prototype.createChip = function () {\n this.innerText = (this.element.innerText && this.element.innerText.length !== 0)\n ? this.element.innerText.trim() : this.element.innerText;\n this.element.innerHTML = '';\n this.chipCreation(this.type === 'chip' ? [this.innerText ? this.innerText : this.text] : this.chips);\n };\n ChipList.prototype.setAttributes = function () {\n if (this.type === 'chip') {\n if (this.enabled) {\n this.element.tabIndex = 0;\n }\n this.element.setAttribute('role', 'button');\n }\n else {\n this.element.classList.add(classNames.chipSet);\n this.element.setAttribute('role', 'listbox');\n if (this.selection === 'Multiple') {\n this.element.classList.add(classNames.multiSelection);\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n else if (this.selection === 'Single') {\n this.element.classList.add(classNames.singleSelection);\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n }\n };\n ChipList.prototype.setRtl = function () {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](classNames.rtl);\n };\n ChipList.prototype.renderTemplates = function () {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n ChipList.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n ChipList.prototype.chipCreation = function (data) {\n if (isNullOrUndefined(data)) {\n return;\n }\n var chipListArray = [];\n var attributeArray = [];\n for (var i = 0; i < data.length; i++) {\n var fieldsData = this.getFieldValues(data[i]);\n var attributesValue = fieldsData.htmlAttributes;\n attributeArray.push(attributesValue);\n var chipArray = this.elementCreation(fieldsData);\n var className = (classNames.chip + ' ' + (fieldsData.enabled ? ' ' : classNames.disabled) + ' ' +\n (fieldsData.avatarIconCss || fieldsData.avatarText ? classNames.chipWrapper : (fieldsData.leadingIconCss ?\n classNames.iconWrapper : ' ')) + ' ' + fieldsData.cssClass).split(' ').filter(function (css) { return css; });\n if (!this.chipType() || this.type === 'chip') {\n chipListArray = chipArray;\n addClass([this.element], className);\n this.element.setAttribute('aria-label', fieldsData.text);\n if (fieldsData.value) {\n this.element.setAttribute('data-value', fieldsData.value.toString());\n }\n }\n else {\n var wrapper = this.createElement('DIV', {\n className: className.join(' '), attrs: {\n tabIndex: '0', role: 'option',\n 'aria-label': fieldsData.text, 'aria-selected': 'false'\n }\n });\n if (this.enableDelete) {\n wrapper.setAttribute('aria-keyshortcuts', 'Press delete or backspace key to delete');\n }\n if (fieldsData.value) {\n wrapper.setAttribute('data-value', fieldsData.value.toString());\n }\n if (fieldsData.enabled) {\n wrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n wrapper.removeAttribute('tabindex');\n wrapper.setAttribute('aria-disabled', 'true');\n }\n if (!isNullOrUndefined(attributeArray[i])) {\n if (attributeArray.length > i && Object.keys(attributeArray[i]).length) {\n var htmlAttr = [];\n htmlAttr = (Object.keys(attributeArray[i]));\n for (var j = 0; j < htmlAttr.length; j++) {\n wrapper.setAttribute(htmlAttr[j], attributeArray[i][htmlAttr[j]]);\n }\n }\n }\n append(chipArray, wrapper);\n chipListArray.push(wrapper);\n }\n }\n append(chipListArray, this.element);\n };\n ChipList.prototype.getFieldValues = function (data) {\n var chipEnabled = !(this.enabled.toString() === 'false');\n var fields = {\n text: typeof data === 'object' ? (data.text ? data.text.toString() : this.text.toString()) :\n (!this.chipType() ? (this.innerText ? this.innerText : this.text.toString()) : data.toString()),\n cssClass: typeof data === 'object' ? (data.cssClass ? data.cssClass.toString() : this.cssClass.toString()) :\n (this.cssClass.toString()),\n leadingIconCss: typeof data === 'object' ? (data.leadingIconCss ? data.leadingIconCss.toString() :\n this.leadingIconCss.toString()) : (this.leadingIconCss.toString()),\n avatarIconCss: typeof data === 'object' ? (data.avatarIconCss ? data.avatarIconCss.toString() :\n this.avatarIconCss.toString()) : (this.avatarIconCss.toString()),\n avatarText: typeof data === 'object' ? (data.avatarText ? data.avatarText.toString() : this.avatarText.toString()) :\n (this.avatarText.toString()),\n trailingIconCss: typeof data === 'object' ? (data.trailingIconCss ? data.trailingIconCss.toString() :\n this.trailingIconCss.toString()) : (this.trailingIconCss.toString()),\n enabled: typeof data === 'object' ? (data.enabled !== undefined ? (data.enabled.toString() === 'false' ? false : true) :\n chipEnabled) : (chipEnabled),\n value: typeof data === 'object' ? ((data.value ? data.value.toString() : null)) : null,\n leadingIconUrl: typeof data === 'object' ? (data.leadingIconUrl ? data.leadingIconUrl.toString() : this.leadingIconUrl) :\n this.leadingIconUrl,\n trailingIconUrl: typeof data === 'object' ? (data.trailingIconUrl ? data.trailingIconUrl.toString() : this.trailingIconUrl) :\n this.trailingIconUrl,\n htmlAttributes: typeof data === 'object' ? (data.htmlAttributes ? data.htmlAttributes : this.htmlAttributes) : this.htmlAttributes,\n template: typeof data === 'object' ? (data.template ? data.template : null) : null\n };\n return fields;\n };\n ChipList.prototype.elementCreation = function (fields) {\n var chipArray = [];\n if (fields.avatarText || fields.avatarIconCss) {\n var className = (classNames.avatar + ' ' + fields.avatarIconCss).trim();\n var chipAvatarElement = this.createElement('span', { className: className });\n chipAvatarElement.innerText = fields.avatarText;\n chipArray.push(chipAvatarElement);\n }\n else if (fields.leadingIconCss) {\n var className = (classNames.icon + ' ' + fields.leadingIconCss).trim();\n var chipIconElement = this.createElement('span', { className: className });\n chipArray.push(chipIconElement);\n }\n else if (fields.leadingIconUrl) {\n var className = (classNames.avatar + ' ' + 'image-url').trim();\n var chipIconElement = this.createElement('span', { className: className });\n chipIconElement.style.backgroundImage = 'url(' + fields.leadingIconUrl + ')';\n chipArray.push(chipIconElement);\n }\n var chipTextElement = this.createElement('span', { className: classNames.text });\n chipTextElement.innerText = fields.text;\n chipArray.push(chipTextElement);\n if (fields.template) {\n var templateWrapper = this.createElement('div', { className: classNames.template });\n var templateContent = this.templateParser(fields.template)(fields, this, 'template', this.element.id + '_template', false);\n append(templateContent, templateWrapper);\n chipArray.push(templateWrapper);\n this.renderTemplates();\n }\n if (fields.trailingIconCss || (this.chipType() && this.enableDelete)) {\n var className = (classNames.delete + ' ' +\n (fields.trailingIconCss ? fields.trailingIconCss : classNames.deleteIcon)).trim();\n var chipdeleteElement = this.createElement('span', { className: className });\n chipArray.push(chipdeleteElement);\n }\n else if (fields.trailingIconUrl) {\n var className = ('trailing-icon-url').trim();\n var chipIconsElement = this.createElement('span', { className: className });\n chipIconsElement.style.backgroundImage = 'url(' + fields.trailingIconUrl + ')';\n chipArray.push(chipIconsElement);\n }\n return chipArray;\n };\n /**\n * A function that finds chip based on given input.\n *\n * @param {number | HTMLElement } fields - We can pass index number or element of chip.\n * {% codeBlock src='chips/find/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n ChipList.prototype.find = function (fields) {\n var chipData = { text: '', index: -1, element: this.element, data: '' };\n var chipElement = fields instanceof HTMLElement ?\n fields : this.element.querySelectorAll('.' + classNames.chip)[fields];\n if (chipElement && this.chipType()) {\n chipData.index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chipElement);\n var chip = this.chips[chipData.index];\n if (typeof chip === 'object' && chip !== null) {\n var chipModel = chip;\n if (chipModel.text !== undefined) {\n chipData.text = chipModel.text.toString();\n }\n }\n else if (chip !== undefined) {\n chipData.text = chip.toString();\n }\n chipData.data = chip;\n chipData.element = chipElement;\n }\n return chipData;\n };\n /**\n * Allows adding the chip item(s) by passing a single or array of string, number, or ChipModel values.\n *\n * @param {string[] | number[] | ChipModel[] | string | number | ChipModel} chipsData - We can pass array of string or\n * array of number or array of chip model or string data or number data or chip model.\n * {% codeBlock src='chips/add/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n * @deprecated\n */\n ChipList.prototype.add = function (chipsData) {\n var _a;\n if (this.type !== 'chip') {\n var fieldData = chipsData instanceof Array ?\n chipsData : [chipsData];\n this.chips = (_a = [].slice.call(this.chips)).concat.apply(_a, fieldData);\n this.chipCreation(fieldData);\n }\n };\n /**\n * Allows selecting the chip item(s) by passing a single or array of string, number, or ChipModel values.\n *\n * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/select/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n ChipList.prototype.select = function (fields, selectionType) {\n this.onSelect(fields, false, selectionType);\n };\n ChipList.prototype.multiSelection = function (newProp) {\n var items = this.element.querySelectorAll('.' + 'e-chip');\n for (var j = 0; j < newProp.length; j++) {\n if (typeof newProp[j] === 'string') {\n for (var k = 0; k < items.length; k++) {\n if (newProp[j] !== k) {\n if (newProp[j] === items[k].attributes[5].value) {\n this.multiSelectedChip.push(k);\n break;\n }\n }\n }\n }\n else {\n this.multiSelectedChip.push(newProp[j]);\n }\n }\n };\n ChipList.prototype.onSelect = function (fields, callFromProperty, selectionType) {\n var index;\n var chipNodes;\n var chipValue = null;\n if (this.chipType() && this.selection !== 'None') {\n if (callFromProperty) {\n var chipElements = this.element.querySelectorAll('.' + classNames.chip);\n for (var i = 0; i < chipElements.length; i++) {\n chipElements[i].setAttribute('aria-selected', 'false');\n chipElements[i].classList.remove(classNames.active);\n }\n }\n var fieldData = fields instanceof Array ? fields : [fields];\n for (var i = 0; i < fieldData.length; i++) {\n var chipElement = fieldData[i] instanceof HTMLElement ? fieldData[i]\n : this.element.querySelectorAll('.' + classNames.chip)[fieldData[i]];\n if (selectionType !== 'index') {\n for (var j = 0; j < this.chips.length; j++) {\n chipNodes = this.element.querySelectorAll('.' + classNames.chip)[j];\n var fieldsData = this.getFieldValues(this.chips[j]);\n if (selectionType === 'value') {\n if (fieldsData.value !== null) {\n chipValue = chipNodes.dataset.value;\n }\n }\n else if (selectionType === 'text') {\n chipValue = chipNodes.innerText;\n }\n if (chipValue === fieldData[i].toString()) {\n index = j;\n chipElement = this.element.querySelectorAll('.' + classNames.chip)[index];\n }\n }\n }\n if (chipElement instanceof HTMLElement) {\n this.selectionHandler(chipElement);\n }\n }\n }\n };\n /**\n * Allows removing the chip item(s) by passing a single or array of string, number, or ChipModel values.\n *\n * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/remove/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n ChipList.prototype.remove = function (fields) {\n var _this = this;\n if (this.chipType()) {\n var fieldData = fields instanceof Array ? fields : [fields];\n var chipElements_1 = [];\n var chipCollection_1 = this.element.querySelectorAll('.' + classNames.chip);\n fieldData.forEach(function (data) {\n var chipElement = data instanceof HTMLElement ? data\n : chipCollection_1[data];\n if (chipElement instanceof HTMLElement) {\n chipElements_1.push(chipElement);\n }\n });\n chipElements_1.forEach(function (element) {\n var chips = _this.element.querySelectorAll('.' + classNames.chip);\n var index = Array.prototype.slice.call(chips).indexOf(element);\n _this.deleteHandler(element, index);\n });\n }\n };\n /**\n * Returns the selected chip(s) data.\n * {% codeBlock src='chips/getSelectedChips/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n ChipList.prototype.getSelectedChips = function () {\n var selectedChips;\n if (this.chipType() && this.selection !== 'None') {\n var selectedItems = { texts: [], Indexes: [], data: [], elements: [] };\n var items = this.element.querySelectorAll('.' + classNames.active);\n for (var i = 0; i < items.length; i++) {\n var chip = items[i];\n selectedItems.elements.push(chip);\n var index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chip);\n selectedItems.Indexes.push(index);\n selectedItems.data.push(this.chips[index]);\n var text = typeof this.chips[index] === 'object' ?\n this.chips[index].text ? this.chips[index].text\n : null : this.chips[index].toString();\n selectedItems.texts.push(text);\n }\n var selectedItem = {\n text: selectedItems.texts[0], index: selectedItems.Indexes[0],\n data: selectedItems.data[0], element: selectedItems.elements[0]\n };\n selectedChips = !isNullOrUndefined(selectedItem.index) ?\n (this.selection === 'Multiple' ? selectedItems : selectedItem) : undefined;\n }\n return selectedChips;\n };\n ChipList.prototype.wireEvent = function (unWireEvent) {\n if (!unWireEvent) {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keydown', this.keyHandler);\n EventHandler.remove(this.element, 'keyup', this.keyHandler);\n }\n };\n ChipList.prototype.keyHandler = function (e) {\n if (e.target.classList.contains(classNames.chip)) {\n if (e.type === 'keydown') {\n if (e.keyCode === 13 || e.keyCode === 32) {\n this.clickHandler(e);\n }\n else if ((e.keyCode === 46 || e.keyCode === 8) && this.enableDelete) {\n this.clickHandler(e, true);\n }\n }\n else if (e.keyCode === 9) {\n this.focusInHandler(e.target);\n }\n }\n };\n ChipList.prototype.focusInHandler = function (chipWrapper) {\n if (!chipWrapper.classList.contains(classNames.focused)) {\n chipWrapper.classList.add(classNames.focused);\n }\n };\n ChipList.prototype.focusOutHandler = function (e) {\n var chipWrapper = closest(e.target, '.' + classNames.chip);\n var focusedElement = !this.chipType() ? (this.element.classList.contains(classNames.focused) ?\n this.element : null) : this.element.querySelector('.' + classNames.focused);\n if (chipWrapper && focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n }\n };\n ChipList.prototype.clickHandler = function (e, del) {\n var _this = this;\n if (del === void 0) { del = false; }\n var chipWrapper = closest(e.target, '.' + classNames.chip);\n if (chipWrapper) {\n var chipDataArgs = void 0;\n if (this.chipType()) {\n chipDataArgs = this.find(chipWrapper);\n }\n else {\n var index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chipWrapper);\n chipDataArgs = {\n text: this.innerText ? this.innerText : this.text,\n element: chipWrapper, data: this.text, index: index\n };\n }\n chipDataArgs.event = e;\n chipDataArgs.cancel = false;\n this.trigger('beforeClick', chipDataArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.clickEventHandler(observedArgs.element, e, del);\n }\n });\n }\n };\n ChipList.prototype.clickEventHandler = function (chipWrapper, e, del) {\n var _this = this;\n if (this.chipType()) {\n var chipData_1 = this.find(chipWrapper);\n chipData_1.event = e;\n var deleteElement = e.target.classList.contains(classNames.deleteIcon) ?\n e.target : (del ? chipWrapper.querySelector('.' + classNames.deleteIcon) : undefined);\n if (deleteElement && this.enableDelete) {\n chipData_1.cancel = false;\n var deletedItemArgs = chipData_1;\n this.trigger('delete', deletedItemArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.deleteHandler(observedArgs.element, observedArgs.index);\n _this.selectionHandler(chipWrapper);\n chipData_1.selected = observedArgs.element.classList.contains(classNames.active);\n var selectedItemArgs = chipData_1;\n _this.trigger('click', selectedItemArgs);\n var chipElement = _this.element.querySelectorAll('.' + classNames.chip)[observedArgs.index];\n if (chipElement) {\n chipElement.focus();\n _this.focusInHandler(chipElement);\n }\n }\n });\n }\n else if (this.selection !== 'None') {\n this.selectionHandler(chipWrapper);\n chipData_1.selected = chipWrapper.classList.contains(classNames.active);\n var selectedItemArgs = chipData_1;\n this.trigger('click', selectedItemArgs);\n }\n else {\n this.focusInHandler(chipWrapper);\n var clickedItemArgs = chipData_1;\n this.trigger('click', clickedItemArgs);\n }\n }\n else {\n this.focusInHandler(chipWrapper);\n var clickedItemArgs = {\n text: this.innerText ? this.innerText : this.text,\n element: chipWrapper, data: this.text, event: e\n };\n this.trigger('click', clickedItemArgs);\n }\n };\n ChipList.prototype.selectionHandler = function (chipWrapper) {\n if (this.selection === 'Single') {\n var activeElement = this.element.querySelector('.' + classNames.active);\n if (activeElement && activeElement !== chipWrapper) {\n activeElement.classList.remove(classNames.active);\n activeElement.setAttribute('aria-selected', 'false');\n }\n this.setProperties({ selectedChips: null }, true);\n }\n else {\n this.setProperties({ selectedChips: [] }, true);\n }\n if (chipWrapper.classList.contains(classNames.active)) {\n chipWrapper.classList.remove(classNames.active);\n chipWrapper.setAttribute('aria-selected', 'false');\n }\n else {\n chipWrapper.classList.add(classNames.active);\n chipWrapper.setAttribute('aria-selected', 'true');\n }\n this.updateSelectedChips();\n };\n ChipList.prototype.updateSelectedChips = function () {\n var chipListEle = this.element.querySelectorAll('.e-chip');\n var chipCollIndex = [];\n var chipCollValue = [];\n var chip = null;\n var value = null;\n for (var i = 0; i < chipListEle.length; i++) {\n var selectedEle = this.element.querySelectorAll('.e-chip')[i];\n if (selectedEle.getAttribute('aria-selected') === 'true') {\n value = selectedEle.getAttribute('data-value');\n if (this.selection === 'Single' && selectedEle.classList.contains('e-active')) {\n chip = value ? value : i;\n break;\n }\n else {\n chip = value ? chipCollValue.push(value) : chipCollIndex.push(i);\n }\n }\n }\n this.setProperties({ selectedChips: this.selection === 'Single' ? chip : value ? chipCollValue : chipCollIndex }, true);\n };\n ChipList.prototype.deleteHandler = function (chipWrapper, index) {\n // Used to store the deleted chip item details.\n var deletedChipData = this.find(chipWrapper);\n this.chips.splice(index, 1);\n this.setProperties({ chips: this.chips }, true);\n detach(chipWrapper);\n this.trigger('deleted', deletedChipData);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n * {% codeBlock src='chips/destroy/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n ChipList.prototype.destroy = function () {\n this.clearTemplate();\n removeClass([this.element], [classNames.chipSet, classNames.chip, classNames.rtl,\n classNames.multiSelection, classNames.singleSelection, classNames.disabled, classNames.chipWrapper, classNames.iconWrapper,\n classNames.active, classNames.focused].concat(this.cssClass ? this.cssClass.toString().split(' ').filter(function (css) { return css; }) : []));\n this.removeMultipleAttributes(['tabindex', 'role', 'aria-label', 'aria-multiselectable'], this.element);\n this.wireEvent(true);\n this.rippleFunction();\n _super.prototype.destroy.call(this);\n this.element.innerHTML = '';\n this.element.innerText = this.innerText;\n };\n ChipList.prototype.removeMultipleAttributes = function (attributes, element) {\n attributes.forEach(function (attr) {\n element.removeAttribute(attr);\n });\n };\n ChipList.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n ChipList.prototype.getModuleName = function () {\n return 'chip-list';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @returns void\n * @private\n */\n ChipList.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 'chips':\n case 'text':\n case 'avatarText':\n case 'avatarIconCss':\n case 'leadingIconCss':\n case 'trailingIconCss':\n case 'selection':\n case 'enableDelete':\n case 'enabled':\n this.refresh();\n break;\n case 'cssClass':\n if (!this.chipType()) {\n removeClass([this.element], oldProp.cssClass.toString().split(' ').filter(function (css) { return css; }));\n addClass([this.element], newProp.cssClass.toString().split(' ').filter(function (css) { return css; }));\n }\n else {\n this.refresh();\n }\n break;\n case 'selectedChips':\n removeClass(this.element.querySelectorAll('.e-active'), 'e-active');\n if (this.selection === 'Multiple') {\n this.multiSelectedChip = [];\n this.multiSelection(newProp.selectedChips);\n this.onSelect(this.multiSelectedChip, true);\n this.updateSelectedChips();\n }\n else {\n this.onSelect(newProp.selectedChips, true);\n }\n break;\n case 'enableRtl':\n this.setRtl();\n break;\n }\n }\n };\n __decorate$4([\n Property([])\n ], ChipList.prototype, \"chips\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"text\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"avatarText\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"avatarIconCss\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"htmlAttributes\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"leadingIconCss\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"trailingIconCss\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"leadingIconUrl\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"trailingIconUrl\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"cssClass\", void 0);\n __decorate$4([\n Property(true)\n ], ChipList.prototype, \"enabled\", void 0);\n __decorate$4([\n Property([])\n ], ChipList.prototype, \"selectedChips\", void 0);\n __decorate$4([\n Property('None')\n ], ChipList.prototype, \"selection\", void 0);\n __decorate$4([\n Property(false)\n ], ChipList.prototype, \"enableDelete\", void 0);\n __decorate$4([\n Event()\n ], ChipList.prototype, \"created\", void 0);\n __decorate$4([\n Event()\n ], ChipList.prototype, \"click\", void 0);\n __decorate$4([\n Event()\n ], ChipList.prototype, \"beforeClick\", void 0);\n __decorate$4([\n Event()\n ], ChipList.prototype, \"delete\", void 0);\n __decorate$4([\n Event()\n ], ChipList.prototype, \"deleted\", void 0);\n ChipList = __decorate$4([\n NotifyPropertyChanges\n ], ChipList);\n return ChipList;\n}(Component));\n\n/**\n * Represents ChipList `Chip` model class.\n */\nvar Chip = /** @__PURE__ @class */ (function () {\n function Chip() {\n }\n return Chip;\n}());\n\nvar __extends$5 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FABHIDDEN = 'e-fab-hidden';\nvar FIXEDFAB = 'e-fab-fixed';\nvar FABTOP = 'e-fab-top';\nvar FABBOTTOM = 'e-fab-bottom';\nvar FABRIGHT = 'e-fab-right';\nvar FABLEFT = 'e-fab-left';\nvar FABMIDDLE = 'e-fab-middle';\nvar FABCENTER = 'e-fab-center';\n/**\n * Defines the position of FAB (Floating Action Button) in target.\n */\nvar FabPosition;\n(function (FabPosition) {\n /**\n * Positions the FAB at the target's top left corner.\n */\n FabPosition[\"TopLeft\"] = \"TopLeft\";\n /**\n * Places the FAB on the top-center position of the target.\n */\n FabPosition[\"TopCenter\"] = \"TopCenter\";\n /**\n * Positions the FAB at the target's top right corner.\n */\n FabPosition[\"TopRight\"] = \"TopRight\";\n /**\n * Positions the FAB in the middle of target's left side.\n */\n FabPosition[\"MiddleLeft\"] = \"MiddleLeft\";\n /**\n * Positions the FAB in the center of target.\n */\n FabPosition[\"MiddleCenter\"] = \"MiddleCenter\";\n /**\n * Positions the FAB in the middle of target's right side.\n */\n FabPosition[\"MiddleRight\"] = \"MiddleRight\";\n /**\n * Positions the FAB at the target's bottom left corner.\n */\n FabPosition[\"BottomLeft\"] = \"BottomLeft\";\n /**\n * Places the FAB on the bottom-center position of the target.\n */\n FabPosition[\"BottomCenter\"] = \"BottomCenter\";\n /**\n * Positions the FAB at the target's bottom right corner.\n */\n FabPosition[\"BottomRight\"] = \"BottomRight\";\n})(FabPosition || (FabPosition = {}));\n/**\n * The FAB Component (Floating Action Button) is an extension of Button Component that appears in front of all the contents of the page and performs the primary action.\n */\nvar Fab = /** @__PURE__ @class */ (function (_super) {\n __extends$5(Fab, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {FabModel} options - Specifies the floating action button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Fab(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Fab.prototype.render = function () {\n _super.prototype.render.call(this);\n this.initializeFab();\n };\n Fab.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Fab.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n return this.addOnPersist([]);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Fab.prototype.getModuleName = function () {\n return 'fab';\n };\n Fab.prototype.initializeFab = function () {\n // To add 'e-btn' class\n this.element.classList.add('e-' + _super.prototype.getModuleName.call(this));\n this.checkTarget();\n this.setPosition();\n this.setVisibility();\n };\n Fab.prototype.checkTarget = function () {\n this.isFixed = true;\n if (this.target) {\n this.targetEle = (typeof this.target === 'string') ? select(this.target) : this.target;\n if (this.targetEle) {\n this.isFixed = false;\n this.targetEle.appendChild(this.element);\n }\n }\n this.element.classList[this.isFixed ? 'add' : 'remove'](FIXEDFAB);\n };\n Fab.prototype.setVisibility = function () {\n this.element.classList[this.visible ? 'remove' : 'add'](FABHIDDEN);\n };\n Fab.prototype.setPosition = function () {\n // Check for the bottom position; if true, add the bottom class; otherwise, add the top class.\n this.element.classList.add((['BottomLeft', 'BottomCenter', 'BottomRight'].indexOf(this.position) !== -1) ? FABBOTTOM : FABTOP);\n var isRight = ['TopRight', 'MiddleRight', 'BottomRight'].indexOf(this.position) !== -1;\n // Reverse the left and right direction for RTL mode.\n this.element.classList.add((!(this.enableRtl || isRight) || (this.enableRtl && isRight)) ? FABLEFT : FABRIGHT);\n if (['MiddleLeft', 'MiddleRight', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.element.classList.add(FABMIDDLE);\n }\n if (['TopCenter', 'BottomCenter', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.element.classList.add(FABCENTER);\n }\n };\n Fab.prototype.clearPosition = function () {\n this.element.classList.remove(FABTOP, FABBOTTOM, FABMIDDLE);\n this.element.classList.remove(FABRIGHT, FABLEFT, FABCENTER);\n };\n /* eslint-disable */\n /**\n * Refreshes the FAB position. You can call this method to re-position FAB when target is resized.\n *\n * @returns {void}\n * @deprecated\n */\n Fab.prototype.refreshPosition = function () {\n };\n /* eslint-enable */\n /**\n * Destroys the FAB instance.\n *\n * @returns {void}\n *\n */\n Fab.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // To remove 'e-btn' class\n this.element.classList.remove('e-' + _super.prototype.getModuleName.call(this), FIXEDFAB);\n this.clearPosition();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FabModel} newProp - Specifies new properties\n * @param {FabModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Fab.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 'enableRtl':\n case 'position':\n this.clearPosition();\n this.setPosition();\n break;\n case 'visible':\n this.setVisibility();\n break;\n case 'target':\n this.checkTarget();\n this.setPosition();\n break;\n /* REF - 861739 */\n case 'currencyCode':\n this.refresh();\n break;\n }\n }\n };\n __decorate$5([\n Property('BottomRight')\n ], Fab.prototype, \"position\", void 0);\n __decorate$5([\n Property('')\n ], Fab.prototype, \"target\", void 0);\n __decorate$5([\n Property(true)\n ], Fab.prototype, \"visible\", void 0);\n __decorate$5([\n Property(true)\n ], Fab.prototype, \"isPrimary\", void 0);\n Fab = __decorate$5([\n NotifyPropertyChanges\n ], Fab);\n return Fab;\n}(Button));\n\nvar __extends$6 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar topPosition = ['TopLeft', 'TopCenter', 'TopRight'];\nvar bottomPosition = ['BottomLeft', 'BottomCenter', 'BottomRight'];\nvar leftPosition = ['TopLeft', 'MiddleLeft', 'BottomLeft'];\nvar rightPosition = ['TopRight', 'MiddleRight', 'BottomRight'];\nvar SDHIDDEN = 'e-speeddial-hidden';\nvar FIXEDSD = 'e-speeddial-fixed';\nvar SPEEDDIAL = 'e-speeddial';\nvar RTLCLASS = 'e-rtl';\nvar HOVERSD = 'e-speeddial-hover-open';\nvar RADIALSD = 'e-speeddial-radial';\nvar LINEARSD = 'e-speeddial-linear';\nvar TEMPLATESD = 'e-speeddial-template';\nvar SDTEMPLATECONTAINER = 'e-speeddial-template-container';\nvar SDOVERLAY = 'e-speeddial-overlay';\nvar SDPOPUP = 'e-speeddial-popup';\nvar SDUL = 'e-speeddial-ul';\nvar SDLI = 'e-speeddial-li';\nvar SDACTIVELI = 'e-speeddial-li-active';\nvar SDLIICON = 'e-speeddial-li-icon';\nvar SDLITEXT = 'e-speeddial-li-text';\nvar SDLITEXTONLY = 'e-speeddial-text-li';\nvar DISABLED$2 = 'e-disabled';\nvar SDVERTICALBOTTOM = 'e-speeddial-vert-bottom';\nvar SDVERTICALRIGHT = 'e-speeddial-vert-right';\nvar SDHORIZONTALTOP = 'e-speeddial-horz-top';\nvar SDHORIZONTALLEFT = 'e-speeddial-horz-left';\nvar SDHORIZONTALRIGHT = 'e-speeddial-horz-right';\nvar SDOVERFLOW = 'e-speeddial-overflow';\nvar SDVERTOVERFLOW = 'e-speeddial-vert-overflow';\nvar SDHORZOVERFLOW = 'e-speeddial-horz-overflow';\nvar SDTOP = 'e-speeddial-top';\nvar SDBOTTOM = 'e-speeddial-bottom';\nvar SDRIGHT = 'e-speeddial-right';\nvar SDLEFT = 'e-speeddial-left';\nvar SDMIDDLE = 'e-speeddial-middle';\nvar SDCENTER = 'e-speeddial-center';\nvar SDTOPLEFT = 'e-speeddial-top-left';\nvar SDBOTTOMRIGHT = 'e-speeddial-bottom-right';\nvar SDTOPRIGHT = 'e-speeddial-top-right';\nvar SDBOTTOMLEFT = 'e-speeddial-bottom-left';\nvar SDVERTDIST = '--speeddialVertDist';\nvar SDHORZDIST = '--speeddialHorzDist';\nvar SDRADICALANGLE = '--speeddialRadialAngle';\nvar SDRADICALOFFSET = '--speeddialRadialOffset';\nvar SDRADICALMINHEIGHT = '--speeddialRadialMinHeight';\nvar SDRADICALMINWIDTH = '--speeddialRadialMinWidth';\nvar SDOVERFLOWLIMIT = '--speeddialOverflowLimit';\nvar SDRADICALHORZDIST = '--speeddialRadialHorzDist';\n/**\n * Defines the display mode of speed dial action items in SpeedDial\n */\nvar SpeedDialMode;\n(function (SpeedDialMode) {\n /**\n * SpeedDial items are displayed in linear order like list.\n */\n SpeedDialMode[\"Linear\"] = \"Linear\";\n /**\n * SpeedDial items are displayed like radial menu in radial direction (circular direction).\n */\n SpeedDialMode[\"Radial\"] = \"Radial\";\n})(SpeedDialMode || (SpeedDialMode = {}));\n/**\n * Defines the speed dial action items display direction when mode is Linear.\n */\nvar LinearDirection;\n(function (LinearDirection) {\n /**\n * Speed dial action items are displayed vertically above the button of Speed Dial.\n */\n LinearDirection[\"Up\"] = \"Up\";\n /**\n * Speed dial action items are displayed vertically below the button of Speed Dial.\n */\n LinearDirection[\"Down\"] = \"Down\";\n /**\n * Speed dial action items are displayed horizontally on the button's right side.\n */\n LinearDirection[\"Right\"] = \"Right\";\n /**\n * Speed dial action items are displayed horizontally on the button's left side.\n */\n LinearDirection[\"Left\"] = \"Left\";\n /**\n * Speed dial action items are displayed vertically above or below the button of Speed Dial based on the position.\n * If Position is TopRight, TopLeft, TopCenter, the items are displayed vertically below the button else above the button.\n */\n LinearDirection[\"Auto\"] = \"Auto\";\n})(LinearDirection || (LinearDirection = {}));\n/**\n * Defines the speed dial action items order, when mode is Radial.\n */\nvar RadialDirection;\n(function (RadialDirection) {\n /**\n * SpeedDial items are arranged in clockwise direction.\n */\n RadialDirection[\"Clockwise\"] = \"Clockwise\";\n /**\n * SpeedDial items are shown in anti-clockwise direction.\n */\n RadialDirection[\"AntiClockwise\"] = \"AntiClockwise\";\n /**\n * SpeedDial items are shown clockwise or anti-clockwise based on the position.\n */\n RadialDirection[\"Auto\"] = \"Auto\";\n})(RadialDirection || (RadialDirection = {}));\n/**\n * Defines the animation effect applied when open and close the speed dial items.\n */\nvar SpeedDialAnimationEffect;\n(function (SpeedDialAnimationEffect) {\n /**\n * SpeedDial open/close actions occur with the Fade animation effect.\n */\n SpeedDialAnimationEffect[\"Fade\"] = \"Fade\";\n /**\n * SpeedDial open/close actions occur with the FadeZoom animation effect.\n */\n SpeedDialAnimationEffect[\"FadeZoom\"] = \"FadeZoom\";\n /**\n * SpeedDial open/close actions occur with the FlipLeftDown animation effect.\n */\n SpeedDialAnimationEffect[\"FlipLeftDown\"] = \"FlipLeftDown\";\n /**\n * SpeedDial open/close actions occur with the FlipLeftUp animation effect.\n */\n SpeedDialAnimationEffect[\"FlipLeftUp\"] = \"FlipLeftUp\";\n /**\n * SpeedDial open/close actions occur with the FlipRightDown animation effect.\n */\n SpeedDialAnimationEffect[\"FlipRightDown\"] = \"FlipRightDown\";\n /**\n * SpeedDial open/close actions occur with the FlipRightUp animation effect.\n */\n SpeedDialAnimationEffect[\"FlipRightUp\"] = \"FlipRightUp\";\n /**\n * SpeedDial open/close actions occur with the FlipXDown animation effect.\n */\n SpeedDialAnimationEffect[\"FlipXDown\"] = \"FlipXDown\";\n /**\n * SpeedDial open/close actions occur with the FlipXUp animation effect.\n */\n SpeedDialAnimationEffect[\"FlipXUp\"] = \"FlipXUp\";\n /**\n * SpeedDial open/close actions occur with the FlipYLeft animation effect.\n */\n SpeedDialAnimationEffect[\"FlipYLeft\"] = \"FlipYLeft\";\n /**\n * SpeedDial open/close actions occur with the FlipYRight animation effect.\n */\n SpeedDialAnimationEffect[\"FlipYRight\"] = \"FlipYRight\";\n /**\n * SpeedDial open/close actions occur with the SlideBottom animation effect.\n */\n SpeedDialAnimationEffect[\"SlideBottom\"] = \"SlideBottom\";\n /**\n * SpeedDial open/close actions occur with the SlideLeft animation effect.\n */\n SpeedDialAnimationEffect[\"SlideLeft\"] = \"SlideLeft\";\n /**\n * SpeedDial open/close actions occur with the SlideRight animation effect.\n */\n SpeedDialAnimationEffect[\"SlideRight\"] = \"SlideRight\";\n /**\n * SpeedDial open/close actions occur with the SlideTop animation effect.\n */\n SpeedDialAnimationEffect[\"SlideTop\"] = \"SlideTop\";\n /**\n * SpeedDial open/close actions occur with the Zoom animation effect.\n */\n SpeedDialAnimationEffect[\"Zoom\"] = \"Zoom\";\n /**\n * SpeedDial open/close actions occur without any animation effect.\n */\n SpeedDialAnimationEffect[\"None\"] = \"None\";\n})(SpeedDialAnimationEffect || (SpeedDialAnimationEffect = {}));\n/**\n * AProvides options to customize the animation applied while opening and closing the popup of SpeedDial.\n */\nvar SpeedDialAnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$6(SpeedDialAnimationSettings, _super);\n function SpeedDialAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$6([\n Property('Fade')\n ], SpeedDialAnimationSettings.prototype, \"effect\", void 0);\n __decorate$6([\n Property(400)\n ], SpeedDialAnimationSettings.prototype, \"duration\", void 0);\n __decorate$6([\n Property(0)\n ], SpeedDialAnimationSettings.prototype, \"delay\", void 0);\n return SpeedDialAnimationSettings;\n}(ChildProperty));\n/**\n * Provides the options to customize the speed dial action buttons when mode of SpeedDial is Radial.\n */\nvar RadialSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$6(RadialSettings, _super);\n function RadialSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$6([\n Property('Auto')\n ], RadialSettings.prototype, \"direction\", void 0);\n __decorate$6([\n Property(-1)\n ], RadialSettings.prototype, \"endAngle\", void 0);\n __decorate$6([\n Property('100px')\n ], RadialSettings.prototype, \"offset\", void 0);\n __decorate$6([\n Property(-1)\n ], RadialSettings.prototype, \"startAngle\", void 0);\n return RadialSettings;\n}(ChildProperty));\n/**\n * Defines the items of Floating Action Button.\n */\nvar SpeedDialItem = /** @__PURE__ @class */ (function (_super) {\n __extends$6(SpeedDialItem, _super);\n function SpeedDialItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$6([\n Property('')\n ], SpeedDialItem.prototype, \"iconCss\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDialItem.prototype, \"id\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDialItem.prototype, \"text\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDialItem.prototype, \"title\", void 0);\n __decorate$6([\n Property(false)\n ], SpeedDialItem.prototype, \"disabled\", void 0);\n return SpeedDialItem;\n}(ChildProperty));\n/**\n * The SpeedDial component that appears in front of all the contents of the page and displays list of action buttons on click which is an extended version of FAB.\n * The button of speed dial is positioned in relative to a view port of browser or the .\n * It can display a menu of related actions or a custom content popupTemplate>.\n *\n */\nvar SpeedDial = /** @__PURE__ @class */ (function (_super) {\n __extends$6(SpeedDial, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {SpeedDialModel} options - Specifies the floating action button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function SpeedDial(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isMenuOpen = false;\n _this.isClock = true;\n _this.isVertical = true;\n _this.isControl = false;\n _this.focusedIndex = -1;\n return _this;\n }\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n SpeedDial.prototype.render = function () {\n this.initialize();\n };\n SpeedDial.prototype.preRender = function () {\n this.keyConfigs = {\n space: 'space',\n enter: 'enter',\n end: 'end',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n esc: 'escape'\n };\n this.validateDirection();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n SpeedDial.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n SpeedDial.prototype.getModuleName = function () {\n return 'speed-dial';\n };\n SpeedDial.prototype.initialize = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.fab = new Fab({\n content: this.content,\n cssClass: this.cssClass ? (SPEEDDIAL + ' ' + this.cssClass) : SPEEDDIAL,\n disabled: this.disabled,\n enablePersistence: this.enablePersistence,\n enableRtl: this.enableRtl,\n iconCss: this.openIconCss,\n iconPosition: this.iconPosition,\n position: this.position,\n target: this.target,\n visible: this.visible,\n isPrimary: this.isPrimary\n });\n this.fab.appendTo(this.element);\n if ((this.items.length > 0) || this.popupTemplate) {\n this.createPopup();\n }\n this.wireEvents();\n };\n SpeedDial.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n EventHandler.add(document.body, 'click', this.bodyClickHandler, this);\n if (this.opensOnHover) {\n this.wireFabHover();\n }\n else {\n this.wireFabClick();\n }\n };\n SpeedDial.prototype.wirePopupEvents = function () {\n this.removeRippleEffect = rippleEffect(this.popupEle, { selector: '.' + SDLIICON });\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.popupKeyboardModule = new KeyboardEvents(this.popupEle, {\n keyAction: this.popupKeyActionHandler.bind(this),\n keyConfigs: { esc: 'escape' },\n eventName: 'keydown'\n });\n this.documentKeyboardModule = new KeyboardEvents(document.body, {\n keyAction: this.popupKeyActionHandler.bind(this),\n keyConfigs: { enter: 'enter', space: 'space' },\n eventName: 'keydown'\n });\n EventHandler.add(this.popupEle, 'click', this.popupClick, this);\n EventHandler.add(this.popupEle, 'mouseleave', this.popupMouseLeaveHandle, this);\n };\n SpeedDial.prototype.wireFabClick = function () {\n EventHandler.add(this.fab.element, 'click', this.fabClick, this);\n };\n SpeedDial.prototype.wireFabHover = function () {\n this.popupEle.classList.add(HOVERSD);\n EventHandler.add(this.fab.element, 'mouseover', this.mouseOverHandle, this);\n EventHandler.add(this.element, 'mouseleave', this.mouseLeaveHandle, this);\n };\n SpeedDial.prototype.createPopup = function () {\n var className = SDPOPUP + ' ' + SDHIDDEN;\n className = this.enableRtl ? className + ' ' + RTLCLASS : className;\n className = this.cssClass ? className + ' ' + this.cssClass : className;\n this.popupEle = this.createElement('div', {\n className: className,\n id: this.element.id + '_popup'\n });\n this.element.insertAdjacentElement('afterend', this.popupEle);\n attributes(this.element, { 'aria-expanded': 'false', 'aria-haspopup': 'true', 'aria-controls': this.popupEle.id });\n this.setPopupContent();\n if (this.modal) {\n this.createOverlay();\n }\n this.checkTarget();\n this.setPositionProps();\n this.wirePopupEvents();\n };\n SpeedDial.prototype.createOverlay = function () {\n this.overlayEle = this.createElement('div', {\n id: this.element.id + '_overlay',\n className: (SDOVERLAY + (this.isMenuOpen ? '' : ' ' + SDHIDDEN) + ' ' + this.cssClass).trim()\n });\n this.element.insertAdjacentElement('beforebegin', this.overlayEle);\n };\n SpeedDial.prototype.popupClick = function () {\n this.isControl = true;\n };\n //Checks and closes the speed dial if the click happened outside this speed dial.\n SpeedDial.prototype.bodyClickHandler = function (e) {\n if (this.isControl) {\n this.isControl = false;\n return;\n }\n if (this.isMenuOpen) {\n this.hidePopupEle(e);\n }\n };\n SpeedDial.prototype.fabClick = function (e) {\n this.isControl = true;\n if (this.isMenuOpen) {\n this.hidePopupEle(e);\n }\n else {\n this.showPopupEle(e);\n }\n };\n SpeedDial.prototype.setPopupContent = function () {\n this.popupEle.classList.remove(RADIALSD, LINEARSD, TEMPLATESD);\n if (!this.popupTemplate) {\n this.popupEle.classList.add((this.mode === 'Radial') ? RADIALSD : LINEARSD);\n this.createUl();\n this.createItems();\n }\n else {\n this.popupEle.classList.add(TEMPLATESD);\n this.appendTemplate();\n }\n this.renderReactTemplates();\n };\n SpeedDial.prototype.appendTemplate = function () {\n var templateContainer = this.createElement('div', { className: SDTEMPLATECONTAINER });\n append([templateContainer], this.popupEle);\n var templateFunction = this.getTemplateString(this.popupTemplate);\n append(templateFunction({}, this, 'fabPopupTemplate', (this.element.id + 'popupTemplate'), this.isStringTemplate), templateContainer);\n };\n SpeedDial.prototype.getTemplateString = function (template) {\n var stringContent = '';\n try {\n var tempEle = select(template);\n if (typeof template !== 'function' && tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n stringContent = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n stringContent = template;\n }\n }\n catch (e) {\n stringContent = template;\n }\n return compile(stringContent);\n };\n SpeedDial.prototype.updatePopupTemplate = function () {\n if (this.popupEle) {\n if (this.popupEle.querySelector('.' + SDLI)) {\n this.clearItems();\n this.popupEle.classList.remove(RADIALSD, LINEARSD);\n this.popupEle.classList.add(TEMPLATESD);\n }\n while (this.popupEle.firstElementChild) {\n remove(this.popupEle.firstElementChild);\n }\n this.setPopupContent();\n this.updatePositionProperties();\n }\n else {\n this.createPopup();\n }\n };\n SpeedDial.prototype.createUl = function () {\n var popupUlEle = this.createElement('ul', {\n className: SDUL,\n id: this.element.id + '_ul',\n attrs: { 'role': 'menu' }\n });\n this.popupEle.appendChild(popupUlEle);\n };\n SpeedDial.prototype.createItems = function () {\n var _this = this;\n this.focusedIndex = -1;\n var ul = this.popupEle.querySelector('.' + SDUL);\n var _loop_1 = function (index) {\n var item = this_1.items[parseInt(index.toString(), 10)];\n var li = this_1.createElement('li', {\n className: SDLI + ' ' + SDHIDDEN,\n id: item.id ? item.id : (this_1.element.id + '_li_' + index),\n attrs: { 'role': 'menuitem' }\n });\n if (item.text) {\n li.setAttribute('aria-label', item.text);\n }\n if (this_1.itemTemplate) {\n var templateFunction = this_1.getTemplateString(this_1.itemTemplate);\n append(templateFunction(item, this_1, 'fabItemTemplate', (this_1.element.id + 'itemTemplate'), this_1.isStringTemplate), li);\n }\n else {\n if (item.iconCss) {\n var iconSpan = this_1.createElement('span', {\n className: SDLIICON + ' ' + item.iconCss\n });\n li.appendChild(iconSpan);\n }\n if (item.text) {\n var textSpan = this_1.createElement('span', {\n className: SDLITEXT\n });\n textSpan.innerText = item.text;\n li.appendChild(textSpan);\n if (!item.iconCss) {\n li.classList.add(SDLITEXTONLY);\n }\n }\n }\n if (item.disabled) {\n li.classList.add(DISABLED$2);\n li.setAttribute('aria-disabled', 'true');\n }\n else {\n EventHandler.add(li, 'click', function (e) { return _this.triggerItemClick(e, item); }, this_1);\n }\n if (item.title) {\n li.setAttribute('title', item.title);\n }\n var eventArgs = { element: li, item: item };\n this_1.trigger('beforeItemRender', eventArgs, function (args) {\n ul.appendChild(args.element);\n });\n };\n var this_1 = this;\n for (var index = 0; index < this.items.length; index++) {\n _loop_1(index);\n }\n };\n SpeedDial.prototype.setRTL = function () {\n this.popupEle.classList[this.enableRtl ? 'add' : 'remove'](RTLCLASS);\n this.clearHorizontalPosition();\n if (!(this.popupTemplate || (this.mode === 'Radial'))) {\n this.setLinearHorizontalPosition();\n }\n else {\n if (!this.popupTemplate && this.mode === 'Radial') {\n this.setRadialPosition();\n }\n this.setHorizontalPosition();\n }\n };\n SpeedDial.prototype.checkTarget = function () {\n this.isFixed = true;\n if (this.target) {\n this.targetEle = (typeof this.target === 'string') ? select(this.target) : this.target;\n if (this.targetEle) {\n this.targetEle.appendChild(this.element);\n this.isFixed = false;\n }\n }\n if (this.isFixed) {\n if (this.popupEle) {\n this.popupEle.classList.add(FIXEDSD);\n }\n if (this.overlayEle) {\n this.overlayEle.classList.add(FIXEDSD);\n }\n }\n else {\n if (this.popupEle) {\n this.popupEle.classList.remove(FIXEDSD);\n }\n if (this.overlayEle) {\n this.overlayEle.classList.remove(FIXEDSD);\n }\n }\n };\n SpeedDial.prototype.setVisibility = function (val) {\n this.setProperties({ visible: val }, true);\n this.fab.setProperties({ visible: val });\n };\n SpeedDial.prototype.popupMouseLeaveHandle = function (e) {\n var target = e.relatedTarget;\n if (this.opensOnHover && !(target.classList.contains(SPEEDDIAL) || closest(target, '.' + SPEEDDIAL))) {\n this.hidePopupEle(e);\n }\n };\n SpeedDial.prototype.mouseOverHandle = function (e) {\n this.showPopupEle(e);\n };\n SpeedDial.prototype.mouseLeaveHandle = function (e) {\n var target = e.relatedTarget;\n if (!(target.classList.contains(SDPOPUP) || closest(target, '.' + SDPOPUP))) {\n this.hidePopupEle(e);\n }\n };\n SpeedDial.prototype.popupKeyActionHandler = function (e) {\n switch (e.action) {\n case 'esc':\n this.hidePopupEle(e);\n break;\n case 'enter':\n case 'space':\n if (this.isMenuOpen && e.target !== this.element) {\n this.hidePopupEle(e);\n }\n break;\n }\n };\n SpeedDial.prototype.keyActionHandler = function (e) {\n e.preventDefault();\n switch (e.action) {\n case 'enter':\n case 'space':\n if (this.isMenuOpen) {\n if (this.focusedIndex !== -1) {\n this.triggerItemClick(e, this.items[this.focusedIndex]);\n }\n else {\n this.hidePopupEle(e);\n }\n }\n else {\n this.showPopupEle(e);\n }\n break;\n case 'esc':\n this.hidePopupEle(e);\n break;\n default:\n if (this.popupTemplate || !this.isMenuOpen) {\n break;\n }\n switch (e.action) {\n case 'end':\n this.focusLastElement();\n break;\n case 'home':\n this.focusFirstElement();\n break;\n case 'moveRight':\n if (this.mode === 'Radial') {\n this.focusLeftRightElement(false);\n }\n else {\n this.focusLinearElement(false);\n }\n break;\n case 'moveDown':\n if (this.mode === 'Radial') {\n this.focusUpDownElement(false);\n }\n else {\n this.focusLinearElement(false);\n }\n break;\n case 'moveLeft':\n if (this.mode === 'Radial') {\n this.focusLeftRightElement(true);\n }\n else {\n this.focusLinearElement(true);\n }\n break;\n case 'moveUp':\n if (this.mode === 'Radial') {\n this.focusUpDownElement(true);\n }\n else {\n this.focusLinearElement(true);\n }\n break;\n }\n break;\n }\n };\n SpeedDial.prototype.focusFirstElement = function () {\n var ele = selectAll('.' + SDLI, this.popupEle);\n var index = 0;\n while (ele[parseInt(index.toString(), 10)].classList.contains(DISABLED$2)) {\n index++;\n if (index > (ele.length - 1)) {\n return;\n }\n }\n this.setFocus(index, ele[parseInt(index.toString(), 10)]);\n };\n SpeedDial.prototype.focusLastElement = function () {\n var ele = selectAll('.' + SDLI, this.popupEle);\n var index = ele.length - 1;\n while (ele[parseInt(index.toString(), 10)].classList.contains(DISABLED$2)) {\n index--;\n if (index < 0) {\n return;\n }\n }\n this.setFocus(index, ele[parseInt(index.toString(), 10)]);\n };\n /*Linear*/\n SpeedDial.prototype.focusLinearElement = function (isLeftUp) {\n var isReversed = this.popupEle.classList.contains(SDVERTICALBOTTOM) ||\n this.popupEle.classList.contains(SDHORIZONTALRIGHT);\n /* Elements will be in reverse (RTL) order for these classes are present.\n Reversed and Down or right is previous.\n Not reversed and Up or left is previous.\n ((isReversed && !isLeftUp)||(!isReversed && isLeftUp)) ==> isReversed!==isLeftUp */\n if (isReversed !== isLeftUp) {\n this.focusPrevElement();\n }\n else {\n this.focusNextElement();\n }\n };\n /*Radial*/\n SpeedDial.prototype.focusLeftRightElement = function (isLeft) {\n /*radialTop position and left + anticlock or right + clock is previous\n other positions and right + anticlock or left + clock is previous\n ((isLeft && !this.isClock)||(!isLeft && this.isClock)) ==> isLeft!==this.isClock */\n var isradialTop = ['TopLeft', 'TopCenter', 'TopRight', 'MiddleLeft'].indexOf(this.position) !== -1;\n if ((isradialTop && (isLeft !== this.isClock)) || (!isradialTop && (isLeft === this.isClock))) {\n this.focusPrevElement();\n }\n else {\n this.focusNextElement();\n }\n };\n /*Radial*/\n SpeedDial.prototype.focusUpDownElement = function (isUp) {\n /*radialRight position and up + anticlock or down + clock is previous\n other positions and down + anticlock or up + clock is previous\n ((isUp && !this.isClock)||(!isUp && this.isClock)) ==> isUp!==this.isClock */\n var isradialRight = ['TopRight', 'MiddleRight', 'BottomRight', 'BottomCenter'].indexOf(this.position) !== -1;\n if ((isradialRight && (isUp !== this.isClock)) || (!isradialRight && (isUp === this.isClock))) {\n this.focusPrevElement();\n }\n else {\n this.focusNextElement();\n }\n };\n SpeedDial.prototype.focusPrevElement = function () {\n var ele = selectAll('.' + SDLI, this.popupEle);\n var index = this.focusedIndex;\n do {\n index--;\n if (index < 0) {\n this.setFocus(-1);\n return;\n }\n } while (ele[parseInt(index.toString(), 10)].classList.contains(DISABLED$2));\n this.setFocus(index, ele[parseInt(index.toString(), 10)]);\n };\n SpeedDial.prototype.focusNextElement = function () {\n var ele = selectAll('.' + SDLI, this.popupEle);\n var index = this.focusedIndex;\n do {\n index++;\n if (index > (ele.length - 1)) {\n return;\n }\n } while (ele[parseInt(index.toString(), 10)].classList.contains(DISABLED$2));\n this.setFocus(index, ele[parseInt(index.toString(), 10)]);\n };\n SpeedDial.prototype.setFocus = function (index, ele) {\n this.removeFocus();\n if (ele) {\n ele.classList.add(SDACTIVELI);\n }\n this.focusedIndex = index;\n };\n SpeedDial.prototype.removeFocus = function () {\n var preEle = select('.' + SDACTIVELI, this.popupEle);\n if (preEle) {\n preEle.classList.remove(SDACTIVELI);\n }\n };\n SpeedDial.prototype.updatePositionProperties = function () {\n this.hidePopupEle();\n this.clearPosition();\n this.validateDirection();\n this.setPositionProps();\n };\n SpeedDial.prototype.setPositionProps = function () {\n if (this.popupTemplate) {\n this.setPosition();\n }\n else if ((this.mode === 'Radial')) {\n this.setRadialPosition();\n this.setPosition();\n }\n else {\n this.setLinearPosition();\n this.setMaxSize();\n }\n };\n SpeedDial.prototype.validateDirection = function () {\n switch (this.direction) {\n case 'Up':\n this.actualLinDirection = (topPosition.indexOf(this.position) !== -1) ? 'Auto' : 'Up';\n break;\n case 'Down':\n this.actualLinDirection = (bottomPosition.indexOf(this.position) !== -1) ? 'Auto' : 'Down';\n break;\n case 'Right':\n this.actualLinDirection = (rightPosition.indexOf(this.position) !== -1) ? 'Auto' : 'Right';\n break;\n case 'Left':\n this.actualLinDirection = (leftPosition.indexOf(this.position) !== -1) ? 'Auto' : 'Left';\n break;\n case 'Auto':\n default:\n this.actualLinDirection = 'Auto';\n break;\n }\n this.isVertical = !((this.actualLinDirection === 'Left') || (this.actualLinDirection === 'Right'));\n };\n SpeedDial.prototype.setMaxSize = function () {\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n var bottom = (this.isFixed ? window.innerHeight : this.targetEle.clientHeight) -\n this.element.offsetTop - this.element.offsetHeight;\n var right = (this.isFixed ? window.innerWidth : this.targetEle.clientWidth) -\n this.element.offsetLeft - this.element.offsetWidth;\n var limit = 0;\n var popupUlEle = this.popupEle.querySelector('.' + SDUL);\n if (this.isVertical) {\n limit = ((this.actualLinDirection === 'Up') || ((this.actualLinDirection === 'Auto') && (topPosition.indexOf(this.position) === -1))) ? top : bottom;\n if (limit < popupUlEle.offsetHeight) {\n this.popupEle.classList.add(SDOVERFLOW, SDVERTOVERFLOW);\n popupUlEle.style.setProperty(SDOVERFLOWLIMIT, limit + 'px');\n }\n }\n else {\n limit = this.enableRtl ? (this.direction === 'Right' ? left : right) : (this.direction === 'Right' ? right : left);\n if (limit < popupUlEle.offsetWidth) {\n this.popupEle.classList.add(SDOVERFLOW, SDHORZOVERFLOW);\n popupUlEle.style.setProperty(SDOVERFLOWLIMIT, limit + 'px');\n }\n }\n };\n SpeedDial.prototype.setLinearPosition = function () {\n var vertDist = 0;\n //Check whether the position value should be in top\n var isTop = (this.actualLinDirection === 'Down') || ((this.actualLinDirection === 'Auto') && (topPosition.indexOf(this.position) !== -1)) ||\n (!this.isVertical && (bottomPosition.indexOf(this.position) === -1));\n var elementOffSetHeight = this.element.offsetHeight / 2;\n var isMiddle = ['MiddleRight', 'MiddleCenter', 'MiddleLeft'].indexOf(this.position) !== -1;\n if (isTop) {\n vertDist = this.element.offsetTop + (this.isVertical ? this.element.offsetHeight : 0);\n if (isMiddle) {\n if (this.actualLinDirection === 'Right' || this.actualLinDirection === 'Left') {\n vertDist = this.element.offsetTop - elementOffSetHeight;\n }\n if (this.actualLinDirection === 'Down') {\n vertDist = vertDist - elementOffSetHeight;\n }\n }\n if (!this.isVertical) {\n this.popupEle.classList.add(SDHORIZONTALTOP);\n }\n }\n else {\n vertDist = this.isFixed ? window.document.documentElement.clientHeight : this.targetEle.clientHeight;\n vertDist = (vertDist - this.element.offsetTop - (this.isVertical ? 0 : this.element.offsetHeight));\n if (isMiddle) {\n if (this.actualLinDirection === 'Auto' || this.actualLinDirection === 'Up') {\n vertDist = vertDist + elementOffSetHeight;\n }\n }\n if (this.isVertical) {\n this.popupEle.classList.add(SDVERTICALBOTTOM);\n }\n }\n this.popupEle.classList.add(isTop ? SDTOP : SDBOTTOM);\n this.popupEle.style.setProperty(SDVERTDIST, vertDist + 'px');\n this.setLinearHorizontalPosition();\n };\n SpeedDial.prototype.setLinearHorizontalPosition = function () {\n //Check whether the position value should be in left\n if ((this.actualLinDirection === 'Right') || (this.isVertical && (rightPosition.indexOf(this.position) === -1))) {\n if (this.enableRtl) {\n this.setRight();\n }\n else {\n this.setLeft();\n } //reverse the direction when RTL enabled\n if (!this.isVertical) {\n this.popupEle.classList.add(SDHORIZONTALLEFT);\n }\n }\n else {\n if (this.enableRtl) {\n this.setLeft();\n }\n else {\n this.setRight();\n } //reverse the direction when RTL enabled\n this.popupEle.classList.add(this.isVertical ? SDVERTICALRIGHT : SDHORIZONTALRIGHT);\n }\n };\n SpeedDial.prototype.setLeft = function () {\n var elementOffSetWidth = this.element.offsetWidth / 2;\n var isCenter = ['TopCenter', 'MiddleCenter', 'BottomCenter'].indexOf(this.position) !== -1;\n var horzDist = this.element.offsetLeft + (this.isVertical ? 0 : this.element.offsetWidth);\n if (isCenter) {\n if (this.actualLinDirection === 'Auto' || this.actualLinDirection === 'Down' || this.actualLinDirection === 'Up') {\n horzDist = this.element.offsetLeft - elementOffSetWidth;\n }\n else {\n horzDist = this.actualLinDirection === 'Right' ? this.element.offsetLeft + elementOffSetWidth : horzDist + elementOffSetWidth;\n }\n }\n this.popupEle.style.setProperty(SDHORZDIST, horzDist + 'px');\n this.popupEle.classList.add(SDLEFT);\n };\n SpeedDial.prototype.setRight = function () {\n var elementOffSetWidth = this.element.offsetWidth / 2;\n var isCenter = ['TopCenter', 'MiddleCenter', 'BottomCenter'].indexOf(this.position) !== -1;\n var horzDist = this.isFixed ? window.document.documentElement.clientWidth : this.targetEle.clientWidth;\n horzDist = (horzDist - this.element.offsetLeft - (this.isVertical ? this.element.offsetWidth : 0));\n if (isCenter && this.actualLinDirection === 'Left') {\n horzDist = horzDist + elementOffSetWidth;\n }\n if (this.popupEle.classList.contains('e-rtl') && isCenter) {\n horzDist = horzDist - elementOffSetWidth;\n }\n this.popupEle.style.setProperty(SDHORZDIST, horzDist + 'px');\n this.popupEle.classList.add(SDRIGHT);\n };\n SpeedDial.prototype.setPosition = function () {\n //Check for middle Position\n if (['MiddleLeft', 'MiddleRight', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(SDMIDDLE);\n var yoffset = ((this.isFixed ? window.innerHeight : this.targetEle.clientHeight) - this.popupEle.offsetHeight) / 2;\n this.popupEle.style.setProperty(SDVERTDIST, yoffset + 'px');\n }\n this.popupEle.classList.add((bottomPosition.indexOf(this.position) === -1) ? SDTOP : SDBOTTOM);\n this.setHorizontalPosition();\n };\n SpeedDial.prototype.setHorizontalPosition = function () {\n //Check for Center Position\n if (['TopCenter', 'BottomCenter', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(SDCENTER);\n var xoffset = ((this.isFixed ? window.innerWidth : this.targetEle.clientWidth) - this.popupEle.offsetWidth) / 2;\n this.popupEle.style.setProperty(SDHORZDIST, xoffset + 'px');\n }\n var isRight = rightPosition.indexOf(this.position) !== -1;\n this.popupEle.classList.add((!(this.enableRtl || isRight) || (this.enableRtl && isRight)) ? SDLEFT : SDRIGHT);\n };\n SpeedDial.prototype.setCustomRadialPosition = function () {\n var viewportWidth = document.documentElement.clientWidth;\n var viewportHeight = document.documentElement.clientHeight;\n if (['TopLeft', 'BottomLeft', 'MiddleLeft'].indexOf(this.position) !== -1) {\n var horzDist = void 0;\n if (this.enableRtl) {\n if (this.isFixed) {\n horzDist = viewportWidth - (this.element.offsetLeft + this.element.offsetWidth);\n }\n else {\n horzDist = this.targetEle.clientWidth - (this.element.offsetLeft + this.element.offsetWidth);\n }\n }\n else {\n horzDist = this.element.offsetLeft;\n }\n this.popupEle.style.setProperty(SDRADICALHORZDIST, horzDist + 'px');\n }\n if (['TopLeft', 'TopCenter', 'TopRight'].indexOf(this.position) !== -1) {\n this.popupEle.style.top = this.element.offsetTop + 'px';\n }\n if (['TopRight', 'BottomRight', 'MiddleRight'].indexOf(this.position) !== -1) {\n var horzDist = void 0;\n if (this.enableRtl) {\n horzDist = this.element.offsetLeft;\n }\n else {\n if (this.isFixed) {\n horzDist = viewportWidth - (this.element.offsetLeft + this.element.offsetWidth);\n }\n else {\n horzDist = this.targetEle.clientWidth - (this.element.offsetLeft + this.element.offsetWidth);\n }\n }\n this.popupEle.style.setProperty(SDRADICALHORZDIST, horzDist + 'px');\n }\n if (['BottomLeft', 'BottomCenter', 'BottomRight'].indexOf(this.position) !== -1) {\n if (this.isFixed) {\n this.popupEle.style.bottom = viewportHeight - (this.element.offsetTop + this.element.offsetHeight) + 'px';\n }\n else {\n this.popupEle.style.bottom = this.targetEle.clientHeight - (this.element.offsetTop + this.element.offsetHeight) + 'px';\n }\n }\n if (['TopCenter', 'MiddleCenter', 'BottomCenter'].indexOf(this.position) !== -1) {\n var horzDist = void 0;\n if (this.enableRtl) {\n if (this.isFixed) {\n horzDist = viewportWidth - (this.element.offsetLeft + this.element.offsetWidth) - this.popupEle.offsetWidth / 2;\n }\n else {\n var targetEleWidth = this.targetEle.clientWidth;\n var popupEleWidth = this.popupEle.offsetWidth;\n horzDist = targetEleWidth - (this.element.offsetLeft + this.element.offsetWidth) - popupEleWidth / 2;\n }\n }\n else {\n horzDist = ((this.element.offsetLeft) - this.popupEle.offsetWidth / 2);\n }\n this.popupEle.style.setProperty(SDRADICALHORZDIST, horzDist + 'px');\n }\n if (['MiddleLeft', 'MiddleCenter', 'MiddleRight'].indexOf(this.position) !== -1) {\n this.popupEle.style.top = ((this.element.offsetTop) - this.popupEle.offsetHeight / 2) + 'px';\n }\n };\n SpeedDial.prototype.setRadialPosition = function () {\n this.setRadialCorner();\n var range = this.getActualRange();\n this.isClock = range.direction === 'Clockwise';\n var offset = formatUnit(range.offset);\n var li = selectAll('.' + SDLI, this.popupEle);\n this.popupEle.style.setProperty(SDRADICALOFFSET, offset);\n this.popupEle.style.setProperty(SDRADICALMINHEIGHT, li[0].offsetHeight + 'px');\n this.popupEle.style.setProperty(SDRADICALMINWIDTH, li[0].offsetWidth + 'px');\n var availableAngle = Math.abs(range.endAngle - range.startAngle);\n //Start and end will be same for Middle Center position, hence available angle will 0 or 360.\n var gaps = ((availableAngle === 360) || (availableAngle === 0)) ? li.length : li.length - 1;\n var perAngle = availableAngle / gaps;\n for (var i = 0; i < li.length; i++) {\n var ele = li[parseInt(i.toString(), 10)];\n var startAngle = range.startAngle;\n var angle = this.isClock ? ((startAngle) + (perAngle * i)) : ((startAngle) - (perAngle * i));\n angle = angle % 360; // removing the Zerp crossing changes.\n ele.style.setProperty(SDRADICALANGLE, angle + 'deg');\n }\n };\n SpeedDial.prototype.setRadialCorner = function () {\n //topLeftPosition\n if (['TopLeft', 'TopCenter', 'MiddleLeft', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(this.enableRtl ? SDTOPRIGHT : SDTOPLEFT);\n }\n //topRightPosition\n if (['TopRight', 'TopCenter', 'MiddleRight', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(this.enableRtl ? SDTOPLEFT : SDTOPRIGHT);\n }\n //bottpmLeftPosition\n if (['BottomLeft', 'BottomCenter', 'MiddleLeft', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(this.enableRtl ? SDBOTTOMRIGHT : SDBOTTOMLEFT);\n }\n //bottomRightPosition\n if (['BottomRight', 'BottomCenter', 'MiddleRight', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(this.enableRtl ? SDBOTTOMLEFT : SDBOTTOMRIGHT);\n }\n };\n // 0,360 is at right, 90 is at Bottom, 180 is at left, 270 is at top\n SpeedDial.prototype.getActualRange = function () {\n var range = { offset: this.radialSettings.offset };\n var start = this.radialSettings.startAngle;\n var end = this.radialSettings.endAngle;\n var isClockwise = false;\n switch (this.position) {\n case 'TopLeft':\n case 'TopRight':\n // Switch Left and Right for RTL mode.\n if (('TopLeft' === this.position) !== this.enableRtl) {\n //TopLeft\n isClockwise = this.radialSettings.direction === 'Clockwise';\n this.checkAngleRange(start, end, range, isClockwise, 0, 90, false);\n }\n else {\n //TopRight\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n this.checkAngleRange(start, end, range, isClockwise, 90, 180, false);\n }\n break;\n case 'TopCenter':\n isClockwise = this.radialSettings.direction === 'Clockwise';\n this.checkAngleRange(start, end, range, isClockwise, 0, 180, false);\n break;\n case 'MiddleLeft':\n case 'MiddleRight':\n // Switch Left and Right for RTL mode.\n if (('MiddleLeft' === this.position) !== this.enableRtl) {\n //MiddleLeft\n isClockwise = this.radialSettings.direction === 'Clockwise';\n /**Replace the value if not defined or greater than 360 or less than 0 or between 91 and 269*/\n start = (isNullOrUndefined(start) || (start < 0) || (start > 360) || ((start > 90) && (start < 270))) ?\n (isClockwise ? 270 : 90) : start;\n end = (isNullOrUndefined(end) || (end < 0) || (end > 360) || ((end > 90) && (end < 270))) ?\n (isClockwise ? 90 : 270) : end;\n /**update for Zero Crossing */\n start = start < 91 ? start + 360 : start;\n end = end < 91 ? end + 360 : end;\n var switchVal = (isClockwise && (end < start)) || (!isClockwise && (end > start));\n range.startAngle = switchVal ? end : start;\n range.endAngle = switchVal ? start : end;\n }\n else {\n //MiddleRight\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n this.checkAngleRange(start, end, range, isClockwise, 90, 270, false);\n }\n break;\n case 'MiddleCenter':\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n /**Replace the value if not defined or greater than 360 or less than 0 */\n start = (isNullOrUndefined(start) || (start < 0) || (start > 360)) ? (isClockwise ? 0 : 360) : start;\n end = (isNullOrUndefined(end) || (end < 0) || (end > 360)) ? (isClockwise ? 360 : 0) : end;\n /**update for Zero Crossing */\n range.startAngle = (!isClockwise && (start <= end)) ? (start + 360) : start;\n range.endAngle = (isClockwise && (end <= start)) ? (end + 360) : end;\n break;\n case 'BottomLeft':\n case 'BottomRight':\n // Switch Left and Right for RTL mode.\n if (('BottomLeft' === this.position) !== this.enableRtl) {\n //BottomLeft\n isClockwise = this.radialSettings.direction === 'Clockwise';\n this.checkAngleRange(start, end, range, isClockwise, 270, 360, true);\n }\n else {\n //BottomRight\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n this.checkAngleRange(start, end, range, isClockwise, 180, 270, true);\n }\n break;\n case 'BottomCenter':\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n this.checkAngleRange(start, end, range, isClockwise, 180, 360, true);\n break;\n }\n range.direction = isClockwise ? 'Clockwise' : 'AntiClockwise';\n return range;\n };\n SpeedDial.prototype.checkAngleRange = function (start, end, range, isClockwise, min, max, check0) {\n start = this.checkAngle(start, isClockwise, min, max, check0);\n end = this.checkAngle(end, !isClockwise, min, max, check0);\n /**Switch the values if both are values are in the range but not as per direction*/\n var switchVal = (isClockwise && (end < start)) || (!isClockwise && (end > start));\n range.startAngle = switchVal ? end : start;\n range.endAngle = switchVal ? start : end;\n };\n SpeedDial.prototype.checkAngle = function (val, isStart, min, max, check0) {\n if (isNullOrUndefined(val) || (val < 0) || (val > 360)) {\n return isStart ? min : max;\n }\n else {\n val = check0 ? ((val === 0) ? 360 : val) : ((val === 360) ? 0 : val);\n /**check whether the value is in the range if not replace them */\n return ((val >= min) && (val <= max)) ? val : isStart ? min : max;\n }\n };\n SpeedDial.prototype.clearPosition = function () {\n this.popupEle.style.removeProperty(SDRADICALOFFSET);\n this.popupEle.style.removeProperty(SDRADICALMINHEIGHT);\n this.popupEle.style.removeProperty(SDRADICALMINWIDTH);\n this.popupEle.classList.remove(SDTOPLEFT, SDTOPRIGHT, SDBOTTOMLEFT, SDBOTTOMRIGHT);\n this.popupEle.classList.remove(SDTOP, SDBOTTOM, SDMIDDLE);\n this.popupEle.classList.remove(SDHORIZONTALTOP, SDVERTICALBOTTOM);\n this.popupEle.style.removeProperty(SDVERTDIST);\n this.clearHorizontalPosition();\n this.clearOverflow();\n };\n SpeedDial.prototype.clearHorizontalPosition = function () {\n this.popupEle.style.removeProperty(SDHORZDIST);\n this.popupEle.style.removeProperty(SDRADICALHORZDIST);\n this.popupEle.style.removeProperty('top');\n this.popupEle.style.removeProperty('bottom');\n this.popupEle.classList.remove(SDRIGHT, SDLEFT, SDCENTER);\n this.popupEle.classList.remove(SDVERTICALRIGHT, SDHORIZONTALLEFT, SDHORIZONTALRIGHT);\n };\n SpeedDial.prototype.clearOverflow = function () {\n this.popupEle.classList.remove(SDOVERFLOW, SDVERTOVERFLOW, SDHORZOVERFLOW);\n this.popupEle.style.removeProperty(SDOVERFLOWLIMIT);\n };\n SpeedDial.prototype.hidePopupEle = function (e) {\n var _this = this;\n if (!this.popupEle || !this.isMenuOpen) {\n return;\n }\n var eventArgs = { element: this.popupEle, event: e, cancel: false };\n this.trigger('beforeClose', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n if (_this.animation.effect !== 'None') {\n var closeAnimation_1 = {\n name: (_this.animation.effect + 'Out'),\n timingFunction: 'easeOut'\n };\n var eleArray_1 = _this.popupTemplate ? [_this.popupEle.firstElementChild] : selectAll('.' + SDLI, _this.popupEle);\n var timeOutInterval_1 = _this.animation.duration / (eleArray_1.length + 1);\n closeAnimation_1.duration = 2 * timeOutInterval_1;\n /* To keep the animation smooth, start the animation of the second element when animation first element is half completed */\n var animateElement_1 = function (curIndex) {\n var ele = eleArray_1[parseInt(curIndex.toString(), 10)];\n closeAnimation_1.delay = (curIndex === eleArray_1.length - 1) ? _this.animation.delay : 0;\n closeAnimation_1.begin = function () { if (curIndex === eleArray_1.length - 1) {\n _this.startHide();\n } };\n closeAnimation_1.end = function () {\n ele.classList.add(SDHIDDEN);\n if (curIndex === 0) {\n _this.endHide();\n }\n };\n new Animation(closeAnimation_1).animate(ele);\n if (curIndex !== 0) {\n var index_1 = curIndex - 1;\n setTimeout(function () {\n animateElement_1(index_1);\n }, timeOutInterval_1);\n }\n };\n animateElement_1(eleArray_1.length - 1);\n }\n else {\n _this.startHide();\n if (!_this.popupTemplate) {\n var ele = selectAll('.' + SDLI, _this.popupEle);\n ele.forEach(function (element) { element.classList.add(SDHIDDEN); });\n }\n _this.endHide();\n }\n });\n };\n SpeedDial.prototype.startHide = function () {\n this.element.setAttribute('aria-expanded', 'false');\n this.removeFocus();\n this.isMenuOpen = false;\n };\n SpeedDial.prototype.endHide = function () {\n this.fab.setProperties({ iconCss: this.openIconCss });\n this.popupEle.classList.add(SDHIDDEN);\n if (this.popupTemplate) {\n this.setVisibility(true);\n }\n this.toggleOverlay();\n if (this.popupTemplate) {\n this.popupEle.removeAttribute('tabindex');\n }\n this.trigger('onClose', { element: this.popupEle });\n };\n SpeedDial.prototype.showPopupEle = function (e) {\n var _this = this;\n if (!this.popupEle || this.isMenuOpen) {\n return;\n }\n if (this.popupTemplate || (this.mode === 'Radial')) {\n this.setCustomRadialPosition();\n }\n else {\n this.setLinearPosition();\n }\n var eventArgs = { element: this.popupEle, event: e, cancel: false };\n this.trigger('beforeOpen', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n if (_this.animation.effect !== 'None' || (animationMode === 'Enable' && _this.animation.effect === 'None')) {\n if (animationMode === 'Enable' && _this.animation.effect === 'None') {\n _this.animation.effect = 'Fade';\n }\n if (animationMode === 'Enable' && _this.animation.duration === 0) {\n _this.animation.duration = 400;\n }\n var openAnimation_1 = {\n name: (_this.animation.effect + 'In'),\n timingFunction: 'easeIn'\n };\n var eleArray_2 = _this.popupTemplate ? [_this.popupEle.firstElementChild] : selectAll('.' + SDLI, _this.popupEle);\n var timeOutInterval_2 = _this.animation.duration / (eleArray_2.length + 1);\n openAnimation_1.duration = 2 * timeOutInterval_2;\n /* To keep the animation smooth, start the animation of the second element when animation first element is half completed */\n var animateElement_2 = function (curIndex) {\n var ele = eleArray_2[parseInt(curIndex.toString(), 10)];\n openAnimation_1.delay = (curIndex === 0) ? _this.animation.delay : 0;\n openAnimation_1.begin = function () {\n if (curIndex === 0) {\n _this.startShow();\n }\n ele.classList.remove(SDHIDDEN);\n };\n openAnimation_1.end = function () { if (curIndex === eleArray_2.length - 1) {\n _this.endShow();\n } };\n new Animation(openAnimation_1).animate(ele);\n if (curIndex !== eleArray_2.length - 1) {\n var index_2 = curIndex + 1;\n setTimeout(function () {\n animateElement_2(index_2);\n }, timeOutInterval_2);\n }\n };\n animateElement_2(0);\n }\n else {\n _this.startShow();\n if (!_this.popupTemplate) {\n var ele = selectAll('.' + SDLI, _this.popupEle);\n ele.forEach(function (element) { element.classList.remove(SDHIDDEN); });\n }\n _this.endShow();\n }\n });\n };\n SpeedDial.prototype.startShow = function () {\n this.element.setAttribute('aria-expanded', 'true');\n this.isMenuOpen = true;\n this.toggleOverlay();\n this.popupEle.classList.remove(SDHIDDEN);\n if (this.popupTemplate) {\n this.setVisibility(false);\n }\n };\n SpeedDial.prototype.endShow = function () {\n if (this.closeIconCss) {\n this.fab.setProperties({ iconCss: this.closeIconCss });\n }\n if (this.popupTemplate) {\n this.popupEle.setAttribute('tabindex', '1');\n this.popupEle.focus();\n }\n this.trigger('onOpen', { element: this.popupEle });\n };\n SpeedDial.prototype.toggleOverlay = function () {\n if (!this.overlayEle) {\n return;\n }\n this.overlayEle.classList[this.isMenuOpen ? 'remove' : 'add'](SDHIDDEN);\n };\n SpeedDial.prototype.removeOverlayEle = function () {\n if (!this.overlayEle) {\n return;\n }\n remove(this.overlayEle);\n this.overlayEle = undefined;\n };\n SpeedDial.prototype.updatePopupItems = function () {\n if (this.popupEle) {\n this.hidePopupEle();\n this.clearItems();\n this.createItems();\n this.updatePositionProperties();\n }\n else {\n this.createPopup();\n }\n };\n SpeedDial.prototype.handleResize = function (e) {\n if (!this.popupEle) {\n return;\n }\n this.hidePopupEle(e);\n this.clearOverflow();\n this.setPositionProps();\n };\n SpeedDial.prototype.triggerItemClick = function (e, item) {\n var target = e.target;\n target = target.classList.contains(SDLI) ? target : closest(target, '.' + SDLI);\n var eventArgs = { element: target, item: item, event: e };\n this.trigger('clicked', eventArgs);\n this.hidePopupEle(e);\n };\n /**\n * Opens the SpeedDial popup to display to display the speed dial items or the popupTemplate.\n *\n * @returns {void}\n */\n SpeedDial.prototype.show = function () {\n this.showPopupEle();\n };\n /**\n * Closes the SpeedDial popup.\n *\n *@returns {void}\n */\n SpeedDial.prototype.hide = function () {\n this.hidePopupEle();\n };\n /**\n * Refreshes the button position of speed dial. You can call this method to re-position button when the target is resized.\n *\n *@returns {void}\n */\n SpeedDial.prototype.refreshPosition = function () {\n this.resizeHandler();\n };\n SpeedDial.prototype.resizeHandler = function (e) {\n this.handleResize(e);\n };\n SpeedDial.prototype.clearItems = function () {\n var liList = selectAll('.' + SDLI, this.popupEle);\n liList.forEach(function (element) {\n remove(element);\n });\n };\n SpeedDial.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n EventHandler.remove(document.body, 'click', this.bodyClickHandler);\n if (this.opensOnHover) {\n this.unwireFabHover();\n }\n else {\n this.unwireFabClick();\n }\n };\n SpeedDial.prototype.unwireFabClick = function () {\n EventHandler.remove(this.fab.element, 'click', this.fabClick);\n };\n SpeedDial.prototype.unwireFabHover = function () {\n this.popupEle.classList.remove(HOVERSD);\n EventHandler.remove(this.fab.element, 'mouseover', this.mouseOverHandle);\n EventHandler.remove(this.element, 'mouseleave', this.mouseLeaveHandle);\n };\n SpeedDial.prototype.unwirePopupEvents = function () {\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n this.removeRippleEffect = null;\n this.keyboardModule.destroy();\n this.popupKeyboardModule.destroy();\n this.documentKeyboardModule.destroy();\n this.keyboardModule = null;\n this.popupKeyboardModule = null;\n this.documentKeyboardModule = null;\n EventHandler.remove(this.popupEle, 'click', this.popupClick);\n EventHandler.remove(this.popupEle, 'mouseleave', this.popupMouseLeaveHandle);\n };\n SpeedDial.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n ['aria-expanded', 'aria-haspopup', 'aria-controls'].forEach(function (attr) {\n _this.element.removeAttribute(attr);\n });\n if (this.popupEle) {\n this.unwirePopupEvents();\n remove(this.popupEle);\n this.popupEle = undefined;\n }\n this.removeOverlayEle();\n this.fab.destroy();\n this.fab = undefined;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SpeedDialModel} newProp - Specifies new properties\n * @param {SpeedDialModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n SpeedDial.prototype.onPropertyChanged = function (newProp, oldProp) {\n var fabProplist = ['content', 'cssClass', 'disabled', 'enablePersistence', 'enableRtl', 'iconPosition', 'position', 'target', 'template', 'title', 'visible', 'isPrimary'];\n var fabModel = extend({}, newProp);\n for (var _i = 0, _a = Object.keys(fabModel); _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((fabProplist).indexOf(prop) < 0) {\n deleteObject(fabModel, prop);\n }\n }\n this.fab.setProperties(fabModel);\n for (var _b = 0, _c = Object.keys(newProp); _b < _c.length; _b++) {\n var prop = _c[_b];\n switch (prop) {\n case 'cssClass':\n if (!this.popupEle) {\n break;\n }\n if (oldProp.cssClass) {\n removeClass(this.overlayEle ? [this.popupEle, this.overlayEle] : [this.popupEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass(this.overlayEle ? [this.popupEle, this.overlayEle] : [this.popupEle], newProp.cssClass.split(' '));\n }\n break;\n case 'visible':\n case 'disabled':\n this.hide();\n break;\n case 'enableRtl':\n if (!this.popupEle) {\n break;\n }\n this.setRTL();\n break;\n case 'openIconCss':\n if (!this.isMenuOpen) {\n this.fab.setProperties({ iconCss: this.openIconCss });\n }\n break;\n case 'closeIconCss':\n if (this.isMenuOpen) {\n this.fab.setProperties({ iconCss: this.closeIconCss });\n }\n break;\n case 'position':\n if (!this.popupEle) {\n break;\n }\n this.updatePositionProperties();\n break;\n case 'direction':\n if (!this.popupEle || this.popupTemplate) {\n break;\n }\n this.updatePositionProperties();\n break;\n case 'popupTemplate':\n this.updatePopupTemplate();\n break;\n case 'target':\n this.hidePopupEle();\n this.checkTarget();\n if (this.overlayEle) {\n this.element.insertAdjacentElement('beforebegin', this.overlayEle);\n }\n if (!this.popupEle) {\n break;\n }\n this.element.insertAdjacentElement('afterend', this.popupEle);\n this.updatePositionProperties();\n break;\n case 'items':\n case 'itemTemplate':\n if (this.popupTemplate) {\n break;\n }\n this.updatePopupItems();\n break;\n case 'modal':\n if (newProp.modal) {\n this.createOverlay();\n }\n else {\n this.removeOverlayEle();\n }\n break;\n case 'mode':\n if (!this.popupEle || this.popupTemplate) {\n break;\n }\n this.popupEle.classList.remove(RADIALSD, LINEARSD);\n this.popupEle.classList.add((this.mode === 'Radial') ? RADIALSD : LINEARSD);\n this.updatePositionProperties();\n break;\n case 'radialSettings':\n if (this.popupEle && (this.mode === 'Radial') && !this.popupTemplate) {\n this.setRadialPosition();\n }\n break;\n case 'opensOnHover':\n if (this.opensOnHover) {\n this.unwireFabClick();\n this.wireFabHover();\n }\n else {\n this.unwireFabHover();\n this.wireFabClick();\n }\n break;\n }\n }\n };\n __decorate$6([\n Complex({}, SpeedDialAnimationSettings)\n ], SpeedDial.prototype, \"animation\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"content\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"closeIconCss\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"cssClass\", void 0);\n __decorate$6([\n Property('Auto')\n ], SpeedDial.prototype, \"direction\", void 0);\n __decorate$6([\n Property(false)\n ], SpeedDial.prototype, \"disabled\", void 0);\n __decorate$6([\n Property('Left')\n ], SpeedDial.prototype, \"iconPosition\", void 0);\n __decorate$6([\n Collection([], SpeedDialItem)\n ], SpeedDial.prototype, \"items\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"itemTemplate\", void 0);\n __decorate$6([\n Property('Linear')\n ], SpeedDial.prototype, \"mode\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"openIconCss\", void 0);\n __decorate$6([\n Property(false)\n ], SpeedDial.prototype, \"opensOnHover\", void 0);\n __decorate$6([\n Property('BottomRight')\n ], SpeedDial.prototype, \"position\", void 0);\n __decorate$6([\n Property(false)\n ], SpeedDial.prototype, \"modal\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"popupTemplate\", void 0);\n __decorate$6([\n Complex({}, RadialSettings)\n ], SpeedDial.prototype, \"radialSettings\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"target\", void 0);\n __decorate$6([\n Property(true)\n ], SpeedDial.prototype, \"visible\", void 0);\n __decorate$6([\n Property(true)\n ], SpeedDial.prototype, \"isPrimary\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"beforeClose\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"beforeItemRender\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"beforeOpen\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"created\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"clicked\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"onClose\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"onOpen\", void 0);\n SpeedDial = __decorate$6([\n NotifyPropertyChanges\n ], SpeedDial);\n return SpeedDial;\n}(Component));\n\nvar __extends$7 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar SmartPasteButton = /** @__PURE__ @class */ (function (_super) {\n __extends$7(SmartPasteButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {SmartPasteButtonModel} options - Specifies Smart paste button model\n * @param {string | HTMLButtonElement} element - Specifies target element\n */\n function SmartPasteButton(options, element) {\n return _super.call(this, options, element) || this;\n }\n SmartPasteButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.smartPasteBtnClickHandler, this);\n };\n SmartPasteButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.smartPasteBtnClickHandler);\n };\n SmartPasteButton.prototype.smartPasteBtnClickHandler = function (args) {\n return __awaiter(this, void 0, void 0, function () {\n var target, formElement, formFields, clipboardContent, fieldsData, systemRole, userRole, settings, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n target = args.target;\n formElement = target.closest('form');\n if (!formElement) {\n return [2 /*return*/];\n }\n formFields = this.getFormFields(formElement);\n if (formFields.length === 0) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.getClipboardContent().then(function (text) {\n return text;\n })];\n case 1:\n clipboardContent = _a.sent();\n if (!(clipboardContent !== 'Clipboard API not supported' && clipboardContent !== 'Clipboard access failed')) return [3 /*break*/, 6];\n _a.label = 2;\n case 2:\n _a.trys.push([2, , 5, 6]);\n this.disabled = true;\n fieldsData = formFields.map(function (field) {\n return {\n fieldName: field.fieldName,\n description: field.description,\n allowedValues: field.allowedValues,\n type: field.type\n };\n });\n systemRole = \"\\nCurrent date: \" + new Date().toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }) + \"\\n\\nEach response line matches the following format:\\nFIELD identifier^^^value\\n\\nGive a response with the following lines only, with values inferred from USER_DATA:\\n\" + this.formatFields(fieldsData) + \"\\nEND_RESPONSE\\n\\nDo not explain how the values were determined.\\nFor fields without any corresponding information in USER_DATA, use value NO_DATA.\";\n userRole = \"\\nUSER_DATA: \" + clipboardContent + \"\\n \";\n settings = {\n messages: [\n { role: 'system', content: systemRole },\n { role: 'user', content: userRole }\n ],\n temperature: 0.0,\n topP: 1.0,\n maxTokens: 2000,\n frequencyPenalty: 0.1,\n presencePenalty: 0.0,\n stop: ['END_RESPONSE']\n };\n if (!(typeof this.aiAssistHandler === 'function')) return [3 /*break*/, 4];\n return [4 /*yield*/, this.aiAssistHandler(settings)];\n case 3:\n response = _a.sent();\n if (typeof response === 'string' && response !== '') {\n this.setFormFields(formElement, formFields, response);\n }\n _a.label = 4;\n case 4: return [3 /*break*/, 6];\n case 5:\n this.disabled = false;\n return [7 /*endfinally*/];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n SmartPasteButton.prototype.formatFields = function (fields) {\n var result = [];\n fields.forEach(function (field) {\n var fieldOutput = [];\n fieldOutput.push(\"\\nFIELD \" + field.fieldName + \"^^^\");\n if (field.description) {\n fieldOutput.push(\"The \" + field.description);\n }\n if (field.allowedValues && field.allowedValues.length > 0) {\n fieldOutput.push(' (multiple choice, with allowed values: ');\n fieldOutput.push(field.allowedValues.map(function (val) { return \"\" + val; }).join(','));\n fieldOutput.push(')');\n }\n else {\n fieldOutput.push(\" of type \" + field.type);\n }\n result.push(fieldOutput.join(''));\n });\n return result.join('');\n };\n SmartPasteButton.prototype.setFormFields = function (form, formFields, response) {\n var _this = this;\n var responseData = {};\n var fieldPrefix = 'FIELD ';\n var currentField = null;\n response.split('\\n').forEach(function (line) {\n if (line.startsWith(fieldPrefix)) {\n var parts = line.substring(fieldPrefix.length).split('^^^');\n if (parts.length === 2) {\n responseData[\"\" + parts[0]] = parts[1];\n currentField = parts[0];\n }\n }\n else if (currentField) {\n responseData[\"\" + currentField] += '\\n' + line;\n }\n });\n formFields.forEach(function (field) {\n var value = responseData[field.fieldName];\n if (value !== undefined) {\n value = value.trim();\n if (value === 'NO_DATA') {\n return;\n }\n if (field.element instanceof HTMLInputElement && field.element.type === 'radio') {\n var radioButton = _this.findRadioButton(form, field.element.name, value);\n if (radioButton) {\n _this.updateElementValue(radioButton, 'true');\n }\n }\n else {\n _this.updateElementValue(field.element, value);\n }\n }\n });\n };\n SmartPasteButton.prototype.findRadioButton = function (form, name, value) {\n var _this = this;\n var radioButtons = Array.from(form.querySelectorAll('input[type=radio]'))\n .filter(function (radio) { return radio instanceof HTMLInputElement && radio.name === name; })\n .map(function (radio) { return ({ elem: radio, text: _this.getElementDescription(form, radio) }); });\n var exactMatch = radioButtons.find(function (radio) { return radio.text === value; });\n if (exactMatch) {\n return exactMatch.elem;\n }\n var partialMatch = radioButtons.filter(function (radio) { return radio.text &&\n radio.text.includes(value); });\n if (partialMatch.length === 1) {\n return partialMatch[0].elem;\n }\n return null;\n };\n SmartPasteButton.prototype.triggerBeforeChange = function (element) {\n element.dispatchEvent(new CustomEvent('beforeinput', {\n bubbles: true,\n detail: {\n fromSmartComponents: true\n }\n }));\n };\n SmartPasteButton.prototype.triggerAfterChange = function (element) {\n element.dispatchEvent(new CustomEvent('input', {\n bubbles: true,\n detail: {\n fromSmartComponents: true\n }\n }));\n element.dispatchEvent(new CustomEvent('change', {\n bubbles: true,\n detail: {\n fromSmartComponents: true\n }\n }));\n };\n SmartPasteButton.prototype.updateElementValue = function (element, value) {\n var isEjsControl = element.classList.contains('e-control');\n if (element instanceof HTMLInputElement && (element.type === 'radio' || element.type === 'checkbox')) {\n var responseValue = value == null ? undefined : value.toString().toLowerCase();\n var isResponseValue = responseValue === 'true' || responseValue === 'yes' || responseValue === 'on';\n if (element.checked !== isResponseValue) {\n this.triggerBeforeChange(element);\n if (isEjsControl) {\n element['ej2_instances'][0].checked = isResponseValue;\n }\n else {\n element.checked = isResponseValue;\n }\n this.triggerAfterChange(element);\n }\n }\n else if (element instanceof HTMLSelectElement) {\n var optionText_1 = value.toString();\n var index = null;\n var options = Array.from(element.querySelectorAll('option'));\n var exactMatch = options.filter(function (option) { return option.textContent === optionText_1; });\n if (exactMatch.length > 0) {\n index = options.indexOf(exactMatch[0]);\n }\n else {\n var partialMatch = options.filter(function (option) { return option.textContent &&\n option.textContent.indexOf(optionText_1) >= 0; });\n if (partialMatch.length === 1) {\n index = options.indexOf(partialMatch[0]);\n }\n }\n if (index !== null && element.selectedIndex !== index) {\n this.triggerBeforeChange(element);\n if (isEjsControl) {\n element['ej2_instances'][0].index = index;\n }\n else {\n element.selectedIndex = index;\n }\n this.triggerAfterChange(element);\n }\n }\n else {\n this.triggerBeforeChange(element);\n if (element.classList.contains('e-rating') || element.classList.contains('e-colorpicker')) {\n element['ej2_instances'][0].value = value;\n }\n else {\n element.value = value;\n }\n this.triggerAfterChange(element);\n }\n element.focus();\n };\n SmartPasteButton.prototype.getFormFields = function (form) {\n var _this = this;\n var fields = [];\n var uniqueCount = 0;\n form.querySelectorAll('input, select, textarea').forEach(function (element) {\n if (!(element instanceof HTMLInputElement || element instanceof HTMLSelectElement || element instanceof HTMLTextAreaElement)) {\n return;\n }\n if (element.type === 'hidden' || _this.isFieldIgnore(element)) {\n return;\n }\n var isRadioButton = element.type === 'radio';\n var identifier = isRadioButton ? element.name : element.id || element.name || \"unidentified_\" + ++uniqueCount;\n if (isRadioButton && fields.find(function (field) { return field.fieldName === identifier; })) {\n return;\n }\n var FieldDescription = null;\n if (!isRadioButton) {\n FieldDescription = _this.getElementDescription(form, element);\n if (!FieldDescription) {\n return;\n }\n }\n var fieldInfo = {\n fieldName: element.name,\n description: FieldDescription,\n element: element,\n type: element.type === 'checkbox' ? 'boolean' : element.type === 'number' ? 'number' : 'string'\n };\n if (element instanceof HTMLSelectElement) {\n var options = Array.from(element.querySelectorAll('option')).filter(function (option) { return option.value; });\n fieldInfo.allowedValues = options.map(function (option) { return option.textContent; });\n fieldInfo.type = 'fixed-choices';\n }\n else if (isRadioButton) {\n fieldInfo.allowedValues = [];\n fieldInfo.type = 'fixed-choices';\n Array.from(form.querySelectorAll('input[type=radio]')).forEach(function (radio) {\n if (radio.name === identifier) {\n var radioDescription = _this.getElementDescription(form, radio);\n if (radioDescription) {\n fieldInfo.allowedValues.push(radioDescription);\n }\n }\n });\n }\n fields.push(fieldInfo);\n });\n return fields;\n };\n SmartPasteButton.prototype.isFieldIgnore = function (element) {\n return element.hasAttribute('data-smartpaste-ignore') ||\n (element.hasAttribute('aria-disabled') && element.getAttribute('aria-disabled') === 'true') ||\n (element.hasAttribute('disabled')) || (element.hasAttribute('readonly')) ||\n (element.hasAttribute('aria-readonly') && element.getAttribute('aria-readonly') === 'true') ||\n (element.hasAttribute('aria-hidden') && element.getAttribute('aria-hidden') === 'true');\n };\n SmartPasteButton.prototype.getElementDescription = function (form, element) {\n if (element.hasAttribute('data-smartpaste-description')) {\n return element.getAttribute('data-smartpaste-description');\n }\n if ((element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) && element.placeholder) {\n return element.placeholder;\n }\n var label = form.querySelector(\"label[for=\\\"\" + element.id + \"\\\"]\");\n if (label) {\n return label.textContent.trim();\n }\n return element.name || element.id;\n };\n SmartPasteButton.prototype.getClipboardContent = function () {\n return __awaiter(this, void 0, void 0, function () {\n var navigatorObj, customClipboard, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n navigatorObj = navigator;\n customClipboard = document.getElementById('custom-clipboard');\n if (!(customClipboard && customClipboard.value)) return [3 /*break*/, 1];\n return [2 /*return*/, customClipboard.value];\n case 1:\n if (!(typeof window !== 'undefined' && navigatorObj.clipboard && navigatorObj.clipboard.readText)) return [3 /*break*/, 6];\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, navigatorObj.clipboard.readText()];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n error_1 = _a.sent();\n return [2 /*return*/, 'Clipboard access failed'];\n case 5: return [3 /*break*/, 7];\n case 6: return [2 /*return*/, 'Clipboard API not supported'];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n __decorate$7([\n Property()\n ], SmartPasteButton.prototype, \"aiAssistHandler\", void 0);\n return SmartPasteButton;\n}(Button));\n\nexport { BeforeChangeEventArgs, Button, CheckBox, Chip, ChipList, Fab, FabPosition, IconPosition, LinearDirection, RadialDirection, RadialSettings, RadioButton, SmartPasteButton, SpeedDial, SpeedDialAnimationEffect, SpeedDialAnimationSettings, SpeedDialItem, SpeedDialMode, Switch, buttonObserver, classNames, createCheckBox, destroy, getTextNode, preRender, rippleMouseHandler, setHiddenInput, wrapperInitialize };\n","import { isNullOrUndefined, Property, ChildProperty, setStyleAttribute, formatUnit, Browser, EventHandler, removeClass, addClass, Animation as Animation$1, Complex, Event, NotifyPropertyChanges, Component, createElement, detach, L10n, attributes, Draggable, isBlazor, compile, append, SanitizeHtmlHelper, extend, prepend, animationMode, Collection, select, selectAll, remove, closest, getUniqueID, Touch, classList } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\n\n/**\n * Position library\n */\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 */\nfunction 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 */\nfunction 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-ddl') && element.classList.contains('e-rtl')) || element.classList.contains('e-date-range-wrapper'))) ? (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/**\n * Collision module.\n */\nvar parentDocument$1;\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 */\nfunction 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$1 = 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 */\nfunction 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$1 = 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 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 */\nfunction 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$1 = 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 var left = 0;\n var 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 var tranformElement = getTransformElement(element);\n if (tranformElement) {\n var transformStyle = getComputedStyle(tranformElement).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n scaleY = matrix.d;\n }\n var zoomStyle = getComputedStyle(tranformElement).zoom;\n if (zoomStyle !== 'none') {\n var bodyZoom = getZoomValue(document.body);\n scaleX = bodyZoom * scaleX;\n scaleY = bodyZoom * scaleY;\n }\n }\n element.style.top = ((pos.position.top / scaleY) + pos.offsetY - (top / scaleY)) + 'px';\n element.style.left = ((pos.position.left / scaleX) + pos.offsetX - (left / scaleX)) + 'px';\n}\nfunction getZoomValue(element) {\n var zoomValue = getComputedStyle(element).zoom;\n return parseFloat(zoomValue) || 1; // Default zoom value is 1 (no zoom)\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @returns {HTMLElement} The modified element.\n */\nfunction getTransformElement(element) {\n while (element) {\n var transform = window.getComputedStyle(element).transform;\n var zoom = getZoomValue(document.body);\n if ((transform && transform !== 'none') || (zoom && zoom !== 1)) {\n return element;\n }\n if (element === document.body) {\n return null;\n }\n element = (element.offsetParent || element.parentElement);\n }\n return null;\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$1()) < 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 var collide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.left - getBodyScrollLeft$1()) <= 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 if ((!collideSide.leftSide && collideSide.rightSide && collide.bottomSide)) {\n pos.offsetX = 0;\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$1()) <= 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$1()) < 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$1() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft$1() + getViewPortWidth());\n}\n//eslint-disable-next-line\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop$1() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop$1() + getViewPortHeight());\n}\n/**\n * @returns {number} - returns the scroll top value\n */\nfunction getBodyScrollTop$1() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument$1.documentElement.scrollTop || parentDocument$1.body.scrollTop;\n}\n/**\n * @returns {number} - returns the scroll left value\n */\nfunction getBodyScrollLeft$1() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument$1.documentElement.scrollLeft || parentDocument$1.body.scrollLeft;\n}\n/**\n * @returns {number} - returns the viewport height\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {number} - returns the viewport width\n */\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var documentReact = document.documentElement.getBoundingClientRect();\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : documentReact.width;\n return windowWidth - (windowWidth - offsetWidth);\n}\n/**\n * @returns {void}\n */\nfunction destroy() {\n targetContainer = null;\n parentDocument$1 = null;\n}\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @__PURE__ @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));\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 = /** @__PURE__ @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 var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n }\n case 'offsetY': {\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n }\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 destroy();\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 if (this.enableRtl) {\n this.element.classList.add(CLASSNAMES.RTL);\n }\n else {\n this.element.classList.remove(CLASSNAMES.RTL);\n }\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 /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @param {HTMLElement} target - The target element.\n * @param {boolean} collision - Specifies whether to check for collision.\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 var scaleX = 1;\n var tranformElement = getTransformElement(ele);\n if (tranformElement) {\n var transformStyle = getComputedStyle(tranformElement).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n }\n var zoomStyle = getComputedStyle(tranformElement).zoom;\n if (zoomStyle !== 'none') {\n var bodyZoom = getZoomValue(document.body);\n scaleX = bodyZoom * scaleX;\n }\n }\n anchorPos.left += ((anchorRect.width - eleRect.width) / scaleX);\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$1(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$1(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));\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 */\nfunction 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 */\nfunction 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 */\nfunction 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\n/**\n * Resize library\n */\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;\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\nfunction 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 (!isNullOrUndefined(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n/**\n * Wires up the event handlers for the resizable elements.\n *\n * @param {any} [args] - Optional arguments that provide context for the event handlers.\n * @returns {void}\n */\nfunction wireEvents(args) {\n var context = args || this;\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, context);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, context);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNullOrUndefined(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, context);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, context);\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 (!isNullOrUndefined(resizeStart)) {\n var proxy_1 = this;\n if (resizeStart(e, proxy_1) === true) {\n return;\n }\n }\n if (this.targetEle && targetElement && targetElement.querySelector('.' + DIALOG_RESIZABLE)) {\n containerElement = this.target === ('body' ) ? null : this.targetEle;\n maxWidth = this.targetEle.clientWidth;\n maxHeight = this.targetEle.clientHeight;\n }\n var target = (isNullOrUndefined(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 = (isNullOrUndefined(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 (!isNullOrUndefined(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNullOrUndefined(resizeEnd)) {\n var proxy_2 = this;\n resizeEnd(e, proxy_2);\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 (!isNullOrUndefined(resizeStart)) {\n var proxy_3 = this;\n if (resizeStart(e, proxy_3) === 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 = (isNullOrUndefined(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 (!isNullOrUndefined(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNullOrUndefined(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 (!isNullOrUndefined(resize)) {\n var proxy_4 = this;\n resize(e, proxy_4);\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 }\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/**\n * @param {MouseEvent | TouchEvent} e - specifies the event\n * @returns {void}\n */\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 (!isNullOrUndefined(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNullOrUndefined(containerElement)) {\n calculateValue = true;\n }\n else if (isNullOrUndefined(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 (!isNullOrUndefined(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNullOrUndefined(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 = (isNullOrUndefined(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/**\n * Resizes the element towards the north direction.\n *\n * @param {MouseEvent | TouchEvent} e - The event object.\n * @returns {void}\n */\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 var borderValue = isNullOrUndefined(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n if (!isNullOrUndefined(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNullOrUndefined(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNullOrUndefined(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n else if (!isNullOrUndefined(containerElement) &&\n (Math.floor((targetRectValues.top - boundaryRectValues.top) + targetRectValues.height +\n (boundaryRectValues.bottom - targetRectValues.bottom)) - borderValue) <= maxHeight) {\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 (!isNullOrUndefined(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/**\n * Resizes the element towards the west direction.\n *\n * @param {MouseEvent | TouchEvent} e - The event object.\n * @returns {void}\n */\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNullOrUndefined(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 = isNullOrUndefined(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n /* eslint-disable */\n var left = isNullOrUndefined(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNullOrUndefined(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\n if (isNullOrUndefined(resizeWestWidth)) {\n if (!isNullOrUndefined(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 (!isNullOrUndefined(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNullOrUndefined(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 (!isNullOrUndefined(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/**\n * Resizes the element towards the east direction.\n *\n * @param {MouseEvent | TouchEvent} e - The event object.\n * @returns {void}\n */\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNullOrUndefined(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 (!isNullOrUndefined(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) <= maxWidth\n || (targetRectValues.right - containerRectValues.left) >= targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNullOrUndefined(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNullOrUndefined(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 */\nfunction setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nfunction setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nfunction setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\n */\nfunction 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 (!isNullOrUndefined(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n/**\n * @returns {void}\n */\nfunction resizeDestroy() {\n targetElement = null;\n selectedHandler = null;\n containerElement = null;\n resizeWestWidth = null;\n resizeStart = null;\n resize = null;\n resizeEnd = null;\n}\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ButtonProps = /** @__PURE__ @class */ (function (_super) {\n __extends$1(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property(true)\n ], ButtonProps.prototype, \"isFlat\", void 0);\n __decorate$1([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate$1([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate$1([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate$1([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate$1([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$1(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.isModal) {\n this.isModelResize = true;\n }\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 if (!args.cancel && this.isModelResize && !isNullOrUndefined(this.dlgContainer) && this.dlgContainer.classList.contains('e-dlg-' + this.position.X + '-' + this.position.Y)) {\n this.setPopupPosition();\n this.dlgContainer.classList.remove('e-dlg-' + this.position.X + '-' + this.position.Y);\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 if (this.element.classList.contains(DLG_RESTRICT_LEFT_VALUE)) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n this.isModelResize = false;\n }\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 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') && !query.classList.contains('e-slider-tooltip'))) {\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 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 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]) && !isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\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 if (this.isModal) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n else {\n this.targetEle.appendChild(this.element);\n }\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 _this.IsDragStop = true;\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.isModelResize = false;\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 for (var i = 0; i < this.buttons.length; i++) {\n if (isNullOrUndefined(this.buttons[i].buttonModel)) {\n continue;\n }\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ?\n 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 (isNullOrUndefined(this.buttons[i].buttonModel)) {\n continue;\n }\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\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 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 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 if (this.enableRtl) {\n addClass([this.element], RTL);\n }\n else {\n removeClass([this.element], RTL);\n }\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-labelledby': this.element.id + '_dialog-header' });\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 if (typeof (this.content) === 'string') {\n this.updateSanitizeContent();\n }\n else {\n this.contentEle.appendChild(this.content);\n }\n }\n this.setMaxHeight();\n }\n else {\n this.setContent();\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 this.setHeader();\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 this.setFooterTemplate();\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 }\n else {\n this.renderCloseIcon();\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n if (this.visible) {\n this.show();\n }\n else {\n this.hide();\n }\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 this.unWireButtonEvents();\n this.destroyButtons();\n if (!isNullOrUndefined(this.ftrTemplateContent)) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n this.footerTemplate = '';\n this.setButton();\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 = this.position.X;\n var positionY = this.position.Y;\n if (!isNullOrUndefined(oldProp.position)) {\n if (!isNullOrUndefined(oldProp.position.X)) {\n positionX = oldProp.position.X;\n }\n if (!isNullOrUndefined(oldProp.position.Y)) {\n positionY = oldProp.position.Y;\n }\n }\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 this.isModelResize = this.enableResize && this.isModal;\n if (this.enableResize && this.dialogOpen) {\n this.resetResizeIcon();\n }\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 if (!isNullOrUndefined(this.targetEle)) {\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n else if (!isNullOrUndefined(this.element)) {\n this.targetEle.appendChild(this.element);\n }\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 this.unWireButtonEvents();\n this.destroyButtons();\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) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n this.element.innerHTML = this.clonedEle.innerHTML;\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n this.ftrTemplateContent = null;\n this.headerContent = null;\n if (!this.isReact && !this.isVue && !isNullOrUndefined(this.contentEle)) {\n this.removeAllChildren(this.contentEle);\n }\n this.contentEle = null;\n resizeDestroy();\n _super.prototype.destroy.call(this);\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.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 };\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 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' && !_this.IsDragStop) {\n _this.setPopupPosition();\n }\n }\n }\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.enableResize) {\n _this.unWireWindowResizeEvent();\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 if (_this.animationSettings.effect === 'None' && animationMode === 'Enable') {\n _this.popupObj.hide(closeAnimation);\n }\n else if (_this.animationSettings.effect === 'None') {\n _this.popupObj.hide();\n }\n else {\n _this.popupObj.hide(closeAnimation);\n }\n setTimeout(function () {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.targetEle) && _this.targetEle.classList.contains(DLG_TARGET) &&\n _this.targetEle.classList.contains(SCROLL_DISABLED)) {\n removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n if (document.body.classList.contains(DLG_TARGET) &&\n document.body.classList.contains(SCROLL_DISABLED)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }, (_this.animationSettings.duration + _this.animationSettings.delay));\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 /**\n * Specifies to view the Full screen Dialog.\n *\n * @param {boolean} args - specifies the arguments\n * @returns {boolean} - returns the boolean value\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 Dialog.prototype.unWireButtonEvents = function () {\n if (this.buttons.length > 0 && this.footerTemplate === '' && this.ftrTemplateContent) {\n for (var i = 0; i < this.buttons.length; i++) {\n if (this.buttons[i].click && typeof (this.buttons[i].click) === 'function'\n && this.ftrTemplateContent.children[i]) {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n Dialog.prototype.destroyButtons = function () {\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n if (this.btnObj[i] && !this.btnObj[i].isDestroyed) {\n this.btnObj[i].destroy();\n }\n }\n }\n };\n __decorate$1([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate$1([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$1([\n Property(false)\n ], Dialog.prototype, \"enablePersistence\", void 0);\n __decorate$1([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate$1([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate$1([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate$1([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate$1([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate$1([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate$1([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate$1([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate$1([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate$1([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate$1([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate$1([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate$1([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate$1([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate$1([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate$1([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate$1([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate$1([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\n// eslint-disable-next-line\nvar 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 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 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\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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$1 = 'e-tooltip';\nvar RTL$1 = 'e-rtl';\nvar DEVICE$1 = 'e-bigger';\nvar ICON$1 = '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$1 = '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 = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate$2([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Tooltip, _super);\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$1);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (!this.position) {\n return;\n }\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && !(this.opensOn === 'Click' || typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n var tooltipAfterCloseEventArgs = {\n type: this.tooltipEventArgs.event ? this.tooltipEventArgs.event.type : null, cancel: false,\n target: this.tooltipEventArgs.target, event: this.tooltipEventArgs.event ? this.tooltipEventArgs.event : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(this.tooltipEventArgs.event)\n };\n this.trigger('afterClose', tooltipAfterCloseEventArgs);\n tooltipAfterCloseEventArgs = 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;\n var tipHeight;\n var tooltipEleWidth;\n var tooltipEleHeight;\n var arrowEle;\n var tipAdjust;\n var tipHeightAdjust;\n var 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 _this = this;\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.isAngular) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n else {\n this.content = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\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 if (this.isAngular) {\n setTimeout(function () {\n _this.reposition(target);\n }, 1);\n }\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$1 + '.' + CLOSE);\n if (existingCloseIcon) {\n remove(existingCloseIcon);\n }\n return;\n }\n var tipClose = this.createElement('div', { className: ICON$1 + ' ' + CLOSE, attrs: { role: 'button', 'aria-label': 'Press escape to close the Tooltip' } });\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 () {\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 var mouseEvent = e;\n if (target.getAttribute('data-tooltip-id') === null) {\n if (!(mouseEvent.type === 'mousedown' && mouseEvent.button === 2)) {\n this.targetHover(e);\n }\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$1 + ' ' + 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 Animation$1.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$1);\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 Animation$1.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail && (showAnimation.effect === 'None' || showAnimation.effect === 'FadeIn' ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.isReact && typeof ctrlObj.content != 'string'))) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: (showAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeIn' : this.animation.open.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && typeof tooltip.viewContainerRef !== 'string' || this.isReact;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.getBoundingClientRect().left) +\n offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.getBoundingClientRect().top) +\n offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = this.isBodyContainer ?\n fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset) : eleOffset;\n this.tooltipEle.style.display = 'block';\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer && arrowEle != null && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target, e);\n }\n else {\n _this.isHidden = false;\n }\n });\n };\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 () {\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$1);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.closeDelay === 0 && (this.animation.close.effect === 'None' || (this.isReact && typeof this.content != 'string'))) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n if (this.popupObj && !this.popupObj.element.classList.contains(POPUP_OPEN)) {\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 () {\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 Animation$1.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$1) === 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$1))\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 this.windowResizeBound = this.windowResize.bind(this);\n this.keyDownBound = this.keyDown.bind(this);\n this.touchEndBound = this.touchEnd.bind(this);\n this.scrollWheelBound = this.scrollHandler.bind(this);\n document.addEventListener('wheel', this.scrollWheelBound);\n document.addEventListener('scroll', this.scrollWheelBound);\n document.addEventListener('touchend', this.touchEndBound);\n document.addEventListener('keydown', this.keyDownBound);\n window.addEventListener('resize', this.windowResizeBound);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (!trigger) {\n return [];\n }\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n if (!isNullOrUndefined(this.targetsList) && this.targetsList.length > 0) {\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n document.removeEventListener('touchend', this.touchEndBound);\n this.touchEndBound = null;\n document.removeEventListener('wheel', this.scrollWheelBound);\n document.removeEventListener('scroll', this.scrollWheelBound);\n this.scrollWheelBound = null;\n window.removeEventListener('resize', this.windowResizeBound);\n this.windowResizeBound = null;\n document.removeEventListener('keydown', this.keyDownBound);\n this.keyDownBound = null;\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n if (!isNullOrUndefined(this.targetsList) && this.targetsList.length > 0) {\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n if (arrowInnerELe) {\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n }\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL$1);\n }\n else {\n removeClass([this.tooltipEle], RTL$1);\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 *\n * It is used to destroy the Tooltip component.\n *\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 destroy();\n removeClass([this.element], ROOT$1);\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 this.containerElement = null;\n this.tipClass = null;\n this.tooltipPositionX = null;\n this.tooltipPositionY = null;\n this.ctrlId = null;\n this.tooltipEventArgs = null;\n this.touchModule = null;\n this.mouseMoveEvent = null;\n this.mouseMoveTarget = null;\n this.containerElement = null;\n this.targetsList = null;\n };\n __decorate$2([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate$2([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate$2([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate$2([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate$2([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate$2([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate$2([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate$2([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate$2([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate$2([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate$2([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate$2([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate$2([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate$2([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate$2([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate$2([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate$2([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate$2([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate$2([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$2([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate$2([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\n\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_MAT3_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_FLUENT2_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_TAILWIND3SPIN = 'e-spin-tailwind3';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_FLUENTSPIN = 'e-spin-fluent';\nvar CLS_FLUENT2SPIN = 'e-spin-fluent2';\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/**\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 */\nfunction Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = {\n type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width\n };\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 var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\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 */\nfunction 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 createTailwind3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind3', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_TAILWIND3SPIN);\n mat_calculate_attributes(radius, container, 'Tailwind3', CLS_TAILWIND3SPIN);\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 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);\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 createFluentSpinner(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);\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 createFluent2Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent2', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENT2SPIN);\n fb_calculate_attributes(radius, container, CLS_FLUENT2SPIN);\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);\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);\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);\n break;\n case 'Fluent':\n createFluentSpinner(innerContainer, radius);\n break;\n case 'Fluent2':\n createFluent2Spinner(innerContainer, radius);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius);\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);\n break;\n case 'Tailwind3':\n createTailwind3Spinner(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);\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 var increment = false;\n var 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 case 'Tailwind3':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Fluent':\n defaultSize = DEFT_FLUENT_WIDTH;\n break;\n case 'Fluent2':\n defaultSize = DEFT_FLUENT2_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')) || !isNullOrUndefined(container.querySelector('svg.e-spin-tailwind3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) &&\n !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')) &&\n !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n }\n else if (!isNullOrUndefined(container.querySelector('svg.e-spin-tailwind3')) &&\n !isNullOrUndefined(container.querySelector('svg.e-spin-tailwind3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-tailwind3');\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' || type === 'Fluent2' || type === 'Tailwind3') {\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 var startArc = 315;\n var 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 */\nfunction 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 if (spinWrapCollection[i].parentElement && spinWrapCollection[i].parentElement === container) {\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 = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) &&\n !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 case 'Tailwind3':\n if (isHide) {\n clearTimeout(globalTimeOut[id].timeOut);\n }\n else {\n startMatAnimate(inner, id, globalTimeOut[id].radius);\n }\n break;\n case 'Bootstrap':\n if (isHide) {\n clearTimeout(globalTimeOut[id].timeOut);\n }\n else {\n animateBootstrap(inner);\n }\n break;\n }\n }\n if (isHide) {\n classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]);\n }\n else {\n classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n }\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 */\nfunction hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\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 */\nfunction 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\nexport { Animation, AnimationSettings, ButtonProps, Dialog, DialogUtility, Popup, PositionData, Spinner, Tooltip, calculatePosition, calculateRelativeBasedPosition, createSpinner, destroy, fit, flip, getMaxZindex, getScrollableParent, getTransformElement, getZindexPartial, getZoomValue, hideSpinner, isCollide, setSpinner, showSpinner };\n","import { isNullOrUndefined, getValue, merge, extend, setValue, Fetch } from '@syncfusion/ej2-base';\n\n/* eslint-disable valid-jsdoc */\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @__PURE__ @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 Object.defineProperty(Query.prototype, \"moduleName\", {\n /** @hidden */\n get: function () { return 'query'; },\n enumerable: true,\n configurable: true\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}());\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 = /** @__PURE__ @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}());\n\n/* eslint-disable valid-jsdoc */\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n *\n * @hidden\n */\nvar DataUtil = /** @__PURE__ @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 ? 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}());\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar consts$1 = { 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 = /** @__PURE__ @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}());\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 = /** @__PURE__ @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 sort = [];\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 var isGroupByFormat = false;\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if (key.fn === 'onGroup' && !isNullOrUndefined(key.e.format)) {\n isGroupByFormat = true;\n break;\n }\n }\n }\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup' || (key.fn === 'onSortBy' && !isGroupByFormat)) && 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 if (key.fn === 'onSortBy') {\n sort.unshift(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, sort: sort\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[req.level].comparer, true);\n if (args.sort.length) {\n result = this.onSortBy(result, args.sort[parseInt(req.level.toString(), 10)], args.query, true);\n }\n }\n else {\n for (var i = args.sort.length - 1; i >= req.level; i--) {\n result = this.onSortBy(result, args.sort[parseInt(i.toString(), 10)], args.query, false);\n }\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_1 = args.group[0].fieldName;\n result = DataUtil.group(result, field_1, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.sort.length) {\n var sort = args.sort.length > 1 ?\n args.sort.filter(function (x) { return x.fieldName === field_1; })[0] : args.sort[0];\n result = this.onSortBy(result, sort, args.query, true);\n }\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 * @param isLazyLoadGroupSort\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query, isLazyLoadGroupSort) {\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, isLazyLoadGroupSort ? 'key' : 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));\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 = /** @__PURE__ @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 && !isNullOrUndefined(changes)) {\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$1[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 * @param {Fetch} settings?\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request, settings) {\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));\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n *\n * @hidden\n */\nvar ODataAdaptor = /** @__PURE__ @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 = (dm.dataSource.batchUrl || this.rootUrl) ?\n (dm.dataSource.batchUrl || this.rootUrl) + '/' + this.options.batch :\n (dm.dataSource.batchUrl || 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));\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 = /** @__PURE__ @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));\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 = /** @__PURE__ @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);\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);\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);\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));\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n *\n * @hidden\n */\nvar WebMethodAdaptor = /** @__PURE__ @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, DataUtil.parse.jsonDateReplacer),\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));\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 = /** @__PURE__ @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));\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 = /** @__PURE__ @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: function () { },\n addRecord: function () { },\n updateRecord: function () { },\n deleteRecord: function () { },\n batchUpdate: function () { }\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\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 = /** @__PURE__ @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));\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 = /** @__PURE__ @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));\n\n/* eslint-disable valid-jsdoc */\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @__PURE__ @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 Object.defineProperty(DataManager.prototype, \"moduleName\", {\n /** @hidden */\n get: function () { return 'datamanager'; },\n enumerable: true,\n configurable: true\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']);\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, changes);\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, changes) {\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, changes);\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, changes) {\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 changes: changes\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}());\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @__PURE__ @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}());\n\nexport { Adaptor, CacheAdaptor, CustomDataAdaptor, DataManager, DataUtil, Deferred, GraphQLAdaptor, JsonAdaptor, ODataAdaptor, ODataV4Adaptor, Predicate, Query, RemoteSaveAdaptor, UrlAdaptor, WebApiAdaptor, WebMethodAdaptor };\n","import { extend, deleteObject, addClass, isNullOrUndefined, Property, ChildProperty, attributes, getComponent, select, getUniqueID, append, compile, SanitizeHtmlHelper, detach, removeClass, EventHandler, rippleEffect, isRippleEnabled, closest, Animation, formatUnit, classList, Collection, Complex, Event, NotifyPropertyChanges, Component, getValue, setValue, remove, KeyboardEvents, getInstance, createElement, animationMode } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * @param {Object} props - Specifies the properties\n * @param {string[]} model - Specifies the model\n * @returns {Object} Component Model\n */\nfunction 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 */\nfunction 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 * @param {boolean} blankIcon - Specifies the blankIcon value.\n * @returns {void}\n */\nfunction 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') && li.querySelector('.e-menu-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 = /** @__PURE__ @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));\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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 POPUPWIDTH: 'e-dropdown-popup-width'\n};\n/**\n * Animation configuration settings.\n */\nvar DropDownMenuAnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(DropDownMenuAnimationSettings, _super);\n function DropDownMenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property('SlideDown')\n ], DropDownMenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate$1([\n Property(400)\n ], DropDownMenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate$1([\n Property('ease')\n ], DropDownMenuAnimationSettings.prototype, \"easing\", void 0);\n return DropDownMenuAnimationSettings;\n}(ChildProperty));\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$1(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: this.popupWidth !== 'auto' ? classNames.POPUP + \" \" + classNames.POPUPWIDTH : classNames.POPUP,\n id: this.element.id + '-popup'\n });\n document.body.appendChild(div);\n this.dropDown = new Popup(div, {\n width: this.popupWidth,\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 if (this.createPopupOnClick) {\n var splitButton = getComponent(this.activeElem[0], 'split-btn');\n if (splitButton) {\n splitButton.isPopupCreated = true;\n }\n }\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 _this = this;\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 if (this.itemTemplate) {\n var compiledTemplate_1 = this.compiletemplate(this.itemTemplate);\n items.forEach(function (item) {\n var li = _this.createElement('li', {\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: item.separator\n ? { 'role': 'separator', 'tabindex': '-1', 'aria-label': 'separator', 'aria-hidden': 'true' }\n : { 'role': 'menuitem', 'tabindex': '-1', 'aria-label': item.text },\n id: item.id ? item.id : getUniqueID('e-' + _this.getModuleName() + '-item')\n });\n var compiledElement = compiledTemplate_1(item, _this, 'template', null, false, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n var eventArgs = { item: item, element: li };\n _this.trigger('beforeItemRender', eventArgs);\n if (eventArgs.item.disabled !== item.disabled) {\n li.classList[eventArgs.item.disabled ? 'add' : 'remove']('e-disabled');\n }\n ul.appendChild(li);\n });\n }\n else {\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 }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownButton.prototype.compiletemplate = function (template) {\n if (!this.itemTemplate) {\n return undefined;\n }\n try {\n if (typeof this.itemTemplate !== 'function') {\n var templateElement = document.querySelector(this.itemTemplate);\n if (templateElement) {\n return compile(templateElement.innerHTML.trim());\n }\n }\n return compile(template);\n }\n catch (_a) {\n return compile(template);\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.cssClass = isNullOrUndefined(this.cssClass) ? '' : this.cssClass;\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 var splitButton = getComponent(this.activeElem[0], 'split-btn');\n if (this.createPopupOnClick && splitButton) {\n var dropDownButton = getComponent(this.activeElem[1], 'dropdown-btn');\n if (dropDownButton) {\n dropDownButton.isPopupCreated = false;\n }\n }\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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.isSafari = function () {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\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() && this.getPopUpElement() && !(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 || e.target);\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 popupElem = this.getPopUpElement();\n if (this.activeElem[0] && this.activeElem[0].classList.contains('e-dropdown-btn') && popupElem.style.width && popupElem.style.width !== 'auto') {\n this.setWidth(popupElem);\n }\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (splitButton.appendReactElement) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n splitButton.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n }\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.appendReactElement) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n }\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 var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n if (animationOptions) {\n _this.animatePopup(animationOptions, ul_1);\n }\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 && !_this.isSafari()) {\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 if (ul_1 && _this.isSafari()) {\n ul_1.focus();\n }\n }\n });\n };\n DropDownButton.prototype.animatePopup = function (animationOptions, element) {\n new Animation(animationOptions).animate(element, {\n begin: function (args) {\n args.element.parentElement.style.height = args.element.parentElement.offsetHeight + 'px';\n }\n });\n };\n DropDownButton.prototype.setWidth = function (popupElem) {\n var width = formatUnit(popupElem.style.width);\n if (width.indexOf('%') > -1) {\n var btnWidth = this.element.offsetWidth * parseFloat(width) / 100;\n popupElem.style.width = btnWidth + \"px\";\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 if (_this.dropDown) {\n _this.dropDown.hide();\n }\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 oldProp.cssClass = isNullOrUndefined(oldProp.cssClass) ? '' : oldProp.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 // eslint-disable-next-line @typescript-eslint/no-unused-expressions\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$1([\n Property('')\n ], DropDownButton.prototype, \"content\", void 0);\n __decorate$1([\n Property('')\n ], DropDownButton.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownButton.prototype, \"disabled\", void 0);\n __decorate$1([\n Property('')\n ], DropDownButton.prototype, \"iconCss\", void 0);\n __decorate$1([\n Property('Left')\n ], DropDownButton.prototype, \"iconPosition\", void 0);\n __decorate$1([\n Property(true)\n ], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$1([\n Collection([], Item)\n ], DropDownButton.prototype, \"items\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownButton.prototype, \"createPopupOnClick\", void 0);\n __decorate$1([\n Property('')\n ], DropDownButton.prototype, \"target\", void 0);\n __decorate$1([\n Property('')\n ], DropDownButton.prototype, \"closeActionEvents\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownButton.prototype, \"itemTemplate\", void 0);\n __decorate$1([\n Property('auto')\n ], DropDownButton.prototype, \"popupWidth\", void 0);\n __decorate$1([\n Complex({ effect: 'None' }, DropDownMenuAnimationSettings)\n ], DropDownButton.prototype, \"animationSettings\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"beforeItemRender\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"beforeOpen\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"beforeClose\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"close\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"open\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"select\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"created\", void 0);\n DropDownButton = __decorate$1([\n NotifyPropertyChanges\n ], DropDownButton);\n return DropDownButton;\n}(Component));\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RTL = 'e-rtl';\nvar TAGNAME = 'EJS-SPLITBUTTON';\n/**\n * SplitButton component has primary and secondary button. Primary button is used to select\n * default action and secondary button is used to toggle contextual overlays for displaying list of\n * action items. It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar SplitButton = /** @__PURE__ @class */ (function (_super) {\n __extends$2(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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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$2([\n Property('')\n ], SplitButton.prototype, \"content\", void 0);\n __decorate$2([\n Property('')\n ], SplitButton.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property(false)\n ], SplitButton.prototype, \"disabled\", void 0);\n __decorate$2([\n Property('')\n ], SplitButton.prototype, \"iconCss\", void 0);\n __decorate$2([\n Property('Left')\n ], SplitButton.prototype, \"iconPosition\", void 0);\n __decorate$2([\n Property(false)\n ], SplitButton.prototype, \"createPopupOnClick\", void 0);\n __decorate$2([\n Collection([], Item)\n ], SplitButton.prototype, \"items\", void 0);\n __decorate$2([\n Property('')\n ], SplitButton.prototype, \"target\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"beforeItemRender\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"beforeOpen\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"beforeClose\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"click\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"close\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"open\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"select\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"created\", void 0);\n SplitButton = __decorate$2([\n NotifyPropertyChanges\n ], SplitButton);\n return SplitButton;\n}(DropDownButton));\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @__PURE__ @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}());\n\n/**\n * Initialize ButtonGroup CSS component with specified properties.\n * ```html\n *
\n * \n * \n * \n *
\n * ```\n * ```typescript\n * createButtonGroup('#buttongroup', {\n * cssClass: 'e-outline',\n * buttons: [\n * { content: 'Day' },\n * { content: 'Week' },\n * { content: 'Work Week'}\n * ]\n * });\n * ```\n *\n * @param {string} selector\n * @param {CreateButtonGroupModel} options\n * @returns HTMLElement\n */\n/**\n * Creates button group.\n *\n * @param {string} selector - Specifies the selector.\n * @param {CreateButtonGroupModel} options - Specifies the button group model.\n * @param {Function} createElement - Specifies the element.\n * @returns {HTMLElement} - Button group element.\n */\nfunction createButtonGroup(selector, options, createElement$1) {\n if (options === void 0) { options = {}; }\n var child;\n var btnElem;\n var nextChild;\n var btnModel;\n if (isNullOrUndefined(createElement$1)) {\n createElement$1 = createElement;\n }\n var wrapper = document.querySelector(selector);\n addClass([wrapper], ['e-btn-group', 'e-css']);\n wrapper.setAttribute('role', 'group');\n var childs = wrapper.children;\n options.buttons = options.buttons || [];\n for (var i = 0, j = 0; j < childs.length; i++, j++) {\n child = childs[j];\n btnModel = options.buttons[i];\n if (btnModel !== null) {\n if (child.tagName === 'BUTTON') {\n btnElem = child;\n }\n else {\n btnElem = createElement$1('label');\n nextChild = childs[j + 1];\n if (nextChild) {\n wrapper.insertBefore(btnElem, nextChild);\n }\n else {\n wrapper.appendChild(btnElem);\n }\n if (child.id) {\n btnElem.setAttribute('for', child.id);\n }\n if (btnModel && btnModel.disabled) {\n child.disabled = true;\n }\n j++;\n }\n if (options.cssClass && btnModel && !btnModel.cssClass) {\n btnModel.cssClass = options.cssClass;\n }\n new Button(btnModel || {}, btnElem);\n }\n }\n return wrapper;\n}\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HIDESPINNER = 'e-hide-spinner';\nvar PROGRESS = 'e-progress';\nvar PROGRESSACTIVE = 'e-progress-active';\nvar CONTENTCLS = 'e-btn-content';\n/**\n * Defines the spin settings.\n */\nvar SpinSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$3(SpinSettings, _super);\n function SpinSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$3([\n Property(null)\n ], SpinSettings.prototype, \"template\", void 0);\n __decorate$3([\n Property(16)\n ], SpinSettings.prototype, \"width\", void 0);\n __decorate$3([\n Property('Left')\n ], SpinSettings.prototype, \"position\", void 0);\n return SpinSettings;\n}(ChildProperty));\n/**\n * Defines the animation settings.\n */\nvar AnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$3(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$3([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate$3([\n Property('None')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate$3([\n Property('ease')\n ], AnimationSettings.prototype, \"easing\", void 0);\n return AnimationSettings;\n}(ChildProperty));\n/**\n * The ProgressButton visualizes the progression of an operation to indicate the user\n * that a process is happening in the background with visual representation.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ProgressButton = /** @__PURE__ @class */ (function (_super) {\n __extends$3(ProgressButton, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {ProgressButtonModel} options - Specifies progress button model\n * @param {string|HTMLButtonElement} element - Specifies element\n */\n function ProgressButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.step = 1;\n return _this;\n }\n ProgressButton.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n ProgressButton.prototype.render = function () {\n _super.prototype.render.call(this);\n this.init();\n this.wireEvents();\n this.setAria();\n this.renderComplete();\n };\n /**\n * Starts the button progress at the specified percent.\n *\n * @param {number} percent - Starts the button progress at this percent.\n * @returns {void}\n */\n ProgressButton.prototype.start = function (percent) {\n this.isPaused = false;\n this.startProgress(percent ? percent : this.percent, this.progressTime);\n };\n /**\n * Stops the button progress.\n *\n * @returns {void}\n */\n ProgressButton.prototype.stop = function () {\n this.isPaused = true;\n cancelAnimationFrame(this.timerId);\n };\n /**\n * Complete the button progress.\n *\n * @returns {void}\n */\n ProgressButton.prototype.progressComplete = function () {\n this.isPaused = false;\n this.finishProgress();\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ProgressButton.prototype.getModuleName = function () {\n return 'progress-btn';\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n ProgressButton.prototype.destroy = function () {\n var _this = this;\n var classList = [HIDESPINNER, PROGRESSACTIVE, 'e-round-corner', 'e-' + _super.prototype.getModuleName.call(this)];\n if (this.spinSettings.position) {\n classList.push('e-spin-' + this.spinSettings.position.toLowerCase());\n }\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.element.innerHTML = '';\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n removeClass([this.element], classList);\n var css = this.element.getAttribute('class') ? ['aria-label', 'aria-valuemin', 'aria-valuemax', 'aria-valuenow']\n : ['aria-label', 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'class'];\n css.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n };\n ProgressButton.prototype.init = function () {\n this.element.classList.add('e-' + _super.prototype.getModuleName.call(this));\n this.setContent();\n this.createSpinner();\n if (this.enableProgress) {\n this.createProgress();\n }\n };\n ProgressButton.prototype.createSpinner = function () {\n var spinner = this.createElement('span', { className: 'e-spinner' });\n this.setSpinPosition(spinner);\n createSpinner({\n target: spinner, width: this.spinSettings.width || 16, template: this.spinSettings.template\n }, this.createElement);\n };\n ProgressButton.prototype.getSpinner = function () {\n return this.element.getElementsByClassName('e-spinner')[0];\n };\n ProgressButton.prototype.getProgress = function () {\n return this.element.getElementsByClassName(PROGRESS)[0];\n };\n ProgressButton.prototype.setSpinPosition = function (ele) {\n var position = this.spinSettings.position || 'Left';\n if (position === 'Left' || position === 'Top') {\n this.element.insertBefore(ele, this.element.getElementsByClassName(CONTENTCLS)[0]);\n }\n else {\n this.element.appendChild(ele);\n }\n this.element.classList.add('e-spin-' + position.toLowerCase());\n };\n ProgressButton.prototype.createProgress = function () {\n this.element.appendChild(this.createElement('span', { className: PROGRESS }));\n };\n ProgressButton.prototype.setContent = function () {\n var cont;\n cont = this.element.innerHTML;\n if (this.enableHtmlSanitizer) {\n cont = SanitizeHtmlHelper.sanitize(this.element.innerHTML);\n }\n this.element.innerHTML = '';\n this.element.appendChild(this.createElement('span', { className: CONTENTCLS, innerHTML: cont }));\n };\n ProgressButton.prototype.clickHandler = function () {\n if (this.element.classList.contains(PROGRESSACTIVE)) {\n return;\n }\n this.startProgress();\n };\n ProgressButton.prototype.startProgress = function (percent, progressTime) {\n var clsList = this.element.classList;\n var isVertical = clsList.contains('e-vertical');\n clsList.add(PROGRESSACTIVE);\n if (!(clsList.contains(HIDESPINNER))) {\n showSpinner(this.element.querySelector('.e-spinner'));\n }\n this.startAnimate(Date.now(), progressTime ? progressTime : 0, progressTime ? Date.now() - (this.duration * 1 / 100) : Date.now(), percent ? percent : 0, 0, this.step, 0, isVertical);\n this.startContAnimate();\n };\n ProgressButton.prototype.startAnimate = function (timestamp, progressTime, prevTime, percent, prevPercent, step, prevProgressTime, isVertical) {\n var _this = this;\n try {\n var timeDiff = timestamp - prevTime;\n var stepTime = this.duration * step / 100;\n var timeDiffBuffer_1 = timeDiff ? (timeDiff < stepTime ? timeDiff - stepTime : timeDiff % stepTime) : 0;\n this.progressTime = progressTime = progressTime + timeDiff - timeDiffBuffer_1;\n prevTime = timestamp - timeDiffBuffer_1;\n percent = percent + (timeDiff - timeDiffBuffer_1) / this.duration * 100;\n prevPercent = ((progressTime - prevProgressTime) % stepTime === 0 || percent === 100) ? percent : prevPercent;\n var args = { percent: prevPercent, currentDuration: progressTime, step: step };\n this.eIsVertical = isVertical;\n if (percent === 0) {\n this.trigger('begin', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n }\n else if (percent === 100 || progressTime === this.duration) {\n this.trigger('end', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n }\n else {\n this.trigger('progress', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n }\n }\n catch (e) {\n cancelAnimationFrame(this.timerId);\n this.trigger('fail', e);\n }\n };\n ProgressButton.prototype.successCallback = function (args, perc, pPerc, prgTim, pPrgTim, timDif, pTim) {\n var _this = this;\n var percent = perc;\n var prevPercent = pPerc;\n var timeDiffBuffer = timDif;\n var progressTime = prgTim;\n var prevProgressTime = pPrgTim;\n var prevTime = pTim;\n var isVertical = this.eIsVertical;\n if (percent !== args.percent && args.percent !== prevPercent) {\n percent = args.percent;\n }\n this.percent = percent;\n this.step = args.step;\n if ((progressTime - prevProgressTime) % (this.duration * args.step / 100) === 0 || percent === 100) {\n this.timerId = requestAnimationFrame(function () {\n if (_this.enableProgress && _this.getProgress()) {\n _this.getProgress().style[isVertical ? 'height' : 'width'] = percent + '%';\n }\n _this.element.setAttribute('aria-valuenow', percent.toString());\n });\n prevPercent = percent;\n prevProgressTime = progressTime;\n }\n if (!this.isPaused) {\n if (progressTime < this.duration && percent < 100) {\n this.interval = window.setTimeout(function () {\n _this.startAnimate(Date.now(), progressTime, prevTime, percent, prevPercent, args.step, prevProgressTime, isVertical);\n }, (this.duration / 100) - timeDiffBuffer);\n }\n else {\n this.interval = window.setTimeout(function () {\n _this.progressTime = _this.percent = 0;\n if (_this.enableProgress && _this.getProgress()) {\n _this.getProgress().style[isVertical ? 'height' : 'width'] = '0%';\n }\n _this.element.setAttribute('aria-valuenow', '0');\n _this.hideSpin();\n }, 100);\n }\n }\n };\n ProgressButton.prototype.startContAnimate = function () {\n var _this = this;\n var ele = this.element.getElementsByClassName(CONTENTCLS)[0];\n if (this.animationSettings.effect !== 'None') {\n (new Animation({})).animate(ele, {\n duration: (this.animationSettings.duration === 0 && animationMode === 'Enable') ? 400 : this.animationSettings.duration,\n name: 'Progress' + this.animationSettings.effect,\n timingFunction: this.animationSettings.easing,\n begin: function () {\n if (_this.spinSettings.position === 'Center') {\n _this.setSpinnerSize();\n }\n },\n end: function () {\n ele.classList.add('e-animate-end');\n }\n });\n }\n else if (this.spinSettings.position === 'Center') {\n this.setSpinnerSize();\n }\n };\n ProgressButton.prototype.finishProgress = function () {\n var clsList = this.element.classList;\n var isVertical = clsList.contains('e-vertical');\n clsList.add(PROGRESSACTIVE);\n var count = 100;\n for (var i = this.percent; i < count; i++) {\n i += 10;\n if (i > 100) {\n i = 100;\n }\n if (this.enableProgress && this.getProgress()) {\n this.getProgress().style[isVertical ? 'height' : 'width'] = (this.percent < 100) ? (i + '%') : '100%';\n }\n }\n this.element.setAttribute('aria-valuenow', '0');\n this.hideSpin();\n var args = { step: this.step, currentDuration: this.progressTime, percent: 100 };\n clearTimeout(this.interval);\n this.trigger('end', args);\n this.progressTime = this.percent = 0;\n };\n ProgressButton.prototype.setSpinnerSize = function () {\n var ele = this.element.getElementsByClassName(CONTENTCLS)[0];\n var spinner = this.getSpinner();\n spinner.style.width = Math.max(spinner.offsetWidth, ele.offsetWidth) + 'px';\n spinner.style.height = Math.max(spinner.offsetHeight, ele.offsetHeight) + 'px';\n ele.classList.add('e-cont-animate');\n };\n ProgressButton.prototype.hideSpin = function () {\n var cont = this.element.getElementsByClassName(CONTENTCLS)[0];\n if (!(this.element.classList.contains(HIDESPINNER))) {\n hideSpinner(this.element.querySelector('.e-spinner'));\n }\n this.element.classList.remove(PROGRESSACTIVE);\n if (this.animationSettings.effect !== 'None') {\n cont.classList.remove('e-animate-end');\n }\n if (this.spinSettings.position === 'Center') {\n var ele = this.getSpinner();\n cont.classList.remove('e-cont-animate');\n ele.style.width = 'auto';\n ele.style.height = 'auto';\n }\n };\n ProgressButton.prototype.setIconSpan = function () {\n var cont = this.element.getElementsByClassName(CONTENTCLS)[0];\n var iconSpan = this.element.getElementsByClassName('e-btn-icon')[0];\n if (cont.childNodes[0] && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n cont.insertBefore(iconSpan, cont.childNodes[0]);\n }\n else {\n cont.appendChild(iconSpan);\n }\n };\n ProgressButton.prototype.setAria = function () {\n attributes(this.element, {\n 'aria-label': this.element.textContent + ' progress'\n });\n };\n ProgressButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n };\n ProgressButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ProgressButtonModel} newProp - Specifies new properties\n * @param {ProgressButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n ProgressButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var ele = this.element;\n var isSpinning = false;\n var clsList = this.element.querySelector('.e-spinner-pane').classList;\n if (clsList.contains('e-spin-show')) {\n isSpinning = true;\n }\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 'content':\n this.setContent();\n this.createSpinner();\n if (isSpinning) {\n showSpinner(this.element.querySelector('.e-spinner'));\n isSpinning = false;\n }\n if (this.enableProgress) {\n this.createProgress();\n }\n ele.setAttribute('aria-label', ele.textContent + ' progress');\n break;\n case 'iconCss':\n if (!oldProp.iconCss) {\n this.setIconSpan();\n }\n break;\n case 'iconPosition':\n this.setIconSpan();\n break;\n case 'enableProgress':\n if (newProp.enableProgress) {\n this.createProgress();\n }\n else {\n remove(this.getProgress());\n }\n break;\n case 'spinSettings':\n if (newProp.spinSettings.position) {\n ele.classList.remove('e-spin-' + oldProp.spinSettings.position.toLowerCase());\n this.setSpinPosition(this.getSpinner());\n }\n if (newProp.spinSettings.template || newProp.spinSettings.width) {\n ele.removeChild(this.getSpinner());\n this.createSpinner();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to ProgressButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n ProgressButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate$3([\n Property(false)\n ], ProgressButton.prototype, \"enableProgress\", void 0);\n __decorate$3([\n Property(2000)\n ], ProgressButton.prototype, \"duration\", void 0);\n __decorate$3([\n Property('Left')\n ], ProgressButton.prototype, \"iconPosition\", void 0);\n __decorate$3([\n Property('')\n ], ProgressButton.prototype, \"iconCss\", void 0);\n __decorate$3([\n Property(false)\n ], ProgressButton.prototype, \"disabled\", void 0);\n __decorate$3([\n Property(false)\n ], ProgressButton.prototype, \"isPrimary\", void 0);\n __decorate$3([\n Property('')\n ], ProgressButton.prototype, \"cssClass\", void 0);\n __decorate$3([\n Property('')\n ], ProgressButton.prototype, \"content\", void 0);\n __decorate$3([\n Property(false)\n ], ProgressButton.prototype, \"isToggle\", void 0);\n __decorate$3([\n Property(true)\n ], ProgressButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$3([\n Complex({}, SpinSettings)\n ], ProgressButton.prototype, \"spinSettings\", void 0);\n __decorate$3([\n Complex({}, AnimationSettings)\n ], ProgressButton.prototype, \"animationSettings\", void 0);\n __decorate$3([\n Event()\n ], ProgressButton.prototype, \"created\", void 0);\n __decorate$3([\n Event()\n ], ProgressButton.prototype, \"begin\", void 0);\n __decorate$3([\n Event()\n ], ProgressButton.prototype, \"progress\", void 0);\n __decorate$3([\n Event()\n ], ProgressButton.prototype, \"end\", void 0);\n __decorate$3([\n Event()\n ], ProgressButton.prototype, \"fail\", void 0);\n ProgressButton = __decorate$3([\n NotifyPropertyChanges\n ], ProgressButton);\n return ProgressButton;\n}(Button));\n\nexport { AnimationSettings, Deferred, DropDownButton, DropDownMenuAnimationSettings, Item, ProgressButton, SpinSettings, SplitButton, createButtonGroup, getModel, setBlankIconStyle, upDownKeyHandler };\n","import { isNullOrUndefined, createElement, addClass, attributes, removeClass, formatUnit, remove, detach, classList, closest, getValue, setValue, L10n, getUniqueID, Internationalization, EventHandler, Browser, merge, getNumericObject, Property, Event, NotifyPropertyChanges, Component, extend, ChildProperty, setStyleAttribute, SanitizeHtmlHelper, initializeCSPTemplate, Collection, Complex, onIntlChange, select, selectAll, Base, KeyboardEvents, Ajax, append, Animation, compile, rippleEffect, getInstance } from '@syncfusion/ej2-base';\nimport { Tooltip, getZindexPartial, createSpinner, showSpinner, hideSpinner, isCollide, Popup } from '@syncfusion/ej2-popups';\nimport { SplitButton, Deferred, getModel } from '@syncfusion/ej2-splitbuttons';\n\n/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\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 */\nvar containerAttributes = ['title', 'style', 'class'];\n/**\n * Defines the constant focus class for the input element.\n */\nvar TEXTBOX_FOCUS = 'e-input-focus';\n/**\n * Base for Input creation through util methods.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nvar Input;\n(function (Input) {\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 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 && 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) &&\n !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);\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) &&\n !isNullOrUndefined(element.__eventHandlers)) {\n if (!isNullOrUndefined(element.__eventHandlers['clearClickHandler'])) {\n var clickHandlerEvent = element.__eventHandlers['clearClickHandler'].clickHandlerEvent;\n if (isBindClearAction === undefined || isBindClearAction) {\n if (!isNullOrUndefined(button)) {\n button.removeEventListener('click', clickHandlerEvent);\n }\n }\n delete element.__eventHandlers['clearClickHandler'];\n }\n if (!isNullOrUndefined(element.__eventHandlers['clearInputHandler'])\n && !isNullOrUndefined(element.__eventHandlers['clearFocusHandler'])\n && !isNullOrUndefined(element.__eventHandlers['clearBlurHandler'])) {\n var inputHandlerEvent = element.__eventHandlers['clearInputHandler'].inputHandlerEvent;\n var focusHandlerEvent = element.__eventHandlers['clearFocusHandler'].focusHandlerEvent;\n var blurHandlerEvent = element.__eventHandlers['clearBlurHandler'].blurHandlerEvent;\n element.removeEventListener('input', inputHandlerEvent);\n element.removeEventListener('focus', focusHandlerEvent);\n element.removeEventListener('blur', blurHandlerEvent);\n // Clean up stored Event functions\n delete element.__eventHandlers['clearInputHandler'];\n delete element.__eventHandlers['clearFocusHandler'];\n delete element.__eventHandlers['clearBlurHandler'];\n }\n }\n }\n function destroy(args, button) {\n if (button === void 0) { button = null; }\n unbindInitialEvent(args);\n if (args.floatLabelType === 'Auto') {\n unWireFloatLabelEvents(args);\n }\n if (args.properties.showClearButton) {\n unWireClearBtnEvents(args.element, button);\n }\n if (!isNullOrUndefined(args.buttons)) {\n _internalRipple(false, null, args.buttons);\n }\n unwireFloatingEvents(args.element);\n if (!isNullOrUndefined(args.element)) {\n delete args.element.__eventHandlers;\n if (args.element.classList.contains(CLASSNAMES.INPUT)) {\n args.element.classList.remove(CLASSNAMES.INPUT);\n }\n }\n }\n Input.destroy = destroy;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label, element);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if (floatLabelType !== 'Never') {\n calculateWidth(element, element.parentElement);\n }\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && !isNullOrUndefined(parentElement) && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n if (moduleName !== 'multiselect' && !_isElementVisible(element)) {\n return;\n }\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!isNullOrUndefined(container) && !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 var floatTextContent = parentElement.getElementsByClassName('e-float-text-content')[0];\n if (floatTextContent && floatTextContent.children[0]) {\n floatTextContent.children[0].textContent = placeholder;\n }\n else {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n }\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n var floatTextContent = parentElement.getElementsByClassName('e-float-text-content')[0];\n if (floatTextContent) {\n floatTextContent.children[0].textContent = '';\n }\n else {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\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 {Element} 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(), 10)].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(), 10)].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString(), 10)].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(), 10)].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString(), 10)].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 _isElementVisible(element) {\n if (!element) {\n return false;\n }\n // Check if the element or any of its parents are hidden using display: none\n var currentElement = element;\n while (currentElement && currentElement !== document.body) {\n var style = window.getComputedStyle(currentElement);\n if (style.display === 'none') {\n return false;\n }\n currentElement = currentElement.parentElement;\n }\n // If none of the elements have display: none, the element is considered visible\n return true;\n }\n function _onMouseDownRipple() {\n 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 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 function addIcon(position, icons, container, input, internalCreate) {\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 function prependSpan(iconClass, container, inputElement, internalCreateElement) {\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(), 10)];\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\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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 = /** @__PURE__ @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.preventChange = 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 (!this.element.hasAttribute('aria-labelledby') && !this.element.hasAttribute('placeholder') && !this.element.hasAttribute('aria-label')) {\n this.element.setAttribute('aria-label', 'numerictextbox');\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 _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 &&\n _this.decimals === 0 &&\n _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 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) ||\n ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) &&\n 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 }\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 if (!isNullOrUndefined(this.hiddenInput)) {\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 }\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('^\\\\s*(-)?(((\\\\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 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 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 /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n * @returns {string} - Returns the formatted value of the NumericTextBox.\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\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 /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the persisted data.\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\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));\n\n/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nvar ERROR$1 = 'e-error';\nvar INPUTGROUP = 'e-input-group';\nvar FLOATINPUT = 'e-float-input';\nvar UTILMASK = 'e-utility-mask';\nvar TOPLABEL = 'e-label-top';\nvar BOTTOMLABEL = 'e-label-bottom';\n/**\n * @hidden\n * Built-in masking elements collection.\n */\nvar regularExpressions = {\n '0': '[0-9]',\n '9': '[0-9 ]',\n '#': '[0-9 +-]',\n 'L': '[A-Za-z]',\n '?': '[A-Za-z ]',\n '&': '[^\\x7f ]+',\n 'C': '[^\\x7f]+',\n 'A': '[A-Za-z0-9]',\n 'a': '[A-Za-z0-9 ]'\n};\n/**\n * Generate required masking elements to the MaskedTextBox from user mask input.\n *\n * @hidden\n */\nfunction createMask() {\n attributes(this.element, {\n 'role': 'textbox', 'autocomplete': 'off', 'autocapitalize': 'off',\n 'spellcheck': 'false', 'aria-live': 'assertive'\n });\n if (this.mask) {\n var splitMask = this.mask.split(']');\n for (var i = 0; i < splitMask.length; i++) {\n if (splitMask[i][splitMask[i].length - 1] === '\\\\') {\n splitMask[i] = splitMask[i] + ']';\n var splitInnerMask = splitMask[i].split('[');\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j][splitInnerMask[j].length - 1] === '\\\\') {\n splitInnerMask[j] = splitInnerMask[j] + '[';\n }\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n else {\n var splitInnerMask = splitMask[i].split('[');\n if (splitInnerMask.length > 1) {\n var chkSpace = false;\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j] === '\\\\') {\n this.customRegExpCollec.push('[');\n this.hiddenMask += splitInnerMask[j] + '[';\n }\n else if (splitInnerMask[j] === '') {\n chkSpace = true;\n }\n else if ((splitInnerMask[j] !== '' && chkSpace) || j === splitInnerMask.length - 1) {\n this.customRegExpCollec.push('[' + splitInnerMask[j] + ']');\n this.hiddenMask += this.promptChar;\n chkSpace = false;\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[0]);\n }\n }\n }\n this.escapeMaskValue = this.hiddenMask;\n this.promptMask = this.hiddenMask.replace(/[09?LCAa#&]/g, this.promptChar);\n if (!isNullOrUndefined(this.customCharacters)) {\n for (var i = 0; i < this.promptMask.length; i++) {\n if (!isNullOrUndefined(this.customCharacters[this.promptMask[i]])) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n this.promptMask = this.promptMask.replace(new RegExp(this.promptMask[i], 'g'), this.promptChar);\n }\n }\n }\n var escapeNumber = 0;\n if (this.hiddenMask.match(new RegExp(/\\\\/))) {\n for (var i = 0; i < this.hiddenMask.length; i++) {\n var j = 0;\n if (i >= 1) {\n j = i;\n }\n escapeNumber = this.hiddenMask.length - this.promptMask.length;\n j = j - escapeNumber;\n if ((i > 0 && this.hiddenMask[i - 1] !== '\\\\') && (this.hiddenMask[i] === '>' ||\n this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|')) {\n this.promptMask = this.promptMask.substring(0, j) +\n this.promptMask.substring((i + 1) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) +\n this.escapeMaskValue.substring((i + 1) - escapeNumber, this.escapeMaskValue.length);\n }\n if (this.hiddenMask[i] === '\\\\') {\n this.promptMask = this.promptMask.substring(0, j) + this.hiddenMask[i + 1] +\n this.promptMask.substring((i + 2) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) + this.escapeMaskValue[i + 1] +\n this.escapeMaskValue.substring((i + 2) - escapeNumber, this.escapeMaskValue.length);\n }\n }\n }\n else {\n this.promptMask = this.promptMask.replace(/[>|<]/g, '');\n this.escapeMaskValue = this.hiddenMask.replace(/[>|<]/g, '');\n }\n attributes(this.element, { 'aria-invalid': 'false' });\n }\n}\n/**\n * Apply mask ability with masking elements to the MaskedTextBox.\n *\n * @hidden\n */\nfunction applyMask() {\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, this.value);\n}\n/**\n * To wire required events to the MaskedTextBox.\n *\n * @hidden\n */\nfunction wireEvents() {\n EventHandler.add(this.element, 'keydown', maskInputKeyDownHandler, this);\n EventHandler.add(this.element, 'keypress', maskInputKeyPressHandler, this);\n EventHandler.add(this.element, 'keyup', maskInputKeyUpHandler, this);\n EventHandler.add(this.element, 'input', maskInputHandler, this);\n EventHandler.add(this.element, 'focus', maskInputFocusHandler, this);\n EventHandler.add(this.element, 'blur', maskInputBlurHandler, this);\n EventHandler.add(this.element, 'paste', maskInputPasteHandler, this);\n EventHandler.add(this.element, 'cut', maskInputCutHandler, this);\n EventHandler.add(this.element, 'drop', maskInputDropHandler, this);\n EventHandler.add(this.element, 'mousedown', maskInputMouseDownHandler, this);\n EventHandler.add(this.element, 'mouseup', maskInputMouseUpHandler, this);\n if (this.enabled) {\n bindClearEvent.call(this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', resetFormHandler, this);\n }\n }\n}\n/**\n * To unwire events attached to the MaskedTextBox.\n *\n * @hidden\n */\nfunction unwireEvents() {\n EventHandler.remove(this.element, 'keydown', maskInputKeyDownHandler);\n EventHandler.remove(this.element, 'keypress', maskInputKeyPressHandler);\n EventHandler.remove(this.element, 'keyup', maskInputKeyUpHandler);\n EventHandler.remove(this.element, 'input', maskInputHandler);\n EventHandler.remove(this.element, 'focus', maskInputFocusHandler);\n EventHandler.remove(this.element, 'blur', maskInputBlurHandler);\n EventHandler.remove(this.element, 'paste', maskInputPasteHandler);\n EventHandler.remove(this.element, 'cut', maskInputCutHandler);\n EventHandler.remove(this.element, 'drop', maskInputDropHandler);\n EventHandler.remove(this.element, 'mousedown', maskInputMouseDownHandler);\n EventHandler.remove(this.element, 'mouseup', maskInputMouseUpHandler);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', resetFormHandler);\n }\n}\n/**\n * To bind required events to the MaskedTextBox clearButton.\n *\n * @hidden\n */\nfunction bindClearEvent() {\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown touchstart', resetHandler, this);\n }\n}\nfunction resetHandler(e) {\n e.preventDefault();\n if (!this.inputObj.clearButton.classList.contains('e-clear-icon-hide') || (this.inputObj.container.classList.contains('e-static-clear'))) {\n clear.call(this, e);\n this.value = '';\n }\n}\nfunction clear(event) {\n var value = this.element.value;\n setElementValue.call(this, this.promptMask);\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n triggerMaskChangeEvent.call(this, event, value);\n this.element.setSelectionRange(0, 0);\n}\nfunction resetFormHandler() {\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n setElementValue.call(this, this.promptMask);\n }\n else {\n this.value = this.initInputValue;\n }\n}\n/**\n * To get masked value from the MaskedTextBox.\n *\n * @hidden\n */\nfunction unstrippedValue(element) {\n return element.value;\n}\n/**\n * To extract raw value from the MaskedTextBox.\n *\n * @hidden\n */\nfunction strippedValue(element, maskValues) {\n var value = '';\n var k = 0;\n var checkMask = false;\n var maskValue = (!isNullOrUndefined(maskValues)) ? maskValues : (!isNullOrUndefined(element) &&\n !isNullOrUndefined(this)) ? element.value : maskValues;\n if (maskValue !== this.promptMask) {\n for (var i = 0; i < this.customRegExpCollec.length; i++) {\n if (checkMask) {\n checkMask = false;\n }\n if (this.customRegExpCollec[k] === '>' || this.customRegExpCollec[k] === '<' ||\n this.customRegExpCollec[k] === '|' || this.customRegExpCollec[k] === '\\\\') {\n --i;\n checkMask = true;\n }\n if (!checkMask) {\n if ((maskValue[i] !== this.promptChar) && (!isNullOrUndefined(this.customRegExpCollec[k]) &&\n ((this._callPasteHandler || (!isNullOrUndefined(this.regExpCollec[this.customRegExpCollec[k]]) &&\n !this.maskedRegExp.includes(this.customRegExpCollec[k]))) ||\n (this.customRegExpCollec[k].length > 2 && this.customRegExpCollec[k][0] === '[' &&\n this.customRegExpCollec[k][this.customRegExpCollec[k].length - 1] === ']') ||\n (!isNullOrUndefined(this.customCharacters) &&\n (!isNullOrUndefined(this.customCharacters[this.customRegExpCollec[k]]))))) && (maskValue !== '')) {\n value += maskValue[i];\n }\n }\n ++k;\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n value = maskValue;\n }\n return value;\n}\nfunction pushIntoRegExpCollec(value) {\n for (var k = 0; k < value.length; k++) {\n this.hiddenMask += value[k];\n if (value[k] !== '\\\\') {\n this.customRegExpCollec.push(value[k]);\n }\n else if (value[k] === '\\\\' && !isNullOrUndefined(this.regExpCollec[value[k + 1]])) {\n this.maskedRegExp.push(value[k + 1]);\n }\n }\n}\nfunction maskInputMouseDownHandler() {\n this.isClicked = true;\n}\nfunction maskInputMouseUpHandler() {\n this.isClicked = false;\n}\nfunction maskInputFocusHandler(event) {\n var _this = this;\n var inputElement = this.element;\n var startIndex = 0;\n var modelValue = strippedValue.call(this, inputElement);\n var toAllowForward = false;\n var toAllowBackward = false;\n var eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n if (!this.isClicked) {\n triggerFocus.call(this, eventArgs, inputElement);\n }\n if (this.mask) {\n if (!(!(modelValue === null || modelValue === '') || this.floatLabelType === 'Always' ||\n this.placeholder === null || this.placeholder === '')) {\n inputElement.value = this.promptMask;\n }\n setTimeout(function () {\n if (inputElement.selectionStart === _this.promptMask.length ||\n inputElement.value[inputElement.selectionStart] === _this.promptChar) {\n toAllowForward = true;\n }\n else {\n for (var i = inputElement.selectionStart; i < _this.promptMask.length; i++) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowForward = false;\n break;\n }\n }\n else {\n toAllowForward = true;\n break;\n }\n }\n }\n });\n setTimeout(function () {\n var backSelectionStart = inputElement.selectionStart - 1;\n if (backSelectionStart === _this.promptMask.length - 1 ||\n inputElement.value[backSelectionStart] === _this.promptChar) {\n toAllowBackward = true;\n }\n else {\n for (var i = backSelectionStart; i >= 0; i--) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowBackward = false;\n break;\n }\n }\n else {\n toAllowBackward = true;\n break;\n }\n }\n }\n });\n if ((this.isClicked || (this.floatLabelType !== 'Always' &&\n ((modelValue === null || modelValue === '') &&\n (this.placeholder !== null && this.placeholder !== ''))))) {\n for (startIndex = 0; startIndex < this.promptMask.length; startIndex++) {\n if (inputElement.value[startIndex] === this.promptChar) {\n setTimeout(function () {\n if (toAllowForward || toAllowBackward) {\n inputElement.selectionEnd = startIndex;\n inputElement.selectionStart = startIndex;\n }\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: _this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(_this.inputObj) ? _this.inputObj.container : _this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(_this, eventArgs, inputElement);\n }, 110);\n break;\n }\n }\n if (isNullOrUndefined(inputElement.value.match(escapeRegExp(this.promptChar)))) {\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(this, eventArgs, inputElement);\n }\n this.isClicked = false;\n }\n }\n}\nfunction triggerFocus(eventArgs, inputElement) {\n this.trigger('focus', eventArgs, function (eventArgs) {\n inputElement.selectionStart = eventArgs.selectionStart;\n inputElement.selectionEnd = eventArgs.selectionEnd;\n });\n}\nfunction escapeRegExp(text) {\n return !isNullOrUndefined(text) ? text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&') : text;\n}\nfunction maskInputBlurHandler(event) {\n this.blurEventArgs = {\n event: event,\n value: this.value,\n maskedValue: this.element.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj\n };\n this.trigger('blur', this.blurEventArgs);\n if (this.mask) {\n this.isFocus = false;\n if (this.placeholder && this.element.value === this.promptMask && this.floatLabelType !== 'Always') {\n setElementValue.call(this, '');\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.floatLabelType === 'Auto' && !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL)) {\n removeClass([labelElement], TOPLABEL);\n }\n }\n }\n}\nfunction maskInputPasteHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var sIndex_1 = this.element.selectionStart;\n var eIndex_1 = this.element.selectionEnd;\n var oldValue_1 = this.element.value;\n setElementValue.call(this, '');\n this._callPasteHandler = true;\n setTimeout(function () {\n var value = _this.element.value.replace(/ /g, '');\n if (_this.redoCollec.length > 0 && _this.redoCollec[0].value === _this.element.value) {\n value = strippedValue.call(_this, _this.element);\n }\n setElementValue.call(_this, oldValue_1);\n _this.element.selectionStart = sIndex_1;\n _this.element.selectionEnd = eIndex_1;\n var i = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i], false, null);\n ++i;\n } while (i < value.length);\n _this.maskKeyPress = false;\n _this._callPasteHandler = false;\n if (_this.element.value === oldValue_1) {\n var i_1 = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i_1], false, null);\n ++i_1;\n } while (i_1 < value.length);\n _this.maskKeyPress = false;\n }\n else {\n triggerMaskChangeEvent.call(_this, event, oldValue_1);\n }\n }, 1);\n }\n}\nfunction maskInputCutHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var preValue_1 = this.element.value;\n var sIndex_2 = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd });\n var value_1 = this.element.value.substring(0, sIndex_2) + this.promptMask.substring(sIndex_2, eIndex) +\n this.element.value.substring(eIndex);\n setTimeout(function () {\n setElementValue.call(_this, value_1);\n _this.element.selectionStart = _this.element.selectionEnd = sIndex_2;\n if (_this.element.value !== preValue_1) {\n triggerMaskChangeEvent.call(_this, event, null);\n }\n }, 0);\n }\n}\nfunction maskInputDropHandler(event) {\n event.preventDefault();\n}\nfunction maskInputHandler(event) {\n if (Browser.isIE === true && this.element.value === '' && this.floatLabelType === 'Never') {\n return;\n }\n var eventArgs = { ctrlKey: false, keyCode: 229 };\n extend(event, eventArgs);\n if (this.mask) {\n if (this.element.value === '') {\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (!this._callPasteHandler) {\n removeMaskInputValues.call(this, event);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var value = this.element.value.substring(startIndex - addedValues, startIndex);\n this.maskKeyPress = false;\n var i = 0;\n do {\n validateValue.call(this, value[i], event.ctrlKey, event);\n ++i;\n } while (i < value.length);\n if (this.element.value !== this.preEleVal) {\n triggerMaskChangeEvent.call(this, event, null);\n }\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (val === '') {\n setElementValue.call(this, this.promptMask);\n this.element.setSelectionRange(0, 0);\n }\n }\n}\nfunction maskInputKeyDownHandler(event) {\n if (this.mask && !this.readonly) {\n if (event.keyCode !== 229) {\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n event.preventDefault();\n }\n removeMaskInputValues.call(this, event);\n }\n var startValue = this.element.value;\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n var collec = void 0;\n if (event.keyCode === 90 && this.undoCollec.length > 0 && startValue !== this.undoCollec[this.undoCollec.length - 1].value) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.undoCollec.splice(this.undoCollec.length - 1, 1);\n }\n else if (event.keyCode === 89 && this.redoCollec.length > 0 && startValue !== this.redoCollec[0].value) {\n collec = this.redoCollec[0];\n this.undoCollec.push({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.redoCollec.splice(0, 1);\n }\n }\n }\n}\nfunction mobileRemoveFunction() {\n var collec;\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n collec = this.redoCollec[0];\n setElementValue.call(this, collec.value);\n if ((collec.startIndex - sIndex) === 1) {\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n }\n else {\n this.element.selectionStart = sIndex + 1;\n this.element.selectionEnd = eIndex + 1;\n }\n }\n else {\n setElementValue.call(this, this.promptMask);\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n }\n}\nfunction autoFillMaskInputValues(isRemove, oldEventVal, event) {\n if (event.type === 'input') {\n isRemove = false;\n oldEventVal = this.element.value;\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, oldEventVal);\n }\n return isRemove;\n}\nfunction removeMaskInputValues(event) {\n var isRemove = false;\n var oldEventVal;\n var isDeleted = false;\n if (this.element.value.length < this.promptMask.length) {\n isRemove = true;\n oldEventVal = this.element.value;\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n mobileRemoveFunction.call(this);\n }\n if (this.element.value.length >= this.promptMask.length && event.type === 'input') {\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n }\n var initStartIndex = this.element.selectionStart;\n var initEndIndex = this.element.selectionEnd;\n var startIndex = this.element.selectionStart;\n var endIndex = this.element.selectionEnd;\n var maskValue = this.hiddenMask.replace(/[>|\\\\<]/g, '');\n var curMask = maskValue[startIndex - 1];\n var deleteEndIndex = this.element.selectionEnd;\n if (isRemove || event.keyCode === 8 || event.keyCode === 46) {\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: endIndex });\n var multipleDel = false;\n var preValue = this.element.value;\n if (startIndex > 0 || ((event.keyCode === 8 || event.keyCode === 46) && startIndex < this.element.value.length\n && ((this.element.selectionEnd - startIndex) !== this.element.value.length))) {\n var index = startIndex;\n if (startIndex !== endIndex) {\n startIndex = endIndex;\n if (event.keyCode === 46) {\n multipleDel = true;\n }\n }\n else if (event.keyCode === 46) {\n ++index;\n }\n else {\n --index;\n }\n for (var k = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? k > index : k < index; (event.keyCode === 8 || isRemove || multipleDel) ? k-- : k++) {\n for (var i = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? i > 0 : i < this.element.value.length; (event.keyCode === 8 || isRemove || multipleDel) ? i-- : i++) {\n var sIndex = void 0;\n if (((event.keyCode === 8 || multipleDel) && ((initStartIndex !== initEndIndex && initStartIndex !== startIndex) ||\n (initStartIndex === initEndIndex))) || isRemove) {\n curMask = maskValue[i - 1];\n sIndex = startIndex - 1;\n }\n else {\n curMask = maskValue[i];\n sIndex = startIndex;\n ++startIndex;\n }\n var oldValue = this.element.value[sIndex];\n if ((isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && (!isNullOrUndefined(this.customCharacters)\n && isNullOrUndefined(this.customCharacters[\"\" + curMask]))\n && ((this.hiddenMask[sIndex] !== this.promptChar && this.customRegExpCollec[sIndex][0] !== '['\n && this.customRegExpCollec[sIndex][this.customRegExpCollec[sIndex].length - 1] !== ']')))\n || (this.promptMask[sIndex] !== this.promptChar && isNullOrUndefined(this.customCharacters))) {\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n ++this.element.selectionStart;\n }\n }\n else {\n var value = this.element.value;\n var prompt_1 = this.promptChar;\n var elementValue = value.substring(0, sIndex) + prompt_1 + value.substring(startIndex, value.length);\n setElementValue.call(this, elementValue);\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n sIndex++;\n }\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n isDeleted = true;\n }\n startIndex = this.element.selectionStart;\n if ((!isDeleted && event.keyCode === 8) || multipleDel || (!isDeleted && !(event.keyCode === 46))) {\n sIndex = startIndex - 1;\n }\n else {\n sIndex = startIndex;\n isDeleted = false;\n }\n oldValue = this.element.value[sIndex];\n if (((initStartIndex !== initEndIndex) && (this.element.selectionStart === initStartIndex))\n || (this.promptMask[sIndex] === this.promptChar) || ((oldValue !== this.promptMask[sIndex]) &&\n (this.promptMask[sIndex] !== this.promptChar) && !isNullOrUndefined(this.customCharacters))) {\n break;\n }\n }\n }\n }\n if (event.keyCode === 46 && multipleDel && isDeleted) {\n this.element.selectionStart = this.element.selectionEnd = deleteEndIndex;\n }\n if (this.element.selectionStart === 0 && (this.element.selectionEnd === this.element.value.length)) {\n setElementValue.call(this, this.promptMask);\n event.preventDefault();\n this.element.selectionStart = this.element.selectionEnd = startIndex;\n }\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n if (this.element.value !== preValue) {\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n}\nfunction maskInputKeyPressHandler(event) {\n if (this.mask && !this.readonly) {\n var oldValue = this.element.value;\n if (!(event.ctrlKey || event.metaKey) || ((event.ctrlKey || event.metaKey) && event.code !== 'KeyA' && event.code !== 'KeyY'\n && event.code !== 'KeyZ' && event.code !== 'KeyX' && event.code !== 'KeyC' && event.code !== 'KeyV')) {\n this.maskKeyPress = true;\n var key = event.key;\n if (key === 'Spacebar') {\n key = String.fromCharCode(event.keyCode);\n }\n if (!key) {\n this.isIosInvalid = true;\n validateValue.call(this, String.fromCharCode(event.keyCode), event.ctrlKey, event);\n event.preventDefault();\n this.isIosInvalid = false;\n }\n else if (key && key.length === 1) {\n validateValue.call(this, key, event.ctrlKey, event);\n event.preventDefault();\n }\n if (event.keyCode === 32 && key === ' ' && this.promptChar === ' ') {\n this.element.selectionStart = this.element.selectionEnd = this.element.selectionStart - key.length;\n }\n }\n if (this.element.value !== oldValue) {\n triggerMaskChangeEvent.call(this, event, oldValue);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction triggerMaskChangeEvent(event, oldValue) {\n var prevOnChange = this.isProtectedOnChange;\n if (!isNullOrUndefined(this.changeEventArgs) && !this.isInitial) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.element.value, maskedValue: this.element.value, isInteraction: false, isInteracted: false };\n if (this.mask) {\n this.changeEventArgs.value = strippedValue.call(this, this.element);\n }\n if (!isNullOrUndefined(event)) {\n this.changeEventArgs.isInteracted = true;\n this.changeEventArgs.isInteraction = true;\n this.changeEventArgs.event = event;\n }\n this.isProtectedOnChange = true;\n this.value = this.changeEventArgs.value;\n this.isProtectedOnChange = prevOnChange;\n merge(eventArgs, this.changeEventArgs);\n /* istanbul ignore next */\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n this.preEleVal = this.element.value;\n this.prevValue = strippedValue.call(this, this.element);\n}\nfunction maskInputKeyUpHandler(event) {\n if (this.mask && !this.readonly) {\n var collec = void 0;\n if (!this.maskKeyPress && event.keyCode === 229) {\n var oldEventVal = void 0;\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var val_1 = this.element.value.substring(startIndex - addedValues, startIndex);\n if (this.undoCollec.length > 0) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n var startIndex_1 = this.element.selectionStart;\n oldEventVal = collec.value;\n var oldVal = collec.value.substring(startIndex_1 - addedValues, startIndex_1);\n collec = this.redoCollec[0];\n val_1 = val_1.trim();\n var isSpace = Browser.isAndroid && val_1 === '';\n if (!isSpace && oldVal !== val_1 && collec.value.substring(startIndex_1 - addedValues, startIndex_1) !== val_1) {\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n else if (isSpace) {\n preventUnsupportedValues.call(this, event, startIndex_1 - 1, this.element.selectionEnd - 1, val_1, event.ctrlKey, false);\n }\n }\n else {\n oldEventVal = this.promptMask;\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n this.maskKeyPress = false;\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n else {\n removeMaskError.call(this);\n }\n var val = strippedValue.call(this, this.element);\n if (!((this.element.selectionStart === 0) && (this.promptMask === this.element.value) && val === '')\n || (val === '' && this.value !== val)) {\n this.prevValue = val;\n this.value = val;\n }\n }\n else {\n triggerMaskChangeEvent.call(this, event);\n }\n if (this.element.selectionStart === 0 && this.element.selectionEnd === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var temp_1 = this.element;\n setTimeout(function () {\n temp_1.setSelectionRange(0, 0);\n }, 0);\n }\n}\nfunction mobileSwipeCheck(key) {\n if (key.length > 1 && ((this.promptMask.length + key.length) < this.element.value.length)) {\n var elementValue = this.redoCollec[0].value.substring(0, this.redoCollec[0].startIndex) + key +\n this.redoCollec[0].value.substring(this.redoCollec[0].startIndex, this.redoCollec[0].value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = this.redoCollec[0].startIndex + key.length;\n }\n this.element.selectionStart = this.element.selectionStart - key.length;\n this.element.selectionEnd = this.element.selectionEnd - key.length;\n}\nfunction mobileValidation(key) {\n if (!this.maskKeyPress) {\n mobileSwipeCheck.call(this, key);\n }\n}\nfunction validateValue(key, isCtrlKey, event) {\n mobileValidation.call(this, key);\n if (isNullOrUndefined(this) || isNullOrUndefined(key)) {\n return;\n }\n var startIndex = this.element.selectionStart;\n var initStartIndex = startIndex;\n var curMask;\n var allowText = false;\n var value = this.element.value;\n var eventOldVal;\n var prevSupport = false;\n var isEqualVal = false;\n for (var k = 0; k < key.length; k++) {\n var keyValue = key[k];\n startIndex = this.element.selectionStart;\n if (!this.maskKeyPress && initStartIndex === startIndex) {\n startIndex = startIndex + k;\n }\n if ((!this.maskKeyPress || startIndex < this.promptMask.length)) {\n for (var i = startIndex; i < this.promptMask.length; i++) {\n var maskValue = this.escapeMaskValue;\n curMask = maskValue[startIndex];\n if (this.hiddenMask[startIndex] === '\\\\' && this.hiddenMask[startIndex + 1] === key) {\n isEqualVal = true;\n }\n if ((isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && (isNullOrUndefined(this.customCharacters)\n || (!isNullOrUndefined(this.customCharacters) && isNullOrUndefined(this.customCharacters[\"\" + curMask])))\n && ((this.hiddenMask[startIndex] !== this.promptChar && this.customRegExpCollec[startIndex][0] !== '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] !== ']')))\n || ((this.promptMask[startIndex] !== this.promptChar) && isNullOrUndefined(this.customCharacters))\n || (this.promptChar === curMask && this.escapeMaskValue === this.mask)) {\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n startIndex = this.element.selectionStart;\n curMask = this.hiddenMask[startIndex];\n }\n }\n if (!isNullOrUndefined(this.customCharacters) && !isNullOrUndefined(this.customCharacters[\"\" + curMask])) {\n var customValStr = this.customCharacters[\"\" + curMask];\n var customValArr = customValStr.split(',');\n for (var i = 0; i < customValArr.length; i++) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n if (keyValue.match(new RegExp('[' + customValArr[i] + ']'))) {\n allowText = true;\n break;\n }\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n }\n else if (!isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && keyValue.match(new RegExp(this.regExpCollec[\"\" + curMask]))\n && this.promptMask[startIndex] === this.promptChar) {\n allowText = true;\n }\n else if (this.promptMask[startIndex] === this.promptChar && this.customRegExpCollec[startIndex][0] === '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] === ']'\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n && keyValue.match(new RegExp(this.customRegExpCollec[startIndex]))) {\n allowText = true;\n }\n if ((!this.maskKeyPress || startIndex < this.hiddenMask.length) && allowText) {\n if (k === 0) {\n if (this.maskKeyPress) {\n this.undoCollec.push({ value: value, startIndex: startIndex, endIndex: startIndex });\n }\n else {\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n eventOldVal = this.redoCollec[0].value;\n setElementValue.call(this, eventOldVal);\n this.undoCollec.push(this.redoCollec[0]);\n }\n else {\n this.undoCollec.push({ value: this.promptMask, startIndex: startIndex, endIndex: startIndex });\n eventOldVal = this.promptMask;\n setElementValue.call(this, eventOldVal);\n }\n this.element.selectionStart = sIndex;\n this.element.selectionEnd = eIndex;\n }\n }\n startIndex = this.element.selectionStart;\n applySupportedValues.call(this, event, startIndex, keyValue, eventOldVal, isEqualVal);\n prevSupport = true;\n if (k === key.length - 1) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n allowText = false;\n }\n else {\n startIndex = this.element.selectionStart;\n preventUnsupportedValues.call(this, event, startIndex, initStartIndex, key, isCtrlKey, prevSupport);\n }\n if (k === key.length - 1 && !allowText) {\n if (!Browser.isAndroid || (Browser.isAndroid && startIndex < this.promptMask.length)) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n }\n }\n else {\n if (key.length === 1 && !isCtrlKey && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n }\n }\n}\nfunction applySupportedValues(event, startIndex, keyValue, eventOldVal, isEqualVal) {\n if (this.hiddenMask.length > this.promptMask.length) {\n keyValue = changeToLowerUpperCase.call(this, keyValue, this.element.value);\n }\n if (!isEqualVal) {\n var value = this.element.value;\n var elementValue = value.substring(0, startIndex) + keyValue + value.substring(startIndex + 1, value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n }\n}\nfunction preventUnsupportedValues(event, sIdx, idx, key, ctrl, chkSupport) {\n if (!this.maskKeyPress) {\n var value = this.element.value;\n if (sIdx >= this.promptMask.length) {\n setElementValue.call(this, value.substring(0, sIdx));\n }\n else {\n if (idx === sIdx) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx + 1, value.length));\n }\n else {\n if (this.promptMask.length === this.element.value.length) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx, value.length));\n }\n else {\n setElementValue.call(this, value.substring(0, idx) + value.substring(idx + 1, value.length));\n }\n }\n this.element.selectionStart = this.element.selectionEnd = (chkSupport ||\n this.element.value[idx] !== this.promptChar) ? sIdx : idx;\n }\n addMaskErrorClass.call(this);\n }\n if (key.length === 1 && !ctrl && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n}\nfunction addMaskErrorClass() {\n var _this = this;\n var parentElement = this.element.parentNode;\n var timer = 200;\n if (parentElement.classList.contains(INPUTGROUP) || parentElement.classList.contains(FLOATINPUT)) {\n addClass([parentElement], ERROR$1);\n }\n else {\n addClass([this.element], ERROR$1);\n }\n if (this.isIosInvalid === true) {\n timer = 400;\n }\n attributes(this.element, { 'aria-invalid': 'true' });\n setTimeout(function () {\n if (!_this.maskKeyPress) {\n removeMaskError.call(_this);\n }\n }, timer);\n}\nfunction removeMaskError() {\n var parentElement = this.element.parentNode;\n if (!isNullOrUndefined(parentElement)) {\n removeClass([parentElement], ERROR$1);\n }\n removeClass([this.element], ERROR$1);\n attributes(this.element, { 'aria-invalid': 'false' });\n}\n/**\n * Validates user input using masking elements '<' , '>' and '|'.\n *\n * @hidden\n */\nfunction changeToLowerUpperCase(key, value) {\n var promptMask;\n var i;\n var curVal = value;\n var caseCount = 0;\n for (i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === '\\\\') {\n promptMask = curVal.substring(0, i) + '\\\\' + curVal.substring(i, curVal.length);\n }\n if (this.hiddenMask[i] === '>' || this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|') {\n if (this.hiddenMask[i] !== curVal[i]) {\n promptMask = curVal.substring(0, i) + this.hiddenMask[i] + curVal.substring(i, curVal.length);\n }\n ++caseCount;\n }\n if (promptMask) {\n if (((promptMask[i] === this.promptChar) && (i > this.element.selectionStart)) ||\n (this.element.value.indexOf(this.promptChar) < 0 && (this.element.selectionStart + caseCount) === i)) {\n caseCount = 0;\n break;\n }\n curVal = promptMask;\n }\n }\n while (i >= 0 && promptMask) {\n if (i === 0 || promptMask[i - 1] !== '\\\\') {\n if (promptMask[i] === '>') {\n key = key.toUpperCase();\n break;\n }\n else if (promptMask[i] === '<') {\n key = key.toLowerCase();\n break;\n }\n else if (promptMask[i] === '|') {\n break;\n }\n }\n --i;\n }\n return key;\n}\n/**\n * To set updated values in the MaskedTextBox.\n *\n * @hidden\n */\nfunction setMaskValue(val) {\n if (this.mask && val !== undefined && (this.prevValue === undefined || this.prevValue !== val)) {\n this.maskKeyPress = true;\n setElementValue.call(this, this.promptMask);\n if (val !== '' && !(val === null && this.floatLabelType === 'Never' && this.placeholder)) {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\n }\n if (val !== null) {\n for (var i = 0; i < val.length; i++) {\n validateValue.call(this, val[i], false, null);\n }\n }\n var newVal = strippedValue.call(this, this.element);\n this.prevValue = newVal;\n this.value = newVal;\n triggerMaskChangeEvent.call(this, null, null);\n this.maskKeyPress = false;\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.element.value === this.promptMask && this.floatLabelType === 'Auto' && this.placeholder &&\n !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL) && !this.isFocus) {\n removeClass([labelElement], TOPLABEL);\n addClass([labelElement], BOTTOMLABEL);\n setElementValue.call(this, '');\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n}\n/**\n * To set updated values in the input element.\n *\n * @hidden\n */\nfunction setElementValue(val, element) {\n if (!this.isFocus && this.floatLabelType === 'Auto' && this.placeholder && isNullOrUndefined(this.value)) {\n val = '';\n }\n var value = strippedValue.call(this, (element ? element : this.element), val);\n if (value === null || value === '') {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, false);\n if (this.showClearButton) {\n this.inputObj.clearButton.classList.add('e-clear-icon-hide');\n }\n }\n else {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n }\n}\n/**\n * Provide mask support to input textbox through utility method.\n *\n * @hidden\n */\nfunction maskInput(args) {\n var inputEle = getMaskInput(args);\n applyMask.call(inputEle);\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (args.mask) {\n unwireEvents.call(inputEle);\n wireEvents.call(inputEle);\n }\n}\nfunction getMaskInput(args) {\n addClass([args.element], UTILMASK);\n var inputEle = {\n element: args.element,\n mask: args.mask,\n promptMask: '',\n hiddenMask: '',\n escapeMaskValue: '',\n promptChar: args.promptChar ? (args.promptChar.length > 1) ? args.promptChar = args.promptChar[0]\n : args.promptChar : '_',\n value: args.value ? args.value : null,\n regExpCollec: regularExpressions,\n customRegExpCollec: [],\n customCharacters: args.customCharacters,\n undoCollec: [],\n redoCollec: [],\n maskKeyPress: false,\n prevValue: ''\n };\n createMask.call(inputEle);\n return inputEle;\n}\n/**\n * Gets raw value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nfunction getVal(args) {\n return strippedValue.call(getUtilMaskEle(args), args.element);\n}\n/**\n * Gets masked value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nfunction getMaskedVal(args) {\n return unstrippedValue.call(getUtilMaskEle(args), args.element);\n}\nfunction getUtilMaskEle(args) {\n var inputEle;\n if (!isNullOrUndefined(args) && args.element.classList.contains(UTILMASK)) {\n inputEle = getMaskInput(args);\n }\n return inputEle;\n}\n/**\n * Arguments to perform undo and redo functionalities.\n *\n * @hidden\n */\nvar MaskUndo = /** @__PURE__ @class */ (function () {\n function MaskUndo() {\n }\n return MaskUndo;\n}());\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ROOT$1 = 'e-control-wrapper e-mask';\nvar INPUT = 'e-input';\nvar COMPONENT$1 = 'e-maskedtextbox';\nvar CONTROL$1 = 'e-control';\nvar MASKINPUT_FOCUS = 'e-input-focus';\nvar wrapperAttr = ['title', 'style', 'class'];\n/**\n * The MaskedTextBox allows the user to enter the valid input only based on the provided mask.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MaskedTextBox = /** @__PURE__ @class */ (function (_super) {\n __extends$1(MaskedTextBox, _super);\n /**\n *\n * @param {MaskedTextBoxModel} options - Specifies the MaskedTextBox model.\n * @param {string | HTMLElement | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function MaskedTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initInputValue = '';\n _this.preventChange = false;\n _this.isClicked = false;\n _this.maskOptions = options;\n return _this;\n }\n /**\n * Gets the component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n MaskedTextBox.prototype.getModuleName = function () {\n return 'maskedtextbox';\n };\n /**\n * Initializes the event handler\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.preRender = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.regExpCollec = regularExpressions;\n this.customRegExpCollec = [];\n this.maskedRegExp = [];\n this.undoCollec = [];\n this.redoCollec = [];\n this.changeEventArgs = {};\n this.focusEventArgs = {};\n this.blurEventArgs = {};\n this.maskKeyPress = false;\n this.isFocus = false;\n this.isInitial = false;\n this.isIosInvalid = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL$1, COMPONENT$1, 'e-lib']);\n this.angularTagName = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n for (var i = 0; i < this.element.attributes.length; i++) {\n input.setAttribute(this.element.attributes[i].nodeName, this.element.attributes[i].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n if (this.element.hasAttribute('id')) {\n this.element.removeAttribute('id');\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-maskedtextbox');\n this.element.classList.add('e-mask-container');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkHtmlAttributes(false);\n if (this.formElement) {\n this.initInputValue = this.value;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n MaskedTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Initializes the component rendering.\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n if (this.floatLabelType === 'Never') {\n addClass([this.element], INPUT);\n }\n this.createWrapper();\n this.updateHTMLAttrToWrapper();\n if (this.element.name === '') {\n this.element.setAttribute('name', this.element.id);\n }\n this.isInitial = true;\n this.resetMaskedTextBox();\n this.isInitial = false;\n this.setMaskPlaceholder(true, false);\n this.setWidth(this.width);\n this.preEleVal = this.element.value;\n if (!Browser.isDevice && (Browser.info.version === '11.0' || Browser.info.name === 'edge')) {\n this.element.blur();\n }\n if (Browser.isDevice && Browser.isIos) {\n this.element.blur();\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n if (!this.element.hasAttribute('aria-labelledby') && !this.element.hasAttribute('placeholder') && !this.element.hasAttribute('aria-label')) {\n this.element.setAttribute('aria-label', 'maskedtextbox');\n }\n this.renderComplete();\n }\n };\n MaskedTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n MaskedTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getValidClassList(newClass), [this.inputObj.container], this.getValidClassList(oldClass));\n };\n MaskedTextBox.prototype.getValidClassList = function (maskClassName) {\n var result = maskClassName;\n if (!isNullOrUndefined(maskClassName) && maskClassName !== '') {\n result = (maskClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n MaskedTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputObj.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var maskStyle = this.inputObj.container.getAttribute(key);\n maskStyle = !isNullOrUndefined(maskStyle) ? (maskStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputObj.container.setAttribute(key, maskStyle);\n }\n else {\n this.inputObj.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n MaskedTextBox.prototype.resetMaskedTextBox = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n if (this.promptChar && this.promptChar.length > 1) {\n this.promptChar = this.promptChar[0];\n }\n createMask.call(this);\n applyMask.call(this);\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (!this.isInitial) {\n unwireEvents.call(this);\n }\n wireEvents.call(this);\n };\n MaskedTextBox.prototype.setMaskPlaceholder = function (setVal, dynamicPlaceholder) {\n if (dynamicPlaceholder || this.placeholder) {\n Input.setPlaceholder(this.placeholder, this.element);\n if ((this.element.value === this.promptMask && setVal && this.floatLabelType !== 'Always') ||\n this.element.value === this.promptMask && this.floatLabelType === 'Never') {\n setElementValue.call(this, '');\n }\n }\n };\n MaskedTextBox.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputObj.container.style.width = formatUnit(width);\n this.element.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n var elementWidth = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n this.inputObj.container.style.width = elementWidth;\n this.element.style.width = elementWidth;\n }\n }\n };\n MaskedTextBox.prototype.checkHtmlAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes)\n : ['placeholder', 'disabled', 'value', 'readonly'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'placeholder':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['enabled'] === undefined)) || isDynamic) {\n var isEnabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: isEnabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['value'] === undefined)) || isDynamic) {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['readonly'] === undefined)) || isDynamic) {\n var isReadonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: isReadonly }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n MaskedTextBox.prototype.createWrapper = function () {\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = this.getValidClassList(this.cssClass);\n }\n this.inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('class', ROOT$1 + ' ' + this.inputObj.container.getAttribute('class'));\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {MaskedTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {MaskedTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @hidden\n */\n MaskedTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n setMaskValue.call(this, this.value);\n if (this.placeholder && !this.isFocus) {\n this.setMaskPlaceholder(false, false);\n }\n if (this.value === '' && oldProp.value != null) {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\n }\n break;\n case 'placeholder':\n this.setMaskPlaceholder(true, true);\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.element, this.inputObj.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element, this.floatLabelType, this.inputObj.container);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.inputObj.container]);\n break;\n case 'customCharacters':\n this.customCharacters = newProp.customCharacters;\n this.resetMaskedTextBox();\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.element, this.inputObj, undefined, this.createElement);\n bindClearEvent.call(this);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'mask':\n {\n var strippedValue_1 = this.value;\n this.mask = newProp.mask;\n this.maskedRegExp = [];\n this.updateValue(strippedValue_1);\n }\n break;\n case 'promptChar': {\n if (newProp.promptChar.length > 1) {\n newProp.promptChar = newProp.promptChar[0];\n }\n if (newProp.promptChar) {\n this.promptChar = newProp.promptChar;\n }\n else {\n this.promptChar = '_';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n var value = this.element.value.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n if (this.promptMask === this.element.value) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n value = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n this.promptMask = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n this.undoCollec = this.redoCollec = [];\n setElementValue.call(this, value);\n break;\n }\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n MaskedTextBox.prototype.updateValue = function (strippedVal) {\n this.resetMaskedTextBox();\n setMaskValue.call(this, strippedVal);\n };\n /**\n * Gets the value of the MaskedTextBox with the masked format.\n * By using `value` property, you can get the raw value of maskedtextbox without literals and prompt characters.\n *\n * @returns {string} Returns the value with the masked format.\n */\n MaskedTextBox.prototype.getMaskedValue = function () {\n return unstrippedValue.call(this, this.element);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.isFocus = true;\n this.element.focus();\n addClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.isFocus = false;\n this.element.blur();\n removeClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n MaskedTextBox.prototype.destroy = function () {\n unwireEvents.call(this);\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n if (this.inputObj) {\n this.inputObj.container.insertAdjacentElement('afterend', this.element);\n detach(this.inputObj.container);\n }\n this.blurEventArgs = null;\n Input.destroy({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n this.changeEventArgs = null;\n this.inputObj = null;\n _super.prototype.destroy.call(this);\n };\n __decorate$1([\n Property(null)\n ], MaskedTextBox.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property(null)\n ], MaskedTextBox.prototype, \"width\", void 0);\n __decorate$1([\n Property(null)\n ], MaskedTextBox.prototype, \"placeholder\", void 0);\n __decorate$1([\n Property('Never')\n ], MaskedTextBox.prototype, \"floatLabelType\", void 0);\n __decorate$1([\n Property({})\n ], MaskedTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate$1([\n Property(true)\n ], MaskedTextBox.prototype, \"enabled\", void 0);\n __decorate$1([\n Property(false)\n ], MaskedTextBox.prototype, \"readonly\", void 0);\n __decorate$1([\n Property(false)\n ], MaskedTextBox.prototype, \"showClearButton\", void 0);\n __decorate$1([\n Property(false)\n ], MaskedTextBox.prototype, \"enablePersistence\", void 0);\n __decorate$1([\n Property(null)\n ], MaskedTextBox.prototype, \"mask\", void 0);\n __decorate$1([\n Property('_')\n ], MaskedTextBox.prototype, \"promptChar\", void 0);\n __decorate$1([\n Property(null)\n ], MaskedTextBox.prototype, \"value\", void 0);\n __decorate$1([\n Property(null)\n ], MaskedTextBox.prototype, \"customCharacters\", void 0);\n __decorate$1([\n Event()\n ], MaskedTextBox.prototype, \"created\", void 0);\n __decorate$1([\n Event()\n ], MaskedTextBox.prototype, \"destroyed\", void 0);\n __decorate$1([\n Event()\n ], MaskedTextBox.prototype, \"change\", void 0);\n __decorate$1([\n Event()\n ], MaskedTextBox.prototype, \"focus\", void 0);\n __decorate$1([\n Event()\n ], MaskedTextBox.prototype, \"blur\", void 0);\n MaskedTextBox = __decorate$1([\n NotifyPropertyChanges\n ], MaskedTextBox);\n return MaskedTextBox;\n}(Component));\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * Configures the ticks data of the Slider.\n */\nvar TicksData = /** @__PURE__ @class */ (function (_super) {\n __extends$2(TicksData, _super);\n function TicksData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('None')\n ], TicksData.prototype, \"placement\", void 0);\n __decorate$2([\n Property(10)\n ], TicksData.prototype, \"largeStep\", void 0);\n __decorate$2([\n Property(1)\n ], TicksData.prototype, \"smallStep\", void 0);\n __decorate$2([\n Property(false)\n ], TicksData.prototype, \"showSmallTicks\", void 0);\n __decorate$2([\n Property(null)\n ], TicksData.prototype, \"format\", void 0);\n return TicksData;\n}(ChildProperty));\n/**\n * It illustrates the color track data in slider.\n * {% codeBlock src='slider/colorrange/index.md' %}{% endcodeBlock %}\n */\nvar ColorRangeData = /** @__PURE__ @class */ (function (_super) {\n __extends$2(ColorRangeData, _super);\n function ColorRangeData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(null)\n ], ColorRangeData.prototype, \"color\", void 0);\n __decorate$2([\n Property(null)\n ], ColorRangeData.prototype, \"start\", void 0);\n __decorate$2([\n Property(null)\n ], ColorRangeData.prototype, \"end\", void 0);\n return ColorRangeData;\n}(ChildProperty));\n/**\n * It illustrates the limit data in slider.\n * {% codeBlock src='slider/limits/index.md' %}{% endcodeBlock %}\n */\nvar LimitData = /** @__PURE__ @class */ (function (_super) {\n __extends$2(LimitData, _super);\n function LimitData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(false)\n ], LimitData.prototype, \"enabled\", void 0);\n __decorate$2([\n Property(null)\n ], LimitData.prototype, \"minStart\", void 0);\n __decorate$2([\n Property(null)\n ], LimitData.prototype, \"minEnd\", void 0);\n __decorate$2([\n Property(null)\n ], LimitData.prototype, \"maxStart\", void 0);\n __decorate$2([\n Property(null)\n ], LimitData.prototype, \"maxEnd\", void 0);\n __decorate$2([\n Property(false)\n ], LimitData.prototype, \"startHandleFixed\", void 0);\n __decorate$2([\n Property(false)\n ], LimitData.prototype, \"endHandleFixed\", void 0);\n return LimitData;\n}(ChildProperty));\n/**\n * It illustrates the tooltip data in slider.\n */\nvar TooltipData = /** @__PURE__ @class */ (function (_super) {\n __extends$2(TooltipData, _super);\n function TooltipData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('')\n ], TooltipData.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property('Before')\n ], TooltipData.prototype, \"placement\", void 0);\n __decorate$2([\n Property('Focus')\n ], TooltipData.prototype, \"showOn\", void 0);\n __decorate$2([\n Property(false)\n ], TooltipData.prototype, \"isVisible\", void 0);\n __decorate$2([\n Property(null)\n ], TooltipData.prototype, \"format\", void 0);\n return TooltipData;\n}(ChildProperty));\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$2(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 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 * @returns {void}\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 * @returns {void}\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) ? (isNullOrUndefined(this.min) ? '0' : 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) ? (isNullOrUndefined(this.min) ? 0 :\n 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.isTailwind3 = this.getTheme(this.sliderContainer) === 'tailwind3' || this.getTheme(this.sliderContainer) === 'tailwind3-dark';\n this.isBootstrap5 = this.getTheme(this.sliderContainer) === 'bootstrap5';\n this.isFluent = this.getTheme(this.sliderContainer) === 'FluentUI';\n this.isFluent2 = this.getTheme(this.sliderContainer) === 'fluent2';\n this.isBootstrap5Dot3 = this.getTheme(this.sliderContainer) === 'bootstrap5.3';\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': isNullOrUndefined(min) ? '0' : min.toString(), 'aria-valuemax': (isNullOrUndefined(max) ? '100' : 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 if (this.enableRtl && this.orientation !== 'Vertical') {\n addClass([this.sliderContainer], classNames.rtl);\n }\n else {\n removeClass([this.sliderContainer], classNames.rtl);\n }\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 = 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;\n } }, 2500);\n }\n else {\n setTimeout(function () { if (_this.tooltipElement) {\n _this.tooltipElement.style.transition = 'none';\n } }, 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';\n } }, 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 }\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\n || this.isTailwind3 || this.isBootstrap5 || this.isFluent || this.isFluent2 || this.isBootstrap5Dot3,\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 || this.isTailwind3) {\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 || this.isTailwind3) {\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 if (enabledRTL) {\n value = this.add(hVal, parseFloat(this.step.toString()), true);\n }\n else {\n value = this.add(hVal, parseFloat(this.step.toString()), false);\n }\n }\n else if (args.target.parentElement.classList.contains(classNames.secondButton)\n || (args.target.classList.contains(classNames.secondButton))) {\n if (enabledRTL) {\n value = this.add(hVal, parseFloat(this.step.toString()), false);\n }\n else {\n value = this.add(hVal, parseFloat(this.step.toString()), true);\n }\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 Slider.prototype.renderScale = function () {\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\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', '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 if (this.ticks.largeStep > 0) {\n smallStep = this.ticks.largeStep;\n }\n else {\n smallStep = (parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min)));\n }\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',\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 if (orien === 'h') {\n li.style.width = tickWidth + '%';\n }\n else {\n li.style.height = tickWidth + '%';\n }\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);\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) {\n var span = this.createElement('span', {\n className: classNames.tickValue + ' ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', 'aria-hidden': 'true' }\n });\n li.appendChild(span);\n if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start, span);\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) {\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 if (this.orientation === 'Vertical') {\n if (this.element.getBoundingClientRect().width <= 15) {\n this.sliderContainer.classList.add(classNames.sliderSmallSize);\n }\n else {\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n }\n else {\n if (this.element.getBoundingClientRect().height <= 15) {\n this.sliderContainer.classList.add(classNames.sliderSmallSize);\n }\n else {\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\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 if (!this.enableRtl) {\n if (element === this.firstHandle) {\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] });\n }\n else {\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] });\n }\n }\n else {\n if (element === this.firstHandle) {\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] });\n }\n else {\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] });\n }\n }\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 if (enabledRTL) {\n value = this.add(hVal, parseFloat(this.step.toString()), true);\n }\n else {\n value = this.add(hVal, parseFloat(this.step.toString()), false);\n }\n }\n else if ((args.keyCode === 38) || (args.keyCode === 39) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n if (enabledRTL) {\n value = this.add(hVal, parseFloat(this.step.toString()), false);\n }\n else {\n value = this.add(hVal, parseFloat(this.step.toString()), true);\n }\n }\n else if ((args.keyCode === 33\n || args.currentTarget.classList.contains(classNames.firstButton))) {\n if (enabledRTL) {\n value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false);\n }\n else {\n value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true);\n }\n }\n else if ((args.keyCode === 34) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n if (enabledRTL) {\n value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true);\n }\n else {\n value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false);\n }\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 if (!this.tooltipElement.classList.contains(classNames.materialTooltipOpen)) {\n this.openMaterialTooltip();\n }\n else {\n this.refreshTooltip(this.firstHandle);\n }\n }\n else {\n if (!this.tooltipElement) {\n this.openTooltip(target);\n }\n else {\n this.refreshTooltip(target);\n }\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 if (this.enableRtl) {\n this.rangeBar.style.right = '0px';\n }\n else {\n this.rangeBar.style.left = '0px';\n }\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else {\n if (this.enableRtl) {\n this.rangeBar.style.right = this.handlePos1 + 'px';\n }\n else {\n this.rangeBar.style.left = this.handlePos1 + 'px';\n }\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 if (isNullOrUndefined(this.activeHandle)) {\n this.activeHandle = this.type === 'Range' ? 2 : 1;\n }\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 (isNullOrUndefined(handle)) {\n return;\n }\n if (_this.orientation === 'Horizontal') {\n if (_this.enableRtl) {\n handle.style.right = pos + \"px\";\n }\n else {\n handle.style.left = pos + \"px\";\n }\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 }\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 if (this.enableRtl) {\n this.firstHandle.style.right = this.handlePos1 + \"px\";\n }\n else {\n this.firstHandle.style.left = this.handlePos1 + \"px\";\n }\n if (this.isMaterialTooltip && !isNullOrUndefined(this.materialHandle)) {\n if (this.enableRtl) {\n this.materialHandle.style.right = this.handlePos1 + \"px\";\n }\n else {\n this.materialHandle.style.left = this.handlePos1 + \"px\";\n }\n }\n if (this.type === 'MinRange' && !isNullOrUndefined(this.rangeBar)) {\n if (this.enableRtl) {\n this.rangeBar.style.right = '0px';\n }\n else {\n this.rangeBar.style.left = '0px';\n }\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 if (this.enableRtl) {\n this.secondHandle.style.right = this.handlePos2 + \"px\";\n this.rangeBar.style.right = this.handlePos1 + 'px';\n }\n else {\n this.secondHandle.style.left = this.handlePos2 + \"px\";\n this.rangeBar.style.left = this.handlePos1 + 'px';\n }\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 }\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 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 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 x = Math.pow(10, 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 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 (!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 var previousSibling = event.target.previousSibling;\n if (previousSibling && previousSibling.classList.contains(classNames.sliderHandle)) {\n this.activeHandle = 2;\n }\n else {\n this.activeHandle = 1;\n }\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(!this.enabled);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(!this.enabled);\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 * @returns {string} - Returns the string\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 * @returns {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 if (this.sliderContainer.parentNode) {\n this.sliderContainer.parentNode.insertBefore(this.element, this.sliderContainer);\n }\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 * @param {SliderModel} newProp - Specifies the new properties\n * @param {SliderModel} oldProp - Specifies the old properties\n * @returns {void}\n * @private\n */\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 }\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 =\n 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 * @returns {string} - Returns the string\n * @private\n */\n Slider.prototype.getModuleName = function () {\n return 'slider';\n };\n __decorate$2([\n Property(null)\n ], Slider.prototype, \"value\", void 0);\n __decorate$2([\n Property(null)\n ], Slider.prototype, \"customValues\", void 0);\n __decorate$2([\n Property(1)\n ], Slider.prototype, \"step\", void 0);\n __decorate$2([\n Property(null)\n ], Slider.prototype, \"width\", void 0);\n __decorate$2([\n Property(0)\n ], Slider.prototype, \"min\", void 0);\n __decorate$2([\n Property(100)\n ], Slider.prototype, \"max\", void 0);\n __decorate$2([\n Property(false)\n ], Slider.prototype, \"readonly\", void 0);\n __decorate$2([\n Property('Default')\n ], Slider.prototype, \"type\", void 0);\n __decorate$2([\n Collection([{}], ColorRangeData)\n ], Slider.prototype, \"colorRange\", void 0);\n __decorate$2([\n Complex({}, TicksData)\n ], Slider.prototype, \"ticks\", void 0);\n __decorate$2([\n Complex({}, LimitData)\n ], Slider.prototype, \"limits\", void 0);\n __decorate$2([\n Property(true)\n ], Slider.prototype, \"enabled\", void 0);\n __decorate$2([\n Complex({}, TooltipData)\n ], Slider.prototype, \"tooltip\", void 0);\n __decorate$2([\n Property(false)\n ], Slider.prototype, \"showButtons\", void 0);\n __decorate$2([\n Property(true)\n ], Slider.prototype, \"enableAnimation\", void 0);\n __decorate$2([\n Property('Horizontal')\n ], Slider.prototype, \"orientation\", void 0);\n __decorate$2([\n Property('')\n ], Slider.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property(true)\n ], Slider.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$2([\n Event()\n ], Slider.prototype, \"created\", void 0);\n __decorate$2([\n Event()\n ], Slider.prototype, \"change\", void 0);\n __decorate$2([\n Event()\n ], Slider.prototype, \"changed\", void 0);\n __decorate$2([\n Event()\n ], Slider.prototype, \"renderingTicks\", void 0);\n __decorate$2([\n Event()\n ], Slider.prototype, \"renderedTicks\", void 0);\n __decorate$2([\n Event()\n ], Slider.prototype, \"tooltipChange\", void 0);\n Slider = __decorate$2([\n NotifyPropertyChanges\n ], Slider);\n return Slider;\n}(Component));\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * global declarations\n */\nvar 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 */\nvar 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 = /** @__PURE__ @class */ (function (_super) {\n __extends$3(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(), 10)]];\n }\n }\n else {\n return;\n }\n };\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} - Returns form validation status.\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 /**\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 /**\n * Get input element by name.\n *\n * @param {string} name - Input element name attribute value.\n * @returns {HTMLInputElement} - Returns the input element.\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n };\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 * @returns {void}\n * @private\n */\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n *\n * @returns {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n var inputParent = input.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') ||\n (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') ||\n grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.errorClass);\n }\n else {\n input.classList.remove(this.errorClass);\n }\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') ||\n (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') ||\n grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.validClass);\n }\n else {\n input.classList.remove(this.validClass);\n }\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules\n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n {\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n }\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n {\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n }\n break;\n case 'equalto':\n {\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n }\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][\"\" + ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[\"\" + ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[\"\" + name]) {\n return;\n }\n var rules = Object.keys(this.rules[\"\" + name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[\"\" + name][\"\" + rule], rule);\n var errorRule = { name: name, message: errorMessage };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') ||\n (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') ||\n grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') ||\n (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') ||\n 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 dateFormat = ((rule === 'min' || rule === 'max') && this.rules['' + name].date &&\n typeof (this.rules['' + name].date) === 'string') ? this.rules['' + name].date : null;\n var args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element, format: dateFormat };\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(), 10)] : ruleValue;\n message = message.replace(formats[parseInt(i.toString(), 10)], 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(), 10)];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') ||\n (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 checkable 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 <= Number(option.param);\n },\n minLength: function (option) {\n return option.value.length >= Number(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 if (option.format && option.format !== '') {\n var globalize = new Internationalization;\n var dateOptions = { format: option.format.toString(), type: 'dateTime', skeleton: 'yMd' };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n var maxValue = (typeof (option.param) === 'string') ? globalize.parseDate(JSON.parse(JSON.stringify(option.param)), dateOptions) : option.param;\n return new Date(dateValue).getTime() <= new Date(maxValue).getTime();\n }\n else {\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\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) >= Number(option.param); // Convert option.param to a number\n }\n else {\n // Minimum rule validation for date\n if (option.format && option.format !== '') {\n var globalize = new Internationalization;\n var dateOptions = { format: option.format.toString(), type: 'dateTime', skeleton: 'yMd' };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n var minValue = (typeof (option.param) === 'string') ? globalize.parseDate(JSON.parse(JSON.stringify(option.param)), dateOptions) : option.param;\n return new Date(dateValue).getTime() >= new Date(minValue).getTime();\n }\n else {\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\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$3([\n Property('')\n ], FormValidator.prototype, \"locale\", void 0);\n __decorate$3([\n Property('e-hidden')\n ], FormValidator.prototype, \"ignore\", void 0);\n __decorate$3([\n Property()\n ], FormValidator.prototype, \"rules\", void 0);\n __decorate$3([\n Property('e-error')\n ], FormValidator.prototype, \"errorClass\", void 0);\n __decorate$3([\n Property('e-valid')\n ], FormValidator.prototype, \"validClass\", void 0);\n __decorate$3([\n Property('label')\n ], FormValidator.prototype, \"errorElement\", void 0);\n __decorate$3([\n Property('div')\n ], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate$3([\n Property(ErrorOption.Label)\n ], FormValidator.prototype, \"errorOption\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"focusout\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"keyup\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"click\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"change\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"submit\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate$3([\n NotifyPropertyChanges\n ], FormValidator);\n return FormValidator;\n}(Base));\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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$1 = ['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 = /** @__PURE__ @class */ (function (_super) {\n __extends$4(FilesProp, _super);\n function FilesProp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property('')\n ], FilesProp.prototype, \"name\", void 0);\n __decorate$4([\n Property(null)\n ], FilesProp.prototype, \"size\", void 0);\n __decorate$4([\n Property('')\n ], FilesProp.prototype, \"type\", void 0);\n return FilesProp;\n}(ChildProperty));\nvar ButtonsProps = /** @__PURE__ @class */ (function (_super) {\n __extends$4(ButtonsProps, _super);\n function ButtonsProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property('Browse...')\n ], ButtonsProps.prototype, \"browse\", void 0);\n __decorate$4([\n Property('Upload')\n ], ButtonsProps.prototype, \"upload\", void 0);\n __decorate$4([\n Property('Clear')\n ], ButtonsProps.prototype, \"clear\", void 0);\n return ButtonsProps;\n}(ChildProperty));\nvar AsyncSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AsyncSettings, _super);\n function AsyncSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property('')\n ], AsyncSettings.prototype, \"saveUrl\", void 0);\n __decorate$4([\n Property('')\n ], AsyncSettings.prototype, \"removeUrl\", void 0);\n __decorate$4([\n Property(0)\n ], AsyncSettings.prototype, \"chunkSize\", void 0);\n __decorate$4([\n Property(3)\n ], AsyncSettings.prototype, \"retryCount\", void 0);\n __decorate$4([\n Property(500)\n ], AsyncSettings.prototype, \"retryAfterDelay\", void 0);\n return AsyncSettings;\n}(ChildProperty));\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$4(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 /**\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 if (this.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, 'aria-label': this.localizedTexts('Upload') } });\n this.clearButton = this.createElement('button', { className: CLEAR_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex, 'aria-label': this.localizedTexts('Clear') } });\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$1.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$1.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 (!isNullOrUndefined(pasteFile.getAsFile()) && ((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 if (this.isForm && liElement && liElement.classList.contains(INVALID_FILE)) {\n this.element.value = '';\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 /* istanbul ignore next */\n Uploader.prototype.traverseFileTree = function (item, event) {\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(), 10)].name);\n var currentFileName = fileData[parseInt(i.toString(), 10)].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(), 10)].name) && !(isUTF8 && !hasHTMLString)) {\n var encodedFileName = targetFiles[parseInt(i.toString(), 10)].name.replace(/[\\u00A0-\\u9999<>\\\\&]/g, function (i) {\n return '&#' + i.charCodeAt(0) + ';';\n });\n fileData[parseInt(i.toString(), 10)].name = encodedFileName;\n fileData[parseInt(i.toString(), 10)].status = this.localizedTexts('invalidFileName');\n fileData[parseInt(i.toString(), 10)].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, 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 this.checkActionComplete(true);\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 this.raiseActionComplete();\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 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 var checkFileType = files[i].type.indexOf('.') !== -1 ?\n files[i].type.replace('.', '') : files[i].type;\n if (allowedExtensions.indexOf(('.' + checkFileType).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('.')) &&\n 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 /**\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 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 iconElement.setAttribute('aria-label', 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 iconElement.setAttribute('aria-label', this.localizedTexts('remove'));\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 (!isNullOrUndefined(li) && !li.classList.contains(UPLOAD_SUCCESS)) {\n filterFiles.push(files[i]);\n }\n else if (!this.showFileList && files[i].status !== 'File uploaded successfully') {\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 this.pauseButton.setAttribute('aria-label', 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)) && this.showFileList) {\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.setAttribute('aria-label', 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 if (_this.multiple) {\n _this.uploadedFilesData.push(file);\n }\n else {\n _this.uploadedFilesData = [file];\n }\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 &&\n this.filesData[fileDataIndex].status === selectedFileData.status) {\n matchFiles[matchFilesIndex] = this.filesData[fileDataIndex];\n ++matchFilesIndex;\n break;\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 if (deleteIcon) {\n deleteIcon.classList.remove(ABORT_ICON);\n deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n }\n var pauseIcon = liElement.querySelector('.' + PAUSE_UPLOAD);\n if (pauseIcon) {\n pauseIcon.classList.add(RETRY_ICON);\n pauseIcon.classList.remove(PAUSE_UPLOAD);\n pauseIcon.setAttribute('title', this.localizedTexts('retry'));\n }\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 if (this.sequentialUpload) {\n this.uploadSequential();\n }\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 /**\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} - Returns the file size.\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 /**\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.customFormDatas = (eventArgs.customFormData && eventArgs.customFormData.length > 0) ?\n eventArgs.customFormData : _this.customFormDatas;\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 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 chunkEnabled = this.checkChunkUpload();\n var ajax = new Ajax(this.asyncSettings.saveUrl, 'POST', true, null);\n ajax.emitError = false;\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 if (_this.customFormDatas && _this.customFormDatas.length > 0) {\n _this.updateFormData(formData, _this.customFormDatas);\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$4([\n Complex({ saveUrl: '', removeUrl: '' }, AsyncSettings)\n ], Uploader.prototype, \"asyncSettings\", void 0);\n __decorate$4([\n Property(false)\n ], Uploader.prototype, \"sequentialUpload\", void 0);\n __decorate$4([\n Property({})\n ], Uploader.prototype, \"htmlAttributes\", void 0);\n __decorate$4([\n Property('')\n ], Uploader.prototype, \"cssClass\", void 0);\n __decorate$4([\n Property(true)\n ], Uploader.prototype, \"enabled\", void 0);\n __decorate$4([\n Property(null)\n ], Uploader.prototype, \"template\", void 0);\n __decorate$4([\n Property(true)\n ], Uploader.prototype, \"multiple\", void 0);\n __decorate$4([\n Property(true)\n ], Uploader.prototype, \"autoUpload\", void 0);\n __decorate$4([\n Property(true)\n ], Uploader.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$4([\n Complex({}, ButtonsProps)\n ], Uploader.prototype, \"buttons\", void 0);\n __decorate$4([\n Property('')\n ], Uploader.prototype, \"allowedExtensions\", void 0);\n __decorate$4([\n Property(0)\n ], Uploader.prototype, \"minFileSize\", void 0);\n __decorate$4([\n Property(30000000)\n ], Uploader.prototype, \"maxFileSize\", void 0);\n __decorate$4([\n Property(null)\n ], Uploader.prototype, \"dropArea\", void 0);\n __decorate$4([\n Collection([{}], FilesProp)\n ], Uploader.prototype, \"files\", void 0);\n __decorate$4([\n Property(true)\n ], Uploader.prototype, \"showFileList\", void 0);\n __decorate$4([\n Property(false)\n ], Uploader.prototype, \"directoryUpload\", void 0);\n __decorate$4([\n Property('Default')\n ], Uploader.prototype, \"dropEffect\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"created\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"actionComplete\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"rendering\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"beforeUpload\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"fileListRendering\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"selected\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"uploading\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"success\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"failure\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"removing\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"beforeRemove\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"clearing\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"progress\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"change\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"chunkSuccess\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"chunkFailure\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"chunkUploading\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"canceling\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"pausing\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"resuming\", void 0);\n Uploader = __decorate$4([\n NotifyPropertyChanges\n ], Uploader);\n return Uploader;\n}(Component));\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nvar __extends$5 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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$1 = '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$1 = '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 = /** @__PURE__ @class */ (function (_super) {\n __extends$5(ColorPicker, _super);\n function ColorPicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.recentColors = [];\n return _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', RecentColors: 'Recent colors' };\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$1);\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 this.splitBtn.element.setAttribute('aria-label', 'colorpicker');\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 if (this.showRecentColors && this.recentColors && this.recentColors.length > 0) {\n this.renderRecentColor();\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.renderRecentColor = function () {\n var _this = this;\n var recentClrWpr = this.container.querySelector('.e-clr-pal-rec-wpr');\n if (recentClrWpr) {\n detach(recentClrWpr);\n }\n var recentColorWrapper = this.createElement('div', { className: 'e-clr-pal-rec-wpr' });\n var refEle = this.container.querySelector('.e-switch-ctrl-btn');\n if (refEle) {\n this.container.insertBefore(recentColorWrapper, refEle);\n }\n else {\n this.container.appendChild(recentColorWrapper);\n }\n var recentClrSpan = this.createElement('label', { className: 'e-recent-clr-span' });\n recentClrSpan.textContent = this.l10n.getConstant('RecentColors');\n recentColorWrapper.appendChild(recentClrSpan);\n if (this.recentColors.length > 0) {\n this.recentColors = this.recentColors.filter(function (item, index) { return _this.recentColors.indexOf(item) === index; });\n while (this.recentColors.length > 10) {\n this.recentColors.pop();\n }\n this.appendPalette(this.recentColors, 'recent-color', recentColorWrapper);\n }\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 (key === 'recent-color') {\n palette.classList.add('e-recent-palette');\n }\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' }\n });\n this.trigger('beforeTileRender', { element: tile, presetName: key, value: colors[i] });\n row.appendChild(tile);\n if (this.value === roundedColor && key !== 'recent-color') {\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 if (ele) {\n ele.classList.add(SELECT);\n ele.setAttribute('aria-selected', 'true');\n }\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 - dragHandler.offsetWidth / 2.5) * Math.abs(100 - this.hsv[1]) / 100);\n }\n else {\n dragHandler.style.left = formatUnit((hsvArea.offsetWidth - dragHandler.offsetWidth / 2.5) * this.hsv[1] / 100);\n }\n dragHandler.style.top = formatUnit((hsvArea.offsetHeight - dragHandler.offsetHeight / 2.5) * (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$1);\n }\n else {\n this.getWrapper().classList.remove(DISABLED$1);\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));\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);\n }\n }\n };\n ColorPicker.prototype.enterKeyHandler = function (value) {\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.showRecentColors) {\n this.recentColors.unshift(hex);\n if (this.inline) {\n this.renderRecentColor();\n }\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 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 //eslint-disable-next-line @typescript-eslint/no-explicit-any\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 (this.container.querySelector('.e-clr-pal-rec-wpr')) {\n detach(this.container.querySelector('.e-clr-pal-rec-wpr'));\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 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 : '');\n }\n break;\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.showRecentColors) {\n this.recentColors.unshift(hex);\n if (this.inline) {\n this.renderRecentColor();\n }\n }\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 case 'showRecentColors':\n if (!newProp.showRecentColors) {\n var recentClrWpr = this_1.container.querySelector('.e-clr-pal-rec-wpr');\n if (recentClrWpr) {\n detach(recentClrWpr);\n }\n }\n this_1.recentColors = [];\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$5([\n Property('#008000ff')\n ], ColorPicker.prototype, \"value\", void 0);\n __decorate$5([\n Property('')\n ], ColorPicker.prototype, \"cssClass\", void 0);\n __decorate$5([\n Property(false)\n ], ColorPicker.prototype, \"disabled\", void 0);\n __decorate$5([\n Property('Picker')\n ], ColorPicker.prototype, \"mode\", void 0);\n __decorate$5([\n Property(true)\n ], ColorPicker.prototype, \"modeSwitcher\", void 0);\n __decorate$5([\n Property(null)\n ], ColorPicker.prototype, \"presetColors\", void 0);\n __decorate$5([\n Property(true)\n ], ColorPicker.prototype, \"showButtons\", void 0);\n __decorate$5([\n Property(10)\n ], ColorPicker.prototype, \"columns\", void 0);\n __decorate$5([\n Property(false)\n ], ColorPicker.prototype, \"inline\", void 0);\n __decorate$5([\n Property(false)\n ], ColorPicker.prototype, \"noColor\", void 0);\n __decorate$5([\n Property(false)\n ], ColorPicker.prototype, \"enablePersistence\", void 0);\n __decorate$5([\n Property(true)\n ], ColorPicker.prototype, \"enableOpacity\", void 0);\n __decorate$5([\n Property(false)\n ], ColorPicker.prototype, \"createPopupOnClick\", void 0);\n __decorate$5([\n Property(false)\n ], ColorPicker.prototype, \"showRecentColors\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"select\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"change\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"beforeTileRender\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"beforeOpen\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"open\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"beforeClose\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"beforeModeSwitch\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"onModeSwitch\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"created\", void 0);\n ColorPicker = __decorate$5([\n NotifyPropertyChanges\n ], ColorPicker);\n return ColorPicker;\n}(Component));\n\nvar __extends$6 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$6(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.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\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 if (this.multiline && !isNullOrUndefined(this.textarea)) {\n Input.validateInputType(this.textboxWrapper.container, this.textarea);\n }\n else {\n Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n Input.updateCssClass(newProp.cssClass, oldProp.cssClass, this.textboxWrapper.container);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.preRender = function () {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttributesToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n if (this.type === 'text' || (this.element.tagName === 'INPUT' && this.multiline && this.isReact)) {\n this.element.setAttribute('role', 'textbox');\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttributes.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = Input.getInputValidClassList(this.cssClass);\n }\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttributesToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n if (!this.element.hasAttribute('aria-labelledby') && !this.element.hasAttribute('placeholder') && !this.element.hasAttribute('aria-label')) {\n this.element.setAttribute('aria-label', 'textbox');\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 :\n (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') && !(this.floatLabelType === 'Always' && this.textboxWrapper.container.classList.contains('e-outline'))) {\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 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 /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data.\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\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$6([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate$6([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate$6([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate$6([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate$6([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate$6([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate$6([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate$6([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate$6([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate$6([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate$6([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate$6([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate$6([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate$6([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate$6([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate$6([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate$6([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate$6([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate$6([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate$6([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\n\nvar __extends$7 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar HIDE_CLEAR$1 = 'e-clear-icon-hide';\nvar AUTO_WIDTH = 'e-auto-width';\nvar RESIZE_X = 'e-resize-x';\nvar RESIZE_Y = 'e-resize-y';\nvar RESIZE_XY = 'e-resize-xy';\nvar RESIZE_NONE = 'e-resize-none';\nvar TextArea = /** @__PURE__ @class */ (function (_super) {\n __extends$7(TextArea, _super);\n function TextArea(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.textareaOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextAreaModel} newProp - Returns the dynamic property value of the component.\n * @param {TextAreaModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextArea.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.textareaWrapper);\n Input.addFloating(this.element, this.floatLabelType, this.placeholder);\n if (this.floatLabelType === 'Never') {\n this.element.removeAttribute('aria-labelledby');\n }\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.element, this.floatLabelType, this.textareaWrapper.container);\n this.bindClearEvent();\n if (!this.enabled && this.resizeMode !== 'None') {\n this.element.classList.remove(this.getCurrentResizeClass(this.resizeMode));\n this.element.classList.add(RESIZE_NONE);\n }\n else {\n this.element.classList.add(this.getCurrentResizeClass(this.resizeMode));\n }\n break;\n case 'width':\n if (this.resizeMode !== 'None' && this.resizeMode !== 'Vertical') {\n this.setElementWidth(newProp.width);\n this.textareaWrapper.container.classList.add(AUTO_WIDTH);\n }\n else {\n if (this.textareaWrapper.container.classList.contains(AUTO_WIDTH)) {\n this.textareaWrapper.container.classList.remove(AUTO_WIDTH);\n }\n Input.setWidth(newProp.width, this.textareaWrapper.container);\n }\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.element, this.floatLabelType, this.showClearButton);\n this.inputPreviousValue = this.element.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 Input.validateInputType(this.textareaWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.element);\n if (this.readonly) {\n this.element.setAttribute('aria-readonly', 'true');\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.element, this.textareaWrapper);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textareaWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.element);\n Input.calculateWidth(this.element, this.textareaWrapper.container);\n break;\n case 'cssClass':\n Input.updateCssClass(newProp.cssClass, oldProp.cssClass, this.textareaWrapper.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.element);\n break;\n case 'rows':\n if (this.rows) {\n this.element.setAttribute('rows', this.rows.toString());\n }\n break;\n case 'cols':\n if (this.cols) {\n this.element.setAttribute('cols', this.cols.toString());\n if (this.width == null) {\n this.textareaWrapper.container.classList.add(AUTO_WIDTH);\n }\n }\n break;\n case 'maxLength':\n if (this.maxLength) {\n this.element.setAttribute('maxlength', this.maxLength.toString());\n }\n break;\n case 'resizeMode':\n if (this.enabled) {\n if (this.element.classList.contains(this.getCurrentResizeClass(oldProp.resizeMode))) {\n this.element.classList.remove(this.getCurrentResizeClass(oldProp.resizeMode));\n }\n this.element.classList.add(this.getCurrentResizeClass(this.resizeMode));\n if (this.element.style.width && (this.resizeMode === 'None' || this.resizeMode === 'Vertical')) {\n Input.setWidth(this.element.style.width, this.textareaWrapper.container);\n }\n else {\n var currentWidth = this.element.offsetWidth;\n this.element.style.width = currentWidth + 'px';\n if (this.textareaWrapper.container.style.width) {\n this.textareaWrapper.container.style.width = '';\n }\n }\n this.setWrapperWidth();\n }\n break;\n }\n }\n };\n TextArea.prototype.preRender = function () {\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-TEXTAREA' || this.element.tagName === 'EJS-SMARTTEXTAREA') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.createElement('textarea');\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.textareaOptions) || (this.textareaOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textarea', 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.rows) {\n this.element.setAttribute('rows', this.rows.toString());\n }\n if (this.cols) {\n this.element.setAttribute('cols', this.cols.toString());\n }\n if (this.maxLength) {\n this.element.setAttribute('maxlength', this.maxLength.toString());\n }\n if (!this.element.style.resize && this.enabled) {\n this.element.classList.add(this.getCurrentResizeClass(this.resizeMode));\n }\n if (this.enabled) {\n this.element.setAttribute('aria-multiline', 'true');\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextArea.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = Input.getInputValidClassList(this.cssClass);\n }\n this.textareaWrapper = Input.createInput({\n element: this.element,\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 this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.element, this.floatLabelType, this.showClearButton);\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n if (!this.isAngular) {\n this.element.setAttribute('value', this.initialValue);\n }\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.element.defaultValue = this.element.value;\n Input.setWidth(this.width, this.textareaWrapper.container);\n this.setWrapperWidth();\n this.renderComplete();\n };\n TextArea.prototype.getModuleName = function () {\n return 'textarea';\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n */\n TextArea.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n TextArea.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly'];\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.textareaOptions) || (this.textareaOptions['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.textareaOptions) || (this.textareaOptions['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.textareaOptions) || (this.textareaOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.textareaOptions) || (this.textareaOptions['value'] === undefined)) || isDynamic) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n TextArea.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, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n };\n TextArea.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keydown', this.keydownHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextArea element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextArea.prototype.destroy = function () {\n this.unWireEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n this.element.value = this.element.defaultValue;\n this.element.classList.remove('e-input', RESIZE_X, RESIZE_Y, RESIZE_XY, RESIZE_NONE);\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby', 'aria-multiline']);\n if (!isNullOrUndefined(this.textareaWrapper)) {\n this.textareaWrapper.container.insertAdjacentElement('afterend', this.element);\n detach(this.textareaWrapper.container);\n }\n this.textareaWrapper = null;\n Input.destroy({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n this.formElement = null;\n _super.prototype.destroy.call(this);\n };\n TextArea.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textareaWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextArea.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null) &&\n (this.previousValue !== this.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textareaWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextArea.prototype.keydownHandler = function (args) {\n if ((args.keyCode === 13 || args.keyCode === 9) && !((this.previousValue === null || this.previousValue === '') && (this.value === null || this.value === '') && this.element.value === '')) {\n this.setProperties({ value: this.element.value }, true);\n }\n };\n TextArea.prototype.inputHandler = function (args) {\n var textareaObj = this;\n var eventArgs = {\n event: args,\n value: this.element.value,\n previousValue: this.inputPreviousValue,\n container: this.textareaWrapper.container\n };\n this.inputPreviousValue = this.element.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textareaObj.localChange({ value: this.element.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 TextArea.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.element.value }, true);\n if (this.previousValue !== this.value) {\n this.raiseChangeEvent(args, true);\n }\n args.stopPropagation();\n };\n TextArea.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textareaWrapper.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 };\n TextArea.prototype.updateHTMLAttributesToWrapper = function () {\n Input.updateHTMLAttributesToWrapper(this.htmlAttributes, this.textareaWrapper.container);\n };\n TextArea.prototype.updateHTMLAttributesToElement = function () {\n Input.updateHTMLAttributesToElement(this.htmlAttributes, this.element);\n };\n TextArea.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n if (this.enabled) {\n EventHandler.add(this.textareaWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textareaWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextArea.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textareaWrapper.clearButton.classList.contains(HIDE_CLEAR$1)) || this.textareaWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.element, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: this.element.value }, true);\n }\n var eventArgs = {\n event: event,\n value: this.element.value,\n previousValue: this.inputPreviousValue,\n container: this.textareaWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.element.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 * Adding the multiple attributes as key-value pair to the TextArea element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextArea element.\n * @returns {void}\n */\n TextArea.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.element, this.floatLabelType, this.textareaWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.element);\n }\n else if (key === 'class') {\n this.element.classList.add(attributes[\"\" + key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[\"\" + key] }, true);\n Input.setPlaceholder(this.placeholder, this.element);\n }\n else {\n this.element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextArea element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextArea element.\n * @returns {void}\n */\n TextArea.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.element, this.floatLabelType, this.textareaWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.element);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.element);\n }\n else {\n this.element.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextArea.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n if (this.textareaWrapper.container.classList.contains('e-input-group')\n || this.textareaWrapper.container.classList.contains('e-outline')\n || this.textareaWrapper.container.classList.contains('e-filled')) {\n addClass([this.textareaWrapper.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 TextArea.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n if (this.textareaWrapper.container.classList.contains('e-input-group')\n || this.textareaWrapper.container.classList.contains('e-outline')\n || this.textareaWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textareaWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Sets up the width for the textarea wrapper.\n *\n * @returns {void}\n */\n TextArea.prototype.setWrapperWidth = function () {\n if (this.enabled && ((this.resizeMode !== 'None' && this.resizeMode !== 'Vertical') || (this.cols || this.element.getAttribute('cols')))) {\n if (this.resizeMode !== 'None' && this.resizeMode !== 'Vertical') {\n if (this.textareaWrapper.container.style.width) {\n this.setElementWidth(this.textareaWrapper.container.style.width);\n this.textareaWrapper.container.style.width = '';\n this.textareaWrapper.container.classList.add(AUTO_WIDTH);\n }\n }\n this.textareaWrapper.container.classList.add(AUTO_WIDTH);\n }\n else {\n if (this.textareaWrapper.container.classList.contains(AUTO_WIDTH)) {\n this.textareaWrapper.container.classList.remove(AUTO_WIDTH);\n }\n }\n };\n TextArea.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textareaWrapper)) {\n var label = this.textareaWrapper.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 TextArea.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n if (value == null && this.textareaWrapper.container.classList.contains('e-valid-input') && !(this.floatLabelType === 'Always' && this.textareaWrapper.container.classList.contains('e-outline'))) {\n this.textareaWrapper.container.classList.remove('e-valid-input');\n }\n this.isProtectedOnChange = prevOnChange;\n };\n TextArea.prototype.setElementWidth = function (width) {\n if (typeof width === 'number') {\n this.element.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.element.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n };\n TextArea.prototype.getCurrentResizeClass = function (resizeMode) {\n return resizeMode === 'None' ? RESIZE_NONE : (resizeMode === 'Both' ? RESIZE_XY : resizeMode === 'Horizontal' ? RESIZE_X : RESIZE_Y);\n };\n __decorate$7([\n Property(false)\n ], TextArea.prototype, \"readonly\", void 0);\n __decorate$7([\n Property(null)\n ], TextArea.prototype, \"value\", void 0);\n __decorate$7([\n Property('Never')\n ], TextArea.prototype, \"floatLabelType\", void 0);\n __decorate$7([\n Property('')\n ], TextArea.prototype, \"cssClass\", void 0);\n __decorate$7([\n Property(null)\n ], TextArea.prototype, \"placeholder\", void 0);\n __decorate$7([\n Property({})\n ], TextArea.prototype, \"htmlAttributes\", void 0);\n __decorate$7([\n Property(true)\n ], TextArea.prototype, \"enabled\", void 0);\n __decorate$7([\n Property(false)\n ], TextArea.prototype, \"showClearButton\", void 0);\n __decorate$7([\n Property(false)\n ], TextArea.prototype, \"enablePersistence\", void 0);\n __decorate$7([\n Property(null)\n ], TextArea.prototype, \"width\", void 0);\n __decorate$7([\n Property('Both')\n ], TextArea.prototype, \"resizeMode\", void 0);\n __decorate$7([\n Property(null)\n ], TextArea.prototype, \"maxLength\", void 0);\n __decorate$7([\n Property(null)\n ], TextArea.prototype, \"cols\", void 0);\n __decorate$7([\n Property(null)\n ], TextArea.prototype, \"rows\", void 0);\n __decorate$7([\n Event()\n ], TextArea.prototype, \"created\", void 0);\n __decorate$7([\n Event()\n ], TextArea.prototype, \"destroyed\", void 0);\n __decorate$7([\n Event()\n ], TextArea.prototype, \"change\", void 0);\n __decorate$7([\n Event()\n ], TextArea.prototype, \"blur\", void 0);\n __decorate$7([\n Event()\n ], TextArea.prototype, \"focus\", void 0);\n __decorate$7([\n Event()\n ], TextArea.prototype, \"input\", void 0);\n TextArea = __decorate$7([\n NotifyPropertyChanges\n ], TextArea);\n return TextArea;\n}(Component));\n\nvar CaretPositionHelper = /** @__PURE__ @class */ (function () {\n function CaretPositionHelper() {\n }\n CaretPositionHelper.createStyledDiv = function (target, htmlContent) {\n var div = document.createElement('div');\n var styles = {\n position: 'absolute',\n left: -9999,\n top: 0,\n zIndex: -2000\n };\n this.properties.forEach(function (prop) {\n styles[\"\" + prop] = getComputedStyle(target)[prop];\n });\n Object.keys(styles).forEach(function (key) {\n div.style[\"\" + key] = styles[\"\" + key];\n });\n var scrollbarWidth = target.offsetWidth - target.clientWidth;\n div.style.width = (target.clientWidth + scrollbarWidth) + 'px';\n div.innerHTML = htmlContent;\n if (target && target.parentNode) {\n target.parentNode.insertBefore(div, target.nextSibling);\n }\n return div;\n };\n CaretPositionHelper.createCaretMarker = function (target, htmlContent) {\n var div = this.createStyledDiv(target, htmlContent);\n var marker = div.ownerDocument.getElementById('caret-position-marker');\n var position = {\n left: marker.offsetLeft,\n top: marker.offsetTop,\n height: marker.offsetHeight\n };\n if (div && div.parentNode) {\n div.parentNode.removeChild(div);\n }\n return position;\n };\n CaretPositionHelper.escapeHtml = function (value) {\n return value.replace(/<|>|`|\"|&/g, '?').replace(/\\r\\n|\\r|\\n/g, '
');\n };\n CaretPositionHelper.getCaretPosition = function (target) {\n var position = target.selectionStart || 0;\n var textBeforeCaret = target.value.slice(0, position);\n var textAfterCaret = target.value.slice(position);\n var content = \"\" + this.escapeHtml(textBeforeCaret) + \"\";\n content += '|';\n content += \"\" + this.escapeHtml(textAfterCaret) + \"\";\n var rect = this.createCaretMarker(target, content);\n rect.pos = position;\n return rect;\n };\n CaretPositionHelper.adjustScrollToCaretPosition = function (element) {\n var caretPosition = this.getCaretPosition(element);\n var lineHeight = parseFloat(window.getComputedStyle(element).lineHeight);\n if (caretPosition.top > element.clientHeight + element.scrollTop - lineHeight) {\n element.scrollTop = caretPosition.top - element.clientHeight + lineHeight;\n }\n };\n CaretPositionHelper.getTextAreaPosition = function (element) {\n var computedStyle = window.getComputedStyle(element);\n var position = this.getCaretPosition(element);\n return {\n top: position.top + parseFloat(computedStyle.borderTopWidth) + element.offsetTop - element.scrollTop,\n left: position.left + parseFloat(computedStyle.borderLeftWidth) + element.offsetLeft - element.scrollLeft - 0.25,\n height: position.height,\n elemStyle: computedStyle\n };\n };\n CaretPositionHelper.insertCharacter = function (element, text) {\n var start = element.selectionStart;\n var end = element.selectionEnd;\n element.value = element.value.substring(0, start) + text + element.value.substring(end);\n start += text.length;\n element.setSelectionRange(start, start);\n };\n CaretPositionHelper.properties = [\n 'borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopStyle',\n 'borderRightStyle', 'borderBottomStyle', 'borderLeftStyle', 'borderTopWidth',\n 'boxSizing', 'fontFamily', 'fontSize', 'fontWeight', 'height', 'letterSpacing',\n 'lineHeight', 'marginBottom', 'marginLeft', 'marginRight', 'marginTop',\n 'outlineWidth', 'overflow', 'overflowX', 'overflowY', 'paddingBottom',\n 'paddingLeft', 'paddingRight', 'paddingTop', 'textAlign', 'textOverflow',\n 'textTransform', 'whiteSpace', 'wordBreak', 'wordWrap', 'width'\n ];\n return CaretPositionHelper;\n}());\n\nvar __extends$8 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar ChatMessageRole;\n(function (ChatMessageRole) {\n ChatMessageRole[\"System\"] = \"system\";\n ChatMessageRole[\"User\"] = \"user\";\n ChatMessageRole[\"Assistant\"] = \"assistant\";\n})(ChatMessageRole || (ChatMessageRole = {}));\nvar SmartTextArea = /** @__PURE__ @class */ (function (_super) {\n __extends$8(SmartTextArea, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {SmartTextArea} options - Specifies Smart text area model\n * @param {string | HTMLTextAreaElement} element - Specifies target element\n */\n function SmartTextArea(options, element) {\n return _super.call(this, options, element) || this;\n }\n SmartTextArea.prototype.render = function () {\n _super.prototype.render.call(this);\n if (!(this.element instanceof HTMLTextAreaElement)) {\n return;\n }\n this.textArea = this.element;\n var smartTextArea = createElement('smart-textarea');\n smartTextArea.classList.add('e-smart-textarea');\n this.textArea.after(smartTextArea);\n if (this.showSuggestionOnPopup !== 'None') {\n var suggestionState = this.showSuggestionOnPopup === 'Enable' ? 'false' : 'true';\n this.textArea.setAttribute('data-inline-suggestions', suggestionState);\n }\n this.suggestionDisplay = this.shouldShowInlineSuggestions(this.textArea) ?\n new InlineSuggestion(smartTextArea, this.textArea) : new ContextSuggestion(smartTextArea, this.textArea);\n };\n SmartTextArea.prototype.wireEvents = function () {\n var _this = this;\n _super.prototype.wireEvents.call(this);\n EventHandler.add(this.element, 'keyup', this.handleKeyUp, this);\n EventHandler.add(this.element, 'keydown', this.handleKeyDown, this);\n EventHandler.add(this.element, 'mousedown', this.removeExistingOrPendingSuggestion, this);\n EventHandler.add(this.element, 'focusout', this.removeExistingOrPendingSuggestion, this);\n this.element.addEventListener('scroll', (function () { return _this.suggestionDisplay.reject(); }), {\n passive: true\n });\n };\n SmartTextArea.prototype.unWireEvents = function () {\n var _this = this;\n _super.prototype.unWireEvents.call(this);\n EventHandler.remove(this.element, 'keyup', this.handleKeyUp);\n EventHandler.remove(this.element, 'keydown', this.handleKeyDown);\n EventHandler.remove(this.element, 'mousedown', this.removeExistingOrPendingSuggestion);\n EventHandler.remove(this.element, 'focusout', this.removeExistingOrPendingSuggestion);\n this.element.removeEventListener('scroll', (function () { return _this.suggestionDisplay.reject(); }));\n };\n SmartTextArea.prototype.keydownHandler = function () {\n // Overridden to prevent default behavior\n };\n SmartTextArea.prototype.shouldShowInlineSuggestions = function (textArea) {\n var inlineSuggestions = textArea.getAttribute('data-inline-suggestions');\n if (inlineSuggestions) {\n return inlineSuggestions.toLowerCase() === 'true';\n }\n return !('ontouchstart' in window);\n };\n SmartTextArea.prototype.handleKeyDown = function (event) {\n switch (event.key) {\n case 'Tab':\n if (this.suggestionDisplay.isShowing()) {\n this.suggestionDisplay.accept();\n event.preventDefault();\n }\n break;\n case 'Alt':\n case 'Control':\n case 'Shift':\n case 'Command':\n break;\n default:\n if (this.suggestionDisplay.isShowing() && this.suggestionDisplay.currentSuggestion.startsWith(event.key)) {\n CaretPositionHelper.insertCharacter(this.textArea, event.key);\n event.preventDefault();\n this.suggestionDisplay.show(this.suggestionDisplay.currentSuggestion.substring(event.key.length));\n CaretPositionHelper.adjustScrollToCaretPosition(this.textArea);\n }\n else {\n this.removeExistingOrPendingSuggestion();\n }\n break;\n }\n };\n SmartTextArea.prototype.handleKeyUp = function () {\n var _this = this;\n if (!this.suggestionDisplay.isShowing()) {\n clearTimeout(this.typingDebounceTimeout);\n this.typingDebounceTimeout = setTimeout(function () { return _this.handleTypingPaused(); }, 350);\n }\n };\n SmartTextArea.prototype.handleTypingPaused = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (document.activeElement !== this.textArea) {\n return [2 /*return*/];\n }\n if (!(this.textArea.selectionStart === this.textArea.selectionEnd &&\n (this.textArea.selectionStart === this.textArea.value.length ||\n this.textArea.value[this.textArea.selectionStart] === '\\n'))) return [3 /*break*/, 2];\n return [4 /*yield*/, this.requestSuggestionAsync()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n SmartTextArea.prototype.removeExistingOrPendingSuggestion = function () {\n clearTimeout(this.typingDebounceTimeout);\n if (this.pendingSuggestionAbort) {\n this.pendingSuggestionAbort.abort();\n this.pendingSuggestionAbort = null;\n }\n this.suggestionDisplay.reject();\n };\n SmartTextArea.prototype.createSuggestionPrompt = function (textBefore, textAfter) {\n var stringBuilder = 'Predict what text the user in the given ROLE would insert at the cursor position indicated by ^^^.\\nOnly give predictions for which you have' +\n ' an EXTREMELY high confidence that the user would insert that EXACT text.\\nDo not make up new information. If you are not sure, ' +\n 'just reply with NO_PREDICTION.\\n\\nRULES:\\n1. Reply with OK:, then in square brackets the predicted text, then END_INSERTION, and no other output.\\n2. ' +\n 'When a specific value or quantity cannot be inferred and would need to be provided, use the word NEED_INFO.\\n3. ' +\n 'If there is not enough information to predict any words that the user would type next, just reply with the word NO_PREDICTION.' +\n '\\n4. NEVER invent new information. If you can not be sure what the user is about to type, ALWAYS stop the prediction with END_INSERTION.';\n var userPhrases = this.UserPhrases;\n if (userPhrases && userPhrases.length > 0) {\n stringBuilder += '\\nAlways try to use variations on the following phrases as part of the predictions:\\n';\n for (var _i = 0, userPhrases_1 = userPhrases; _i < userPhrases_1.length; _i++) {\n var phrase = userPhrases_1[_i];\n stringBuilder += \"- \" + phrase + \"\\n\";\n }\n }\n var chatMessageList = [\n { role: ChatMessageRole.System, content: stringBuilder },\n { role: ChatMessageRole.User, content: 'ROLE: Family member sending a text\\nUSER_TEXT: Hey, it is a nice day - the weather is ^^^' },\n { role: ChatMessageRole.Assistant, content: 'OK:[great!]END_INSERTION' },\n { role: ChatMessageRole.User, content: 'ROLE: Customer service assistant\\nUSER_TEXT: You can find more information on^^^\\n\\nAlternatively, phone us.' },\n { role: ChatMessageRole.Assistant, content: 'OK:[ our website at NEED_INFO]END_INSERTION' },\n { role: ChatMessageRole.User, content: 'ROLE: Casual\\nUSER_TEXT: Oh I see!\\n\\nWell sure thing, we can' },\n { role: ChatMessageRole.Assistant, content: 'OK:[ help you out with that!]END_INSERTION' },\n { role: ChatMessageRole.User, content: 'ROLE: Storyteller\\nUSER_TEXT: Sir Digby Chicken Caesar, also know^^^' },\n { role: ChatMessageRole.Assistant, content: 'OK:[n as NEED_INFO]END_INSERTION' },\n { role: ChatMessageRole.User, content: 'ROLE: Customer support agent\\nUSER_TEXT: Goodbye for now.^^^' },\n { role: ChatMessageRole.Assistant, content: 'NO_PREDICTION END_INSERTION' },\n { role: ChatMessageRole.User, content: 'ROLE: Pirate\\nUSER_TEXT: Have you found^^^' },\n { role: ChatMessageRole.Assistant, content: 'OK:[ the treasure, me hearties?]END_INSERTION' },\n { role: ChatMessageRole.User, content: \"ROLE: \" + this.userRole + \"\\nUSER_TEXT: \" + textBefore + \"^^^\" + textAfter }\n ];\n return {\n messages: chatMessageList,\n temperature: 0.0,\n maxTokens: 400,\n stopSequences: ['END_INSERTION', 'NEED_INFO'],\n frequencyPenalty: 0.0,\n presencePenalty: 0.0\n };\n };\n SmartTextArea.prototype.requestSuggestionAsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n var requestDetails, suggestionData, chatConfig, insertSuggestion, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.pendingSuggestionAbort) {\n this.pendingSuggestionAbort.abort();\n return [2 /*return*/];\n }\n this.pendingSuggestionAbort = new AbortController();\n requestDetails = {\n textAreaValue: this.textArea.value,\n cursorPosition: this.textArea.selectionStart\n };\n suggestionData = {\n textBefore: requestDetails.textAreaValue.substring(0, requestDetails.cursorPosition),\n textAfter: requestDetails.textAreaValue.substring(requestDetails.cursorPosition)\n };\n chatConfig = this.createSuggestionPrompt(suggestionData.textBefore, suggestionData.textAfter);\n if (!(typeof this.aiSuggestionHandler === 'function')) return [3 /*break*/, 2];\n return [4 /*yield*/, this.aiSuggestionHandler(chatConfig)];\n case 1:\n response = _a.sent();\n insertSuggestion = this.validateSuggestion(response, suggestionData.textBefore);\n _a.label = 2;\n case 2:\n if (insertSuggestion && requestDetails.textAreaValue === this.textArea.value &&\n requestDetails.cursorPosition === this.textArea.selectionStart) {\n if (!insertSuggestion.endsWith(' ')) {\n insertSuggestion += ' ';\n }\n this.suggestionDisplay.show(insertSuggestion);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n SmartTextArea.prototype.validateSuggestion = function (response, textBefore) {\n var suggestion;\n if (typeof response !== 'string' || response.length <= 5 || response.indexOf('OK:[') !== 0) {\n return '';\n }\n var endIndex = this.indexOfAny(response, ['.', '?', '!']);\n if (endIndex > 0 && response.length > endIndex + 1 && response[endIndex + 1] === ' ') {\n response = response.substring(0, endIndex + 1);\n }\n suggestion = response.substring(4).replace(/[\\]\\s]+$/, '');\n if (textBefore.length > 0 && textBefore[textBefore.length - 1] === ' ') {\n suggestion = suggestion.replace(/^\\s+/, '');\n }\n return suggestion;\n };\n SmartTextArea.prototype.indexOfAny = function (str, chars) {\n for (var i = 0; i < str.length; i++) {\n if (chars.indexOf(str[\"\" + i]) !== -1) {\n return i;\n }\n }\n return -1;\n };\n SmartTextArea.prototype.getModuleName = function () {\n return 'smarttextarea';\n };\n SmartTextArea.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.textArea = null;\n this.suggestionDisplay = null;\n this.typingDebounceTimeout = null;\n };\n __decorate$8([\n Property('')\n ], SmartTextArea.prototype, \"userRole\", void 0);\n __decorate$8([\n Property([])\n ], SmartTextArea.prototype, \"UserPhrases\", void 0);\n __decorate$8([\n Property()\n ], SmartTextArea.prototype, \"aiSuggestionHandler\", void 0);\n __decorate$8([\n Property('None')\n ], SmartTextArea.prototype, \"showSuggestionOnPopup\", void 0);\n return SmartTextArea;\n}(TextArea));\nvar InlineSuggestion = /** @__PURE__ @class */ (function () {\n function InlineSuggestion(smartTextArea, textArea) {\n this.owner = smartTextArea;\n this.textArea = textArea;\n this.latestSuggestionText = '';\n this.suggestionStartPos = null;\n this.suggestionEndPos = null;\n this.virtualCaret = null;\n this.originalValueProperty = this.getOriginalValueProperty(textArea, 'value');\n }\n Object.defineProperty(InlineSuggestion.prototype, \"value\", {\n get: function () {\n var value = this.originalValueProperty.get.call(this.textArea);\n return this.isShowing() ? value.substring(0, this.suggestionStartPos) + value.substring(this.suggestionEndPos) : value;\n },\n set: function (newValue) {\n this.originalValueProperty.set.call(this.textArea, newValue);\n },\n enumerable: true,\n configurable: true\n });\n InlineSuggestion.prototype.getOriginalValueProperty = function (obj, property) {\n while (obj) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, property);\n if (descriptor) {\n return descriptor;\n }\n obj = Object.getPrototypeOf(obj);\n }\n throw new Error(\"Property \" + property + \" not found on object or its prototype chain\");\n };\n Object.defineProperty(InlineSuggestion.prototype, \"valueIncludingSuggestion\", {\n get: function () {\n return this.originalValueProperty.get.call(this.textArea);\n },\n set: function (newValue) {\n this.originalValueProperty.set.call(this.textArea, newValue);\n },\n enumerable: true,\n configurable: true\n });\n InlineSuggestion.prototype.isShowing = function () {\n return this.suggestionStartPos !== null;\n };\n InlineSuggestion.prototype.show = function (suggestionText) {\n this.latestSuggestionText = suggestionText;\n this.suggestionStartPos = this.textArea.selectionStart;\n this.suggestionEndPos = this.suggestionStartPos + suggestionText.length;\n this.textArea.setAttribute('data-suggestion-visible', '');\n this.valueIncludingSuggestion = this.valueIncludingSuggestion.substring(0, this.suggestionStartPos) +\n suggestionText +\n this.valueIncludingSuggestion.substring(this.suggestionStartPos);\n this.textArea.setSelectionRange(this.suggestionStartPos, this.suggestionEndPos);\n if (!this.virtualCaret) {\n this.virtualCaret = new VirtualCaret(this.owner, this.textArea);\n }\n this.virtualCaret.show();\n };\n Object.defineProperty(InlineSuggestion.prototype, \"currentSuggestion\", {\n get: function () {\n return this.latestSuggestionText;\n },\n enumerable: true,\n configurable: true\n });\n InlineSuggestion.prototype.accept = function () {\n this.textArea.setSelectionRange(this.suggestionEndPos, this.suggestionEndPos);\n this.suggestionStartPos = null;\n this.suggestionEndPos = null;\n if (this.virtualCaret) {\n this.virtualCaret.hide();\n }\n this.textArea.removeAttribute('data-suggestion-visible');\n CaretPositionHelper.adjustScrollToCaretPosition(this.textArea);\n };\n InlineSuggestion.prototype.reject = function () {\n if (!this.isShowing()) {\n return;\n }\n var selectionStart = this.textArea.selectionStart;\n var selectionEnd = this.textArea.selectionEnd;\n this.valueIncludingSuggestion = this.valueIncludingSuggestion.substring(0, this.suggestionStartPos) +\n this.valueIncludingSuggestion.substring(this.suggestionEndPos);\n if (this.suggestionStartPos === selectionStart && this.suggestionEndPos === selectionEnd) {\n this.textArea.setSelectionRange(selectionStart, selectionStart);\n }\n this.suggestionStartPos = null;\n this.suggestionEndPos = null;\n this.textArea.removeAttribute('data-suggestion-visible');\n if (this.virtualCaret) {\n this.virtualCaret.hide();\n }\n };\n return InlineSuggestion;\n}());\nvar ContextSuggestion = /** @__PURE__ @class */ (function () {\n function ContextSuggestion(container, textArea) {\n var _this = this;\n this.latestSuggestionText = '';\n this.showing = false;\n this.textArea = textArea;\n this.suggestionElement = document.createElement('div');\n this.suggestionElement.classList.add('smart-textarea-suggestion-overlay');\n this.suggestionElement.addEventListener('mousedown', function (event) { return _this.handleSuggestionClicked(event); });\n this.suggestionElement.addEventListener('touchend', function (event) { return _this.handleSuggestionClicked(event); });\n this.suggestionPrefixElement = document.createElement('span');\n this.suggestionTextElement = document.createElement('span');\n this.suggestionElement.appendChild(this.suggestionPrefixElement);\n this.suggestionElement.appendChild(this.suggestionTextElement);\n this.suggestionPrefixElement.style.opacity = '0.3';\n var computedStyle = window.getComputedStyle(this.textArea);\n this.suggestionElement.style.font = computedStyle.font;\n this.suggestionElement.style.marginTop = 1.4 * parseFloat(computedStyle.fontSize) + \"px\";\n container.appendChild(this.suggestionElement);\n }\n Object.defineProperty(ContextSuggestion.prototype, \"currentSuggestion\", {\n get: function () {\n return this.latestSuggestionText;\n },\n enumerable: true,\n configurable: true\n });\n ContextSuggestion.prototype.show = function (suggestionText) {\n this.latestSuggestionText = suggestionText;\n this.suggestionPrefixElement.textContent = suggestionText[0] !== ' ' ? this.getPrefixText(this.textArea, 20) : '';\n this.suggestionTextElement.textContent = suggestionText;\n var position = CaretPositionHelper.getTextAreaPosition(this.textArea);\n var style = this.suggestionElement.style;\n style.minWidth = null;\n this.suggestionElement.classList.add('smart-textarea-suggestion-overlay-visible');\n style.zIndex = this.textArea.style.zIndex + 1;\n style.top = position.top + \"px\";\n var leftPosition = position.left - this.suggestionPrefixElement.offsetWidth;\n if (!style.left || Math.abs(parseFloat(style.left) - leftPosition) > 10) {\n style.left = leftPosition + \"px\";\n }\n this.showing = true;\n var computedStyle = window.getComputedStyle(this.suggestionElement);\n var lineHeight = parseFloat(computedStyle.lineHeight);\n var paddingTop = parseFloat(computedStyle.paddingTop);\n var paddingBottom = parseFloat(computedStyle.paddingBottom);\n var lines = Math.round((this.suggestionElement.offsetHeight - paddingTop - paddingBottom) / lineHeight);\n if (lines > 2) {\n var elementWidth = this.suggestionElement.offsetWidth;\n style.minWidth = \"calc(min(70vw, \" + (lines * elementWidth) / 2 + \"px))\";\n }\n var rect = this.suggestionElement.getBoundingClientRect();\n if (rect.right > document.body.clientWidth - 20) {\n style.left = \"calc(\" + (parseFloat(style.left) - (rect.right - document.body.clientWidth)) + \"px - 2rem)\";\n }\n };\n ContextSuggestion.prototype.accept = function () {\n if (this.showing) {\n CaretPositionHelper.insertCharacter(this.textArea, this.currentSuggestion);\n CaretPositionHelper.adjustScrollToCaretPosition(this.textArea);\n this.hide();\n }\n };\n ContextSuggestion.prototype.reject = function () {\n this.hide();\n };\n ContextSuggestion.prototype.hide = function () {\n if (this.showing) {\n this.showing = false;\n this.suggestionElement.classList.remove('smart-textarea-suggestion-overlay-visible');\n }\n };\n ContextSuggestion.prototype.isShowing = function () {\n return this.showing;\n };\n ContextSuggestion.prototype.handleSuggestionClicked = function (event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.accept();\n };\n ContextSuggestion.prototype.getPrefixText = function (textArea, maxLength) {\n var value = textArea.value;\n var selectionStart = textArea.selectionStart;\n for (var i = selectionStart - 1; i > selectionStart - maxLength; i--) {\n if (i < 0 || /\\s/.test(value[\"\" + i])) {\n return value.substring(i + 1, selectionStart);\n }\n }\n return '';\n };\n return ContextSuggestion;\n}());\nvar VirtualCaret = /** @__PURE__ @class */ (function () {\n function VirtualCaret(smartTextArea, textArea) {\n this.textArea = textArea;\n this.caretDiv = document.createElement('div');\n this.caretDiv.classList.add('smart-textarea-caret');\n smartTextArea.appendChild(this.caretDiv);\n }\n VirtualCaret.prototype.show = function () {\n var textAreaPosition = CaretPositionHelper.getTextAreaPosition(this.textArea);\n var caretStyle = this.caretDiv.style;\n caretStyle.display = 'block';\n caretStyle.top = textAreaPosition.top + 'px';\n caretStyle.left = textAreaPosition.left + 'px';\n caretStyle.height = textAreaPosition.height + 'px';\n caretStyle.zIndex = this.textArea.style.zIndex;\n caretStyle.backgroundColor = textAreaPosition.elemStyle.caretColor;\n };\n VirtualCaret.prototype.hide = function () {\n this.caretDiv.style.display = 'none';\n };\n return VirtualCaret;\n}());\n\nvar __extends$9 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar SignatureBase = /** @__PURE__ @class */ (function (_super) {\n __extends$9(SignatureBase, _super);\n function SignatureBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /* minDistance(distance between the two point) was calaculated for smoothness.*/\n _this.minDistance = 5;\n _this.previous = 0;\n /* interval handles for the smoothness in the mouse move event.*/\n _this.interval = 30;\n _this.timeout = null;\n _this.isSignatureEmpty = true;\n _this.backgroundLoaded = null;\n _this.isBlazor = false;\n _this.isResponsive = false;\n _this.signPointsColl = [];\n _this.signRatioPointsColl = [];\n _this.canRedraw = true;\n return _this;\n }\n /**\n * To Initialize the component rendering\n *\n * @private\n * @param {HTMLCanvasElement} element - Specifies the canvas element.\n * @param {BlazorDotnetObject} dotnetRef - Specifies for blazor client to server communication.\n * @returns {void}\n */\n SignatureBase.prototype.initialize = function (element, dotnetRef) {\n this.clearArray = [];\n this.element = element;\n this.canvasContext = this.element.getContext('2d');\n this.canvasContext.canvas.tabIndex = -1;\n if (dotnetRef) {\n this.dotnetRef = dotnetRef;\n this.isBlazor = true;\n if (this.signatureValue) {\n this.loadPersistedSignature();\n }\n }\n this.setHTMLProperties();\n if (isNullOrUndefined(this.signatureValue)) {\n this.updateSnapCollection(true);\n }\n this.wireEvents();\n if (!this.isBlazor) {\n this.trigger('created', null);\n }\n };\n SignatureBase.prototype.wireEvents = function () {\n if (isNullOrUndefined(this.pointColl) && !this.isReadOnly && !this.disabled) {\n EventHandler.add(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler, this);\n EventHandler.add(this.canvasContext.canvas, 'keydown', this.keyboardHandler, this);\n window.addEventListener('resize', this.resizeHandler.bind(this));\n }\n else if (this.pointColl) {\n EventHandler.add(this.canvasContext.canvas, 'mousemove touchmove', this.mouseMoveHandler, this);\n EventHandler.add(this.canvasContext.canvas, 'mouseup touchend', this.mouseUpHandler, this);\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n }\n };\n SignatureBase.prototype.unwireEvents = function (type) {\n if (type === 'mouseup' || type === 'touchend') {\n if (this.canvasContext) {\n EventHandler.remove(this.canvasContext.canvas, 'mousemove touchmove', this.mouseMoveHandler);\n EventHandler.remove(this.canvasContext.canvas, 'mouseup touchend', this.mouseUpHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n }\n else {\n if (this.canvasContext) {\n EventHandler.remove(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler);\n EventHandler.remove(this.canvasContext.canvas, 'keydown', this.keyboardHandler);\n }\n window.removeEventListener('resize', this.resizeHandler);\n }\n };\n SignatureBase.prototype.setHTMLProperties = function () {\n // eslint-disable-next-line max-len\n if (this.element.height === 150 && this.element.width === 300 && this.element.offsetHeight !== 0 && this.element.offsetWidth !== 0) {\n this.element.height = this.element.offsetHeight;\n this.element.width = this.element.offsetWidth;\n this.isResponsive = true;\n }\n else if ((this.element.height !== this.element.offsetHeight - 1 || this.element.width !== this.element.offsetWidth - 1)\n && this.element.offsetHeight !== 0 && this.element.offsetWidth !== 0) {\n this.element.height = this.element.offsetHeight;\n this.element.width = this.element.offsetWidth;\n }\n this.canvasContext.fillStyle = this.strokeColor;\n this.tempCanvas = this.createElement('canvas', { className: 'e-' + this.getModuleName() + '-temp' });\n this.tempContext = this.tempCanvas.getContext('2d');\n this.tempCanvas.width = this.element.width;\n this.tempCanvas.height = this.element.height;\n if (this.backgroundImage) {\n this.canvasContext.canvas.style.backgroundImage = 'url(' + this.backgroundImage + ')';\n this.canvasContext.canvas.style.backgroundRepeat = 'no-repeat';\n if (this.saveWithBackground) {\n this.setBackgroundImage(this.backgroundImage, 'temp');\n }\n }\n else if (this.backgroundColor) {\n this.canvasContext.canvas.style.backgroundColor = this.backgroundColor;\n }\n };\n SignatureBase.prototype.mouseDownHandler = function (e) {\n if (e.buttons === 1 || e.buttons === 2 || e.type === 'touchstart') {\n if (e.type === 'touchstart') {\n e.preventDefault();\n e.stopPropagation();\n }\n this.beginStroke(e);\n this.wireEvents();\n }\n };\n SignatureBase.prototype.mouseMoveHandler = function (e) {\n if (e.buttons === 1 || e.buttons === 2 || e.type === 'touchmove') {\n if (e.type === 'touchmove') {\n e.preventDefault();\n e.stopPropagation();\n }\n if (this.interval) {\n this.updateStrokeWithThrottle(e);\n }\n else {\n this.updateStroke(e);\n }\n }\n };\n SignatureBase.prototype.mouseUpHandler = function (e) {\n var args = { actionName: 'strokeUpdate' };\n if (e.type === 'touchstart') {\n e.preventDefault();\n e.stopPropagation();\n }\n this.endDraw();\n this.updateSnapCollection();\n this.unwireEvents(e.type);\n if (!this.isBlazor) {\n this.trigger('change', args);\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'mouseUp');\n }\n this.signatureValue = this.snapColl[this.incStep];\n for (var i = 0; i < this.signPointsColl.length; i++) {\n this.signRatioPointsColl.push({ x: (this.signPointsColl[i].x / this.canvasContext.canvas.width),\n y: (this.signPointsColl[i].y / this.canvasContext.canvas.height) });\n }\n this.signPointsColl = [];\n };\n SignatureBase.prototype.keyboardHandler = function (e) {\n var _this = this;\n var args = { fileName: 'Signature', type: 'Png', cancel: false };\n switch (e.key) {\n case 'Delete':\n this.clear();\n break;\n case (e.ctrlKey && 's'):\n if (!this.isBlazor) {\n this.trigger('beforeSave', args, function (observableSaveArgs) {\n if (!args.cancel) {\n _this.save(observableSaveArgs.type, observableSaveArgs.fileName);\n }\n });\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'beforeSave');\n }\n e.preventDefault();\n e.stopImmediatePropagation();\n break;\n case (e.ctrlKey && 'z'):\n this.undo();\n break;\n case (e.ctrlKey && 'y'):\n this.redo();\n break;\n }\n };\n SignatureBase.prototype.resizeHandler = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (this.isResponsive && this.canRedraw && this.canvasContext && this.element) {\n this.canvasContext.canvas.width = this.element.offsetWidth;\n this.canvasContext.canvas.height = this.element.offsetHeight;\n this.canvasContext.scale(1, 1);\n this.canvasContext.fillStyle = this.strokeColor;\n var pointSize = (this.minStrokeWidth + this.maxStrokeWidth) / 2;\n for (var i = 0; i < this.signRatioPointsColl.length; i++) {\n this.arcDraw((this.signRatioPointsColl[i].x * this.canvasContext.canvas.width), (this.signRatioPointsColl[i].y * this.canvasContext.canvas.height), pointSize);\n }\n this.signPointsColl = [];\n this.canvasContext.closePath();\n this.canvasContext.fill();\n }\n else if (this.canvasContext && this.element) {\n var restoreImg_1 = new Image();\n restoreImg_1.src = this.snapColl[this.incStep];\n restoreImg_1.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(restoreImg_1, 0, 0, proxy.element.width, proxy.element.height);\n };\n }\n };\n SignatureBase.prototype.beginStroke = function (e) {\n this.internalRefresh();\n this.updateStroke(e);\n };\n SignatureBase.prototype.updateStroke = function (e) {\n var point = this.createPoint(e);\n this.addPoint(point);\n };\n SignatureBase.prototype.updateStrokeWithThrottle = function (args) {\n var now = Date.now();\n var remaining = this.interval - (now - this.previous);\n this.storedArgs = args;\n if (remaining <= 0 || remaining > this.interval) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.previous = now;\n this.updateStroke(this.storedArgs);\n if (!this.timeout) {\n this.storedArgs = null;\n }\n }\n else if (!this.timeout) {\n this.timeout = window.setTimeout(this.delay.bind(this), remaining);\n }\n };\n SignatureBase.prototype.delay = function () {\n this.previous = Date.now();\n this.timeout = null;\n this.updateStroke(this.storedArgs);\n if (!this.timeout) {\n this.storedArgs = null;\n }\n };\n SignatureBase.prototype.createPoint = function (e) {\n var rect = this.canvasContext.canvas.getBoundingClientRect();\n if (e.type === 'mousedown' || e.type === 'mousemove') {\n return this.point(e.clientX - rect.left, e.clientY - rect.top, new Date().getTime());\n }\n else {\n return this.point(e.touches[0].clientX - rect.left, e.touches[0].clientY - rect.top, new Date().getTime());\n }\n };\n /* Returns the current point corrdinates(x, y) and time.*/\n SignatureBase.prototype.point = function (pointX, pointY, time) {\n this.pointX = pointX;\n this.pointY = pointY;\n this.time = time || new Date().getTime();\n return { x: this.pointX, y: this.pointY, time: this.time };\n };\n SignatureBase.prototype.addPoint = function (point) {\n var points = this.pointColl;\n var controlPoint1;\n var controlPoint2;\n var lastPoint = points.length > 0 && points[points.length - 1];\n var isLastPointTooClose = lastPoint ? this.distanceTo(lastPoint) <= this.minDistance : false;\n if (!lastPoint || !(lastPoint && isLastPointTooClose)) {\n points.push(point);\n if (points.length > 2) {\n if (points.length === 3) {\n points.unshift(points[0]);\n }\n controlPoint1 = (this.calculateCurveControlPoints(points[0], points[1], points[2])).controlPoint2;\n controlPoint2 = (this.calculateCurveControlPoints(points[1], points[2], points[3])).controlPoint1;\n this.startPoint = points[1];\n this.controlPoint1 = controlPoint1;\n this.controlPoint2 = controlPoint2;\n this.endPoint = points[2];\n this.startDraw();\n points.shift();\n }\n }\n };\n SignatureBase.prototype.startDraw = function () {\n var velocity;\n velocity = this.pointVelocityCalc(this.startPoint);\n velocity = this.velocity * velocity + (1 - this.velocity) * this.lastVelocity;\n var newWidth = Math.max(this.maxStrokeWidth / (velocity + 1), this.minStrokeWidth);\n this.curveDraw(this.lastWidth, newWidth);\n this.lastVelocity = velocity;\n this.lastWidth = newWidth;\n };\n SignatureBase.prototype.endDraw = function () {\n if (isNullOrUndefined(this.pointColl)) {\n return;\n }\n var canDrawCurve = this.pointColl.length > 2;\n var point = this.pointColl[0];\n if (!canDrawCurve && point) {\n this.strokeDraw(point);\n }\n };\n /* Calculate the Bezier (x, y) coordinate of the curve. */\n SignatureBase.prototype.curveDraw = function (startWidth, endWidth) {\n var context = this.canvasContext;\n var width;\n var i;\n var t1;\n var t2;\n var t3;\n var u1;\n var u2;\n var u3;\n var x;\n var y;\n var widthValue = endWidth - startWidth;\n var bezierLength = this.bezierLengthCalc();\n var drawSteps = Math.ceil(bezierLength) * 2;\n context.beginPath();\n for (i = 0; i < drawSteps; i++) {\n t1 = i / drawSteps;\n t2 = t1 * t1;\n t3 = t2 * t1;\n u1 = 1 - t1;\n u2 = u1 * u1;\n u3 = u2 * u1;\n x = u3 * this.startPoint.x;\n x += 3 * u2 * t1 * this.controlPoint1.x;\n x += 3 * u1 * t2 * this.controlPoint2.x;\n x += t3 * this.endPoint.x;\n y = u3 * this.startPoint.y;\n y += 3 * u2 * t1 * this.controlPoint1.y;\n y += 3 * u1 * t2 * this.controlPoint2.y;\n y += t3 * this.endPoint.y;\n width = Math.min(startWidth + t3 * widthValue, this.maxStrokeWidth);\n this.arcDraw(x, y, width);\n }\n context.closePath();\n context.fill();\n this.isSignatureEmpty = false;\n };\n SignatureBase.prototype.strokeDraw = function (point) {\n var context = this.canvasContext;\n var pointSize = (this.minStrokeWidth + this.maxStrokeWidth) / 2;\n context.beginPath();\n this.arcDraw(point.x, point.y, pointSize);\n context.closePath();\n context.fill();\n this.isSignatureEmpty = false;\n };\n SignatureBase.prototype.arcDraw = function (x, y, size) {\n this.signPointsColl.push({ x: x, y: y });\n var context = this.canvasContext;\n context.moveTo(x, y);\n context.arc(x, y, size, 0, 2 * Math.PI, false);\n };\n /* Utility functions for Bezier algorithm*/\n SignatureBase.prototype.calculateCurveControlPoints = function (p1, p2, p3) {\n var dx1 = p1.x - p2.x;\n var dy1 = p1.y - p2.y;\n var dx2 = p2.x - p3.x;\n var dy2 = p2.y - p3.y;\n var m1 = { x: (p1.x + p2.x) / 2.0, y: (p1.y + p2.y) / 2.0 };\n var m2 = { x: (p2.x + p3.x) / 2.0, y: (p2.y + p3.y) / 2.0 };\n var l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n var l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n var dxm = (m1.x - m2.x);\n var dym = (m1.y - m2.y);\n var k = l2 / (l1 + l2);\n var cm = { x: m2.x + dxm * k, y: m2.y + dym * k };\n var tx = p2.x - cm.x;\n var ty = p2.y - cm.y;\n return {\n controlPoint1: this.point(m1.x + tx, m1.y + ty, 0),\n controlPoint2: this.point(m2.x + tx, m2.y + ty, 0)\n };\n };\n /* Returns approximated bezier length of the curuve.*/\n SignatureBase.prototype.bezierLengthCalc = function () {\n var steps = 10;\n var length = 0;\n var i;\n var t;\n var pointx1;\n var pointy1;\n var pointx2;\n var pointy2;\n var pointx3;\n var pointy3;\n for (i = 0; i <= steps; i++) {\n t = i / steps;\n pointx1 = this.bezierPointCalc(t, this.startPoint.x, this.controlPoint1.x, this.controlPoint2.x, this.endPoint.x);\n pointy1 = this.bezierPointCalc(t, this.startPoint.y, this.controlPoint1.y, this.controlPoint2.y, this.endPoint.y);\n if (i > 0) {\n pointx3 = pointx1 - pointx2;\n pointy3 = pointy1 - pointy2;\n length += Math.sqrt(pointx3 * pointx3 + pointy3 * pointy3);\n }\n pointx2 = pointx1;\n pointy2 = pointy1;\n }\n return length;\n };\n /* Calculate parametric value of x or y given t and the\n four point(startpoint, controlpoint1, controlpoint2, endpoint) coordinates of a cubic bezier curve.*/\n SignatureBase.prototype.bezierPointCalc = function (t, startpoint, cp1, cp2, endpoint) {\n return startpoint * (1.0 - t) * (1.0 - t) * (1.0 - t) + 3.0 * cp1 * (1.0 - t) * (1.0 - t) * t + 3.0 *\n cp2 * (1.0 - t) * t * t + endpoint * t * t * t;\n };\n /* Velocity between the current point and last point.*/\n SignatureBase.prototype.pointVelocityCalc = function (startPoint) {\n return (this.time !== startPoint.time) ? this.distanceTo(startPoint) / (this.time - startPoint.time) : 0;\n };\n /* Distance between the current point and last point.*/\n SignatureBase.prototype.distanceTo = function (start) {\n return Math.sqrt(Math.pow(this.pointX - start.x, 2) + Math.pow(this.pointY - start.y, 2));\n };\n SignatureBase.prototype.isRead = function (isRead) {\n if (isRead) {\n EventHandler.remove(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler);\n }\n else if (!this.disabled) {\n EventHandler.add(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler, this);\n }\n };\n SignatureBase.prototype.enableOrDisable = function (isDisable) {\n this.disabled = isDisable;\n if (isDisable) {\n this.canvasContext.canvas.style.filter = 'opacity(0.5)';\n this.isRead(true);\n }\n else {\n this.canvasContext.canvas.style.filter = '';\n this.isRead(false);\n }\n };\n SignatureBase.prototype.updateSnapCollection = function (isClear) {\n if (isNullOrUndefined(this.incStep)) {\n this.incStep = -1;\n this.incStep++;\n this.snapColl = [];\n this.clearArray = [];\n }\n else {\n this.incStep++;\n }\n if (this.incStep < this.snapColl.length) {\n this.snapColl.length = this.incStep;\n }\n if (this.incStep > 0) {\n var canvasNew = this.createElement('canvas', { className: 'e-' + this.getModuleName() + '-wrapper' });\n var canvasContextNew = canvasNew.getContext('2d');\n if (this.canvasContext) {\n canvasNew.width = this.canvasContext.canvas.width;\n canvasNew.height = this.canvasContext.canvas.height;\n canvasContextNew.drawImage(this.canvasContext.canvas, 0, 0, canvasNew.width, canvasNew.height);\n this.snapColl.push(canvasNew.toDataURL());\n }\n }\n else {\n this.snapColl.push(this.canvasContext.canvas.toDataURL());\n }\n if (isClear) {\n this.clearArray.push(this.incStep);\n }\n };\n SignatureBase.prototype.setBackgroundImage = function (imageSrc, type) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var imageObj = new Image();\n imageObj.crossOrigin = 'anonymous';\n imageObj.src = imageSrc;\n if (type === 'temp') {\n imageObj.onload = function () {\n proxy.tempContext.globalCompositeOperation = 'source-over';\n proxy.tempContext.drawImage(imageObj, 0, 0, proxy.element.width, proxy.element.height);\n };\n }\n else {\n imageObj.onload = function () {\n proxy.canvasContext.globalCompositeOperation = 'source-over';\n proxy.canvasContext.drawImage(imageObj, 0, 0, proxy.element.width, proxy.element.height);\n proxy.updateSnapCollection();\n proxy.saveBackground(true);\n };\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n }\n };\n SignatureBase.prototype.setBackgroundColor = function (color) {\n var canvasEle = this.canvasContext;\n canvasEle.strokeStyle = color;\n var i;\n var j;\n for (i = 1; i <= canvasEle.canvas.width; i++) {\n for (j = 1; j <= canvasEle.canvas.height; j++) {\n canvasEle.strokeRect(0, 0, i, j);\n }\n }\n this.updateSnapCollection();\n };\n SignatureBase.prototype.loadPersistedSignature = function () {\n if (isNullOrUndefined(this.signatureValue)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var lastImage = new Image();\n lastImage.src = this.signatureValue;\n lastImage.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(lastImage, 0, 0);\n proxy.updateSnapCollection();\n };\n this.isSignatureEmpty = false;\n };\n /**\n * To get the signature as Blob.\n *\n * @param {string} url - specify the url/base 64 string to get blob of the signature.\n * @returns {Blob}.\n */\n SignatureBase.prototype.getBlob = function (url) {\n var arr = url.split(',');\n var type = arr[0].match(/:(.*?);/)[1];\n var bstr = atob(arr[1]);\n var n = bstr.length;\n var u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new Blob([u8arr], { type: type });\n };\n SignatureBase.prototype.download = function (blob, fileName) {\n var blobUrl = URL.createObjectURL(blob);\n var a = document.createElement('a');\n a.href = blobUrl;\n a.target = '_parent';\n a.download = fileName;\n (document.body || document.documentElement).appendChild(a);\n a.click();\n a.parentNode.removeChild(a);\n };\n SignatureBase.prototype.internalRefresh = function () {\n this.pointColl = [];\n this.lastVelocity = 0;\n this.lastWidth = (this.minStrokeWidth + this.maxStrokeWidth) / 2;\n };\n /**\n * To refresh the signature.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.refresh = function () {\n this.isResponsive = false;\n this.setHTMLProperties();\n this.resizeHandler();\n this.internalRefresh();\n };\n /**\n * Erases all the signature strokes signed by user.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.clear = function () {\n var args = { actionName: 'clear' };\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n this.tempContext.clearRect(0, 0, this.tempContext.canvas.width, this.tempContext.canvas.height);\n if (this.saveWithBackground && this.backgroundImage) {\n this.setBackgroundImage(this.backgroundImage, 'temp');\n }\n this.internalRefresh();\n this.signRatioPointsColl = [];\n this.updateSnapCollection(true);\n this.isSignatureEmpty = this.canRedraw = true;\n if (!this.isBlazor) {\n this.trigger('change', args);\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'Clear');\n }\n };\n /**\n * Undo the last user action.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.undo = function () {\n var args = { actionName: 'undo' };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (this.incStep > 0) {\n this.incStep--;\n var undoImg_1 = new Image();\n undoImg_1.src = this.snapColl[this.incStep];\n undoImg_1.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(undoImg_1, 0, 0, proxy.element.width, proxy.element.height);\n };\n }\n this.isClear();\n if (!this.isBlazor) {\n this.trigger('change', args);\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'Undo');\n }\n };\n /**\n * Redo the last user action.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.redo = function () {\n var args = { actionName: 'redo' };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (this.incStep < this.snapColl.length - 1) {\n this.incStep++;\n var redoImg_1 = new Image();\n redoImg_1.src = this.snapColl[this.incStep];\n redoImg_1.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(redoImg_1, 0, 0, proxy.element.width, proxy.element.height);\n };\n }\n this.isClear();\n if (!this.isBlazor) {\n this.trigger('change', args);\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'Redo');\n }\n };\n SignatureBase.prototype.isClear = function () {\n if (this.clearArray) {\n var empty = false;\n for (var i = 0; i < this.clearArray.length; i++) {\n if (this.clearArray[i] === this.incStep) {\n this.isSignatureEmpty = true;\n empty = true;\n }\n }\n if (!empty) {\n this.isSignatureEmpty = false;\n }\n }\n };\n /**\n * To check whether the signature is empty or not.\n *\n * @returns {boolean}.\n */\n SignatureBase.prototype.isEmpty = function () {\n return this.isSignatureEmpty;\n };\n /**\n * To check whether the undo collection is empty or not.\n *\n * @returns {boolean}.\n */\n SignatureBase.prototype.canUndo = function () {\n return this.incStep > 0;\n };\n /**\n * To check whether the redo collection is empty or not.\n *\n * @returns {boolean}.\n */\n SignatureBase.prototype.canRedo = function () {\n return this.incStep < this.snapColl.length - 1;\n };\n /**\n * To draw the signature based on the given text, with the font family and font size.\n *\n * @param {string} text - specify text to be drawn as signature.\n * @param {string} fontFamily - specify font family of a signature.\n * @param {number} fontSize - specify font size of a signature.\n * @param {number} x- Specifies the x-coordinate to start the text of a signature. Default to the center point of the image if it not specified.\n * @param {number} y - Specifies the y-coordinate to start the text of a signature. Default to the center point of the image if it not specified.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.draw = function (text, fontFamily, fontSize, x, y) {\n var args = { actionName: 'draw-text' };\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n fontFamily = fontFamily || 'Arial';\n fontSize = fontSize || 30;\n this.canvasContext.font = fontSize + 'px ' + fontFamily;\n var startX = this.element.width / 2;\n var startY = this.element.height / 2;\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n this.canvasContext.textAlign = 'center';\n this.canvasContext.textBaseline = 'middle';\n }\n else {\n startX = isNullOrUndefined(x) ? startX : x;\n startY = isNullOrUndefined(y) ? startY + fontSize / 2 : (y + fontSize / 2);\n }\n this.canvasContext.fillText(text, startX, startY);\n this.updateSnapCollection();\n this.isSignatureEmpty = false;\n this.trigger('change', args);\n };\n /**\n * To load the signature with the given base 64 string, height and width.\n *\n * @param {string} signature - specify the url/base 64 string to be drawn as signature.\n * @param {number} width - specify the width of the loaded signature image.\n * @param {number} height - specify the height of the loaded signature image.\n * @returns {void}.\n */\n SignatureBase.prototype.load = function (signature, width, height) {\n height = height || this.element.height;\n width = width || this.element.width;\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var bitmapImage = new Image();\n bitmapImage.src = signature;\n if (signature.slice(0, 4) !== 'data') {\n bitmapImage.crossOrigin = 'anonymous';\n }\n bitmapImage.onload = function () {\n Promise.all([\n createImageBitmap(bitmapImage, 0, 0, width, height)\n ]).then(function (results) {\n var tempCanvas = document.createElement('canvas');\n tempCanvas.width = width;\n tempCanvas.height = height;\n tempCanvas.getContext('2d').drawImage(results[0], 0, 0);\n if (signature.slice(0, 4) !== 'data') {\n proxy.canvasContext.globalCompositeOperation = 'source-over';\n }\n proxy.canvasContext.drawImage(tempCanvas, 0, 0, width, height, 0, 0, proxy.element.width, proxy.element.height);\n proxy.updateSnapCollection();\n });\n };\n this.isSignatureEmpty = this.canRedraw = false;\n };\n SignatureBase.prototype.saveBackground = function (savebg) {\n var imageSrc;\n if (savebg && this.backgroundImage) {\n imageSrc = this.snapColl[this.incStep - 1];\n }\n else {\n imageSrc = this.snapColl[this.incStep];\n }\n if (!savebg) {\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n if (this.backgroundImage) {\n this.setBackgroundImage(this.backgroundImage);\n }\n else if (this.backgroundColor) {\n this.setBackgroundColor(this.backgroundColor);\n savebg = true;\n }\n }\n if (savebg) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n var imageObj_1 = new Image();\n imageObj_1.crossOrigin = 'anonymous';\n imageObj_1.src = imageSrc;\n imageObj_1.onload = function () {\n proxy_1.backgroundLoaded = true;\n proxy_1.canvasContext.globalCompositeOperation = 'source-over';\n proxy_1.canvasContext.drawImage(imageObj_1, 0, 0, proxy_1.element.width, proxy_1.element.height);\n proxy_1.save(proxy_1.fileType, proxy_1.fileName);\n };\n }\n };\n /**\n * To save the signature with the given file type and file name.\n *\n * @param {SignatureFileType} type - specify type of the file to be saved a signature.\n * @param {string} fileName - specify name of the file to be saved a signature.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.save = function (type, fileName) {\n if (this.saveWithBackground && this.backgroundLoaded == null && (this.backgroundImage || this.backgroundColor)) {\n this.backgroundLoaded = false;\n this.fileType = type;\n this.fileName = fileName;\n this.saveBackground(false);\n }\n else if (type === 'Svg') {\n fileName = fileName || 'Signature';\n this.toSVG(fileName);\n }\n else if (type === 'Jpeg') {\n fileName = fileName || 'Signature';\n if (!this.saveWithBackground || this.saveWithBackground && !(this.backgroundImage || this.backgroundColor)) {\n this.toJPEG(fileName);\n }\n else {\n var dataURL = this.canvasContext.canvas.toDataURL('image/jpeg');\n this.download(this.getBlob(dataURL), fileName + '.' + 'jpeg');\n }\n }\n else {\n fileName = fileName || 'Signature';\n var dataURL = this.canvasContext.canvas.toDataURL('image/png');\n this.download(this.getBlob(dataURL), fileName + '.' + 'png');\n }\n if (this.saveWithBackground && this.backgroundLoaded) {\n this.resetSnap();\n }\n };\n SignatureBase.prototype.resetSnap = function () {\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var restoreObj = new Image();\n restoreObj.src = this.snapColl[this.incStep - 1];\n restoreObj.onload = function () {\n proxy.canvasContext.drawImage(restoreObj, 0, 0, proxy.element.width, proxy.element.height);\n proxy.updateSnapCollection();\n };\n this.backgroundLoaded = null;\n this.snapColl.pop();\n this.incStep--;\n this.snapColl.pop();\n this.incStep--;\n };\n SignatureBase.prototype.toJPEG = function (fileName) {\n var _this = this;\n var imageSrc = this.snapColl[this.incStep];\n this.setBackgroundColor('#ffffff');\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var imageObj = new Image();\n imageObj.crossOrigin = 'anonymous';\n imageObj.src = imageSrc;\n imageObj.onload = function () {\n proxy.canvasContext.globalCompositeOperation = 'source-over';\n proxy.canvasContext.drawImage(imageObj, 0, 0, proxy.element.width, proxy.element.height);\n var dataURL = proxy.canvasContext.canvas.toDataURL('image/jpeg');\n proxy.download(proxy.getBlob(dataURL), fileName + '.' + 'jpeg');\n proxy.canvasContext.clearRect(0, 0, proxy.canvasContext.canvas.width, proxy.canvasContext.canvas.height);\n _this.resizeHandler();\n };\n this.snapColl.pop();\n this.incStep--;\n };\n SignatureBase.prototype.toSVG = function (fileName, dataUrl) {\n var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('width', this.canvasContext.canvas.width.toString());\n svg.setAttribute('height', this.canvasContext.canvas.height.toString());\n var XLinkNS = 'http://www.w3.org/1999/xlink';\n var img = document.createElementNS('http://www.w3.org/2000/svg', 'image');\n img.setAttributeNS(null, 'height', this.canvasContext.canvas.height.toString());\n img.setAttributeNS(null, 'width', this.canvasContext.canvas.width.toString());\n img.setAttributeNS(XLinkNS, 'xlink:href', dataUrl);\n svg.appendChild(img);\n var prefix = 'data:image/svg+xml;base64,';\n var header = '';\n var footer = '';\n var body = svg.innerHTML;\n var data = header + body + footer;\n var svgDataUrl = prefix + btoa(data);\n if (fileName == null) {\n return svgDataUrl;\n }\n else {\n this.download(this.getBlob(svgDataUrl), fileName + '.' + 'svg');\n return null;\n }\n };\n /**\n * To save the signature as Blob.\n *\n * @returns {Blob}.\n */\n SignatureBase.prototype.saveAsBlob = function () {\n return this.getBlob(this.canvasContext.canvas.toDataURL('image/png'));\n };\n /**\n * To get the signature as Base 64.\n *\n * @private\n * @param {SignatureFileType} type - Specifies the type of the image format.\n * @returns {string}.\n */\n SignatureBase.prototype.getSignature = function (type) {\n if (this.saveWithBackground && this.backgroundColor && !this.backgroundImage) {\n this.tempContext.fillStyle = this.backgroundColor;\n this.tempContext.fillRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n }\n else if (!this.backgroundColor && !this.backgroundImage && type === 'Jpeg') {\n this.tempContext.fillStyle = '#fff';\n this.tempContext.fillRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n }\n this.tempContext.drawImage(this.element, 0, 0);\n if (type === 'Jpeg') {\n return this.tempCanvas.toDataURL('image/jpeg');\n }\n else if (type === 'Svg') {\n return this.toSVG(null, this.tempCanvas.toDataURL('image/png'));\n }\n else {\n return this.tempCanvas.toDataURL('image/png');\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n SignatureBase.prototype.getModuleName = function () {\n return 'signature';\n };\n /**\n * To get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n SignatureBase.prototype.getPersistData = function () {\n this.signatureValue = this.snapColl[this.incStep];\n return this.addOnPersist(['signatureValue']);\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 SignatureBase.prototype.destroy = function () {\n if (this.getModuleName() !== 'image-editor') {\n this.unwireEvents(null);\n removeClass([this.element], 'e-' + this.getModuleName());\n this.element.removeAttribute('tabindex');\n this.pointColl = null;\n this.tempContext = null;\n this.tempCanvas = null;\n this.canvasContext = null;\n }\n _super.prototype.destroy.call(this);\n this.element = null;\n };\n /**\n * Modified onPropertyChanged method for both blazor and EJ2 signature component.\n *\n * @private\n * @param {string} key - Specifies the property, which changed.\n * @param {string} value - Specifies the property value changed.\n * @returns {void}\n */\n SignatureBase.prototype.propertyChanged = function (key, value) {\n var canvasNew = this.canvasContext;\n switch (key) {\n case 'backgroundColor':\n canvasNew.canvas.style.backgroundColor = value;\n this.backgroundColor = value;\n break;\n case 'backgroundImage':\n canvasNew.canvas.style.backgroundImage = 'url(' + value + ')';\n this.backgroundImage = value;\n if (this.saveWithBackground) {\n this.setBackgroundImage(this.backgroundImage, 'temp');\n }\n break;\n case 'strokeColor':\n canvasNew.fillStyle = value;\n this.strokeColor = value;\n break;\n case 'saveWithBackground':\n this.saveWithBackground = value;\n break;\n case 'maxStrokeWidth':\n this.maxStrokeWidth = value;\n break;\n case 'minStrokeWidth':\n this.minStrokeWidth = value;\n break;\n case 'velocity':\n this.velocity = value;\n break;\n case 'isReadOnly':\n this.isRead(value);\n break;\n case 'disabled':\n this.enableOrDisable(value);\n break;\n }\n };\n return SignatureBase;\n}(Component));\n\nvar __extends$a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * The Signature component allows user to draw smooth signatures as vector outline of strokes using variable width bezier curve interpolation.\n * It allows to save signature as image.\n * You can use your finger, pen, or mouse on a tablet, touchscreen, etc., to draw your own signature on this Signature component.\n * Signature component is a user interface to draw the Signature or Text.\n * It provides supports for various Background color, Stroke color and Background Image.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Signature = /** @__PURE__ @class */ (function (_super) {\n __extends$a(Signature, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {SignatureModel} options - Specifies the Signature model.\n * @param {string | HTMLCanvasElement} element - Specifies the element.\n * @private\n */\n function Signature(options, element) {\n return _super.call(this, options, element) || this;\n }\n Signature.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * To Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Signature.prototype.render = function () {\n this.initialize();\n };\n Signature.prototype.initialize = function () {\n this.element.setAttribute('role', 'img');\n this.element.setAttribute('aria-label', 'signature');\n addClass([this.element], 'e-' + this.getModuleName());\n _super.prototype.initialize.call(this, this.element);\n if (this.enablePersistence) {\n this.loadPersistedSignature();\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n Signature.prototype.getModuleName = function () {\n return _super.prototype.getModuleName.call(this);\n };\n /**\n * To get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Signature.prototype.getPersistData = function () {\n return _super.prototype.getPersistData.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SignatureModel} newProp - Specifies new properties\n * @param {SignatureModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Signature.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 'backgroundColor':\n _super.prototype.propertyChanged.call(this, prop, newProp.backgroundColor);\n break;\n case 'backgroundImage':\n _super.prototype.propertyChanged.call(this, prop, newProp.backgroundImage);\n break;\n case 'strokeColor':\n if (newProp.strokeColor !== oldProp.strokeColor) {\n _super.prototype.propertyChanged.call(this, prop, newProp.strokeColor);\n }\n break;\n case 'maxStrokeWidth':\n if (newProp.maxStrokeWidth !== oldProp.maxStrokeWidth) {\n _super.prototype.propertyChanged.call(this, prop, newProp.maxStrokeWidth);\n }\n break;\n case 'minStrokeWidth':\n if (newProp.minStrokeWidth !== oldProp.minStrokeWidth) {\n _super.prototype.propertyChanged.call(this, prop, newProp.minStrokeWidth);\n }\n break;\n case 'velocity':\n if (newProp.velocity !== oldProp.velocity) {\n _super.prototype.propertyChanged.call(this, prop, newProp.velocity);\n }\n break;\n case 'saveWithBackground':\n _super.prototype.propertyChanged.call(this, prop, newProp.saveWithBackground);\n break;\n case 'isReadOnly':\n _super.prototype.propertyChanged.call(this, prop, newProp.isReadOnly);\n break;\n case 'disabled':\n _super.prototype.propertyChanged.call(this, prop, newProp.disabled);\n break;\n }\n }\n };\n __decorate$9([\n Property('')\n ], Signature.prototype, \"backgroundColor\", void 0);\n __decorate$9([\n Property('')\n ], Signature.prototype, \"backgroundImage\", void 0);\n __decorate$9([\n Property(false)\n ], Signature.prototype, \"disabled\", void 0);\n __decorate$9([\n Property(false)\n ], Signature.prototype, \"isReadOnly\", void 0);\n __decorate$9([\n Property(true)\n ], Signature.prototype, \"saveWithBackground\", void 0);\n __decorate$9([\n Property('#000000')\n ], Signature.prototype, \"strokeColor\", void 0);\n __decorate$9([\n Property(0.5)\n ], Signature.prototype, \"minStrokeWidth\", void 0);\n __decorate$9([\n Property(2)\n ], Signature.prototype, \"maxStrokeWidth\", void 0);\n __decorate$9([\n Property(0.7)\n ], Signature.prototype, \"velocity\", void 0);\n __decorate$9([\n Property('en-US')\n ], Signature.prototype, \"locale\", void 0);\n __decorate$9([\n Property(false)\n ], Signature.prototype, \"enableRtl\", void 0);\n __decorate$9([\n Property(false)\n ], Signature.prototype, \"enablePersistence\", void 0);\n __decorate$9([\n Event()\n ], Signature.prototype, \"beforeSave\", void 0);\n __decorate$9([\n Event()\n ], Signature.prototype, \"change\", void 0);\n __decorate$9([\n Event()\n ], Signature.prototype, \"created\", void 0);\n Signature = __decorate$9([\n NotifyPropertyChanges\n ], Signature);\n return Signature;\n}(SignatureBase));\n\nvar __extends$b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ICONCSS = 'e-rating-icon e-icons e-star-filled';\nvar ITEMLIST = 'e-rating-item-list';\nvar ITEMCONTAINER = 'e-rating-item-container';\nvar SELECTED = 'e-rating-selected';\nvar INTERMEDIATE = 'e-rating-intermediate';\nvar LABEL = 'e-rating-label';\nvar RESET = 'e-icons e-reset';\nvar HIDDEN = 'e-rating-hidden';\nvar DISABLED$2 = 'e-disabled';\nvar READONLY = 'e-rating-readonly';\nvar RTL$2 = 'e-rtl';\nvar ANIMATION = 'e-rating-animation';\nvar FULLTEMPLATE = 'e-rating-full';\nvar EMPTYTEMPLATE = 'e-rating-empty';\nvar SELECTEDVALUE = 'e-selected-value';\nvar RATINGVALUE = '--rating-value';\n/**\n * Defines where to position the label in rating\n */\nvar LabelPosition;\n(function (LabelPosition) {\n /**\n * The label is positioned at the top center of the rating component.\n */\n LabelPosition[\"Top\"] = \"Top\";\n /**\n * The label is positioned at the bottom center of the rating component.\n */\n LabelPosition[\"Bottom\"] = \"Bottom\";\n /**\n * The label is positioned at the left side of the rating component.\n */\n LabelPosition[\"Left\"] = \"Left\";\n /**\n * The label is positioned at the right side of the rating component.\n */\n LabelPosition[\"Right\"] = \"Right\";\n})(LabelPosition || (LabelPosition = {}));\n/**\n * Defines the precision type of the rating.\n * It is used to component the granularity of the rating, allowing users to provide ratings with varying levels of precision.\n */\nvar PrecisionType;\n(function (PrecisionType) {\n /**\n * The rating is increased in whole number increments.\n */\n PrecisionType[\"Full\"] = \"Full\";\n /**\n * The rating is increased in increments of 0.5 (half).\n */\n PrecisionType[\"Half\"] = \"Half\";\n /**\n * The rating is increased in increments of 0.25 (quarter).\n */\n PrecisionType[\"Quarter\"] = \"Quarter\";\n /**\n * The rating is increased in increments of 0.1.\n */\n PrecisionType[\"Exact\"] = \"Exact\";\n})(PrecisionType || (PrecisionType = {}));\n/**\n * The Rating component allows the user to rate something by clicking on a set of symbols on a numeric scale.\n * This allows users to provide feedback or ratings for products, services, or content.\n *\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Rating = /** @__PURE__ @class */ (function (_super) {\n __extends$b(Rating, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {RatingModel} options - Specifies the rating model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Rating(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.itemElements = [];\n return _this;\n }\n Rating.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.keyConfigs = {\n downarrow: 'downarrow',\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n uparrow: 'uparrow',\n space: 'space'\n };\n this.tooltipOpen = false;\n this.isTouchSelected = false;\n };\n Rating.prototype.render = function () {\n this.initialize();\n this.updateMinValue();\n this.updateTemplateFunction();\n this.triggerChange(null, this.value, false);\n this.renderItems();\n this.displayLabel();\n };\n Rating.prototype.initialize = function () {\n this.wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-container ' });\n this.element.parentNode.insertBefore(this.wrapper, this.element);\n this.wrapper.appendChild(this.element);\n if ((this.element.getAttribute('name') == null)) {\n this.element.setAttribute('name', this.element.id);\n }\n attributes(this.element, { 'aria-label': 'rating' });\n this.renderItemList();\n this.updateReset();\n if (this.readOnly) {\n this.wrapper.classList.add(READONLY);\n }\n if (!this.visible) {\n this.wrapper.classList.add(HIDDEN);\n }\n if (this.enableRtl) {\n this.wrapper.classList.add(RTL$2);\n }\n if (this.enableAnimation) {\n this.wrapper.classList.add(ANIMATION);\n }\n if (this.cssClass) {\n addClass([this.wrapper], this.cssClass.split(' '));\n }\n this.updateTooltip();\n this.wireKeyboardEvent();\n this.updateDisabled();\n };\n Rating.prototype.updateDisabled = function () {\n this.wrapper.classList[this.disabled ? 'add' : 'remove'](DISABLED$2);\n attributes(this.ratingItemList, { 'tabindex': (this.disabled) ? '-1' : '0' });\n this.updateResetButton();\n };\n Rating.prototype.updateResetButton = function () {\n if (this.allowReset) {\n var isDisabled = (this.value <= this.min) || this.disabled;\n this.resetElement.classList[isDisabled ? 'add' : 'remove'](DISABLED$2);\n attributes(this.resetElement, { 'tabindex': (isDisabled ? '-1' : '0'), 'aria-hidden': isDisabled.toString() });\n }\n };\n Rating.prototype.renderItemList = function () {\n var _this = this;\n this.ratingItemList = this.createElement('div', {\n className: ITEMLIST,\n id: this.element.id + '_item-list'\n });\n attributes(this.ratingItemList, { 'aria-label': 'rating', 'role': 'slider' });\n this.wrapper.appendChild(this.ratingItemList);\n EventHandler.add(this.ratingItemList, 'touchmove', function (e) { return _this.touchMoveHandler(e); }, this);\n EventHandler.add(this.ratingItemList, Browser.touchEndEvent, this.touchEndHandler, this);\n };\n Rating.prototype.touchMoveHandler = function (e) {\n if (!this.isTouchSelected) {\n this.wrapper.classList.add('e-rating-touch');\n this.isTouchSelected = true;\n }\n this.wrapper.classList.add('e-touch-select');\n var rect = this.ratingItemList.getBoundingClientRect();\n var x = e.touches[0].clientX - rect.x;\n var currValue = (x / rect.width) * this.itemsCount;\n currValue = (this.enableRtl) ? (this.itemsCount - currValue) : currValue;\n currValue = currValue < this.min ? this.min : currValue > this.itemsCount ? this.itemsCount : currValue;\n currValue = this.validateValue(currValue);\n var element = currValue === 0 ? null : this.itemElements[parseInt((Math.ceil(currValue) - 1).toString(), 10)];\n if (currValue === this.currentValue) {\n if (this.showTooltip && element) {\n this.openRatingTooltip(element, false);\n }\n return;\n }\n var previousValue = this.currentValue;\n this.triggerChange(e, currValue);\n this.updateCurrentValue(currValue);\n if (this.showTooltip) {\n if (element) {\n if (Math.ceil(currValue) !== Math.ceil(previousValue)) {\n this.closeRatingTooltip();\n }\n this.openRatingTooltip(element, true);\n }\n else {\n this.closeRatingTooltip();\n }\n }\n };\n Rating.prototype.touchEndHandler = function () {\n this.closeRatingTooltip();\n this.wrapper.classList.remove('e-touch-select');\n };\n Rating.prototype.updateTemplateFunction = function () {\n this.emptyTemplateFunction = this.emptyTemplate ? this.getTemplateString(this.emptyTemplate) : null;\n this.fullTemplateFunction = this.fullTemplate ? this.getTemplateString(this.fullTemplate) : null;\n };\n Rating.prototype.renderItems = function () {\n var _this = this;\n for (var i = 0; i < this.itemsCount; i++) {\n var ratingItemContainer = this.createElement('span', { className: ITEMCONTAINER });\n var spanItem = this.createElement('span', { className: 'e-rating-item' });\n var ratingValue = this.getRatingValue(this.value, i);\n this.renderItemContent(spanItem, ratingValue, i, false);\n ratingItemContainer.appendChild(spanItem);\n this.wireItemsEvents(ratingItemContainer, i + 1);\n this.itemElements.push(ratingItemContainer);\n var eventArgs = { element: ratingItemContainer, value: i + 1 };\n this.trigger('beforeItemRender', eventArgs, function (args) {\n _this.ratingItemList.appendChild(args.element);\n });\n }\n attributes(this.ratingItemList, { 'aria-valuemax': this.itemsCount.toString() });\n this.updateItemValue(false);\n };\n Rating.prototype.renderItemContent = function (spanEle, val, index, isrerender) {\n if (isrerender) {\n this.removeItemContent(spanEle);\n }\n if (this.fullTemplate && val === 1) {\n spanEle.classList.add(FULLTEMPLATE);\n append(this.fullTemplateFunction({ index: index, ratingValue: val }, this, 'ratingFullTemplate', (this.element.id + 'fullTemplate'), this.isStringTemplate), spanEle);\n }\n else if (this.emptyTemplate) {\n spanEle.classList.add(EMPTYTEMPLATE);\n append(this.emptyTemplateFunction({ index: index, ratingValue: val }, this, 'ratingEmptyTemplate', (this.element.id + 'emptyTemplate'), this.isStringTemplate), spanEle);\n }\n else {\n addClass([spanEle], ICONCSS.split(' '));\n }\n };\n Rating.prototype.removeItemContent = function (spanEle) {\n spanEle.classList.remove(FULLTEMPLATE, EMPTYTEMPLATE);\n removeClass([spanEle], ICONCSS.split(' '));\n if (spanEle.firstChild) {\n spanEle.innerHTML = '';\n }\n };\n Rating.prototype.updateTooltip = function () {\n if (this.showTooltip) {\n this.tooltipObj = new Tooltip({\n target: '.e-rating-item-container', windowCollision: true,\n opensOn: 'Custom', cssClass: this.cssClass ? ('e-rating-tooltip ' + this.cssClass) : 'e-rating-tooltip'\n });\n this.tooltipObj.appendTo(this.ratingItemList);\n }\n else {\n if (!isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n }\n };\n Rating.prototype.updateMinValue = function () {\n this.setProperties({ min: this.validateValue(this.min) }, true);\n if (this.min > 0 && this.value < this.min) {\n this.triggerChange(null, this.min, false);\n }\n attributes(this.ratingItemList, { 'aria-valuemin': this.min.toString() });\n };\n Rating.prototype.validateValue = function (currentValue) {\n if (currentValue > this.itemsCount) {\n currentValue = this.itemsCount;\n }\n else if (currentValue < 0) {\n currentValue = 0;\n }\n else {\n currentValue = ((this.precision === PrecisionType.Full) || this.enableSingleSelection) ? Math.round(currentValue) :\n (this.precision === PrecisionType.Half) ? (Math.round(currentValue * 2) / 2) :\n (this.precision === PrecisionType.Quarter) ? (Math.round(currentValue * 4) / 4) : (Math.round(currentValue * 10) / 10);\n }\n return currentValue;\n };\n Rating.prototype.getRatingValue = function (value, i) {\n return (this.enableSingleSelection) ? (((value > i) && (value <= i + 1)) ? 1 : 0) :\n (value >= i + 1) ? 1 : ((value < i) ? 0 : (value - i));\n };\n Rating.prototype.updateItemValue = function (isUpdate) {\n if (isUpdate === void 0) { isUpdate = true; }\n if (isUpdate && this.isReact) {\n this.clearTemplate(['ratingEmptyTemplate', 'ratingFullTemplate']);\n }\n for (var i = 0; i < this.itemsCount; i++) {\n var itemElement = this.itemElements[parseInt(i.toString(), 10)];\n itemElement.classList.remove(SELECTED, INTERMEDIATE, SELECTEDVALUE);\n var ratingValue = this.getRatingValue(this.currentValue, i);\n if (ratingValue === 1) {\n itemElement.classList.add(SELECTED);\n }\n else if (ratingValue > 0) {\n itemElement.classList.add(INTERMEDIATE);\n }\n else if ((this.precision === PrecisionType.Full) && (i + 1 <= this.value) && (!this.enableSingleSelection)) {\n itemElement.classList.add(SELECTEDVALUE);\n }\n if (isUpdate) {\n this.updateItemContent(ratingValue, i);\n }\n itemElement.style.setProperty(RATINGVALUE, (ratingValue * 100) + '%');\n itemElement.classList[((this.value === 0) && (i === 0)) || (this.value === i + 1) || ((ratingValue > 0) && (ratingValue < 1)) ? 'add' : 'remove']('e-rating-focus');\n }\n if (isUpdate) {\n this.renderReactTemplates();\n }\n this.updateResetButton();\n attributes(this.ratingItemList, { 'aria-valuenow': this.currentValue.toString() });\n attributes(this.element, { 'value': this.value.toString() });\n };\n Rating.prototype.updateItemContent = function (ratingValue, index) {\n if (!this.fullTemplate && !this.emptyTemplate) {\n return;\n }\n var spanEle = this.itemElements[parseInt(index.toString(), 10)].querySelector('.e-rating-item');\n if (this.fullTemplate && ratingValue === 1) {\n if (!this.isReact && spanEle.classList.contains(FULLTEMPLATE)) {\n return;\n }\n this.removeItemContent(spanEle);\n spanEle.classList.add(FULLTEMPLATE);\n append(this.fullTemplateFunction({ ratingValue: ratingValue, index: index }, this, 'ratingFullTemplate', (this.element.id + 'fullTemplate' + index), this.isStringTemplate), spanEle);\n }\n else if (this.emptyTemplate) {\n if (!this.isReact && spanEle.classList.contains(EMPTYTEMPLATE)) {\n return;\n }\n this.removeItemContent(spanEle);\n spanEle.classList.add(EMPTYTEMPLATE);\n append(this.emptyTemplateFunction({ ratingValue: ratingValue, index: index }, this, 'ratingEmptyTemplate', (this.element.id + 'emptyTemplate' + index), this.isStringTemplate), spanEle);\n }\n else {\n this.removeItemContent(spanEle);\n addClass([spanEle], ICONCSS.split(' '));\n }\n };\n Rating.prototype.updateTooltipContent = function (isChange) {\n var _this = this;\n if (this.showTooltip) {\n if (this.isReact) {\n this.clearTemplate(['ratingTooltipTemplate']);\n }\n var content_1;\n if (this.tooltipTemplate) {\n content_1 = this.createElement('span', { className: 'e-rating-tooltip-content' });\n var templateFunction = this.getTemplateString(this.tooltipTemplate);\n append(templateFunction({ value: this.currentValue }, this, 'ratingTooltipTemplate', (this.element.id + 'tooltipTemplate'), this.isStringTemplate), content_1);\n this.tooltipObj.setProperties({ content: content_1 }, isChange);\n if (this.isAngular) {\n setTimeout(function () {\n var ratingSpan = _this.ratingItemList.querySelectorAll('.' + ITEMCONTAINER + '.' + SELECTED);\n _this.tooltipObj.refresh(ratingSpan[ratingSpan.length - 1]);\n });\n }\n }\n else {\n content_1 = this.currentValue.toString();\n this.tooltipObj.setProperties({ content: initializeCSPTemplate(function () { return content_1; }) }, isChange);\n }\n this.renderReactTemplates();\n }\n };\n Rating.prototype.getTemplateString = function (template) {\n var stringContent = '';\n try {\n if (typeof template !== 'function') {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n stringContent = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n stringContent = template;\n }\n }\n else {\n stringContent = template;\n }\n }\n catch (e) {\n stringContent = template;\n }\n return compile(stringContent);\n };\n Rating.prototype.displayLabel = function () {\n if (this.showLabel) {\n this.spanLabel = this.createElement('span', { className: LABEL });\n this.updateLabel();\n this.updateLabelPosition();\n }\n else {\n if (this.wrapper.contains(this.spanLabel)) {\n remove(this.spanLabel);\n this.spanLabel = null;\n }\n }\n };\n Rating.prototype.updateLabel = function () {\n if (this.showLabel) {\n if (this.labelTemplate) {\n if (this.isReact) {\n this.clearTemplate(['ratingLabelTemplate']);\n }\n if (this.spanLabel.firstChild) {\n this.spanLabel.innerHTML = '';\n }\n var templateFunction = this.getTemplateString(this.labelTemplate);\n append(templateFunction({ value: this.currentValue }, this, 'ratingLabelTemplate', (this.element.id + 'labelTemplate'), this.isStringTemplate), this.spanLabel);\n this.renderReactTemplates();\n }\n else {\n this.spanLabel.textContent = this.currentValue + ' / ' + this.itemsCount;\n }\n }\n };\n Rating.prototype.updateReset = function () {\n if (this.allowReset) {\n this.resetElement = this.createElement('span', {\n className: RESET,\n attrs: { 'aria-label': 'resetbutton', 'role': 'button' }\n });\n this.updateResetButton();\n EventHandler.add(this.resetElement, 'click', this.resetClicked, this);\n this.wrapper.insertBefore(this.resetElement, this.ratingItemList);\n }\n else {\n if (this.wrapper.contains(this.resetElement)) {\n remove(this.resetElement);\n this.resetElement = null;\n }\n }\n };\n Rating.prototype.updateLabelPosition = function () {\n this.clearLabelPosition();\n this.spanLabel.classList.add('e-label-' + this.labelPosition.toLowerCase());\n if (this.labelPosition === 'Left' || this.labelPosition === 'Top') {\n this.wrapper.firstChild.after(this.spanLabel);\n }\n else {\n this.wrapper.appendChild(this.spanLabel);\n }\n };\n Rating.prototype.clearLabelPosition = function () {\n var removeCss = this.spanLabel.classList.value.match(/(e-label-[top|bottom|right|left]+)/g);\n if (removeCss) {\n removeClass([this.spanLabel], removeCss);\n }\n };\n Rating.prototype.wireItemsEvents = function (itemElement, index) {\n var _this = this;\n EventHandler.add(itemElement, 'click', function (e) { return _this.clickHandler(e); }, this);\n EventHandler.add(itemElement, 'mousemove', function (e) { return _this.mouseMoveHandler(index, e); }, this);\n EventHandler.add(itemElement, 'mouseleave', this.mouseLeaveHandler, this);\n };\n Rating.prototype.clickHandler = function (e) {\n this.currentValue = (this.min > 0 && this.currentValue < this.min) ? this.min : this.currentValue;\n this.triggerChange(e, this.currentValue);\n this.updateItemValue();\n this.updateLabel();\n this.updateResetButton();\n };\n Rating.prototype.updateValueChange = function (e, val, isInteracted) {\n if (isInteracted === void 0) { isInteracted = true; }\n this.triggerChange(e, val, isInteracted);\n this.updateItemValue();\n this.updateLabel();\n };\n Rating.prototype.triggerChange = function (e, val, isInteracted) {\n if (isInteracted === void 0) { isInteracted = true; }\n val = this.validateValue(val);\n this.currentValue = val;\n if (this.currentValue === this.value) {\n return;\n }\n var eventArgs = { event: e, isInteracted: isInteracted, value: val, previousValue: this.value };\n this.setProperties({ value: val }, true);\n this.trigger('valueChanged', eventArgs);\n };\n Rating.prototype.mouseMoveHandler = function (index, e) {\n if (this.isTouchSelected) {\n this.wrapper.classList.remove('e-rating-touch');\n this.isTouchSelected = false;\n }\n var currValue = this.calculateCurrentValue(index, e);\n currValue = this.validateValue(currValue);\n var element = this.itemElements[parseInt((index - 1).toString(), 10)];\n if (currValue === this.currentValue) {\n this.openRatingTooltip(element, false);\n return;\n }\n this.updateCurrentValue(currValue);\n this.openRatingTooltip(element, true);\n var eventArgs = { element: element, event: e, value: currValue };\n this.trigger('onItemHover', eventArgs);\n };\n Rating.prototype.openRatingTooltip = function (element, isChange) {\n if (this.showTooltip) {\n if (!this.tooltipOpen) {\n this.updateTooltipContent(false);\n this.tooltipObj.open(element);\n this.tooltipOpen = true;\n }\n else if (isChange) {\n this.updateTooltipContent(true);\n this.tooltipObj.refresh(element);\n }\n }\n };\n Rating.prototype.closeRatingTooltip = function () {\n if (this.tooltipOpen) {\n this.tooltipObj.close();\n this.tooltipOpen = false;\n }\n };\n Rating.prototype.updateCurrentValue = function (currValue) {\n this.currentValue = currValue;\n this.updateItemValue();\n this.updateLabel();\n };\n Rating.prototype.mouseLeaveHandler = function () {\n this.closeRatingTooltip();\n this.updateCurrentValue(this.value);\n };\n Rating.prototype.calculateCurrentValue = function (index, args) {\n var currentValue = index;\n if (!(this.enableSingleSelection || (this.precision === PrecisionType.Full))) {\n currentValue = args.offsetX / this.itemElements[index - 1].clientWidth;\n currentValue = (this.enableRtl) ? (1 - currentValue) : currentValue;\n if (this.precision === PrecisionType.Quarter) {\n currentValue = currentValue <= 0.25 ? 0.25 : currentValue <= 0.5 ? 0.5 : currentValue < 0.75 ? 0.75 : 1.0;\n }\n else if (this.precision === PrecisionType.Half) {\n currentValue = currentValue <= 0.5 ? 0.5 : 1;\n }\n currentValue = currentValue + index - 1;\n }\n return currentValue;\n };\n /**\n * Reset’s the value to minimum.\n *\n * {% codeBlock src='rating/reset/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Rating.prototype.reset = function () {\n this.resetClicked(null, false);\n };\n Rating.prototype.resetClicked = function (e, isInteracted) {\n if (isInteracted === void 0) { isInteracted = true; }\n this.updateValueChange(e, this.min, isInteracted);\n this.updateResetButton();\n };\n Rating.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRating = new KeyboardEvents(this.wrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Rating.prototype.keyActionHandler = function (e) {\n e.preventDefault();\n if (this.disabled || this.readOnly) {\n return;\n }\n if (e.target.classList.contains(ITEMLIST)) {\n switch (e.action) {\n case 'uparrow':\n this.handleNavigation(e, true);\n break;\n case 'downarrow':\n this.handleNavigation(e, false);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl);\n break;\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl);\n break;\n }\n }\n if (this.allowReset && e.target.classList.contains('e-reset')) {\n switch (e.action) {\n case 'space':\n this.resetClicked(e);\n break;\n }\n }\n };\n Rating.prototype.handleNavigation = function (e, isIncrease) {\n if ((!isIncrease && (this.value > this.min)) || (isIncrease && (this.value < this.itemsCount))) {\n var currentValue = (this.precision === PrecisionType.Full || this.enableSingleSelection) ? 1 :\n (this.precision === PrecisionType.Half) ? 0.5 : (this.precision === PrecisionType.Quarter) ? 0.25 :\n Math.round(0.1 * 10) / 10;\n currentValue = isIncrease ? this.value + currentValue : this.value - currentValue;\n this.updateValueChange(e, (currentValue));\n this.updateResetButton();\n }\n };\n Rating.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['ratingEmptyTemplate', 'ratingFullTemplate']);\n }\n for (var i = 0; i < this.itemsCount; i++) {\n var itemElement = this.itemElements[parseInt(i.toString(), 10)].firstElementChild;\n this.renderItemContent(itemElement, this.getRatingValue(this.value, i), i, true);\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n Rating.prototype.getModuleName = function () {\n return 'rating';\n };\n /**\n * To get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Rating.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Rating.prototype.removeItemElements = function () {\n for (var i = 0; i < this.itemElements.length; i++) {\n remove(this.itemElements[parseInt(i.toString(), 10)]);\n }\n this.itemElements = [];\n };\n /**\n * Destroys the Rating instance.\n *\n * @returns {void}\n */\n Rating.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.clearTemplate();\n if (this.spanLabel) {\n remove(this.spanLabel);\n this.spanLabel = null;\n }\n if (this.resetElement) {\n remove(this.resetElement);\n this.resetElement = null;\n }\n if (this.showTooltip) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n remove(this.ratingItemList);\n this.ratingItemList = null;\n this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n remove(this.wrapper);\n this.wrapper = null;\n this.keyboardModuleRating.destroy();\n this.keyboardModuleRating = null;\n ['value', 'aria-label', 'name'].forEach(function (attr) {\n _this.element.removeAttribute(attr);\n });\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RatingModel} newProp - Specifies new properties\n * @param {RatingModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Rating.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.updateValueChange(null, (this.value > this.min) ? this.value : this.min, false);\n break;\n case 'min':\n this.updateMinValue();\n this.updateItemValue();\n this.updateLabel();\n break;\n case 'showLabel':\n this.displayLabel();\n break;\n case 'visible':\n this.wrapper.classList[!this.visible ? 'add' : 'remove'](HIDDEN);\n break;\n case 'disabled':\n this.updateDisabled();\n break;\n case 'readOnly':\n this.wrapper.classList[this.readOnly ? 'add' : 'remove'](READONLY);\n break;\n case 'allowReset':\n this.updateReset();\n break;\n case 'enableRtl':\n this.wrapper.classList[this.enableRtl ? 'add' : 'remove'](RTL$2);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.wrapper], newProp.cssClass.split(' '));\n }\n if (this.tooltipObj) {\n this.tooltipObj.setProperties({ cssClass: this.cssClass ? ('e-rating-tooltip ' + this.cssClass) : 'e-rating-tooltip' });\n }\n break;\n case 'labelPosition':\n this.updateLabelPosition();\n break;\n case 'showTooltip':\n this.updateTooltip();\n break;\n case 'precision':\n this.updateMinValue();\n this.triggerChange(null, this.value, false);\n this.updateItemValue();\n this.updateLabel();\n break;\n case 'enableSingleSelection':\n //To validate the value against single selection and update the items, label + trigger change event if value changed\n this.updateValueChange(null, this.currentValue, false);\n break;\n case 'enableAnimation':\n this.wrapper.classList[this.enableAnimation ? 'add' : 'remove'](ANIMATION);\n break;\n case 'emptyTemplate':\n case 'fullTemplate':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n case 'labelTemplate':\n this.updateLabel();\n break;\n case 'itemsCount':\n this.removeItemElements();\n this.renderItems();\n this.updateLabel();\n break;\n }\n }\n };\n __decorate$a([\n Property(false)\n ], Rating.prototype, \"allowReset\", void 0);\n __decorate$a([\n Property('')\n ], Rating.prototype, \"cssClass\", void 0);\n __decorate$a([\n Property(false)\n ], Rating.prototype, \"disabled\", void 0);\n __decorate$a([\n Property('')\n ], Rating.prototype, \"emptyTemplate\", void 0);\n __decorate$a([\n Property(true)\n ], Rating.prototype, \"enableAnimation\", void 0);\n __decorate$a([\n Property(false)\n ], Rating.prototype, \"enableSingleSelection\", void 0);\n __decorate$a([\n Property('')\n ], Rating.prototype, \"fullTemplate\", void 0);\n __decorate$a([\n Property(5)\n ], Rating.prototype, \"itemsCount\", void 0);\n __decorate$a([\n Property(LabelPosition.Right)\n ], Rating.prototype, \"labelPosition\", void 0);\n __decorate$a([\n Property('')\n ], Rating.prototype, \"labelTemplate\", void 0);\n __decorate$a([\n Property(0.0)\n ], Rating.prototype, \"min\", void 0);\n __decorate$a([\n Property(PrecisionType.Full)\n ], Rating.prototype, \"precision\", void 0);\n __decorate$a([\n Property(false)\n ], Rating.prototype, \"readOnly\", void 0);\n __decorate$a([\n Property(false)\n ], Rating.prototype, \"showLabel\", void 0);\n __decorate$a([\n Property(true)\n ], Rating.prototype, \"showTooltip\", void 0);\n __decorate$a([\n Property('')\n ], Rating.prototype, \"tooltipTemplate\", void 0);\n __decorate$a([\n Property(0.0)\n ], Rating.prototype, \"value\", void 0);\n __decorate$a([\n Property(true)\n ], Rating.prototype, \"visible\", void 0);\n __decorate$a([\n Event()\n ], Rating.prototype, \"beforeItemRender\", void 0);\n __decorate$a([\n Event()\n ], Rating.prototype, \"created\", void 0);\n __decorate$a([\n Event()\n ], Rating.prototype, \"onItemHover\", void 0);\n __decorate$a([\n Event()\n ], Rating.prototype, \"valueChanged\", void 0);\n Rating = __decorate$a([\n NotifyPropertyChanges\n ], Rating);\n return Rating;\n}(Component));\n\nvar __extends$c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar INPUTFIELD = 'e-otp-input-field';\nvar RTL$3 = 'e-rtl';\n/**\n * Specifies the type of input for the Otp (One-Time Password) input component.\n */\nvar OtpInputType;\n(function (OtpInputType) {\n /**\n * Specifies the type of input to be number for the Otp input.\n */\n OtpInputType[\"Number\"] = \"number\";\n /**\n * Specifies the type of input to be text for the Otp input.\n */\n OtpInputType[\"Text\"] = \"text\";\n /**\n * Specifies the type of input to be password for the Otp input.\n */\n OtpInputType[\"Password\"] = \"password\";\n})(OtpInputType || (OtpInputType = {}));\n/**\n * Specifies the style variant for the Otp (One-Time Password) input component.\n */\nvar OtpInputStyle;\n(function (OtpInputStyle) {\n /**\n * Specifies the style of the Otp input to be outlined.\n */\n OtpInputStyle[\"Outlined\"] = \"outlined\";\n /**\n * Specifies the style of the Otp input to be underlined.\n */\n OtpInputStyle[\"Underlined\"] = \"underlined\";\n /**\n * Specifies the style of the Otp input to be filled.\n */\n OtpInputStyle[\"Filled\"] = \"filled\";\n})(OtpInputStyle || (OtpInputStyle = {}));\n/**\n * Enum for the case transformation options for OTP input text.\n *\n * @readonly\n * @enum {string}\n */\nvar TextTransform;\n(function (TextTransform) {\n /**\n * No case transformation. The input text remains unchanged.\n */\n TextTransform[\"None\"] = \"none\";\n /**\n * Convert the input text to uppercase.\n */\n TextTransform[\"Uppercase\"] = \"uppercase\";\n /**\n * Convert the input text to lowercase.\n */\n TextTransform[\"Lowercase\"] = \"lowercase\";\n})(TextTransform || (TextTransform = {}));\n/**\n * Represents the Otp component that allows the user to enter the otp values.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar OtpInput = /** @__PURE__ @class */ (function (_super) {\n __extends$c(OtpInput, _super);\n function OtpInput(options, element) {\n var _this = _super.call(this, options, element) || this;\n /* Private variables */\n _this.inputs = [];\n _this.previousValue = '';\n _this.separatorElements = [];\n _this.shouldFireFocus = true;\n _this.shouldFireBlur = true;\n _this.isFocusInCalled = false;\n _this.isFocusOutCalled = false;\n _this.handleWheelEvent = function (e) {\n e.preventDefault();\n };\n return _this;\n }\n OtpInput.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n OtpInput.prototype.render = function () {\n this.initialize();\n };\n OtpInput.prototype.initialize = function () {\n attributes(this.element, { 'role': 'group' });\n this.renderInputs();\n this.renderSeparator(1, this.inputs.length);\n this.addPlaceHolder();\n this.updateCssClass(this.cssClass);\n this.updateVariantClass();\n this.updateAriaLabel(this.ariaLabels);\n this.setElementAttributes(this.htmlAttributes, this.element);\n if (this.enableRtl) {\n this.element.classList.add(RTL$3);\n }\n this.previousValue = this.value.toString();\n if (this.autoFocus) {\n this.focusIn();\n }\n };\n OtpInput.prototype.renderInputs = function () {\n this.hiddenInputEle = this.createElement('input', {\n id: 'otpInput_hidden',\n attrs: {\n name: this.element.id,\n type: 'hidden',\n value: this.type === 'number' ? this.value.toString().replace(/\\D/g, '') : this.value.toString(),\n autoComplete: 'off'\n }\n });\n this.element.appendChild(this.hiddenInputEle);\n for (var i = 0; i < this.length; i++) {\n this.createOtpInput(i);\n }\n };\n OtpInput.prototype.createOtpInput = function (index) {\n var valueContainer = this.getDefaultValue();\n var inputValue = '';\n if (valueContainer) {\n var valueAtIndex = valueContainer[parseInt(index.toString(), 10)];\n if (this.type === 'number') {\n if (!isNaN(Number(valueAtIndex))) {\n inputValue = valueAtIndex;\n }\n }\n else {\n inputValue = valueAtIndex || '';\n }\n }\n var inputEle = this.createElement('input', {\n id: this.element.id + \"-\" + (index + 1),\n className: INPUTFIELD + ' ' + 'e-input',\n attrs: {\n maxlength: '1',\n type: this.type,\n inputmode: this.htmlAttributes['inputmode'] || (this.type === 'number' ? 'numeric' : 'text')\n }\n });\n if (this.disabled) {\n inputEle.setAttribute('disabled', 'disabled');\n }\n this.element.appendChild(inputEle);\n this.inputs.push(inputEle);\n if (inputValue) {\n inputEle.value = inputValue;\n }\n this.wireEvents(inputEle, index);\n };\n OtpInput.prototype.renderSeparator = function (index, length) {\n if (this.separator.length > 0) {\n for (var i = index; i < length; i++) {\n var separatorElement = this.createElement('span', {\n className: 'e-otp-separator'\n });\n separatorElement.textContent = this.separator;\n this.separatorElements.push(separatorElement);\n this.element.insertBefore(separatorElement, this.inputs[parseInt(i.toString(), 10)]);\n }\n }\n };\n OtpInput.prototype.updateSeparatorValue = function () {\n var _this = this;\n if (this.separator === '') {\n this.separatorElements.forEach(function (element) { return remove(element); });\n this.separatorElements = [];\n }\n else {\n this.separatorElements.forEach(function (element) {\n element.textContent = _this.separator;\n });\n }\n };\n OtpInput.prototype.addPlaceHolder = function () {\n for (var i = 0; i < this.inputs.length; i++) {\n var placeholderValue = this.placeholder.length <= 1 ? this.placeholder : this.placeholder.charAt(i);\n this.setElementAttributes({ 'placeholder': placeholderValue }, this.inputs[parseInt(i.toString(), 10)]);\n }\n };\n OtpInput.prototype.updateInputType = function (inputType) {\n var inputMode = this.htmlAttributes['inputmode'] || (inputType === 'number' ? 'numeric' : 'text');\n this.inputs.forEach(function (input) {\n input.type = inputType;\n input.setAttribute('inputmode', inputMode);\n });\n };\n OtpInput.prototype.getDefaultValue = function () {\n var extractedValue = typeof this.value === 'number' ? this.value.toString() : this.value;\n if (this.textTransform) {\n extractedValue = this.getTransformedText(extractedValue);\n }\n // To remove the white space if present.\n var value = extractedValue.replace(/\\s/g, '');\n return value.length > 0 ? value.split('') : undefined;\n };\n OtpInput.prototype.getTransformedText = function (transformingText) {\n var transformedText = this.textTransform.toLowerCase() === TextTransform.Lowercase ? transformingText.toLowerCase() :\n this.textTransform.toLowerCase() === TextTransform.Uppercase ? transformingText.toUpperCase() : transformingText;\n return transformedText;\n };\n OtpInput.prototype.handleInputChange = function (index, event) {\n var currentInputElement = this.inputs[parseInt(index.toString(), 10)];\n if (currentInputElement && index < this.length - 1 && currentInputElement.value.length > 0) {\n var nextInputElement = this.inputs[parseInt(index.toString(), 10) + 1];\n this.shouldFireFocus = this.shouldFireBlur = false;\n nextInputElement.focus();\n if (nextInputElement && nextInputElement.value.length > 0) {\n nextInputElement.select();\n }\n }\n var target = event.target;\n if (target.value.length > 1) {\n target.value = target.value.slice(0, 1);\n }\n if (this.textTransform) {\n target.value = this.getTransformedText(target.value);\n }\n this.triggerInputEvent(index, event);\n this.triggerValuechanged(event, true);\n };\n OtpInput.prototype.handleKeyAction = function (index, event) {\n if (event.key.length > 1 && !((index === 0 && event.key === 'Backspace') ||\n (index === this.length - 1 && event.key === 'Delete'))) {\n this.shouldFireFocus = this.shouldFireBlur = false;\n }\n var currentInputElement = this.inputs[parseInt(index.toString(), 10)];\n var previousInputElement = this.inputs[parseInt(index.toString(), 10) - 1];\n var nextInputElement = this.inputs[parseInt(index.toString(), 10) + 1];\n if (event.key === 'Delete') {\n var value = '';\n if (currentInputElement.value.length > 0) {\n value = currentInputElement.value;\n currentInputElement.value = '';\n }\n else if (index !== this.inputs.length - 1) {\n value = nextInputElement.value;\n nextInputElement.value = '';\n nextInputElement.focus();\n }\n if (value.length > 0) {\n this.triggerInputEvent(index, event);\n }\n }\n else if (event.key === 'Backspace') {\n if (index !== 0 && currentInputElement.value.length === 0) {\n var previousValue = previousInputElement.value;\n previousInputElement.value = '';\n previousInputElement.focus();\n if (previousValue.length > 0) {\n this.triggerInputEvent(index, event);\n }\n }\n }\n else if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n if (event.key === 'ArrowLeft' && index > 0) {\n previousInputElement.focus();\n previousInputElement.select();\n }\n else if (event.key === 'ArrowRight' && index < this.inputs.length - 1) {\n nextInputElement.focus();\n nextInputElement.select();\n }\n event.preventDefault();\n }\n else if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n event.preventDefault();\n }\n else if (event.key !== 'Tab' && !event.shiftKey && !event.ctrlKey) {\n if (this.type === 'number' && (/\\D/.test(event.key.toLocaleLowerCase()))) {\n event.preventDefault();\n }\n }\n };\n OtpInput.prototype.handleSelection = function (index) {\n var currentInputElement = this.inputs[parseInt(index.toString(), 10)];\n if (currentInputElement.value) {\n currentInputElement.select();\n }\n };\n OtpInput.prototype.handleFocus = function (index, event) {\n addClass([this.inputs[parseInt(index.toString(), 10)]], 'e-otp-input-focus');\n if (this.shouldFireFocus) {\n var eventArgs = {\n element: this.element,\n event: event,\n index: index,\n isInteracted: this.isFocusInCalled ? false : true,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n }\n this.shouldFireFocus = true;\n };\n OtpInput.prototype.handleBlur = function (index, event) {\n removeClass([this.inputs[parseInt(index.toString(), 10)]], 'e-otp-input-focus');\n if (this.shouldFireBlur) {\n var eventArgs = {\n element: this.element,\n event: event,\n value: this.value,\n index: index,\n isInteracted: this.isFocusOutCalled ? false : true\n };\n this.trigger('blur', eventArgs);\n }\n this.shouldFireBlur = true;\n };\n OtpInput.prototype.handlePaste = function (index, event) {\n var clipboardData = event.clipboardData;\n if (clipboardData) {\n var pastedText = clipboardData.getData('text');\n var pastedValues = pastedText.split('');\n var pastedValueIndex = 0;\n for (var i = index; i < this.inputs.length; i++) {\n if (pastedValues.length > 0 && pastedValues[parseInt(pastedValueIndex.toString(), 10)]) {\n this.inputs[parseInt(i.toString(), 10)].value = pastedValues[parseInt(pastedValueIndex.toString(), 10)];\n pastedValueIndex++;\n this.updateValueProperty();\n }\n }\n this.focusIn();\n this.triggerValuechanged(event, true);\n }\n };\n OtpInput.prototype.triggerInputEvent = function (index, event) {\n var previousValue = this.value.toString();\n this.updateValueProperty();\n var inputEventArgs = {\n element: this.element,\n event: event,\n previousValue: previousValue,\n value: this.value.toString(),\n index: index\n };\n this.trigger('input', inputEventArgs);\n };\n OtpInput.prototype.triggerValuechanged = function (event, isInteracted) {\n if (this.length === this.value.toString().length) {\n if (this.previousValue !== this.value) {\n var eventArgs = {\n element: this.element,\n event: event,\n isInteracted: isInteracted ? isInteracted : false,\n previousValue: this.previousValue,\n value: this.value\n };\n this.trigger('valueChanged', eventArgs);\n this.previousValue = this.value.toString();\n }\n }\n };\n OtpInput.prototype.wireEvents = function (inputEle, index) {\n EventHandler.add(inputEle, 'focus', this.handleFocus.bind(this, index), this);\n EventHandler.add(inputEle, 'blur', this.handleBlur.bind(this, index), this);\n EventHandler.add(inputEle, 'input', this.handleInputChange.bind(this, index), this);\n EventHandler.add(inputEle, 'keydown', this.handleKeyAction.bind(this, index), this);\n EventHandler.add(inputEle, 'click', this.handleSelection.bind(this, index), this);\n EventHandler.add(inputEle, 'paste', this.handlePaste.bind(this, index), this);\n EventHandler.add(inputEle, 'wheel', this.handleWheelEvent, this);\n };\n OtpInput.prototype.unWireEvents = function () {\n for (var i = 0; i < this.inputs.length; i++) {\n var currentInputElement = this.inputs[parseInt(i.toString(), 10)];\n EventHandler.remove(currentInputElement, 'focus', this.handleFocus.bind(this, i));\n EventHandler.remove(currentInputElement, 'blur', this.handleBlur.bind(this, i));\n EventHandler.remove(currentInputElement, 'input', this.handleInputChange.bind(this, i));\n EventHandler.remove(currentInputElement, 'keydown', this.handleKeyAction.bind(this, i));\n EventHandler.remove(currentInputElement, 'click', this.handleSelection.bind(this, i));\n EventHandler.remove(currentInputElement, 'paste', this.handlePaste.bind(this, i));\n EventHandler.remove(currentInputElement, 'wheel', this.handleWheelEvent);\n }\n };\n OtpInput.prototype.updateValueProperty = function () {\n var value = '';\n this.inputs.forEach(function (input) {\n value += input.value;\n });\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = typeof this.value === 'number' ? parseInt(value, 10) : value;\n this.isProtectedOnChange = prevOnChange;\n this.hiddenInputEle.value = this.value.toString();\n };\n OtpInput.prototype.updateInputValue = function (previousValue) {\n var stringifiedValue = this.value.toString();\n if (this.textTransform) {\n stringifiedValue = this.getTransformedText(stringifiedValue);\n }\n var previousStringValue = previousValue.toString();\n for (var i = 0; i < this.inputs.length; i++) {\n if (previousStringValue.charAt(i) !== stringifiedValue.charAt(i)) {\n this.inputs[parseInt(i.toString(), 10)].value = stringifiedValue.charAt(i);\n this.hiddenInputEle.value = stringifiedValue;\n }\n }\n this.focusIn();\n };\n OtpInput.prototype.updateCssClass = function (addCss, removeCss) {\n if (removeCss === void 0) { removeCss = ''; }\n var _a, _b;\n var cssClasses;\n if (removeCss) {\n cssClasses = removeCss.trim().split(' ');\n (_a = this.element.classList).remove.apply(_a, cssClasses);\n }\n if (addCss) {\n cssClasses = addCss.trim().split(' ');\n (_b = this.element.classList).add.apply(_b, cssClasses);\n }\n };\n OtpInput.prototype.updateVariantClass = function () {\n var variantClass = this.stylingMode.toLocaleLowerCase() === 'outlined' ? 'outline' : this.stylingMode.toLocaleLowerCase();\n var validClasses = ['underlined', 'filled', 'outline'];\n if (validClasses.indexOf(variantClass) !== -1) {\n removeClass([this.element], validClasses.map(function (cls) { return \"e-\" + cls; }));\n addClass([this.element], \"e-\" + variantClass);\n }\n };\n OtpInput.prototype.updateAriaLabel = function (customAriaLabel) {\n this.inputs.forEach(function (input, index) {\n var defaultLabel = \"Enter Otp Character \" + (index + 1);\n var ariaLabel = customAriaLabel && customAriaLabel.length > 0\n ? customAriaLabel[parseInt(index.toString(), 10)] || defaultLabel\n : defaultLabel;\n input.setAttribute('aria-label', ariaLabel);\n });\n };\n OtpInput.prototype.updateDisabledState = function () {\n var _this = this;\n this.inputs.forEach(function (input) {\n if (_this.disabled) {\n input.setAttribute('disabled', 'disabled');\n }\n else {\n input.removeAttribute('disabled');\n }\n });\n };\n OtpInput.prototype.setElementAttributes = function (htmlAttributes, element) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var key in htmlAttributes) {\n if (key === 'class') {\n var elementClass = htmlAttributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n }\n else if (key === 'inputmode') {\n this.setInputMode(htmlAttributes[\"\" + key]);\n }\n else if (key === 'name' && this.element.id === element.id) {\n this.hiddenInputEle.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n else {\n element.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n OtpInput.prototype.setInputMode = function (inputModeValue) {\n for (var i = 0; i < this.inputs.length; i++) {\n this.inputs[parseInt(i.toString(), 10)].setAttribute('inputmode', inputModeValue);\n }\n };\n OtpInput.prototype.handleLengthChange = function (currentValue, previousValue) {\n var isLengthAdded = (currentValue - previousValue) > 0;\n if (isLengthAdded) {\n for (var i = previousValue; i < currentValue; i++) {\n this.createOtpInput(i);\n }\n this.renderSeparator(previousValue, currentValue);\n this.addPlaceHolder();\n this.updateAriaLabel(this.ariaLabels);\n }\n else {\n if (currentValue >= 0 && this.inputs.length > 0) {\n for (var i = currentValue; i < this.inputs.length; i++) {\n remove(this.inputs[parseInt(i.toString(), 10)]);\n }\n this.inputs.splice(currentValue);\n if (this.separatorElements.length > 0) {\n // separator should be completely removed when length is 0 or 1;\n var index = currentValue === 0 ? 0 : currentValue - 1;\n for (var i = index; i < this.separatorElements.length; i++) {\n remove(this.separatorElements[parseInt(i.toString(), 10)]);\n }\n this.separatorElements.splice(index);\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n OtpInput.prototype.getModuleName = function () {\n return 'otpinput';\n };\n /**\n * To get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n OtpInput.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Destroy the Otp input.\n *\n * @returns {void}\n */\n OtpInput.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.inputs.forEach(function (input) { remove(input); });\n this.separatorElements.forEach(function (separatorElement) { remove(separatorElement); });\n remove(this.hiddenInputEle);\n removeClass([this.element], ['e-underlined', 'e-filled', 'e-outline', 'e-rtl']);\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.trim().split(' '));\n }\n this.element.removeAttribute('role');\n this.inputs = [];\n this.separatorElements = [];\n this.hiddenInputEle = null;\n };\n /**\n * Sets the focus to the Otp input for interaction.\n *\n * @returns {void}\n */\n OtpInput.prototype.focusIn = function () {\n this.isFocusInCalled = true;\n var focusIndex = this.inputs.length - 1;\n for (var index = 0; index < this.inputs.length; index++) {\n if (!(this.inputs[parseInt(index.toString(), 10)].value.length > 0)) {\n focusIndex = index;\n break;\n }\n }\n this.inputs[parseInt(focusIndex.toString(), 10)].focus();\n this.isFocusInCalled = false;\n };\n /**\n * Remove the focus from Otp input, if it is in focus state.\n *\n * @returns {void}\n */\n OtpInput.prototype.focusOut = function () {\n this.isFocusOutCalled = true;\n this.inputs.forEach(function (input) {\n input.blur();\n });\n this.isFocusOutCalled = false;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {OtpInputModel} newProp - Specifies new properties\n * @param {OtpInputModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n OtpInput.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 'textTransform':\n this.updateInputValue(this.value);\n break;\n case 'value':\n this.updateInputValue(oldProp.value);\n this.triggerValuechanged();\n break;\n case 'placeholder':\n this.addPlaceHolder();\n break;\n case 'disabled':\n this.updateDisabledState();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'separator':\n if (oldProp.separator === '') {\n this.renderSeparator(1, this.inputs.length);\n }\n else {\n this.updateSeparatorValue();\n }\n break;\n case 'htmlAttributes':\n this.setElementAttributes(newProp.htmlAttributes, this.element);\n break;\n case 'type':\n this.updateInputType(newProp.type);\n break;\n case 'stylingMode':\n this.updateVariantClass();\n break;\n case 'ariaLabels':\n this.updateAriaLabel(newProp.ariaLabels);\n break;\n case 'length':\n this.handleLengthChange(newProp.length, oldProp.length);\n break;\n case 'enableRtl':\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL$3);\n break;\n case 'autoFocus':\n if (this.autoFocus) {\n this.focusIn();\n }\n break;\n }\n }\n };\n __decorate$b([\n Property(4)\n ], OtpInput.prototype, \"length\", void 0);\n __decorate$b([\n Property('')\n ], OtpInput.prototype, \"value\", void 0);\n __decorate$b([\n Property(OtpInputType.Number)\n ], OtpInput.prototype, \"type\", void 0);\n __decorate$b([\n Property('')\n ], OtpInput.prototype, \"separator\", void 0);\n __decorate$b([\n Property('')\n ], OtpInput.prototype, \"placeholder\", void 0);\n __decorate$b([\n Property(OtpInputStyle.Outlined)\n ], OtpInput.prototype, \"stylingMode\", void 0);\n __decorate$b([\n Property(false)\n ], OtpInput.prototype, \"disabled\", void 0);\n __decorate$b([\n Property('')\n ], OtpInput.prototype, \"cssClass\", void 0);\n __decorate$b([\n Property(false)\n ], OtpInput.prototype, \"autoFocus\", void 0);\n __decorate$b([\n Property(TextTransform.None)\n ], OtpInput.prototype, \"textTransform\", void 0);\n __decorate$b([\n Property({})\n ], OtpInput.prototype, \"htmlAttributes\", void 0);\n __decorate$b([\n Property([])\n ], OtpInput.prototype, \"ariaLabels\", void 0);\n __decorate$b([\n Event()\n ], OtpInput.prototype, \"created\", void 0);\n __decorate$b([\n Event()\n ], OtpInput.prototype, \"valueChanged\", void 0);\n __decorate$b([\n Event()\n ], OtpInput.prototype, \"focus\", void 0);\n __decorate$b([\n Event()\n ], OtpInput.prototype, \"blur\", void 0);\n __decorate$b([\n Event()\n ], OtpInput.prototype, \"input\", void 0);\n OtpInput = __decorate$b([\n NotifyPropertyChanges\n ], OtpInput);\n return OtpInput;\n}(Component));\n\nexport { AsyncSettings, ButtonsProps, ChatMessageRole, ColorPicker, ColorRangeData, ErrorOption, FilesProp, FormValidator, Input, LabelPosition, LimitData, MaskUndo, MaskedTextBox, NumericTextBox, OtpInput, OtpInputStyle, OtpInputType, PrecisionType, Rating, Signature, SignatureBase, Slider, SmartTextArea, TEXTBOX_FOCUS, TextArea, TextBox, TextTransform, TicksData, TooltipData, Uploader, applyMask, bindClearEvent, containerAttributes, createMask, escapeRegExp, getMaskedVal, getVal, maskInput, maskInputBlurHandler, maskInputDropHandler, maskInputFocusHandler, maskInputMouseDownHandler, maskInputMouseUpHandler, mobileRemoveFunction, regex, regularExpressions, setElementValue, setMaskValue, strippedValue, triggerFocus, unstrippedValue, unwireEvents, wireEvents };\n","import { isNullOrUndefined, getValue, extend, prepend, SanitizeHtmlHelper, merge, addClass, isVisible, attributes, append, compile, Property, ChildProperty, detach, removeClass, formatUnit, animationMode, Animation, closest, EventHandler, Touch, remove, rippleEffect, Complex, Event, NotifyPropertyChanges, Component, select, isBlazor, getComponent, getUniqueID, Draggable, compareElementParent, Base } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\n\n/* eslint-disable no-inner-declarations */\nvar 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\nvar 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, 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 {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - 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, 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 {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - 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, 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 {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 {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, 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 !Object.prototype.hasOwnProperty.call(typeofData(dataSource).item, 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 if (Object.prototype.hasOwnProperty.call(fieldData, 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 if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss)\n && !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, (Object.prototype.hasOwnProperty.call(curItem, '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 if (Object.prototype.hasOwnProperty.call(fieldData, 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 if (Object.prototype.hasOwnProperty.call(fieldData, 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 if (Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl], alt: !isNullOrUndefined(fieldData.name) ? ('Displaying ' + fieldData.name + ' Image') : 'Displaying Image' };\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 if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, 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, 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} element - An element to find next or previous after this element.\n * @param {boolean} [isPrevious] - Specify when the need get previous element from array.\n * @returns {Element|undefined} The next or previous visible element, or undefined if the element array is empty.\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 * @returns {number} - The index of the item in the element array, or undefined if either parameter is false.\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='None'] - Specifies final result sort order. Defaults to 'None'.\n * @returns {Object[]} - The grouped data.\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 * @returns {Query} - The updated query object with sorting applied.\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 * @returns {Object[]} - An array of objects representing the retrieved data.\n */\n function getDataSource(dataSource, query) {\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 * @returns {Object[]} - An array of objects representing the JSON data.\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 /**\n * Determines the type of data in an array of objects, strings, or numbers.\n *\n * @param {Object[] | string[] | number[]} data - The array containing objects, strings, or numbers.\n * @returns {{typeof: (string | null), item: (Object | string | number)}} - An object containing the type of data and the corresponding item.\n */\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 /**\n * Sets attributes on an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to set attributes on.\n * @param {Object.} elementAttributes - An object containing attribute names and their corresponding values.\n * @returns {void}\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 /**\n * Retrieves all attributes of an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to retrieve attributes from.\n * @returns {Object.} - An object containing attribute names as keys and their corresponding values as values.\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 {createElementParams} createElement - Specifies an array of JSON data.\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {FieldsMapping} [fields] - Specifies fields for mapping the dataSource.\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @param {any} [componentInstance] - Specifies component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function renderContentTemplate(createElement, template, dataSource, 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 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 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 | Function} groupTemplate - that need to convert and generate li element.\n *\n * @param {{Object}[]} groupDataSource - 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 * @param {ListBaseOptions} [options] - Optional ListBase options.\n *\n * @param {*} [componentInstance] - Optional component instance.\n *\n * @returns {Element[]} - An array of header elements with the rendered group template content.\n */\n function renderGroupTemplate(groupTemplate, \n // tslint:disable-next-line\n groupDataSource, fields, 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 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 /**\n * Generates a random hexadecimal ID string.\n *\n * @returns {string} - The generated ID string.\n */\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n /**\n * Processes the sub-child elements and creates corresponding elements based on the provided field data and options.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {Object} fieldData - Field data containing sub-child information.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {Object[]} ds - The data source array containing sub-child elements.\n * @param {ListBaseOptions} options - ListBase options.\n * @param {HTMLElement} element - The parent HTML element to append sub-child elements to.\n * @param {number} level - The level of the sub-child elements.\n * @returns {void}\n */\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 /**\n * Generates a single-level LI (list item) element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} [fields] - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {HTMLElement[]} [innerElements] - Optional array of inner elements to append to the LI element.\n * @param {boolean} [grpLI] - Indicates if the LI element is a group item.\n * @param {string} [id] - The ID of the LI element.\n * @param {number} [index] - The index of the LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @returns {HTMLElement} - The generated LI element.\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 if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, 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 if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, 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 /**\n * Returns a set of CSS class names based on the provided module name.\n *\n * @param {string} moduleName - The name of the module.\n * @returns {ClassList} - The CSS class names associated with the module.\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 /**\n * Creates an anchor tag () element based on the provided data source, fields, and text.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {object} dataSource - The data source containing URL-related fields.\n * @param {FieldsMapping} fields - Field mappings for the data source.\n * @param {string} text - The text content of the anchor tag.\n * @param {HTMLElement[]} innerElements - Optional array of inner elements to append to the anchor tag.\n * @param {boolean} isFullNavigation - Indicates whether the anchor tag should be for full navigation.\n * @returns {HTMLElement} The created anchor tag element.\n */\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n if (Object.prototype.hasOwnProperty.call(fieldData, 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 /**\n * Generates an LI element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @param {*} [componentInstance] - Optional component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateLI(createElement, item, fieldData, 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 uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n grpLI = (Object.prototype.hasOwnProperty.call(item, '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 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 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 {Function} createElement - Function for creating elements.\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 * @returns {HTMLElement} - The created UL element.\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 {Function} createElement - Function for creating elements.\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 * @returns {HTMLElement} - The modified LI element.\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} dataItem - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n * @returns {Object|string|number} - The retrieved field values.\n */\nfunction 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}\n/**\n * Compiles a template string or function into a compiled function.\n *\n * @param {string | Function} template - The template string or function to compile.\n * @returns {Function | undefined} - The compiled function, or undefined if the input is false.\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\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 */\n// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nvar effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nvar effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nvar classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n container: 'e-list-container',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n backButton: 'e-back-button',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer'\n};\nvar LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nvar LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\n */\nvar FieldSettings = /** @__PURE__ @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, \"id\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('isVisible')\n ], FieldSettings.prototype, \"isVisible\", void 0);\n __decorate([\n Property('enabled')\n ], FieldSettings.prototype, \"enabled\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('child')\n ], FieldSettings.prototype, \"child\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('groupBy')\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"sortBy\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('tableName')\n ], FieldSettings.prototype, \"tableName\", void 0);\n return FieldSettings;\n}(ChildProperty));\n/**\n * Represents the EJ2 ListView control.\n * ```html\n *
\n *
    \n *
  • Favorite
  • \n *
  • Documents
  • \n *
  • Downloads
  • \n *
\n *
\n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nvar ListView = /** @__PURE__ @class */ (function (_super) {\n __extends(ListView, _super);\n /**\n * Constructor for creating the widget\n *\n * @param options\n *\n * @param element\n */\n function ListView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousSelectedItems = [];\n _this.hiddenItems = [];\n _this.enabledItems = [];\n _this.disabledItems = [];\n return _this;\n }\n /**\n * @param newProp\n *\n * @param oldProp\n *\n * @private\n */\n ListView.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 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false, 'header');\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false, 'header');\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.setCheckbox();\n }\n break;\n case 'dataSource':\n this.previousScrollTop = this.element.scrollTop;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'template':\n if (!this.enableVirtualization) {\n this.refresh();\n }\n break;\n case 'showIcon':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n break;\n }\n }\n };\n // Model Changes\n ListView.prototype.setHTMLAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes) && Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n };\n ListView.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter(function (css) { return css; }));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter(function (css) { return css; }));\n }\n };\n ListView.prototype.setSize = function () {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n };\n ListView.prototype.setEnable = function () {\n this.enableElement(this.element, this.enable);\n };\n ListView.prototype.setEnableRTL = 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 ListView.prototype.enableElement = function (element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n }\n else {\n element.classList.add(classNames.disable);\n }\n };\n // Support Component Functions\n ListView.prototype.header = function (text, showBack, prop) {\n if (this.headerEle === undefined && this.showHeader) {\n this.headerEle = this.createElement('div', { className: classNames.header });\n var innerHeaderEle = this.createElement('span', { className: classNames.headerText });\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n innerHeaderEle.innerText = this.headerTitle;\n }\n else {\n innerHeaderEle.innerHTML = this.headerTitle;\n }\n var textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });\n var hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' ' + classNames.backButton,\n attrs: { style: 'display:none;' }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n var compiledString = compile(this.headerTemplate);\n var headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n var compiledElement = compiledString({}, this, prop, this.LISTVIEW_HEADERTEMPLATE_ID, null, null, this.headerEle);\n if (compiledElement) {\n append(compiledElement, headerTemplateEle);\n }\n append([headerTemplateEle], this.headerEle);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n }\n else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n var textEle = this.headerEle.querySelector('.' + classNames.headerText);\n var hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n if (this.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n textEle.innerHTML = text;\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n }\n else {\n hedBackButton.style.display = 'none';\n }\n }\n else {\n this.headerEle.style.display = 'none';\n }\n }\n };\n // Animation Related Functions\n ListView.prototype.switchView = function (fromView, toView, reverse) {\n var _this = this;\n if (fromView && toView) {\n var fPos_1 = fromView.style.position;\n var overflow_1 = (this.element.style.overflow !== 'hidden') ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n var anim = void 0;\n var duration = this.animation.duration;\n if (this.animation.effect) {\n anim = (this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect]);\n }\n else {\n var slideLeft = 'SlideLeft';\n anim = effectsConfig[\"\" + slideLeft];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: (reverse === true ? anim[0] : anim[1]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: function () {\n fromView.style.display = 'none';\n _this.element.style.overflow = overflow_1;\n fromView.style.position = fPos_1;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: (reverse === true ? anim[2] : anim[3]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: function () {\n _this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n };\n ListView.prototype.preRender = function () {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.setProperties({ template: document.querySelector(this.template).innerHTML.trim() }, true);\n }\n }\n catch (e) {\n compile(this.template);\n }\n }\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',\n ariaAttributes: {\n itemRole: 'listitem', listRole: 'list', itemText: '',\n groupItemRole: 'presentation', wrapperRole: 'presentation'\n },\n fields: (this.fields.properties),\n sortOrder: this.sortOrder,\n showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY,\n groupTemplateID: \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY,\n enableHtmlSanitizer: this.enableHtmlSanitizer\n };\n this.initialization();\n };\n ListView.prototype.initialization = function () {\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = this.enablePersistence ? this.selectedId : [];\n this.LISTVIEW_TEMPLATE_ID = \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY;\n this.LISTVIEW_GROUPTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY;\n this.LISTVIEW_HEADERTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_HEADERTEMPLATE_PROPERTY;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n };\n ListView.prototype.renderCheckbox = function (args) {\n var _this = this;\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && args.item.classList.contains(classNames.listItem)) {\n var fieldData_1;\n var checkboxElement = createCheckBox(this.createElement, false, {\n checked: false, enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n var frameElement_1 = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData_1 = getFieldValues(args.curData, this.listBaseOption.fields);\n if (this.enablePersistence && !isNullOrUndefined(this.selectedId)) {\n var index = this.selectedId.findIndex(function (e) { return e === fieldData_1[_this.listBaseOption.fields.id].toString(); });\n if (index !== -1) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (fieldData_1[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (((typeof this.dataSource[0] === 'string' ||\n typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1)) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement_1.classList.contains(classNames.checked) ? 'true' : 'false');\n checkboxElement.setAttribute('aria-label', args.text);\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n }\n else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n if (this.checkBoxPosition === 'Left') {\n this.virtualCheckBox = args.item.firstElementChild.children[0];\n }\n else {\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n };\n ListView.prototype.checkInternally = function (args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n };\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.checkItem = function (item) {\n this.toggleCheckBase(item, true);\n };\n ListView.prototype.toggleCheckBase = function (item, checked) {\n if (this.showCheckBox) {\n var liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n var checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n if (checked === true) {\n liElement.classList.add(classNames.selected);\n }\n else {\n liElement.classList.remove(classNames.selected);\n }\n if (checked === true) {\n checkboxIcon.classList.add(classNames.checked);\n }\n else {\n checkboxIcon.classList.remove(classNames.checked);\n }\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n this.updateSelectedId();\n }\n };\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.uncheckItem = function (item) {\n this.toggleCheckBase(item, false);\n };\n /**\n * Checks all the unchecked items in the ListView.\n */\n ListView.prototype.checkAllItems = function () {\n this.toggleAllCheckBase(true);\n };\n /**\n * Uncheck all the checked items in ListView.\n */\n ListView.prototype.uncheckAllItems = function () {\n this.toggleAllCheckBase(false);\n };\n ListView.prototype.toggleAllCheckBase = function (checked) {\n if (this.showCheckBox) {\n for (var i = 0; i < this.liCollection.length; i++) {\n var checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n }\n else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.setCheckbox = function () {\n if (this.showCheckBox) {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n var args = {\n item: undefined, curData: undefined, dataSource: undefined, fields: undefined,\n options: undefined, text: ''\n };\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n args.item = element;\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n }\n else {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n };\n /**\n * Refresh the height of the list item only on enabling the virtualization property.\n */\n ListView.prototype.refreshItemHeight = function () {\n if (this.virtualizationModule) {\n this.virtualizationModule.refreshItemHeight();\n }\n };\n ListView.prototype.handleCheckboxState = function (li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, isSetCheckboxLI, textAreaFocus) {\n this.trigger('select', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n if (isSetCheckboxLI ? isCheckedBefore : !isCheckedBefore) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', isSetCheckboxLI ? (isCheckedBefore ? 'true' : 'false') : (isCheckedBefore ? 'false' : 'true'));\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (isFocusedBefore) {\n li.classList.remove(classNames.focused);\n if (textAreaFocus) {\n textAreaFocus.classList.remove('e-focused');\n }\n }\n }\n });\n };\n ListView.prototype.clickHandler = function (e) {\n if (Array.isArray(this.dataSource) && this.dataSource.length === 0) {\n return;\n }\n var target = e.target;\n this.targetElement = target;\n var classList = target.classList;\n var closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n else {\n var li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.enable && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n var eventArgs = this.selectEventData(li, e);\n var checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var isCheckedBefore = checkIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n this.handleCheckboxState(li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, false);\n }\n }\n else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n }\n else {\n this.setCheckboxLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n }\n else {\n this.setSelectLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n closestElement = closest(e.target, 'li');\n if (!isNullOrUndefined(closestElement)) {\n if (closestElement.classList.contains('e-has-child') &&\n !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n this.updateSelectedId();\n };\n ListView.prototype.removeElement = function (element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n };\n ListView.prototype.hoverHandler = function (e) {\n var curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n };\n ListView.prototype.leaveHandler = function () {\n this.removeHover();\n };\n ListView.prototype.homeKeyHandler = function (e, end) {\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var li = this.curUL.querySelectorAll('.' + classNames.listItem);\n var focusedElement = this.curUL.querySelector('.' + classNames.focused) ||\n this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n var index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n };\n ListView.prototype.onArrowKeyDown = function (e, prev) {\n var siblingLI;\n var li;\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(siblingLI, e);\n }\n }\n }\n else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n };\n ListView.prototype.arrowKeyHandler = function (e, prev) {\n var _this = this;\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var siblingLI = this.onArrowKeyDown(e, prev);\n var elementTop = this.element.getBoundingClientRect().top;\n var elementHeight = this.element.getBoundingClientRect().height;\n var firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n var heightDiff = void 0;\n var groupItemBounds = void 0;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n var siblingTop = siblingLI.getBoundingClientRect().top;\n var siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n var height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? (siblingTop + siblingHeight) :\n ((siblingTop - elementTop) + siblingHeight);\n if (heightDiff > height) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + (heightDiff - height));\n }\n else {\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n }\n else {\n heightDiff = this.isWindow ? siblingTop : (siblingTop - elementTop);\n if (heightDiff < 0) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n }\n else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = function () {\n _this.onArrowKeyDown(e, prev);\n _this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n else if (prev) {\n if (this.showHeader && this.headerEle) {\n var topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n var headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? (headerBounds.height - topHeight) : 0;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = 0;\n }\n }\n else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? (groupItemBounds.top < 0 ? groupItemBounds.top : 0) :\n (elementTop - firstItemBounds.top) + groupItemBounds.height;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n };\n ListView.prototype.enterKeyHandler = function (e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n var li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n };\n ListView.prototype.spaceKeyHandler = function (e) {\n if (this.enable && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n e.preventDefault();\n var li = this.curUL.querySelector('.' + classNames.focused);\n var checkboxElement = void 0;\n var checkIcon = void 0;\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n checkboxElement = args.item.querySelector('.' + classNames.checkboxWrapper);\n this.checkInternally(args, checkboxElement);\n checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n }\n else {\n this.uncheckItem(li);\n }\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon ? checkIcon.classList.contains(classNames.checked) : false });\n if (!isNullOrUndefined(li)) {\n var cbElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkboxIcon = li.querySelector('.' + classNames.checkboxIcon);\n var isCheckedBefore = checkboxIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n this.handleCheckboxState(li, checkboxIcon, cbElement, isCheckedBefore, isFocusedBefore, eventArgs, false);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.keyActionHandler = function (e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n if (isNullOrUndefined(this.targetElement) || !(this.targetElement.classList.contains('e-focused'))) {\n this.spaceKeyHandler(e);\n }\n break;\n }\n };\n ListView.prototype.swipeActionHandler = function (e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n };\n ListView.prototype.focusout = function () {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var focusedElement = this.curUL.querySelector('.' + classNames.focused);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox && !isNullOrUndefined(this.selectedLI)) {\n this.selectedLI.classList.add(classNames.selected);\n }\n }\n }\n };\n ListView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.add(this.element, 'scroll', this.onListScroll, this);\n }\n };\n ListView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'keydown', this.keyActionHandler);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'focusout', this.focusout);\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.remove(this.element, 'scroll', this.onListScroll);\n }\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n this.touchModule = null;\n };\n ListView.prototype.removeFocus = function () {\n var focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (var _i = 0, focusedLI_1 = focusedLI; _i < focusedLI_1.length; _i++) {\n var ele = focusedLI_1[_i];\n ele.classList.remove(classNames.focused);\n }\n };\n ListView.prototype.removeHover = function () {\n var hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n };\n ListView.prototype.removeSelect = function (li) {\n if (isNullOrUndefined(li)) {\n var selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n }\n else {\n ele.classList.remove(classNames.selected);\n }\n }\n }\n else {\n li.classList.remove(classNames.selected);\n }\n };\n ListView.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(classNames.listItem)\n && !li.classList.contains(classNames.groupListItem)\n && !li.classList.contains(classNames.disable));\n };\n ListView.prototype.setCheckboxLI = function (li, e) {\n if (this.isValidLI(li) && this.enable && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n var textAreaFocus = li.querySelector('textarea') || li.querySelector('input');\n li.classList.add(classNames.focused);\n if (!isNullOrUndefined(e)) {\n if (e.target === textAreaFocus) {\n textAreaFocus.classList.add('e-focused');\n }\n }\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n var isCheckedBefore = checkIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n if (!isCheckedBefore) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ?\n 'true' : 'false');\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.handleCheckboxState(li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, true, textAreaFocus);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n };\n ListView.prototype.selectEventData = function (li, e) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n var selectedItem;\n if (!isNullOrUndefined(data)\n && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = { item: li, text: li && li.innerText.trim(), data: this.dataSource };\n }\n else {\n selectedItem =\n {\n item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n var eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, {\n isInteracted: true,\n event: e,\n cancel: false,\n index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li)\n });\n }\n return eventArgs;\n };\n ListView.prototype.setSelectedItemData = function (li) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && ((typeof this.dataSource[0] === 'string') ||\n (typeof this.dataSource[0] === 'number'))) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n }\n else {\n this.selectedItems = {\n item: li,\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n };\n ListView.prototype.setSelectLI = function (li, e) {\n var _this = this;\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.enable) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n var eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.selectedLI = li;\n _this.renderSubList(li);\n }\n else {\n li.classList.remove(classNames.selected);\n _this.selectedLI = li;\n }\n });\n }\n };\n ListView.prototype.setHoverLI = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.enable) {\n var lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n };\n //Data Source Related Functions\n ListView.prototype.getSubDS = function () {\n var levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n var ds = this.localData;\n for (var _i = 0, levelKeys_1 = levelKeys; _i < levelKeys_1.length; _i++) {\n var key = levelKeys_1[_i];\n var field = {};\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n };\n ListView.prototype.getItemData = function (li) {\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n var fields = this.getElementUID(li);\n var curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n }\n else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n };\n ListView.prototype.findItemFromDS = function (dataSource, fields, parent) {\n var _this = this;\n var resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some(function (data) {\n var fieldData = getFieldValues(data, _this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[_this.fields.id] || fields[_this.fields.text]) &&\n (!fields[_this.fields.id] || (!isNullOrUndefined(fieldData[_this.fields.id]) &&\n fieldData[_this.fields.id].toString()) === fields[_this.fields.id].toString()) &&\n (!fields[_this.fields.text] || fieldData[_this.fields.text] === fields[_this.fields.text])) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (!isNullOrUndefined(fields[_this.fields.id]) && isNullOrUndefined(fieldData[_this.fields.id])) {\n var li = _this.element.querySelector('[data-uid=\"'\n + fields[_this.fields.id] + '\"]');\n if (li && li.innerText.trim() === fieldData[_this.fields.text]) {\n resultJSON = data;\n }\n }\n else if (Object.prototype.hasOwnProperty.call(fieldData, _this.fields.child) &&\n fieldData[_this.fields.child].length) {\n resultJSON = _this.findItemFromDS(fieldData[_this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n }\n else {\n resultJSON = dataSource;\n }\n return resultJSON;\n };\n ListView.prototype.getQuery = function () {\n var columns = [];\n var query = (this.query ? this.query : new Query());\n if (!this.query) {\n for (var _i = 0, _a = Object.keys(this.fields.properties); _i < _a.length; _i++) {\n var column = _a[_i];\n if (column !== 'tableName' && !!(this.fields[\"\" + column]) &&\n this.fields[\"\" + column] !==\n ListBase.defaultMappedFields[\"\" + column]\n && columns.indexOf(this.fields[\"\" + column]) === -1) {\n columns.push(this.fields[\"\" + column]);\n }\n }\n query.select(columns);\n if (Object.prototype.hasOwnProperty.call(this.fields.properties, 'tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n };\n ListView.prototype.setViewDataSource = function (dataSource) {\n if (dataSource === void 0) { dataSource = this.localData; }\n var fieldValue = (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : this.fields.sortBy;\n var query = ListBase.addSorting(this.sortOrder, fieldValue);\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, query), this.listBaseOption.fields, this.sortOrder);\n }\n else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n }\n else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, query);\n }\n else {\n this.curViewDS = dataSource;\n }\n };\n ListView.prototype.isInAnimation = function () {\n return this.curUL.classList.contains('.e-animate');\n };\n ListView.prototype.renderRemoteLists = function (e, listViewComponent) {\n if (this.isDestroyed) {\n return;\n }\n this.localData = e.result;\n listViewComponent.removeElement(listViewComponent.contentContainer);\n this.renderList();\n this.trigger('actionComplete', e);\n };\n ListView.prototype.triggerActionFailure = function (e) {\n if (this.isDestroyed) {\n return;\n }\n this.trigger('actionFailure', e);\n };\n ListView.prototype.setLocalData = function () {\n var _this = this;\n this.trigger('actionBegin');\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then(function (e) {\n _this.isOffline = _this.dataSource.dataSource.offline;\n if (_this.dataSource instanceof DataManager && _this.isOffline) {\n _this.renderRemoteLists(e, _this);\n }\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n else {\n this.dataSource.executeQuery(this.getQuery()).then(function (e) {\n _this.renderRemoteLists(e, _this);\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n }\n else if (!this.dataSource || !this.dataSource.length) {\n var ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({ dataSource: ListBase.createJsonFromElement(ul) }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n };\n ListView.prototype.reRender = function () {\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n if (this.isReact) {\n this.clearTemplate();\n }\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n this.setLocalData();\n };\n ListView.prototype.resetCurrentList = function () {\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n };\n ListView.prototype.setAttributes = function (liElements) {\n for (var i = 0; i < liElements.length; i++) {\n var element = liElements[parseInt(i.toString(), 10)];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('tabindex', '-1');\n }\n }\n };\n ListView.prototype.createList = function () {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption, null, this);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n };\n ListView.prototype.renderSubList = function (li) {\n this.liElement = li;\n var uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n var ul = closest(li.parentNode, '.' + classNames.parentItem);\n var ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (this.enableVirtualization) {\n this.virtualizationModule.updateDOMItemCount();\n }\n if (!ele) {\n var data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n }\n this.switchView(ul, ele);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n var fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');\n }\n this.selectedLI = undefined;\n }\n };\n ListView.prototype.renderIntoDom = function (ele) {\n this.contentContainer.appendChild(ele);\n };\n ListView.prototype.renderList = function (data) {\n this.setViewDataSource(data);\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n this.virtualizationModule.uiVirtualization();\n }\n else {\n this.createList();\n this.contentContainer = this.createElement('div', { className: classNames.container });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n };\n ListView.prototype.getElementUID = function (obj) {\n var fields = {};\n if (obj instanceof Element) {\n fields[this.fields.id] = obj.getAttribute('data-uid');\n }\n else {\n fields = obj;\n }\n return fields;\n };\n /**\n * Initializes the ListView component rendering.\n */\n ListView.prototype.render = function () {\n this.element.classList.add(classNames.root);\n attributes(this.element, { tabindex: '0' });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n this.previousScrollTop = this.element.scrollTop;\n };\n /**\n * It is used to destroy the ListView component.\n */\n ListView.prototype.destroy = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n this.unWireEvents();\n var classAr = [classNames.root, classNames.disable, 'e-rtl',\n 'e-has-header', 'e-lib'].concat(this.cssClass ? this.cssClass.split(' ').filter(function (css) { return css; }) : []);\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n this.element.innerHTML = '';\n this.contentContainer = null;\n this.selectedItems = null;\n this.selectedLI = null;\n this.liElement = null;\n this.targetElement = null;\n this.currentLiElements = null;\n this.virtualCheckBox = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Switches back from the navigated sub list item.\n */\n ListView.prototype.back = function () {\n var pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n if (this.enableVirtualization) {\n this.virtualizationModule.updateDOMItemCount();\n }\n var toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n var fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n }\n else {\n toUL = toUL.parentElement;\n }\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n var text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n var li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (!(this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked))) {\n li.classList.remove(classNames.selected);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.header((this.curDSLevel.length ? text : this.headerTitle), (this.curDSLevel.length ? true : false), 'header');\n };\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.selectItem = function (item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n }\n else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n }\n else {\n if (isNullOrUndefined(item) === true) {\n this.removeSelect();\n }\n else {\n this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n };\n /**\n * This method allows for deselecting a list item within the ListView. The item to be deselected can be specified by passing the element or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass an element Object or Fields as an Object with ID and Text fields.\n */\n ListView.prototype.unselectItem = function (item) {\n if (isNullOrUndefined(item)) {\n this.removeSelect();\n }\n else {\n var li = this.getLiFromObjOrElement(item);\n if (!isNullOrUndefined(li)) {\n this.removeSelect(li);\n }\n }\n };\n ListView.prototype.getLiFromObjOrElement = function (obj) {\n var li;\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n var uid = obj.getAttribute('data-uid').toString();\n for (var i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[parseInt(i.toString(), 10)].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[parseInt(i.toString(), 10)];\n break;\n }\n }\n }\n else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), function (item) {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n }\n else {\n return false;\n }\n });\n }\n }\n else {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"'\n + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n var curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (var i = 0; i < curLi.length; i++) {\n if (curLi[parseInt(i.toString(), 10)].innerText.trim() ===\n fieldData[this.fields.text]) {\n li = curLi[parseInt(i.toString(), 10)];\n }\n }\n }\n }\n }\n }\n return li;\n };\n /**\n * Selects multiple list items from the ListView.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n ListView.prototype.selectMultipleItems = function (item) {\n if (!isNullOrUndefined(item)) {\n for (var i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[parseInt(i.toString(), 10)])) {\n this.selectItem(item[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n ListView.prototype.getParentId = function () {\n var parentId = [];\n if (this.isNestedList) {\n for (var i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[parseInt(i.toString(), 10)]);\n }\n }\n return parentId;\n };\n ListView.prototype.updateSelectedId = function () {\n this.selectedId = [];\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n for (var i = 0; i < liCollection.length; i++) {\n var tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(tempData) && tempData[this.listBaseOption.fields.id]) {\n this.selectedId.push(tempData[this.listBaseOption.fields.id]);\n }\n }\n };\n /**\n * Gets the details of the currently selected item from the list items.\n *\n */\n ListView.prototype.getSelectedItems = function () {\n var finalValue;\n var isCompleted = false;\n this.selectedId = [];\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n }\n else if (this.showCheckBox && !isCompleted) {\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n var liTextCollection = [];\n var liDataCollection = [];\n this.selectedId = [];\n var dataParent = [];\n for (var i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[parseInt(i.toString(), 10)].innerText.trim());\n }\n else {\n var tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n var fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({ data: tempData, parentId: this.getParentId() });\n }\n else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n }\n else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = { item: liCollection, data: dataSource, text: liTextCollection };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = { item: liCollection, data: dataParent, text: liTextCollection };\n isCompleted = true;\n }\n else if (!isCompleted) {\n finalValue = { item: liCollection, data: liDataCollection, text: liTextCollection };\n isCompleted = true;\n }\n }\n else if (!isCompleted) {\n var liElement = this.element.getElementsByClassName(classNames.selected)[0];\n var fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = (!isNullOrUndefined(liElement)) ? {\n item: liElement, data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n }\n else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n }\n else {\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text], item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n return finalValue;\n };\n /**\n * Finds out an item details from the current list.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.findItem = function (item) {\n return this.getItemData(item);\n };\n /**\n * Enables the disabled list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.enableItem = function (item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n };\n /**\n * Disables the list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.disableItem = function (item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n };\n //A function that used to set state of the list item like enable, disable.\n ListView.prototype.setItemState = function (item, isEnable) {\n var resultJSON = this.getItemData(item);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n }\n else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n resultJSON[this.fields.enabled] = false;\n }\n }\n };\n /**\n * Shows the hide list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.showItem = function (item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n };\n /**\n * Hides an list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.hideItem = function (item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n };\n ListView.prototype.showHideItem = function (obj, isHide, display) {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n resultJSON[this.fields.isVisible] = false;\n }\n else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n };\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {{Object}[]} data - JSON Array Data that need to add.\n *\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n *\n * @param {number} index - Indicates the index where the data to be added.\n */\n ListView.prototype.addItem = function (data, fields, index) {\n if (fields === void 0) { fields = undefined; }\n var dataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource, index);\n };\n ListView.prototype.addItemInternally = function (data, fields, dataSource, index) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource, index);\n }\n else {\n var ds = this.findItemFromDS(dataSource, fields);\n var child = void 0;\n if (ds) {\n var fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (var i = 0; i < data.length; i++) {\n dataSource = this.addItemAtIndex(index, dataSource, data[parseInt(i.toString(), 10)]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n var targetUL = this.contentContainer\n ? this.contentContainer.children[0]\n : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[parseInt(i.toString(), 10)], targetUL, this.curViewDS);\n }\n else {\n this.reRender();\n }\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n };\n ListView.prototype.addItemAtIndex = function (index, newDataSource, itemData) {\n var isIndexValid = !(isNullOrUndefined(index)) && index >= 0 &&\n index < newDataSource.length && isNullOrUndefined(this.listBaseOption.fields.groupBy);\n if (isIndexValid) {\n newDataSource.splice(index, 0, itemData);\n }\n else {\n newDataSource.push(itemData);\n }\n return newDataSource;\n };\n ListView.prototype.addItemInNestedList = function (targetItemData, itemQueue) {\n var targetItemId = targetItemData[this.fields.id];\n var targetChildDS = targetItemData[this.fields.child];\n var isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n var targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n var targetUL = isAlreadyRenderedUL\n ? isAlreadyRenderedUL\n : targetLi\n ? closest(targetLi, 'ul')\n : null;\n var targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n var isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n // if li element is already rendered, that element needs to be refreshed so that\n // it becomes child viewable due to new child items are added now\n if (isTargetEmptyChild) {\n var targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption, null, null, this);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (var i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[parseInt(i.toString(), 10)]);\n this.addItemIntoDom(itemQueue[parseInt(i.toString(), 10)], targetUL, targetDS);\n }\n }\n };\n ListView.prototype.addItemIntoDom = function (currentItem, targetUL, curViewDS) {\n var index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n var curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, (index - 1), targetUL, curViewDS);\n }\n };\n ListView.prototype.addListItem = function (dataSource, index, ulElement, curViewDS) {\n var target = this.getLiFromObjOrElement(curViewDS[index + 1]) ||\n this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n var li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n if (this.template && this.isReact) {\n this.renderReactTemplates();\n }\n if (this.fields.groupBy && curViewDS[index + 1] && curViewDS[index + 1].isHeader) {\n var targetEle = this.getLiFromObjOrElement(curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n ulElement.insertBefore(li[0], target);\n };\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.removeItem = function (item) {\n var listDataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n }\n else {\n this.removeItemFromList(item, listDataSource);\n }\n };\n ListView.prototype.removeItemFromList = function (obj, listDataSource) {\n var _this = this;\n var curViewDS = this.curViewDS;\n var fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n var dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n var data_1 = this.findItemFromDS(dataSource, fields);\n var index = curViewDS.indexOf(data_1);\n var li = this.getLiFromObjOrElement(obj);\n var groupLi = void 0;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] &&\n curViewDS[index - 1].isHeader &&\n curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) &&\n (isNullOrUndefined(li.nextElementSibling) || (li.nextElementSibling &&\n li.nextElementSibling.classList.contains(classNames.groupListItem)))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n var foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, function (value) { return value === data_1[_this.fields.id]; }, null) : null;\n var dsIndex = dataSource.indexOf(data_1);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData\n && foundData.parent\n && Array.isArray(foundData.parent[this.fields.child])\n && foundData.parent[this.fields.child].length <= 0) {\n var parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n var li_1 = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption, null, null, this);\n this.setAttributes(li_1);\n parentLi.parentElement.insertBefore(li_1[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n };\n // validate before removing an element whether the current view is inside target element's child view\n ListView.prototype.validateNestedView = function (li) {\n var liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some(function (id) { return id.toString().toLowerCase() === liID; })) {\n this.back();\n }\n }\n };\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n ListView.prototype.removeMultipleItems = function (item) {\n if (item.length) {\n for (var i = 0; i < item.length; i++) {\n this.removeItem(item[parseInt(i.toString(), 10)]);\n }\n }\n };\n ListView.prototype.findParent = function (dataSource, id, callback, parent) {\n if (Object.prototype.hasOwnProperty.call(dataSource, id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (var i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]]\n && typeof dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]] === 'object') {\n var result = this.findParent(dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n };\n // Module Required function\n ListView.prototype.getModuleName = function () {\n return 'listview';\n };\n ListView.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualization', name: 'Virtualization' });\n }\n return modules;\n };\n ListView.prototype.onListScroll = function (e) {\n var args = { originalEvent: e, scrollDirection: 'Bottom', distanceY: this.element.scrollHeight - this.element.scrollTop };\n var currentScrollTop = this.element.scrollTop;\n if (currentScrollTop > this.previousScrollTop) {\n args.scrollDirection = 'Bottom';\n args.distanceY = this.element.scrollHeight - this.element.clientHeight - this.element.scrollTop;\n this.trigger('scroll', args);\n }\n else if (this.previousScrollTop > currentScrollTop) {\n args.scrollDirection = 'Top';\n args.distanceY = this.element.scrollTop;\n this.trigger('scroll', args);\n }\n this.previousScrollTop = currentScrollTop;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n ListView.prototype.getPersistData = function () {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes',\n 'enable', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition', 'selectedId']);\n };\n __decorate([\n Property('')\n ], ListView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property({})\n ], ListView.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enable\", void 0);\n __decorate([\n Property([])\n ], ListView.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], ListView.prototype, \"query\", void 0);\n __decorate([\n Complex(ListBase.defaultMappedFields, FieldSettings)\n ], ListView.prototype, \"fields\", void 0);\n __decorate([\n Property({ effect: 'SlideLeft', duration: 400, easing: 'ease' })\n ], ListView.prototype, \"animation\", void 0);\n __decorate([\n Property('None')\n ], ListView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showIcon\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property('Left')\n ], ListView.prototype, \"checkBoxPosition\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"headerTitle\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showHeader\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"groupTemplate\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"scroll\", void 0);\n ListView = __decorate([\n NotifyPropertyChanges\n ], ListView);\n return ListView;\n}(Component));\n\nvar listElementCount = 1.5;\nvar windowElementCount = 3;\nvar Virtualization = /** @__PURE__ @class */ (function () {\n function Virtualization(instance) {\n this.elementDifference = 0;\n this.listViewInstance = instance;\n }\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.isNgTemplate = function () {\n return !isNullOrUndefined(this.listViewInstance.templateRef) && typeof this.listViewInstance.templateRef !== 'string';\n };\n /**\n * Checks if the platform is a Vue and its template property is a function type.\n *\n * @returns {boolean} indicating the result of the check\n */\n Virtualization.prototype.isVueFunctionTemplate = function () {\n return this.listViewInstance.isVue && typeof this.listViewInstance.template === 'function';\n };\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.uiVirtualization = function () {\n this.wireScrollEvent(false);\n var curViewDS = this.listViewInstance.curViewDS;\n var isRendered = this.listViewInstance.isRendered;\n var firstIndex = isRendered && !isNullOrUndefined(this.uiFirstIndex) && this.uiLastIndex <= Object.keys(curViewDS).length\n ? this.uiFirstIndex : 0;\n var firstDs = curViewDS.slice(firstIndex, firstIndex + 1);\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption, null, this.listViewInstance);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', { className: classNames.container });\n this.listViewInstance.element.appendChild(this.listViewInstance.contentContainer);\n this.listViewInstance.contentContainer.appendChild(this.listViewInstance.ulElement);\n this.listItemHeight = this.listViewInstance.ulElement.firstElementChild.getBoundingClientRect().height;\n this.expectedDomItemCount = this.ValidateItemCount(10000);\n this.updateDOMItemCount();\n var lastIndex = isRendered && !isNullOrUndefined(this.uiLastIndex) && this.listDiff !== 0\n ? this.uiLastIndex : this.domItemCount - 1;\n this.uiFirstIndex = firstIndex;\n this.uiLastIndex = lastIndex;\n var otherDs = curViewDS.slice(firstIndex + 1, lastIndex + 1);\n var listItems = ListBase.createListItemFromJson(this.listViewInstance.createElement, otherDs, this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n append(listItems, this.listViewInstance.ulElement);\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n this.topElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.topElement, this.listViewInstance.ulElement.firstElementChild);\n this.bottomElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.bottomElement, null);\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.topElement.style.height = isRendered ? this.topElementHeight + 'px' : '0px';\n this.bottomElement.style.height = isRendered ? (this.totalHeight - this.topElementHeight) + 'px' : this.totalHeight + 'px';\n this.topElementHeight = isRendered ? this.topElementHeight : 0;\n this.bottomElementHeight = isRendered ? (this.totalHeight - this.topElementHeight) : this.totalHeight;\n this.listDiff = isRendered && Object.keys(curViewDS).length !== this.domItemCount ? this.listDiff : 0;\n if (isRendered) {\n this.listViewInstance.element.scrollTop = this.listViewInstance.previousScrollTop;\n }\n this.uiIndicesInitialization();\n };\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n if (this.listViewInstance.isWindow) {\n this.onVirtualScroll = this.onVirtualUiScroll.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n }\n else {\n EventHandler.add(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll, this);\n }\n }\n else {\n if (this.listViewInstance.isWindow === true) {\n window.removeEventListener('scroll', this.onVirtualScroll);\n window.removeEventListener('scroll', this.updateUl);\n }\n else {\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll);\n }\n }\n };\n Virtualization.prototype.ValidateItemCount = function (dataSourceLength) {\n var height = parseFloat(formatUnit(this.listViewInstance.height));\n var itemCount;\n if (this.listViewInstance.isWindow) {\n itemCount = Math.round((window.innerHeight / this.listItemHeight) * windowElementCount);\n }\n else {\n if (typeof this.listViewInstance.height === 'string' && this.listViewInstance.height.indexOf('%') !== -1) {\n itemCount = Math.round((this.listViewInstance.element.getBoundingClientRect().height / this.listItemHeight) * listElementCount);\n }\n else {\n itemCount = Math.round((height / this.listItemHeight) * listElementCount);\n }\n }\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n Virtualization.prototype.updateDOMItemCount = function () {\n this.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n };\n Virtualization.prototype.uiIndicesInitialization = function () {\n this.uiIndices = { 'activeIndices': [], 'disabledItemIndices': [], 'hiddenItemIndices': [] };\n var data = this.listViewInstance.curViewDS;\n for (var i = 0; i < data.length; i++) {\n if (this.listViewInstance.showCheckBox && data[i][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(i);\n }\n if (!isNullOrUndefined(data[parseInt(i.toString(), 10)][this.listViewInstance.fields.enabled]) &&\n !data[i][this.listViewInstance.fields.enabled]) {\n (this.uiIndices.disabledItemIndices.push(i));\n }\n }\n if (this.isNgTemplate()) {\n var items = this.listViewInstance.element.querySelectorAll('.' + classNames.listItem);\n for (var index = 0; index < items.length; index++) {\n items[index].context = this.listViewInstance.viewContainerRef.get(index).context;\n }\n }\n };\n Virtualization.prototype.refreshItemHeight = function () {\n if (this.listViewInstance.curViewDS.length) {\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = this.topElement.nextSibling.getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.bottomElementHeight = this.totalHeight;\n this.bottomElement.style.height = this.totalHeight + 'px';\n }\n };\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n return this.listViewInstance.isWindow ? (((pageYOffset - startingHeight) <= 0) ? 0 :\n (pageYOffset - startingHeight)) : ((this.listViewInstance.element.scrollTop - startingHeight) <= 0) ? 0 :\n (this.listViewInstance.element.scrollTop - startingHeight);\n };\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n var startingHeight;\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = select('.e-list-item', this.listViewInstance.element).getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n if (this.listViewInstance.isWindow) {\n startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top -\n document.documentElement.getBoundingClientRect().top;\n }\n else {\n startingHeight = this.listViewInstance.headerEle ? this.listViewInstance.headerEle.getBoundingClientRect().height : 0;\n }\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n if (scroll > this.scrollPosition) {\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, true);\n }\n else {\n this.onNormalScroll(listDiff, true);\n }\n }\n else {\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, false);\n }\n else {\n this.onNormalScroll(listDiff, false);\n }\n }\n }\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n if (typeof this.listViewInstance.onUIScrolled === 'function') {\n this.listViewInstance.onUIScrolled();\n }\n this.scrollPosition = scroll;\n };\n Virtualization.prototype.onLongScroll = function (listDiff, isScrollingDown) {\n var index = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n var elements = this.listViewInstance.ulElement.querySelectorAll('li');\n for (var i = 0; i < elements.length; i++) {\n this.updateUI(elements[i], index);\n index++;\n }\n this.uiLastIndex = isScrollingDown ? (this.uiLastIndex + listDiff) : (this.uiLastIndex - listDiff);\n this.uiFirstIndex = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n };\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n if (isScrollingDown) {\n for (var i = 0; i < listDiff; i++) {\n var index = ++this.uiLastIndex;\n this.updateUI(this.topElement.nextElementSibling, index, this.bottomElement);\n this.uiFirstIndex++;\n }\n }\n else {\n for (var i = 0; i < listDiff; i++) {\n var index = --this.uiFirstIndex;\n var target = this.topElement.nextSibling;\n this.updateUI(this.bottomElement.previousElementSibling, index, target);\n this.uiLastIndex--;\n }\n }\n };\n Virtualization.prototype.updateUiContent = function (element, index) {\n var curViewDs = this.listViewInstance.curViewDS;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n element.dataset.uid = ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n this.listViewInstance.curViewDS[index].toString();\n }\n else {\n element.dataset.uid = (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id]) ?\n (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id]) : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.text]);\n }\n if (this.listViewInstance.showIcon) {\n if (element.querySelector('.' + classNames.listIcon)) {\n detach(element.querySelector('.' + classNames.listIcon));\n }\n if (this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]) {\n var textContent = element.querySelector('.' + classNames.textContent);\n var curViewDS = this.listViewInstance.curViewDS[index];\n var iconCss = curViewDS[this.listViewInstance.fields.iconCss].toString();\n var target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' + iconCss\n });\n textContent.insertBefore(target, element.querySelector('.' + classNames.listItemText));\n }\n }\n if (this.listViewInstance.showCheckBox && this.listViewInstance.fields.groupBy) {\n if (!this.checkListWrapper) {\n this.checkListWrapper = this.listViewInstance.curUL.querySelector('.' + classNames.checkboxWrapper).cloneNode(true);\n }\n var textContent = element.querySelector('.' + classNames.textContent);\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.remove(classNames.checklist);\n textContent.classList.remove(classNames.checkbox);\n detach(element.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n else {\n if (!element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.add(classNames.checklist);\n textContent.classList.add(classNames.checkbox);\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n textContent.classList.add('e-checkbox-left');\n }\n else {\n textContent.classList.add('e-checkbox-right');\n }\n textContent.append(this.checkListWrapper.cloneNode(true));\n }\n }\n }\n };\n Virtualization.prototype.changeElementAttributes = function (element, index) {\n element.classList.remove(classNames.disable);\n if (this.uiIndices.disabledItemIndices.length && this.uiIndices.disabledItemIndices.indexOf(index) !== -1) {\n element.classList.add(classNames.disable);\n }\n element.style.display = '';\n if (this.uiIndices.hiddenItemIndices.length && this.uiIndices.hiddenItemIndices.indexOf(index) !== -1) {\n element.style.display = 'none';\n }\n if (this.listViewInstance.showCheckBox) {\n var checklistElement = element.querySelector('.' + classNames.checkboxWrapper);\n element.classList.remove(classNames.selected);\n element.classList.remove(classNames.focused);\n if (checklistElement) {\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n }\n if (this.uiIndices.activeIndices.length && this.uiIndices.activeIndices.indexOf(index) !== -1 &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n checklistElement.firstElementChild.classList.add(classNames.checked);\n checklistElement.setAttribute('aria-checked', 'true');\n if (this.activeIndex === index) {\n element.classList.add(classNames.focused);\n }\n }\n }\n else {\n element.classList.remove(classNames.selected);\n element.removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex === index &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n element.setAttribute('aria-selected', 'true');\n }\n }\n if (this.listViewInstance.fields.groupBy) {\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.classList.contains(classNames.listItem)) {\n element.classList.remove(classNames.listItem);\n element.setAttribute('role', 'group');\n element.classList.add(classNames.groupListItem);\n }\n }\n else {\n if (element.classList.contains(classNames.groupListItem)) {\n element.classList.remove(classNames.groupListItem);\n element.setAttribute('role', 'listitem');\n element.classList.add(classNames.listItem);\n }\n }\n }\n };\n Virtualization.prototype.findDSAndIndexFromId = function (ds, fields) {\n var _this = this;\n var resultJSON = {};\n fields = this.listViewInstance.getElementUID(fields);\n if (!isNullOrUndefined(fields)) {\n ds.some(function (data, index) {\n if ((fields[_this.listViewInstance.fields.id] &&\n fields[_this.listViewInstance.fields.id]\n === (data[_this.listViewInstance.fields.id] && data[_this.listViewInstance.fields.id]) || fields === data)) {\n resultJSON.index = index;\n resultJSON.data = data;\n return true;\n }\n else {\n return false;\n }\n });\n }\n return resultJSON;\n };\n Virtualization.prototype.getSelectedItems = function () {\n var _this = this;\n if (!isNullOrUndefined(this.activeIndex) || (this.listViewInstance.showCheckBox && this.uiIndices.activeIndices.length)) {\n var dataCollection = [];\n var textCollection = [];\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n var curViewDS_1 = this.listViewInstance.curViewDS;\n if (this.listViewInstance.showCheckBox) {\n var indices = this.uiIndices.activeIndices;\n for (var i = 0; i < indices.length; i++) {\n dataCollection.push(curViewDS_1[indices[i]]);\n }\n return {\n text: dataCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return _this.listViewInstance.dataSource.indexOf(curViewDS_1[index]);\n })\n };\n }\n else {\n return {\n text: curViewDS_1[this.activeIndex],\n data: curViewDS_1[this.activeIndex],\n index: this.listViewInstance.dataSource.indexOf(curViewDS_1[this.activeIndex])\n };\n }\n }\n else {\n var curViewDS_2 = this.listViewInstance.curViewDS;\n var text = this.listViewInstance.fields.text;\n if (this.listViewInstance.showCheckBox) {\n var indexArray = this.uiIndices.activeIndices;\n for (var i = 0; i < indexArray.length; i++) {\n textCollection.push(curViewDS_2[indexArray[i]][\"\" + text]);\n dataCollection.push(curViewDS_2[indexArray[parseInt(i.toString(), 10)]]);\n }\n var dataSource_1 = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return dataSource_1.indexOf(curViewDS_2[index]);\n })\n };\n }\n else {\n var dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: curViewDS_2[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS_2[this.activeIndex],\n index: dataSource.indexOf(curViewDS_2[this.activeIndex])\n };\n }\n }\n }\n else {\n return undefined;\n }\n };\n Virtualization.prototype.selectItem = function (obj) {\n var _this = this;\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n var isSelected = this.activeIndex === resutJSON.index;\n var isChecked_1;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked_1 = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n isChecked_1 = false;\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n if (this.listViewInstance.curUL.querySelector('.' + classNames.focused)) {\n this.listViewInstance.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n }\n if (this.listViewInstance.getLiFromObjOrElement(obj)) {\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.setCheckboxLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n else {\n this.listViewInstance.setSelectLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n }\n else {\n var eventArgs_1;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs_1 = {\n text: this.listViewInstance.curViewDS[this.activeIndex],\n data: this.listViewInstance.curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n else {\n var curViewDS = this.listViewInstance.curViewDS;\n eventArgs_1 = {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.trigger('select', eventArgs_1, function (observedArgs) {\n if (observedArgs.cancel) {\n if (!isChecked_1) {\n eventArgs_1.isChecked = isChecked_1;\n _this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n eventArgs_1.isChecked = !isChecked_1;\n _this.uiIndices.activeIndices.splice(_this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n }\n });\n }\n else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs_1, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.activeIndex = undefined;\n }\n });\n }\n }\n }\n else if (isNullOrUndefined(obj) && !this.listViewInstance.showCheckBox) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n };\n Virtualization.prototype.enableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.disableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.disabledItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.disabledItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.showItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.hideItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.hiddenItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.removeItem = function (obj) {\n var dataSource;\n var curViewDS = this.listViewInstance.curViewDS;\n var resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n dataSource = resutJSON.data;\n if (curViewDS[resutJSON.index - 1] &&\n curViewDS[resutJSON.index - 1].isHeader &&\n (curViewDS[resutJSON.index - 1])\n .items.length === 1) {\n this.removeUiItem(resutJSON.index - 1);\n this.removeUiItem(resutJSON.index - 1);\n }\n else {\n this.removeUiItem(resutJSON.index);\n }\n }\n var listDataSource = this.listViewInstance.dataSource instanceof DataManager\n ? this.listViewInstance.localData : this.listViewInstance.dataSource;\n var index = listDataSource.indexOf(dataSource);\n if (index !== -1) {\n listDataSource.splice(index, 1);\n this.listViewInstance.setViewDataSource(listDataSource);\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n };\n // eslint-disable-next-line\n Virtualization.prototype.setCheckboxLI = function (li, e) {\n var index = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n if (li.classList.contains(classNames.selected)) {\n if (this.uiIndices.activeIndices.indexOf(index) === -1) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n else {\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.setSelectLI = function (li, e) {\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n };\n Virtualization.prototype.checkedItem = function (checked) {\n if (checked) {\n this.uiIndices.activeIndices = [];\n this.activeIndex = undefined;\n var data = this.listViewInstance.curViewDS;\n for (var index = 0; index < data.length; index++) {\n if (!data[index].isHeader) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n }\n else {\n this.activeIndex = undefined;\n this.uiIndices.activeIndices = [];\n }\n };\n Virtualization.prototype.addUiItem = function (index) {\n // virtually new add list item based on the scollbar position\n // if the scroll bar is at the top, just pretend the new item has been added since no UI\n // change is required for the item that has been added at last but when scroll bar is at the bottom\n // just detach top and inject into bottom to mimic new item is added\n var curViewDs = this.listViewInstance.curViewDS;\n this.changeUiIndices(index, true);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex++;\n }\n if (this.listViewInstance.showCheckBox &&\n curViewDs[index][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(index);\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n }\n if (parseFloat(this.bottomElement.style.height)) {\n var liItem = this.listViewInstance.curUL.lastElementChild.previousSibling;\n var target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n if (target) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n this.updateUI(liItem, index, target);\n }\n }\n else {\n var liItem = this.listViewInstance.curUL.firstElementChild.nextSibling;\n var target = void 0;\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n }\n this.topElement.style.height = parseFloat(this.topElement.style.height) + this.listItemHeight + 'px';\n this.uiFirstIndex++;\n this.uiLastIndex++;\n if (target) {\n this.updateUI(liItem, index, target);\n if (this.listViewInstance.isWindow === true) {\n window.scrollTo(0, (pageYOffset + this.listItemHeight));\n }\n else {\n this.listViewInstance.element.scrollTop += this.listItemHeight;\n }\n }\n }\n this.totalHeight += this.listItemHeight;\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.removeUiItem = function (index) {\n this.totalHeight -= this.listItemHeight;\n var curViewDS = this.listViewInstance.curViewDS[index];\n var liItem = this.listViewInstance.getLiFromObjOrElement(curViewDS);\n this.listViewInstance.curViewDS.splice(index, 1);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex--;\n }\n if (liItem) {\n if (this.domItemCount > Object.keys(this.listViewInstance.curViewDS).length) {\n detach(liItem);\n this.domItemCount--;\n this.uiLastIndex--;\n this.totalHeight = 0;\n }\n else {\n if (liItem.classList.contains(classNames.disable)) {\n liItem.classList.remove(classNames.disable);\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(index), 1);\n }\n if (liItem.style.display === 'none') {\n liItem.style.display = '';\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(index), 1);\n }\n if (this.listViewInstance.showCheckBox && liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n var checklistElement = liItem.querySelector('.' + classNames.checkboxWrapper);\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n if (liItem.classList.contains(classNames.focused)) {\n liItem.classList.remove(classNames.focused);\n this.activeIndex = undefined;\n }\n }\n else if (liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else if (parseFloat(this.bottomElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else {\n this.topElement.style.height = parseFloat(this.topElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, (this.uiFirstIndex - 1), this.topElement.nextSibling);\n this.uiLastIndex--;\n this.uiFirstIndex--;\n }\n }\n }\n this.changeUiIndices(index, false);\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.changeUiIndices = function (index, increment) {\n var keys = Object.keys(this.uiIndices);\n for (var ind = 0; ind < keys.length; ind++) {\n this.uiIndices[keys[ind]] = this.uiIndices[keys[ind]].map(function (i) {\n if (i >= index) {\n return increment ? ++i : --i;\n }\n else {\n return i;\n }\n });\n }\n };\n Virtualization.prototype.addItem = function (data, fields, dataSource, index) {\n for (var i = 0; i < data.length; i++) {\n var currentItem = data[i];\n // push the given data to main data array\n dataSource = this.listViewInstance.addItemAtIndex(index, dataSource, currentItem);\n // recalculate all the group data or other datasource related things\n this.listViewInstance.setViewDataSource(dataSource);\n // render list items for first time due to no datasource present earlier\n if (!this.domItemCount) {\n // fresh rendering for first time\n if ((this.listViewInstance.template || this.listViewInstance.groupTemplate) && !this.isNgTemplate()) {\n this.listViewInstance.listBaseOption.template = null;\n this.listViewInstance.listBaseOption.groupTemplate = null;\n this.listViewInstance.listBaseOption.itemCreated = this.createUIItem.bind(this);\n }\n this.uiVirtualization();\n // when expected expected DOM count doesn't meet the condition we need to create and inject new item into DOM\n }\n else if (this.domItemCount < this.expectedDomItemCount) {\n var ds = this.listViewInstance.findItemFromDS(dataSource, fields);\n if (ds instanceof Array) {\n if (this.listViewInstance.ulElement) {\n var index_1 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index_1);\n // check for group header item\n var curViewDS = this.listViewInstance.curViewDS[index_1 - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index_1;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index_1);\n }\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n }\n else {\n var index_2 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index_2);\n // check for group header item needs to be added\n var curViewDS = this.listViewInstance.curViewDS[index_2 - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index_2 - 1);\n }\n }\n }\n };\n Virtualization.prototype.createAndInjectNewItem = function (itemData, index) {\n // generate li item for given datasource\n var target;\n var li = ListBase.createListItemFromJson(this.listViewInstance.createElement, [itemData], this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n // check for target element whether to insert before last item or group item\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n // target group header's first child item to append its header\n target = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);\n }\n if (this.listViewInstance.fields.groupBy\n && this.listViewInstance.curViewDS[index + 1]\n && this.listViewInstance.curViewDS[index + 1].isHeader) {\n var targetEle = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n // insert before the target element\n this.listViewInstance.ulElement.insertBefore(li[0], target);\n // increment internal DOM count, last index count for new element\n this.domItemCount++;\n if (this.bottomElementHeight <= 0) {\n this.uiLastIndex++;\n }\n // recalculate the current item height, to avoid jumpy scroller\n this.refreshItemHeight();\n };\n Virtualization.prototype.createUIItem = function (args) {\n if (!args.item.classList.contains('e-list-group-item')) {\n this.templateData = args.curData.isHeader ? args.curData.items[0] :\n args.curData;\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.renderCheckbox(args);\n if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&\n (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {\n var div_1 = document.createElement('div');\n var commonTemplate = '
' +\n ' ${' + this.listViewInstance.fields.text + '}
';\n var templateFunction = compile(this.listViewInstance.template || commonTemplate, this.listViewInstance);\n var nodes = templateFunction(this.templateData, this.listViewInstance);\n if (this.listViewInstance.template && this.listViewInstance.isReact) {\n this.listViewInstance.renderReactTemplates();\n }\n [].slice.call(nodes).forEach(function (ele) {\n div_1.appendChild(ele);\n });\n if (div_1.children && div_1.children[0]) {\n div_1.children[0].classList.add('e-checkbox');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div_1.children[0].classList.add('e-checkbox-left');\n }\n else {\n div_1.children[0].classList.add('e-checkbox-right');\n }\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div_1.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div_1.childNodes[0].children[0]);\n }\n else {\n div_1.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n while (args.item.lastChild) {\n args.item.removeChild(args.item.lastChild);\n }\n [].slice.call(div_1.children).forEach(function (ele) {\n args.item.appendChild(ele);\n });\n }\n }\n }\n }\n };\n Virtualization.prototype.reRenderUiVirtualization = function () {\n this.wireScrollEvent(true);\n if (this.listViewInstance.contentContainer) {\n detach(this.listViewInstance.contentContainer);\n }\n this.listViewInstance.preRender();\n // resetting the dom count to 0, to avoid edge case of dataSource suddenly becoming zero\n // and then manually adding item using addItem API\n this.domItemCount = 0;\n this.listViewInstance.header();\n this.listViewInstance.setLocalData();\n };\n Virtualization.prototype.updateUI = function (element, index, targetElement) {\n var onChange = this.isNgTemplate() ? this.onNgChange : this.onChange;\n if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {\n var curViewDS = this.listViewInstance.curViewDS[index];\n element.dataset.uid = (curViewDS[this.listViewInstance.fields.id]) ?\n (curViewDS[this.listViewInstance.fields.id]) : ListBase.generateId();\n onChange(curViewDS, element, this);\n }\n else {\n this.updateUiContent(element, index);\n }\n this.changeElementAttributes(element, index);\n if (targetElement) {\n this.listViewInstance.ulElement.insertBefore(element, targetElement);\n }\n };\n /**\n * Handles the UI change in vue for the list view.\n *\n * @param {DataSource} newData - The new data source for the list view.\n * @param {ElementContext} listElement - The HTML element context for the list view.\n * @param {Virtualization} virtualThis - The virtualization context for the list view.\n * @returns {void}\n */\n Virtualization.prototype.onChange = function (newData, listElement, virtualThis) {\n var liItem = ListBase.createListItemFromJson(virtualThis.listViewInstance.createElement, [newData], virtualThis.listViewInstance.listBaseOption, null, null, virtualThis.listViewInstance);\n if (virtualThis.listViewInstance.isReact) {\n virtualThis.listViewInstance.renderReactTemplates();\n }\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n [].slice.call(liItem[0].children).forEach(function (ele) {\n listElement.appendChild(ele);\n });\n };\n Virtualization.prototype.onNgChange = function (newData, listElement, virtualThis) {\n // compile given target element with template for new data\n var templateCompiler = compile(virtualThis.listViewInstance.template);\n var resultElement = templateCompiler(newData);\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n listElement.appendChild(resultElement[0]);\n };\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n Virtualization.prototype.destroy = function () {\n this.wireScrollEvent(true);\n this.topElement = null;\n this.bottomElement = null;\n };\n return Virtualization;\n}());\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 */\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$1(Sortable, _super);\n function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.getHelper = function (e) {\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 _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 _this.removePlaceHolder(newInst);\n }\n newInst.placeHolderElement = placeHolder;\n if (e.target && typeof e.target.className === 'string' && 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 }\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.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 _this.removePlaceHolder(_this.getSortableInstance(_this.curTarget));\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 _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 _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 prevIdx = _this === dropInst && (prevIdx - curIdx_1) >= 1 ? prevIdx - 1 : prevIdx;\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 _this.removePlaceHolder(dropInst);\n });\n }\n dropInst = _this.getSortableInstance(e.target);\n curIdx = dropInst.element.childElementCount;\n prevIdx = _this.getIndex(_this.target);\n if (dropInst.element.querySelector('.e-list-nrt')) {\n curIdx = curIdx - 1;\n }\n if (_this.curTarget === _this.target && e.target === _this.curTarget) {\n curIdx = prevIdx;\n }\n if (dropInst.element === e.target || (!isPlaceHolderPresent && _this.curTarget === _this.target)) {\n var beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: 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.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$1([\n Property(false)\n ], Sortable.prototype, \"enableAnimation\", void 0);\n __decorate$1([\n Property(null)\n ], Sortable.prototype, \"itemClass\", void 0);\n __decorate$1([\n Property(null)\n ], Sortable.prototype, \"scope\", void 0);\n __decorate$1([\n Property()\n ], Sortable.prototype, \"helper\", void 0);\n __decorate$1([\n Property()\n ], Sortable.prototype, \"placeHolder\", void 0);\n __decorate$1([\n Event()\n ], Sortable.prototype, \"drag\", void 0);\n __decorate$1([\n Event()\n ], Sortable.prototype, \"beforeDragStart\", void 0);\n __decorate$1([\n Event()\n ], Sortable.prototype, \"dragStart\", void 0);\n __decorate$1([\n Event()\n ], Sortable.prototype, \"beforeDrop\", void 0);\n __decorate$1([\n Event()\n ], Sortable.prototype, \"drop\", void 0);\n Sortable = Sortable_1 = __decorate$1([\n NotifyPropertyChanges\n ], Sortable);\n return Sortable;\n}(Base));\n/**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param {HTMLElement} from - The source element from which to move elements.\n * @param {HTMLElement} [to=from] - The destination element to which to move elements. Defaults to the source element.\n * @param {number[]} [targetIndexes] - The indexes of elements to move. If not provided, all children of the source element will be moved.\n * @param {number} [insertBefore] - The index before which to insert the moved elements in the destination element. If not provided, elements will be appended to the end of the destination element.\n * @returns {void}\n * @private\n */\nfunction 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\nexport { FieldSettings, ListBase, ListView, Sortable, Virtualization, classNames, cssClass, getFieldValues, moveTo };\n","import { Property, ChildProperty, Complex, setStyleAttribute, isNullOrUndefined, detach, Browser, extend, getUniqueID, Touch, closest, isUndefined, classList, formatUnit, SanitizeHtmlHelper, compile, initializeCSPTemplate, isBlazor, animationMode, Animation, attributes, L10n, EventHandler, removeClass, Collection, Event, NotifyPropertyChanges, Component, createElement, append, addClass } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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';\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 = /** @__PURE__ @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));\n/**\n * An object that is used to configure the action button model properties and event.\n */\nvar ButtonModelProps = /** @__PURE__ @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));\n/**\n * An object that is used to configure the animation object of Toast.\n */\nvar ToastAnimations = /** @__PURE__ @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));\n/**\n * An object that is used to configure the show/hide animation settings of Toast.\n */\nvar ToastAnimationSettings = /** @__PURE__ @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));\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 = /** @__PURE__ @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 (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(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 (isNullOrUndefined(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 * @deprecated\n */\n Toast.prototype.show = function (toastObj) {\n var collectionObj;\n if (!isNullOrUndefined(toastObj)) {\n this.templateChanges(toastObj);\n collectionObj = JSON.parse(JSON.stringify(toastObj));\n extend(this, this, toastObj);\n }\n if (isNullOrUndefined(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 (isNullOrUndefined(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 if (isNullOrUndefined(this.template) || this.template === '') {\n this.personalizeToast();\n }\n else {\n this.templateRendering();\n }\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 (!isNullOrUndefined(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 * @deprecated\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 var proxy = this;\n if (!isNullOrUndefined(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 (!isNullOrUndefined(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) && !isNullOrUndefined(this.contentTemplate) && this.content !== toastObj.content) {\n this.clearContentTemplate();\n }\n if (!isUndefined(toastObj.template) && !isNullOrUndefined(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 && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n /**\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 (isNullOrUndefined(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 (isNullOrUndefined(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 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 if (prob === 'content') {\n tempVar = this.contentTemplate;\n }\n else {\n tempVar = this.toastTemplate;\n }\n if (!isNullOrUndefined(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 = isNullOrUndefined(elem) ? tempVar : elem.cloneNode(true);\n if (prob === 'content') {\n this.contentTemplate = clo;\n }\n else {\n this.toastTemplate = clo;\n }\n }\n else {\n templateFn = compile(value);\n }\n }\n catch (e) {\n templateFn = typeof value == 'object' ? compile(value) : compile(initializeCSPTemplate(function () { return value; }));\n }\n if (!isNullOrUndefined(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 (!isNullOrUndefined(tmpArray) && tmpArray.length > 0 && !(isNullOrUndefined(tmpArray[0].tagName) && tmpArray.length === 1)) {\n [].slice.call(tmpArray).forEach(function (el) {\n if (!isNullOrUndefined(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 (!isNullOrUndefined(this.intervalId[intervalId])) {\n clearInterval(this.intervalId[intervalId]);\n delete this.intervalId[intervalId];\n }\n if (!isNullOrUndefined(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 (!isNullOrUndefined(_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 (!isNullOrUndefined(this.contentTemplate)) {\n this.clearContentTemplate();\n }\n if (!isNullOrUndefined(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 (!isNullOrUndefined(_this.progressObj[intervalId]) && !isNullOrUndefined(toastEle.querySelector('.' + PROGRESS))) {\n _this.progressObj[intervalId].progressEle.style.width = '0%';\n }\n animate.end = function () {\n _this.clearProgress(intervalId);\n if (!_this.isBlazorServer() || isNullOrUndefined(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 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 this.progressObj[id].intervalId =\n 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 (!isNullOrUndefined(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 if (!isNullOrUndefined(progress)) {\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 (!isNullOrUndefined(toastEle.querySelector('.' + PROGRESS))) {\n progress.intervalId = setInterval(this.updateProgressBar.bind(this, progress), 10);\n }\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 (isNullOrUndefined(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 (isNullOrUndefined(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 (isNullOrUndefined(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' && !isNullOrUndefined(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 (isNullOrUndefined(actionBtn.model)) {\n return;\n }\n var btnDom = _this.createElement('button');\n btnDom.setAttribute('type', 'button');\n if (isNullOrUndefined(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 (!isNullOrUndefined(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 if (newProp.enableRtl) {\n container.classList.add(RTL);\n }\n else {\n container.classList.remove(RTL);\n }\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));\n/**\n * Base for creating Toast through utility method.\n */\n// eslint-disable-next-line\nvar 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 (!isNullOrUndefined(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: !isNullOrUndefined(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\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * Specifies the type of severity to display the message with distinctive icons and colors.\n */\nvar Severity;\n(function (Severity) {\n /**\n * The message is displayed with icons and colors to denote it as a normal message.\n */\n Severity[\"Normal\"] = \"Normal\";\n /**\n * The message is displayed with icons and colors to denote it as a success message.\n */\n Severity[\"Success\"] = \"Success\";\n /**\n * The message is displayed with icons and colors to denote it as information.\n */\n Severity[\"Info\"] = \"Info\";\n /**\n * The message is displayed with icons and colors to denote it as a warning message.\n */\n Severity[\"Warning\"] = \"Warning\";\n /**\n * The message is displayed with icons and colors to denote it as an error message.\n */\n Severity[\"Error\"] = \"Error\";\n})(Severity || (Severity = {}));\n/**\n * Specifies the predefined appearance variants for the component to display.\n */\nvar Variant;\n(function (Variant) {\n /**\n * Denotes the severity is differentiated using text color and light background color.\n */\n Variant[\"Text\"] = \"Text\";\n /**\n * Denotes the severity is differentiated using text color and border without background.\n */\n Variant[\"Outlined\"] = \"Outlined\";\n /**\n * Denotes the severity is differentiated using text color and dark background color.\n */\n Variant[\"Filled\"] = \"Filled\";\n})(Variant || (Variant = {}));\nvar MSG_ICON = 'e-msg-icon';\nvar MSG_CLOSE_ICON = 'e-msg-close-icon';\nvar MSG_CONTENT = 'e-msg-content';\nvar MSG_CONTENT_CENTER = 'e-content-center';\nvar RTL$1 = 'e-rtl';\nvar SUCCESS = 'e-success';\nvar WARNING = 'e-warning';\nvar INFO = 'e-info';\nvar ERROR = 'e-error';\nvar OUTLINED = 'e-outlined';\nvar FILLED = 'e-filled';\nvar HIDE = 'e-hidden';\n/**\n * The Message component displays messages with severity by differentiating icons and colors to denote the importance and context of the message to the end user.\n * ```html\n *
\n * \n * ```\n *\n */\nvar Message = /** @__PURE__ @class */ (function (_super) {\n __extends$1(Message, _super);\n /**\n * Constructor for creating the Message component widget.\n *\n * @param {MessageModel}options - Specifies the Message component interface.\n * @param {HTMLElement}element - Specifies the target element.\n */\n function Message(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initialRender = true;\n return _this;\n }\n /**\n * Gets the Message component module name.\n *\n * @returns {string} - Returns the string.\n * @private\n */\n Message.prototype.getModuleName = function () {\n return 'message';\n };\n /**\n * Get the persisted state properties of the Message component.\n *\n * @returns {string} - Returns the string.\n */\n Message.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Method to initialize the variables for the Message component.\n *\n * @returns {void}\n * @private\n */\n Message.prototype.preRender = function () {\n var localeText = { close: 'Close' };\n this.l10n = new L10n('message', localeText, this.locale);\n };\n /**\n * Method to initialize the Message component rendering.\n *\n * @returns {void}\n * @private\n */\n Message.prototype.render = function () {\n this.innerContent = this.element.innerHTML;\n this.element.innerHTML = '';\n this.msgElement = this.createElement('div', { className: 'e-msg-content-wrap' });\n this.initialize();\n this.wireEvents();\n this.renderComplete();\n this.renderReactTemplates();\n this.initialRender = false;\n };\n Message.prototype.initialize = function () {\n this.element.setAttribute('role', 'alert');\n this.setCssClass();\n this.setIcon();\n this.setContent();\n this.setCloseIcon();\n this.setSeverity();\n this.setVariant();\n this.setVisible();\n if (this.enableRtl) {\n this.element.classList.add(RTL$1);\n }\n };\n Message.prototype.setIcon = function () {\n if (this.showIcon) {\n this.iconElement = this.createElement('span', { className: MSG_ICON });\n if (this.element.classList.contains(MSG_CONTENT_CENTER)) {\n this.msgElement.appendChild(this.iconElement);\n }\n else {\n this.element.appendChild(this.iconElement);\n }\n }\n };\n Message.prototype.setCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', { attrs: { type: 'button', class: MSG_CLOSE_ICON } });\n this.element.appendChild(this.closeIcon);\n this.setTitle();\n }\n };\n Message.prototype.setTitle = 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 Message.prototype.setContent = function () {\n this.txtElement = this.createElement('div', { className: MSG_CONTENT });\n if (this.element.classList.contains(MSG_CONTENT_CENTER)) {\n this.msgElement.appendChild(this.txtElement);\n this.element.appendChild(this.msgElement);\n }\n else {\n this.element.appendChild(this.txtElement);\n }\n this.setTemplate();\n };\n Message.prototype.setTemplate = function () {\n var templateFn;\n if (isNullOrUndefined(this.content) || this.content === '') {\n this.txtElement.innerHTML = this.innerContent;\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '') {\n if ((typeof this.content === 'string') || (typeof this.content !== 'string')) {\n // eslint-disable-next-line\n if (this.isVue || typeof this.content !== 'string') {\n templateFn = compile(this.content);\n if (!isNullOrUndefined(templateFn)) {\n var tempArr = templateFn({}, this, 'content', this.element.id + 'content', true);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.txtElement);\n this.renderReactTemplates();\n }\n }\n }\n else {\n this.txtElement.innerHTML = this.content;\n }\n }\n }\n };\n Message.prototype.setSeverity = function () {\n var classList = [SUCCESS, WARNING, INFO, ERROR];\n removeClass([this.element], classList);\n if (this.severity === 'Success') {\n addClass([this.element], SUCCESS);\n }\n else if (this.severity === 'Warning') {\n addClass([this.element], WARNING);\n }\n else if (this.severity === 'Error') {\n addClass([this.element], ERROR);\n }\n else if (this.severity === 'Info') {\n addClass([this.element], INFO);\n }\n };\n Message.prototype.setVariant = function () {\n var classList = [FILLED, OUTLINED];\n removeClass([this.element], classList);\n if (this.variant === 'Outlined') {\n addClass([this.element], OUTLINED);\n }\n else if (this.variant === 'Filled') {\n addClass([this.element], FILLED);\n }\n };\n Message.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 Message.prototype.setVisible = function () {\n if (!this.visible) {\n addClass([this.element], HIDE);\n if (!this.initialRender) {\n this.trigger('closed', { event: event, isInteracted: false, element: this.element });\n }\n }\n else {\n removeClass([this.element], HIDE);\n }\n };\n Message.prototype.clickHandler = function (event) {\n this.closeMessage(event);\n };\n Message.prototype.keyboardHandler = function (event) {\n if (event.keyCode === 32 || event.keyCode === 13) {\n this.closeMessage(event);\n }\n };\n Message.prototype.closeMessage = function (event) {\n addClass([this.element], HIDE);\n this.setProperties({ visible: false }, true);\n var eventArgs = { event: event, isInteracted: true, element: this.element };\n this.trigger('closed', eventArgs);\n };\n Message.prototype.wireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.clickHandler, this);\n EventHandler.add(this.closeIcon, 'keydown', this.keyboardHandler, this);\n }\n };\n Message.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.clickHandler);\n EventHandler.remove(this.closeIcon, 'keydown', this.keyboardHandler);\n }\n };\n /**\n * Method to handle the dynamic changes of the Message component properties.\n *\n * @param {MessageModel} newProp - Specifies the new property.\n * @param {MessageModel} oldProp - Specifies the old property.\n * @returns {void}\n * @private\n */\n Message.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.setCssClass(oldProp.cssClass);\n break;\n case 'content':\n this.txtElement.innerHTML = '';\n this.setTemplate();\n break;\n case 'enableRtl':\n if (!this.enableRtl) {\n this.element.classList.remove(RTL$1);\n }\n else {\n this.element.classList.add(RTL$1);\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.setTitle();\n }\n break;\n case 'showIcon':\n if (!this.showIcon && this.element.getElementsByClassName(MSG_ICON).length > 0) {\n detach(this.iconElement);\n }\n if (this.showIcon) {\n this.iconElement = this.createElement('span', { className: MSG_ICON });\n this.element.insertBefore(this.iconElement, this.txtElement);\n }\n break;\n case 'showCloseIcon':\n if (!this.showCloseIcon && !isNullOrUndefined(this.closeIcon)) {\n this.unWireEvents();\n detach(this.closeIcon);\n }\n else {\n this.setCloseIcon();\n this.wireEvents();\n }\n break;\n case 'severity':\n this.setSeverity();\n break;\n case 'variant':\n this.setVariant();\n break;\n case 'visible':\n this.setVisible();\n break;\n }\n }\n };\n /**\n * Method to destroy the Message component. It removes the component from the DOM and detaches all its bound events. It also removes the attributes and classes of the component.\n *\n * @returns {void}\n */\n Message.prototype.destroy = function () {\n var cssClass = isNullOrUndefined(this.cssClass) ? [''] : this.cssClass.split(' ');\n var className = [SUCCESS, WARNING, INFO, ERROR, RTL$1, HIDE, OUTLINED, FILLED];\n var classList = (cssClass.length === 1 && cssClass[0] === '') ? className : className.concat(cssClass);\n removeClass([this.element], classList);\n this.element.removeAttribute('role');\n this.unWireEvents();\n if (!isNullOrUndefined(this.iconElement)) {\n detach(this.iconElement);\n }\n detach(this.txtElement);\n if (!isNullOrUndefined(this.closeIcon)) {\n detach(this.closeIcon);\n }\n _super.prototype.destroy.call(this);\n };\n __decorate$1([\n Property(null)\n ], Message.prototype, \"content\", void 0);\n __decorate$1([\n Property('')\n ], Message.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property(true)\n ], Message.prototype, \"showIcon\", void 0);\n __decorate$1([\n Property(false)\n ], Message.prototype, \"showCloseIcon\", void 0);\n __decorate$1([\n Property('Normal')\n ], Message.prototype, \"severity\", void 0);\n __decorate$1([\n Property('Text')\n ], Message.prototype, \"variant\", void 0);\n __decorate$1([\n Property(true)\n ], Message.prototype, \"visible\", void 0);\n __decorate$1([\n Event()\n ], Message.prototype, \"created\", void 0);\n __decorate$1([\n Event()\n ], Message.prototype, \"destroyed\", void 0);\n __decorate$1([\n Event()\n ], Message.prototype, \"closed\", void 0);\n Message = __decorate$1([\n NotifyPropertyChanges\n ], Message);\n return Message;\n}(Component));\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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 */\nvar 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 */\nvar 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 = /** @__PURE__ @class */ (function (_super) {\n __extends$2(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 if (!(isNullOrUndefined(this.shape))) {\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 };\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 if (!(isNullOrUndefined(this.shimmerEffect))) {\n addClass([this.element], [cssClassName[this.shimmerEffect.toUpperCase() + 'EFFECT']]);\n }\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$2([\n Property('')\n ], Skeleton.prototype, \"width\", void 0);\n __decorate$2([\n Property('')\n ], Skeleton.prototype, \"height\", void 0);\n __decorate$2([\n Property(true)\n ], Skeleton.prototype, \"visible\", void 0);\n __decorate$2([\n Property('Text')\n ], Skeleton.prototype, \"shape\", void 0);\n __decorate$2([\n Property('Wave')\n ], Skeleton.prototype, \"shimmerEffect\", void 0);\n __decorate$2([\n Property('Loading...')\n ], Skeleton.prototype, \"label\", void 0);\n __decorate$2([\n Property('')\n ], Skeleton.prototype, \"cssClass\", void 0);\n Skeleton = __decorate$2([\n NotifyPropertyChanges\n ], Skeleton);\n return Skeleton;\n}(Component));\n\nexport { ButtonModelProps, Message, Severity, ShimmerEffect, Skeleton, SkeletonType, Toast, ToastAnimationSettings, ToastAnimations, ToastPosition, ToastUtility, Variant };\n","import { Browser, getUniqueID, Touch, EventHandler, isNullOrUndefined, selectAll, detach, classList, Property, NotifyPropertyChanges, Component, createElement, removeClass, select, ChildProperty, Collection, Animation, getValue, setValue, append, addClass, isBlazor, rippleEffect, KeyboardEvents, closest, getInstance, isVisible, SanitizeHtmlHelper, Event, Complex, formatUnit, setStyleAttribute, attributes, compile, isRippleEnabled, animationMode, remove, getRandomId, L10n, Draggable, isUndefined, getElement, Droppable, matches, extend, merge, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getScrollableParent, Popup, getZindexPartial, fit, isCollide, calculatePosition, createSpinner, showSpinner, hideSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { Button, createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Input } from '@syncfusion/ej2-inputs';\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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 = /** @__PURE__ @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));\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CLS_ROOT$1 = 'e-vscroll';\nvar CLS_RTL$1 = 'e-rtl';\nvar CLS_DISABLE$1 = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW$1 = '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$1 = 'e-scroll-device';\nvar CLS_OVERLAY$1 = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID$1 = 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 = /** @__PURE__ @class */ (function (_super) {\n __extends$1(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$1);\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$1);\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 = createElement('div', { className: CLS_VSCROLLCON });\n var scrollBar = createElement('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$1, CLS_DEVICE$1, CLS_RTL$1]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY$1, 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$1 + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE$1);\n }\n else {\n this.element.classList.remove(CLS_DISABLE$1);\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 = createElement('div', { className: CLS_OVERLAY$1 + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = createElement('div', { id: id.concat('down'), className: clsDown });\n var navItem = createElement('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW$1 + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = createElement('div', { className: CLS_OVERLAY$1 + ' ' + 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 = createElement('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = createElement('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW$1 + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = createElement('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE$1 });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = createElement('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW$1 + ' 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$1).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$1, 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$1);\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$1);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE$1);\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$1) {\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$1) {\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$1);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE$1);\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$1);\n }\n else {\n this.element.classList.remove(CLS_RTL$1);\n }\n break;\n }\n }\n };\n __decorate$1([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate$1([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\n\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 */\nfunction 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 */\nfunction 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\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$2(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate$2([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate$2([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate$2([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate$2([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate$2([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate$2([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @__PURE__ @class */ (function (_super) {\n __extends$2(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate$2([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate$2([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate$2([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate$2([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate$2([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n __decorate$2([\n Property()\n ], MenuItem.prototype, \"htmlAttributes\", void 0);\n return MenuItem;\n}(ChildProperty));\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$2(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate$2([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate$2([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @__PURE__ @class */ (function (_super) {\n __extends$2(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 _this.isAnimationNone = false;\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 EventHandler.add(document, 'keydown', this.domKeyHandler, this);\n if (!this.isMenu && !this.target) {\n EventHandler.add(document, 'scroll', this.scrollHandler, this);\n }\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.domKeyHandler = function (e) {\n if (e.keyCode === 27) {\n e.action = ESCAPE;\n this.leftEscKeyHandler(e);\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 }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else if (action === 'tab' && cli.classList.contains(SEPARATOR)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli && (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE))) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n var _this = this;\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + '-' + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n if (!document.body.contains(this.element) && navIdxLen === 0) {\n return null;\n }\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.isContextMenuClosed = false;\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 @typescript-eslint/no-explicit-any\n var regExp = RegExp;\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 && (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 && 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 &&\n !_this.isMenusClosed && !_this.isCmenuHover) {\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 = void 0;\n if (this.portals) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n portals = this.portals.splice(0, this.items.length);\n }\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 if (this.template) {\n item.iconCss = (item.iconCss || '') + ICONS + ' e-previous';\n }\n var hdata = new MenuItem(this.items[0], 'items', this.template ? item : 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 // eslint-disable-next-line guard-for-in\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 var observedElement;\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 _this.isContextMenuClosed = true;\n observedElement = observedOpenArgs.element;\n if (_this.enableScrolling && _this.isCMenu && observedElement && observedElement.parentElement) {\n observedElement.style.height = observedElement.parentElement.style.height;\n }\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 if (Browser.isDevice) {\n _this.popupWrapper.style.left = _this.left + 'px';\n }\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n if (this.isCMenu && this.enableScrolling && ul) {\n ul.style.height = '';\n }\n var wrapper = closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n if (!this.isMenu && this.enableScrolling && ul && wrapper && wrapper.offsetHeight > 0) {\n var menuVScroll = closest(ul, '.e-menu-vscroll');\n ul.style.display = 'block';\n if (menuVScroll) {\n destroyScroll(getInstance(menuVScroll, VScroll), menuVScroll);\n }\n var cmenuWidth = Math.ceil(this.getMenuWidth(ul, ul.offsetWidth, this.enableRtl));\n var cmenu = addScrolling(this.createElement, wrapper, ul, 'vscroll', this.enableRtl, wrapper.offsetHeight);\n Object.assign(cmenu.style, {\n top: top + \"px\",\n left: left + \"px\",\n width: cmenuWidth + \"px\",\n position: 'absolute',\n display: 'none'\n });\n }\n else {\n ul.style.top = top + px;\n ul.style.left = left + px;\n }\n };\n MenuBase.prototype.getMenuWidth = function (cmenu, width, isRtl) {\n var caretIcon = cmenu.getElementsByClassName(CARET)[0];\n if (caretIcon) {\n width += parseInt(getComputedStyle(caretIcon)[isRtl ? 'marginRight' : 'marginLeft'], 10);\n }\n return width < 120 ? 120 : width;\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 if (!args.curData.htmlAttributes.role) {\n args.curData.htmlAttributes.role = 'menuitem';\n }\n if (!args.curData.htmlAttributes.tabindex) {\n args.curData.htmlAttributes.tabindex = '-1';\n }\n }\n else {\n Object.assign(args.curData.htmlAttributes, {\n role: args.curData.htmlAttributes.role || 'menuitem',\n tabindex: args.curData.htmlAttributes.tabindex || '-1'\n });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n if (!args.curData.htmlAttributes['aria-label']) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\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 if (!args.curData.htmlAttributes.role) {\n args.item.setAttribute('role', 'separator');\n }\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 if (!this.isMenu) {\n this.isCmenuHover = true;\n }\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 if (!this.isMenu) {\n this.isCmenuHover = 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 var menuWrapper = closest(e.target, '.e-menu-wrapper');\n if (menuWrapper && menuWrapper.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 if (!this.isMenu) {\n this.isCmenuHover = true;\n }\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n if (!this.isMenu) {\n this.isCmenuHover = false;\n }\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (trgt.tagName === 'DIV' && closest(trgt, '.e-menu-vscroll') && (this.navIdx.length || !this.isMenu && this.enableScrolling && this.navIdx.length === 0)) {\n var popupEle = this.isMenu ? closest(trgt, '.' + POPUP) : closest(trgt, '.e-menu-vscroll');\n var cIdx = this.isMenu ? Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1\n : this.getIdx(wrapper, select('ul.e-menu-parent', popupEle));\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 (!this.isAnimationNone && !cli || (cli && !cli.querySelector('.' + CARET))) {\n if (navigator.platform.toUpperCase().indexOf('MAC') < 0 || (navigator.platform.toUpperCase().indexOf('MAC') >= 0 && !e.ctrlKey)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n if (ul && ul.children) {\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 ulElem = !this.isMenu && this.enableScrolling && select('.e-menu-vscroll', ul)\n ? selectAll('.e-menu-parent', ul) : Array.from(ul.children);\n var idx = Array.prototype.indexOf.call(ulElem, 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') || !this_1.isMenu) {\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 EventHandler.remove(document, 'keydown', this.domKeyHandler);\n if (!this.isMenu && !this.target) {\n EventHandler.remove(document, 'scroll', this.scrollHandler);\n }\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 var animateElement = (this.enableScrolling && !this.isMenu && closest(ul, '.e-menu-vscroll'))\n ? closest(ul, '.e-menu-vscroll') : ul;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n if (this.hamburgerMode && ul) {\n ul.style.top = '0px';\n }\n this.isAnimationNone = this.animationSettings.effect === 'None';\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(animateElement, {\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 if (pElement) {\n pUlHeight = pElement.offsetHeight;\n }\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n if (pElement) {\n pElement.style.maxHeight = '';\n }\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = _this.isMenu ? options.element.getBoundingClientRect().height + 'px' : options.element.scrollHeight + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode && pElement) {\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 if (pElement) {\n pElement.style.minHeight = '';\n }\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 && this.isContextMenuClosed) {\n if (this.isMenu || !Browser.isDevice || (!this.isMenu && this.isAnimationNone && Browser.isDevice)) {\n ul.style.display = 'block';\n }\n ul.style.maxHeight = '';\n var scrollMenu = this.enableScrolling && !this.isMenu ? closest(ul, '.e-menu-vscroll') : null;\n if (scrollMenu) {\n scrollMenu.style.display = 'block';\n }\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 var scrollMenu = this.enableScrolling && !this.isMenu ? closest(ul, '.e-menu-vscroll') : null;\n if (scrollMenu) {\n destroyScroll(getInstance(scrollMenu, VScroll), scrollMenu);\n }\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 this.isAnimationNone = false;\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentField = isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var itemId = (item.htmlAttributes && 'id' in item.htmlAttributes) ? item.htmlAttributes.id : currentField;\n if (itemId === 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n menuitem.parentObj = iitems[0].parentObj;\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 if (i === items.length - 1 && !this.isMenu && ul.style.display === 'block') {\n this.setPosition(null, ul, parseFloat(ul.style.top), parseFloat(ul.style.left));\n ul.style.display = 'block';\n }\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 detach(wrapper);\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate$2([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate$2([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate$2([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate$2([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate$2([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate$2([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate$2([\n Property(true)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$2([\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$2([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate$2([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate$2([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL$2 = '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$2 = '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$1 = '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 = /** @__PURE__ @class */ (function (_super) {\n __extends$3(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$3([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate$3([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate$3([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate$3([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate$3([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate$3([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate$3([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate$3([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate$3([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate$3([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate$3([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate$3([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate$3([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate$3([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate$3([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate$3([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate$3([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate$3([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @__PURE__ @class */ (function (_super) {\n __extends$3(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 (!isNullOrUndefined(el) && !isNullOrUndefined(el.ej2_instances) && !isNullOrUndefined(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 (!isNullOrUndefined(_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$2);\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$2 + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNullOrUndefined(ele) && !isNullOrUndefined(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 = !isNullOrUndefined(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 document.removeEventListener('scroll', this.clickEvent);\n document.removeEventListener('click', this.scrollEvent);\n this.scrollEvent = null;\n this.clickEvent = null;\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$2);\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$2 + ' ):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$2)) {\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$2);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE$2);\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$2) || 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$2)) {\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$2)) {\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 (!isNullOrUndefined(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNullOrUndefined(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 (!isNullOrUndefined(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE$2 + ')' + ':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 = !isNullOrUndefined(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$2);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNullOrUndefined(clst) || clst.classList.contains(CLS_DISABLE$2)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n var isClickBinded = itemObj && !isNullOrUndefined(itemObj.click) && typeof itemObj.click == 'object' ?\n !isNullOrUndefined(itemObj.click.observers) && itemObj.click.observers.length > 0 :\n !isNullOrUndefined(itemObj) && !isNullOrUndefined(itemObj.click);\n if (isClickBinded) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNullOrUndefined(_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.clickEvent = this.docEvent.bind(this);\n this.scrollEvent = this.docEvent.bind(this);\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 setStyleAttribute(this.element, { 'height': height });\n }\n setStyleAttribute(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 setStyleAttribute(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$1 + ', .' + 'e-vscroll-bar');\n if (scrollEle) {\n scrollEle.removeAttribute('tabindex');\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyleAttribute(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 (isNullOrUndefined(element) || isNullOrUndefined(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 (isNullOrUndefined(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 setStyleAttribute(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 setStyleAttribute(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyleAttribute(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 setStyleAttribute(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 setStyleAttribute(this.element, { overflow: '' });\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 document.addEventListener('scroll', this.clickEvent);\n document.addEventListener('click', this.scrollEvent);\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 setStyleAttribute(popupEle, { maxHeight: '', display: 'block' });\n setStyleAttribute(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 setStyleAttribute(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 = isNullOrUndefined(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 setStyleAttribute(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n }\n else if (this.isVertical && this.overflowMode !== 'Extended') {\n var tbEleData = this.element.getBoundingClientRect();\n setStyleAttribute(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 setStyleAttribute(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyleAttribute(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 setStyleAttribute(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 setStyleAttribute(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyleAttribute(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 // eslint-disable-next-line max-len\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 = (!isNullOrUndefined(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNullOrUndefined(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 (!isNullOrUndefined(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyleAttribute(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 (isNullOrUndefined(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 setStyleAttribute(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 (!isNullOrUndefined(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNullOrUndefined(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 (!isNullOrUndefined(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 = {\n minWidth: el.style.minWidth, height: el.style.height,\n minHeight: el.style.minHeight\n };\n setStyleAttribute(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 (isNullOrUndefined(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 (isNullOrUndefined(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, attrs: { role: 'group' } }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER, attrs: { role: 'group' } }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT, attrs: { role: 'group' } }));\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 (!isNullOrUndefined(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 (isNullOrUndefined(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE$2);\n if (!isNullOrUndefined(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE$2);\n if (!isNullOrUndefined(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNullOrUndefined(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 (isNullOrUndefined(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$2);\n }\n else {\n addClass(elements, CLS_DISABLE$2);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNullOrUndefined(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 (isNullOrUndefined(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNullOrUndefined(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNullOrUndefined(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 (isNullOrUndefined(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 (isNullOrUndefined(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 (!isNullOrUndefined(btnItem) && !isNullOrUndefined(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' && !isNullOrUndefined(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 (!isNullOrUndefined(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = compile(val);\n }\n }\n catch (e) {\n templateFn = compile(val);\n }\n var tempArray = void 0;\n if (!isNullOrUndefined(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate, undefined, undefined, this.root);\n }\n if (!isNullOrUndefined(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNullOrUndefined(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 (!isNullOrUndefined(firstChild)) {\n firstChild.setAttribute('tabindex', isNullOrUndefined(firstChild.getAttribute('tabIndex')) ? '-1' : this.getDataTabindex(firstChild));\n firstChild.setAttribute('data-tabindex', isNullOrUndefined(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 setStyleAttribute(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 && !isNullOrUndefined(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', isNullOrUndefined(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNullOrUndefined(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$2);\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 isNullOrUndefined(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$2 + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNullOrUndefined(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 (isNullOrUndefined(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n if (!isNullOrUndefined(this.element.querySelector('.e-hor-nav')) && this.element.querySelector('.e-hor-nav').classList.contains('e-nav-active')) {\n this.updateTabIndex('0');\n var tabindexValue = this.getDataTabindex(previousEle) === '-1' ? '0' : this.getDataTabindex(previousEle);\n previousEle.setAttribute('tabindex', tabindexValue);\n }\n else {\n this.updateTabIndex('-1');\n }\n curEle.removeAttribute('tabindex');\n }\n else {\n var tabIndex = parseInt(this.getDataTabindex(this.activeEle), 10) + 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 (!isNullOrUndefined(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$1)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR$1).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 (!isNullOrUndefined(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 (!isNullOrUndefined(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 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 (isNullOrUndefined(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 setStyleAttribute(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyleAttribute(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$2);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL$2);\n }\n else {\n this.remove(tEle, CLS_RTL$2);\n }\n if (!isNullOrUndefined(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL$2);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL$2);\n }\n }\n if (!isNullOrUndefined(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL$2);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL$2);\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 && isNullOrUndefined(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 (isNullOrUndefined(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$3([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate$3([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate$3([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate$3([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate$3([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate$3([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate$3([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate$3([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$3([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate$3([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate$3([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate$3([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate$3([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate$3([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CLS_ACRDN_ROOT = 'e-acrdn-root';\nvar CLS_ROOT$2 = 'e-accordion';\nvar CLS_ITEM$1 = 'e-acrdn-item';\nvar CLS_ITEMFOCUS = 'e-item-focus';\nvar CLS_ITEMHIDE = 'e-hide';\nvar CLS_HEADER = 'e-acrdn-header';\nvar CLS_HEADERICN = 'e-acrdn-header-icon';\nvar CLS_HEADERCTN = 'e-acrdn-header-content';\nvar CLS_CONTENT = 'e-acrdn-panel';\nvar CLS_CTENT = 'e-acrdn-content';\nvar CLS_TOOGLEICN = 'e-toggle-icon';\nvar CLS_COLLAPSEICN = 'e-tgl-collapse-icon e-icons';\nvar CLS_EXPANDICN = 'e-expand-icon';\nvar CLS_RTL$3 = 'e-rtl';\nvar CLS_CTNHIDE = 'e-content-hide';\nvar CLS_SLCT = 'e-select';\nvar CLS_SLCTED = 'e-selected';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_ANIMATE = 'e-animate';\nvar CLS_DISABLE$3 = 'e-overlay';\nvar CLS_TOGANIMATE = 'e-toggle-animation';\nvar CLS_NEST = 'e-nested';\nvar CLS_EXPANDSTATE = 'e-expand-state';\nvar CLS_CONTAINER = 'e-accordion-container';\n/**\n * Objects used for configuring the Accordion expanding item action properties.\n */\nvar AccordionActionSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AccordionActionSettings, _super);\n function AccordionActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property('SlideDown')\n ], AccordionActionSettings.prototype, \"effect\", void 0);\n __decorate$4([\n Property(400)\n ], AccordionActionSettings.prototype, \"duration\", void 0);\n __decorate$4([\n Property('linear')\n ], AccordionActionSettings.prototype, \"easing\", void 0);\n return AccordionActionSettings;\n}(ChildProperty));\n/**\n * Objects used for configuring the Accordion animation properties.\n */\nvar AccordionAnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AccordionAnimationSettings, _super);\n function AccordionAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"collapse\", void 0);\n __decorate$4([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"expand\", void 0);\n return AccordionAnimationSettings;\n}(ChildProperty));\n/**\n * An item object that is used to configure Accordion items.\n */\nvar AccordionItem = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AccordionItem, _super);\n function AccordionItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property(null)\n ], AccordionItem.prototype, \"content\", void 0);\n __decorate$4([\n Property(null)\n ], AccordionItem.prototype, \"header\", void 0);\n __decorate$4([\n Property(null)\n ], AccordionItem.prototype, \"cssClass\", void 0);\n __decorate$4([\n Property(null)\n ], AccordionItem.prototype, \"iconCss\", void 0);\n __decorate$4([\n Property(false)\n ], AccordionItem.prototype, \"expanded\", void 0);\n __decorate$4([\n Property(true)\n ], AccordionItem.prototype, \"visible\", void 0);\n __decorate$4([\n Property(false)\n ], AccordionItem.prototype, \"disabled\", void 0);\n __decorate$4([\n Property()\n ], AccordionItem.prototype, \"id\", void 0);\n return AccordionItem;\n}(ChildProperty));\n/**\n * The Accordion is a vertically collapsible content panel that displays one or more panels at a time within the available space.\n * ```html\n *
\n * \n * ```\n */\nvar Accordion = /** @__PURE__ @class */ (function (_super) {\n __extends$4(Accordion, _super);\n /**\n * Initializes a new instance of the Accordion class.\n *\n * @param {AccordionModel} options - Specifies Accordion model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as an Accordion.\n */\n function Accordion(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * Contains the keyboard configuration of the Accordion.\n */\n _this.keyConfigs = {\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n enter: 'enter',\n space: 'space',\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 Accordion.prototype.destroy = function () {\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate();\n }\n var ele = this.element;\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.isDestroy = true;\n this.restoreContent(null);\n [].slice.call(ele.children).forEach(function (el) {\n ele.removeChild(el);\n });\n if (this.trgtEle) {\n this.trgtEle = null;\n while (this.ctrlTem.firstElementChild) {\n ele.appendChild(this.ctrlTem.firstElementChild);\n }\n this.ctrlTem = null;\n }\n ele.classList.remove(CLS_ACRDN_ROOT);\n ele.removeAttribute('style');\n this.element.removeAttribute('data-ripple');\n if (!this.isNested && isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n Accordion.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.isNested = false;\n this.templateEle = [];\n if (!this.isDestroy) {\n this.isDestroy = false;\n }\n if (nested && nested.firstElementChild && nested.firstElementChild.firstElementChild) {\n if (nested.firstElementChild.firstElementChild.classList.contains(CLS_ROOT$2)) {\n nested.classList.add(CLS_NEST);\n this.isNested = true;\n }\n }\n else {\n this.element.classList.add(CLS_ACRDN_ROOT);\n }\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL$3);\n }\n };\n Accordion.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Accordion.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Accordion.prototype.render = function () {\n this.initializeHeaderTemplate();\n this.initializeItemTemplate();\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Accordion.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n setStyleAttribute(this.element, { 'width': width, 'height': height });\n if (isNullOrUndefined(this.initExpand)) {\n this.initExpand = [];\n }\n if (!isNullOrUndefined(this.expandedIndices) && this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n };\n Accordion.prototype.renderControl = function () {\n this.trgtEle = (this.element.children.length > 0) ? select('div', this.element) : null;\n this.renderItems();\n this.initItemExpand();\n };\n Accordion.prototype.wireFocusEvents = function () {\n var acrdItem = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM$1));\n for (var _i = 0, acrdItem_1 = acrdItem; _i < acrdItem_1.length; _i++) {\n var item = acrdItem_1[_i];\n var headerEle = item.querySelector('.' + CLS_HEADER);\n if (item.childElementCount > 0 && headerEle) {\n EventHandler.clearEvents(headerEle);\n EventHandler.add(headerEle, 'focus', this.focusIn, this);\n EventHandler.add(headerEle, 'blur', this.focusOut, this);\n }\n }\n };\n Accordion.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n if (!isNullOrUndefined(this.keyModule)) {\n this.keyModule.destroy();\n }\n };\n Accordion.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n if (!this.isNested && !this.isDestroy) {\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + CLS_HEADER });\n }\n if (!this.isNested) {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n };\n Accordion.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n Accordion.prototype.initializeHeaderTemplate = function () {\n if (this.headerTemplate) {\n this.headerTemplateFn = this.templateParser(this.headerTemplate);\n }\n };\n Accordion.prototype.initializeItemTemplate = function () {\n if (this.itemTemplate) {\n this.itemTemplateFn = this.templateParser(this.itemTemplate);\n }\n };\n Accordion.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n Accordion.prototype.getItemTemplate = function () {\n return this.itemTemplateFn;\n };\n Accordion.prototype.focusIn = function (e) {\n e.target.parentElement.classList.add(CLS_ITEMFOCUS);\n };\n Accordion.prototype.focusOut = function (e) {\n e.target.parentElement.classList.remove(CLS_ITEMFOCUS);\n };\n Accordion.prototype.ctrlTemplate = function () {\n this.ctrlTem = this.element.cloneNode(true);\n var innerEles;\n var rootEle = select('.' + CLS_CONTAINER, this.element);\n if (rootEle) {\n innerEles = rootEle.children;\n }\n else {\n innerEles = this.element.children;\n }\n var items = [];\n [].slice.call(innerEles).forEach(function (el) {\n items.push({\n header: (el.childElementCount > 0 && el.children[0]) ? (el.children[0]) : '',\n content: (el.childElementCount > 1 && el.children[1]) ? (el.children[1]) : ''\n });\n el.parentNode.removeChild(el);\n });\n if (rootEle) {\n this.element.removeChild(rootEle);\n }\n this.setProperties({ items: items }, true);\n };\n Accordion.prototype.toggleIconGenerate = function () {\n var tglIcon = this.createElement('div', { className: CLS_TOOGLEICN });\n var hdrColIcon = this.createElement('span', { className: CLS_COLLAPSEICN });\n tglIcon.appendChild(hdrColIcon);\n return tglIcon;\n };\n Accordion.prototype.initItemExpand = function () {\n var len = this.initExpand.length;\n if (len === 0) {\n return;\n }\n if (this.expandMode === 'Single') {\n this.expandItem(true, this.initExpand[len - 1]);\n }\n else {\n for (var i = 0; i < len; i++) {\n this.expandItem(true, this.initExpand[parseInt(i.toString(), 10)]);\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.renderItems = function () {\n var _this = this;\n var ele = this.element;\n var innerItem;\n var innerDataSourceItem;\n if (!isNullOrUndefined(this.trgtEle)) {\n this.ctrlTemplate();\n }\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n this.dataSource.forEach(function (item, index) {\n innerDataSourceItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerDataSourceItem);\n if (innerDataSourceItem.childElementCount > 0) {\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n else {\n var items = this.items;\n if (ele && items.length > 0) {\n items.forEach(function (item, index) {\n innerItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerItem);\n if (innerItem.childElementCount > 0) {\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.clickHandler = function (e) {\n var trgt = e.target;\n var items = this.getItems();\n var eventArgs = {};\n var tglIcon;\n var acrdEle = closest(trgt, '.' + CLS_ROOT$2);\n if (acrdEle !== this.element) {\n return;\n }\n trgt.classList.add('e-target');\n var acrdnItem = closest(trgt, '.' + CLS_ITEM$1);\n var acrdnHdr = closest(trgt, '.' + CLS_HEADER);\n var acrdnCtn = closest(trgt, '.' + CLS_CONTENT);\n if (acrdnItem && (isNullOrUndefined(acrdnHdr) || isNullOrUndefined(acrdnCtn))) {\n acrdnHdr = acrdnItem.children[0];\n acrdnCtn = acrdnItem.children[1];\n }\n if (acrdnHdr) {\n tglIcon = select('.' + CLS_TOOGLEICN, acrdnHdr);\n }\n var acrdnCtnItem;\n if (acrdnHdr) {\n acrdnCtnItem = closest(acrdnHdr, '.' + CLS_ITEM$1);\n }\n else if (acrdnCtn) {\n acrdnCtnItem = closest(acrdnCtn, '.' + CLS_ITEM$1);\n }\n var index = this.getIndexByItem(acrdnItem);\n if (acrdnCtnItem) {\n eventArgs.item = items[this.getIndexByItem(acrdnCtnItem)];\n }\n eventArgs.originalEvent = e;\n var ctnCheck = !isNullOrUndefined(tglIcon) && acrdnItem.childElementCount <= 1;\n if (ctnCheck && (isNullOrUndefined(acrdnCtn) || !isNullOrUndefined(select('.' + CLS_HEADER + ' .' + CLS_TOOGLEICN, acrdnCtnItem)))) {\n acrdnItem.appendChild(this.contentRendering(index));\n this.ariaAttrUpdate(acrdnItem);\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n else {\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.afterContentRender = function (trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem) {\n var _this = this;\n var acrdActive = [];\n this.trigger('clicked', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n return;\n }\n var cntclkCheck = (acrdnCtn && !isNullOrUndefined(select('.e-target', acrdnCtn)));\n var inlineAcrdnSel = '.' + CLS_CONTENT + ' .' + CLS_ROOT$2;\n var inlineEleAcrdn = acrdnCtn && !isNullOrUndefined(select('.' + CLS_ROOT$2, acrdnCtn)) && isNullOrUndefined(closest(trgt, inlineAcrdnSel));\n var nestContCheck = acrdnCtn && isNullOrUndefined(select('.' + CLS_ROOT$2, acrdnCtn)) || !(closest(trgt, '.' + CLS_ROOT$2) === _this.element);\n cntclkCheck = cntclkCheck && (inlineEleAcrdn || nestContCheck);\n trgt.classList.remove('e-target');\n if (trgt.classList.contains(CLS_CONTENT) || trgt.classList.contains(CLS_CTENT) || cntclkCheck) {\n return;\n }\n var acrdcontainer = _this.element.querySelector('.' + CLS_CONTAINER);\n var acrdnchild = (acrdcontainer) ? acrdcontainer.children : _this.element.children;\n [].slice.call(acrdnchild).forEach(function (el) {\n if (el.classList.contains(CLS_ACTIVE)) {\n acrdActive.push(el);\n }\n });\n var acrdAniEle = [].slice.call(_this.element.querySelectorAll('.' + CLS_ITEM$1 + ' [' + CLS_ANIMATE + ']'));\n if (acrdAniEle.length > 0) {\n for (var _i = 0, acrdAniEle_1 = acrdAniEle; _i < acrdAniEle_1.length; _i++) {\n var el = acrdAniEle_1[_i];\n acrdActive.push(el.parentElement);\n }\n }\n var sameContentCheck = acrdActive.indexOf(acrdnCtnItem) !== -1 && acrdnCtn.getAttribute('e-animate') === 'true';\n var sameHeader = false;\n if (!isNullOrUndefined(acrdnItem) && !isNullOrUndefined(acrdnHdr)) {\n var acrdnCtn_1 = select('.' + CLS_CONTENT, acrdnItem);\n var acrdnRoot = closest(acrdnItem, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n if (isNullOrUndefined(acrdnCtn_1)) {\n return;\n }\n sameHeader = (expandState === acrdnItem);\n if (isVisible(acrdnCtn_1) && (!sameContentCheck || acrdnCtnItem.classList.contains(CLS_SLCTED))) {\n _this.collapse(acrdnCtn_1);\n }\n else {\n if ((acrdActive.length > 0) && _this.expandMode === 'Single' && !sameContentCheck) {\n acrdActive.forEach(function (el) {\n _this.collapse(select('.' + CLS_CONTENT, el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n }\n _this.expand(acrdnCtn_1);\n }\n if (!isNullOrUndefined(expandState) && !sameHeader) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n }\n });\n };\n Accordion.prototype.eleMoveFocus = function (action, root, trgt) {\n var clst;\n var clstItem = closest(trgt, '.' + CLS_ITEM$1);\n if (trgt === root) {\n clst = ((action === 'moveUp' ? trgt.lastElementChild : trgt).querySelector('.' + CLS_HEADER));\n }\n else if (trgt.classList.contains(CLS_HEADER)) {\n clstItem = (action === 'moveUp' ? clstItem.previousElementSibling : clstItem.nextElementSibling);\n if (clstItem) {\n clst = select('.' + CLS_HEADER, clstItem);\n }\n }\n if (clst) {\n clst.focus();\n }\n };\n Accordion.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n var header = closest(e.target, CLS_HEADER);\n if (isNullOrUndefined(header) && !trgt.classList.contains(CLS_ROOT$2) && !trgt.classList.contains(CLS_HEADER)) {\n return;\n }\n var clst;\n var root = this.element;\n var content;\n switch (e.action) {\n case 'moveUp':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'moveDown':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'space':\n case 'enter':\n content = trgt.nextElementSibling;\n if (!isNullOrUndefined(content) && content.classList.contains(CLS_CONTENT)) {\n if (content.getAttribute('e-animate') !== 'true') {\n trgt.click();\n }\n }\n else {\n trgt.click();\n }\n e.preventDefault();\n break;\n case 'home':\n case 'end':\n clst = e.action === 'home' ? root.firstElementChild.children[0] : root.lastElementChild.children[0];\n clst.focus();\n e.preventDefault();\n break;\n }\n };\n Accordion.prototype.headerEleGenerate = function () {\n var header = this.createElement('div', { className: CLS_HEADER, id: getUniqueID('acrdn_header') });\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-disabled': 'false', 'aria-expanded': 'false'\n };\n attributes(header, ariaAttr);\n return header;\n };\n Accordion.prototype.renderInnerItem = function (item, index) {\n var innerEle = this.createElement('div', {\n className: CLS_ITEM$1, id: item.id || getUniqueID('acrdn_item')\n });\n if (this.headerTemplate) {\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n append(this.getHeaderTemplate()(item, this, 'headerTemplate', this.element.id + '_headerTemplate', false), hdrEle);\n innerEle.appendChild(ctnEle);\n ctnEle.appendChild(this.toggleIconGenerate());\n this.add(innerEle, CLS_SLCT);\n return innerEle;\n }\n if (item.header && this.angularnativeCondiCheck(item, 'header')) {\n var header = item.header;\n if (this.enableHtmlSanitizer && typeof (item.header) === 'string') {\n header = SanitizeHtmlHelper.sanitize(item.header);\n }\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n ctnEle.appendChild(this.fetchElement(hdrEle, header, index));\n innerEle.appendChild(ctnEle);\n }\n var hdr = select('.' + CLS_HEADER, innerEle);\n if (item.expanded && !isNullOrUndefined(index) && (!this.enablePersistence)) {\n if (this.initExpand.indexOf(index) === -1) {\n this.initExpand.push(index);\n }\n }\n if (item.cssClass) {\n addClass([innerEle], item.cssClass.split(' '));\n }\n if (item.disabled) {\n addClass([innerEle], CLS_DISABLE$3);\n }\n if (item.visible === false) {\n addClass([innerEle], CLS_ITEMHIDE);\n }\n if (item.iconCss) {\n var hdrIcnEle = this.createElement('div', { className: CLS_HEADERICN });\n var icon = this.createElement('span', { className: item.iconCss + ' e-icons' });\n hdrIcnEle.appendChild(icon);\n if (isNullOrUndefined(hdr)) {\n hdr = this.headerEleGenerate();\n hdr.appendChild(hdrIcnEle);\n innerEle.appendChild(hdr);\n }\n else {\n hdr.insertBefore(hdrIcnEle, hdr.childNodes[0]);\n }\n }\n if (item.content && this.angularnativeCondiCheck(item, 'content')) {\n var hdrIcon = this.toggleIconGenerate();\n if (isNullOrUndefined(hdr)) {\n hdr = this.headerEleGenerate();\n innerEle.appendChild(hdr);\n }\n hdr.appendChild(hdrIcon);\n this.add(innerEle, CLS_SLCT);\n }\n return innerEle;\n };\n Accordion.prototype.angularnativeCondiCheck = function (item, prop) {\n var property = prop === 'content' ? item.content : item.header;\n var content = property;\n if (this.isAngular && !isNullOrUndefined(content.elementRef)) {\n var data = content.elementRef.nativeElement.data;\n if (isNullOrUndefined(data) || data === '' || (data.indexOf('bindings=') === -1)) {\n return true;\n }\n var parseddata = JSON.parse(content.elementRef.nativeElement.data.replace('bindings=', ''));\n if (!isNullOrUndefined(parseddata) && parseddata['ng-reflect-ng-if'] === 'false') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n };\n Accordion.prototype.fetchElement = function (ele, value, index) {\n var templateFn;\n var temString;\n try {\n if (document.querySelectorAll(value).length && value !== 'Button') {\n var eleVal = document.querySelector(value);\n temString = eleVal.outerHTML.trim();\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n templateFn = compile(value);\n }\n }\n catch (e) {\n if (typeof (value) === 'string') {\n ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value;\n }\n else if (value instanceof (HTMLElement)) {\n ele.appendChild(value);\n if (this.trgtEle) {\n ele.firstElementChild.style.display = '';\n }\n }\n else {\n templateFn = compile(value);\n }\n }\n var tempArray;\n if (!isNullOrUndefined(templateFn)) {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var templateProps = void 0;\n var templateName = void 0;\n if (ele.classList.contains(CLS_HEADERCTN)) {\n templateProps = this.element.id + index + '_header';\n templateName = 'header';\n }\n else if (ele.classList.contains(CLS_CTENT)) {\n templateProps = this.element.id + index + '_content';\n templateName = 'content';\n }\n tempArray = templateFn({}, this, templateName, templateProps, this.isStringTemplate);\n }\n if (!isNullOrUndefined(tempArray) && tempArray.length > 0 && !(isNullOrUndefined(tempArray[0].tagName) && tempArray.length === 1)) {\n [].slice.call(tempArray).forEach(function (el) {\n if (!isNullOrUndefined(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n }\n else if (ele.childElementCount === 0) {\n ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value;\n }\n if (!isNullOrUndefined(temString)) {\n if (this.templateEle.indexOf(value) === -1) {\n this.templateEle.push(value);\n }\n }\n return ele;\n };\n Accordion.prototype.ariaAttrUpdate = function (itemEle) {\n var header = select('.' + CLS_HEADER, itemEle);\n var content = select('.' + CLS_CONTENT, itemEle);\n header.setAttribute('aria-controls', content.id);\n content.setAttribute('aria-labelledby', header.id);\n content.setAttribute('role', 'region');\n };\n Accordion.prototype.contentRendering = function (index) {\n var itemcnt = this.createElement('div', { className: CLS_CONTENT + ' ' + CLS_CTNHIDE, id: getUniqueID('acrdn_panel') });\n attributes(itemcnt, { 'aria-hidden': 'true' });\n var ctn = this.createElement('div', { className: CLS_CTENT });\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n append(this.getItemTemplate()(this.dataSource[parseInt(index.toString(), 10)], this, 'itemTemplate', this.element.id + '_itemTemplate', false), ctn);\n itemcnt.appendChild(ctn);\n }\n else {\n var content = this.items[parseInt(index.toString(), 10)].content;\n if (this.enableHtmlSanitizer && typeof (content) === 'string') {\n content = SanitizeHtmlHelper.sanitize(content);\n }\n itemcnt.appendChild(this.fetchElement(ctn, content, index));\n }\n return itemcnt;\n };\n Accordion.prototype.expand = function (trgt) {\n var _this = this;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM$1);\n if (isNullOrUndefined(trgt) || (isVisible(trgt) && trgt.getAttribute('e-animate') !== 'true') || trgtItemEle.classList.contains(CLS_DISABLE$3)) {\n return;\n }\n var acrdnRoot = closest(trgtItemEle, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n var animation = {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: true\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n icon.classList.add(CLS_TOGANIMATE);\n _this.expandedItemsPush(trgtItemEle);\n if (!isNullOrUndefined(expandState)) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n if ((animation.name === 'None' && animationMode !== 'Enable') || (animationMode === 'Disable')) {\n _this.expandProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.expandProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.expandAnimation(animation.name, icon, trgt, trgtItemEle, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.expandAnimation = function (ef, icn, trgt, trgtItemEle, animate, args) {\n var _this = this;\n if (ef === 'None' && animationMode === 'Enable') {\n ef = 'SlideDown';\n animate.name = 'SlideDown';\n }\n var height;\n this.lastActiveItemId = trgtItemEle.id;\n if (ef === 'SlideDown') {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n trgt.style.position = 'absolute';\n height = trgtItemEle.offsetHeight;\n trgt.style.maxHeight = (trgt.offsetHeight) + 'px';\n trgtItemEle.style.maxHeight = '';\n };\n animate.progress = function () {\n trgtItemEle.style.minHeight = (height + trgt.offsetHeight) + 'px';\n };\n animate.end = function () {\n setStyleAttribute(trgt, { 'position': '', 'maxHeight': '' });\n trgtItemEle.style.minHeight = '';\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n else {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n };\n animate.end = function () {\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.expandProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(trgt, CLS_CTNHIDE);\n this.add(trgtItemEle, CLS_SLCTED);\n this.add(icon, CLS_EXPANDICN);\n if (progress === 'end') {\n this.add(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'false');\n attributes(trgt.previousElementSibling, { 'aria-expanded': 'true' });\n icon.classList.remove(CLS_TOGANIMATE);\n this.trigger('expanded', eventArgs);\n }\n };\n Accordion.prototype.expandedItemsPush = function (item) {\n var index = this.getIndexByItem(item);\n if (this.expandedIndices.indexOf(index) === -1) {\n var temp = [].slice.call(this.expandedIndices);\n temp.push(index);\n this.setProperties({ expandedIndices: temp }, true);\n }\n };\n Accordion.prototype.getIndexByItem = function (item) {\n var itemEle = this.getItemElements();\n return [].slice.call(itemEle).indexOf(item);\n };\n Accordion.prototype.getItemElements = function () {\n var itemEle = [];\n var itemCollection = this.element.children;\n [].slice.call(itemCollection).forEach(function (el) {\n if (el.classList.contains(CLS_ITEM$1)) {\n itemEle.push(el);\n }\n });\n return itemEle;\n };\n Accordion.prototype.expandedItemsPop = function (item) {\n var index = this.getIndexByItem(item);\n var temp = [].slice.call(this.expandedIndices);\n temp.splice(temp.indexOf(index), 1);\n this.setProperties({ expandedIndices: temp }, true);\n };\n Accordion.prototype.collapse = function (trgt) {\n var _this = this;\n if (isNullOrUndefined(trgt)) {\n return;\n }\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM$1);\n if (!isVisible(trgt) || trgtItemEle.classList.contains(CLS_DISABLE$3)) {\n return;\n }\n var animation = {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: false\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n _this.expandedItemsPop(trgtItemEle);\n trgtItemEle.classList.remove(CLS_EXPANDSTATE);\n icon.classList.add(CLS_TOGANIMATE);\n if ((animation.name === 'None' && animationMode !== 'Enable') || (animationMode === 'Disable')) {\n _this.collapseProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.collapseProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.collapseAnimation(animation.name, trgt, trgtItemEle, icon, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.collapseAnimation = function (ef, trgt, trgtItEl, icn, animate, args) {\n var _this = this;\n if (ef === 'None' && animationMode === 'Enable') {\n ef = 'SlideUp';\n animate.name = 'SlideUp';\n }\n var height;\n var trgtHeight;\n var itemHeight;\n var remain;\n this.lastActiveItemId = trgtItEl.id;\n if (ef === 'SlideUp') {\n animate.begin = function () {\n itemHeight = trgtItEl.offsetHeight;\n trgtItEl.style.minHeight = itemHeight + 'px';\n trgt.style.position = 'absolute';\n height = trgtItEl.offsetHeight;\n trgtHeight = trgt.offsetHeight;\n trgt.style.maxHeight = trgtHeight + 'px';\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.progress = function () {\n remain = ((height - (trgtHeight - trgt.offsetHeight)));\n if (remain < itemHeight) {\n trgtItEl.style.minHeight = remain + 'px';\n }\n };\n animate.end = function () {\n trgt.style.display = 'none';\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n trgtItEl.style.minHeight = '';\n setStyleAttribute(trgt, { 'position': '', 'maxHeight': '', 'display': '' });\n };\n }\n else {\n animate.begin = function () {\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.end = function () {\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.collapseProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(icon, CLS_EXPANDICN);\n this.remove(trgtItemEle, CLS_SLCTED);\n if (progress === 'end') {\n this.add(trgt, CLS_CTNHIDE);\n icon.classList.remove(CLS_TOGANIMATE);\n this.remove(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'true');\n attributes(trgt.previousElementSibling, { 'aria-expanded': 'false' });\n this.trigger('expanded', eventArgs);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Accordion.prototype.getModuleName = function () {\n return 'accordion';\n };\n Accordion.prototype.getItems = function () {\n var items;\n if (this.itemTemplate && this.headerTemplate) {\n items = this.dataSource;\n }\n else {\n items = this.items;\n }\n return items;\n };\n /**\n * Adds new item to the Accordion with the specified index of the Accordion.\n *\n * @param {AccordionItemModel | AccordionItemModel[] | Object | Object[]} item - Item array that is to be added to the Accordion.\n * @param {number} index - Number value that determines where the item should be added.\n * By default, item is added at the last index if the index is not specified.\n * @returns {void}\n */\n Accordion.prototype.addItem = function (item, index) {\n var _this = this;\n var ele = this.element;\n var itemEle = this.getItemElements();\n var items = this.getItems();\n if (isNullOrUndefined(index)) {\n index = items.length;\n }\n if (ele.childElementCount >= index) {\n var addItems = (item instanceof Array) ? item : [item];\n addItems.forEach(function (addItem, i) {\n var itemIndex = index + i;\n items.splice(itemIndex, 0, addItem);\n var innerItemEle = _this.renderInnerItem(addItem, itemIndex);\n if (ele.childElementCount === itemIndex) {\n ele.appendChild(innerItemEle);\n }\n else {\n ele.insertBefore(innerItemEle, itemEle[parseInt(itemIndex.toString(), 10)]);\n }\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n _this.expandedIndices = [];\n _this.expandedItemRefresh();\n if (addItem && addItem.expanded) {\n _this.expandItem(true, itemIndex);\n }\n });\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.expandedItemRefresh = function () {\n var _this = this;\n var itemEle = this.getItemElements();\n [].slice.call(itemEle).forEach(function (el) {\n if (el.classList.contains(CLS_SLCTED)) {\n _this.expandedItemsPush(el);\n }\n });\n };\n /**\n * Dynamically removes item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be removed.\n * @returns {void}.\n */\n Accordion.prototype.removeItem = function (index) {\n if (this.isReact || this.isAngular) {\n var item = selectAll('.' + CLS_ITEM$1, this.element)[parseInt(index.toString(), 10)];\n var header = select('.' + CLS_HEADERCTN, item);\n var content = select('.' + CLS_CTENT, item);\n this.clearAccordionTemplate(header, this.dataSource.length > 0 ? 'headerTemplate' : 'header', CLS_HEADERCTN);\n this.clearAccordionTemplate(content, this.dataSource.length > 0 ? 'itemTemplate' : 'content', CLS_CTENT);\n }\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n var items = this.getItems();\n if (isNullOrUndefined(ele)) {\n return;\n }\n this.restoreContent(index);\n detach(ele);\n items.splice(index, 1);\n this.expandedIndices = [];\n this.expandedItemRefresh();\n };\n /**\n * Sets focus to the specified index item header in Accordion.\n *\n * @param {number} index - Number value that determines which item should be focused.\n * @returns {void}.\n */\n Accordion.prototype.select = function (index) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNullOrUndefined(ele) || isNullOrUndefined(select('.' + CLS_HEADER, ele))) {\n return;\n }\n ele.children[0].focus();\n };\n /**\n * Shows or hides the specified item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be hidden/shown.\n * @param {boolean} isHidden - Boolean value that determines the action either hide (true) or show (false). Default value is false.\n * If the `isHidden` value is false, the item is shown or else item it is hidden.\n * @returns {void}.\n */\n Accordion.prototype.hideItem = function (index, isHidden) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNullOrUndefined(ele)) {\n return;\n }\n if (isNullOrUndefined(isHidden)) {\n isHidden = true;\n }\n if (isHidden) {\n this.add(ele, CLS_ITEMHIDE);\n }\n else {\n this.remove(ele, CLS_ITEMHIDE);\n }\n };\n /**\n * Enables/Disables the specified Accordion item.\n *\n * @param {number} index - Number value that determines which item should be enabled/disabled.\n * @param {boolean} isEnable - Boolean value that determines the action as enable (true) or disable (false).\n * If the `isEnable` value is true, the item is enabled or else it is disabled.\n * @returns {void}.\n */\n Accordion.prototype.enableItem = function (index, isEnable) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNullOrUndefined(ele)) {\n return;\n }\n var eleHeader = ele.firstElementChild;\n if (isEnable) {\n this.remove(ele, CLS_DISABLE$3);\n attributes(eleHeader, { 'tabindex': '0', 'aria-disabled': 'false' });\n eleHeader.focus();\n }\n else {\n if (ele.classList.contains(CLS_ACTIVE)) {\n this.expandItem(false, index);\n this.eleMoveFocus('movedown', this.element, eleHeader);\n }\n this.add(ele, CLS_DISABLE$3);\n eleHeader.setAttribute('aria-disabled', 'true');\n eleHeader.removeAttribute('tabindex');\n }\n };\n /**\n * Expands/Collapses the specified Accordion item.\n *\n * @param {boolean} isExpand - Boolean value that determines the action as expand or collapse.\n * @param {number} index - Number value that determines which item should be expanded/collapsed.`index` is optional parameter.\n * Without Specifying index, based on the `isExpand` value all Accordion item can be expanded or collapsed.\n * @returns {void}.\n */\n Accordion.prototype.expandItem = function (isExpand, index) {\n var _this = this;\n var itemEle = this.getItemElements();\n if (isNullOrUndefined(index)) {\n if (this.expandMode === 'Single' && isExpand) {\n var ele = itemEle[itemEle.length - 1];\n this.itemExpand(isExpand, ele, this.getIndexByItem(ele));\n }\n else {\n var item = select('#' + this.lastActiveItemId, this.element);\n [].slice.call(itemEle).forEach(function (el) {\n _this.itemExpand(isExpand, el, _this.getIndexByItem(el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n var expandedItem = select('.' + CLS_EXPANDSTATE, this.element);\n if (expandedItem) {\n expandedItem.classList.remove(CLS_EXPANDSTATE);\n }\n if (item) {\n item.classList.add(CLS_EXPANDSTATE);\n }\n }\n }\n else {\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNullOrUndefined(ele) || !ele.classList.contains(CLS_SLCT) || (ele.classList.contains(CLS_ACTIVE) && isExpand)) {\n return;\n }\n else {\n if (this.expandMode === 'Single') {\n this.expandItem(false);\n }\n this.itemExpand(isExpand, ele, index);\n }\n }\n };\n Accordion.prototype.itemExpand = function (isExpand, ele, index) {\n var ctn = ele.children[1];\n if (ele.classList.contains(CLS_DISABLE$3)) {\n return;\n }\n if (isNullOrUndefined(ctn) && isExpand) {\n ctn = this.contentRendering(index);\n ele.appendChild(ctn);\n this.ariaAttrUpdate(ele);\n this.expand(ctn);\n }\n else if (!isNullOrUndefined(ctn)) {\n if (isExpand) {\n this.expand(ctn);\n }\n else {\n this.collapse(ctn);\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.destroyItems = function () {\n this.restoreContent(null);\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate();\n }\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM$1)).forEach(function (el) {\n detach(el);\n });\n };\n Accordion.prototype.restoreContent = function (index) {\n var ctnElePos;\n if (isNullOrUndefined(index)) {\n ctnElePos = this.element;\n }\n else {\n ctnElePos = this.element.querySelectorAll('.' + CLS_ITEM$1)[parseInt(index.toString(), 10)];\n }\n this.templateEle.forEach(function (eleStr) {\n if (!isNullOrUndefined(ctnElePos.querySelector(eleStr))) {\n document.body.appendChild(ctnElePos.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Accordion.prototype.updateItem = function (item, index) {\n if (!isNullOrUndefined(item)) {\n var items = this.getItems();\n var itemObj = items[parseInt(index.toString(), 10)];\n items.splice(index, 1);\n this.restoreContent(index);\n var header = select('.' + CLS_HEADERCTN, item);\n var content = select('.' + CLS_CTENT, item);\n if (this.isReact || this.isAngular) {\n this.clearAccordionTemplate(header, 'header', CLS_HEADERCTN);\n this.clearAccordionTemplate(content, 'content', CLS_CTENT);\n }\n detach(item);\n this.addItem(itemObj, index);\n }\n };\n Accordion.prototype.setTemplate = function (template, toElement, index) {\n this.fetchElement(toElement, template, index);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.clearAccordionTemplate = function (templateEle, templateName, className) {\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][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle || isNullOrUndefined(registeredItem.parentNode)) {\n this.clearTemplate([templateName], [registeredTemplates[\"\" + templateName][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, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\n }\n }\n };\n Accordion.prototype.getPersistData = function () {\n var keyEntity = ['expandedIndices'];\n return this.addOnPersist(keyEntity);\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 {AccordionModel} newProp - It contains the new value of data.\n * @param {AccordionModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Accordion.prototype.onPropertyChanged = function (newProp, oldProp) {\n var acrdn = this.element;\n var isRefresh = false;\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 changedProp = Object.keys(newProp.items);\n for (var j = 0; j < changedProp.length; j++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(j.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)]);\n for (var k = 0; k < property.length; k++) {\n var item = selectAll('.' + CLS_ITEM$1, this.element)[parseInt(index.toString(), 10)];\n var oldVal = Object(oldProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]];\n var newVal = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]];\n var temp = property[parseInt(k.toString(), 10)];\n var content = select('.' + CLS_CTENT, item);\n if (temp === 'header' || temp === 'iconCss' || temp === 'expanded' || ((temp === 'content') && (oldVal === ''))) {\n this.updateItem(item, index);\n }\n if (property[parseInt(k.toString(), 10)] === 'cssClass' && !isNullOrUndefined(item)) {\n if (oldVal) {\n removeClass([item], oldVal.split(' '));\n }\n if (newVal) {\n addClass([item], newVal.split(' '));\n }\n }\n if (property[parseInt(k.toString(), 10)] === 'visible' && !isNullOrUndefined(item)) {\n if (Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]] === false) {\n item.classList.add(CLS_ITEMHIDE);\n }\n else {\n item.classList.remove(CLS_ITEMHIDE);\n }\n }\n if (property[parseInt(k.toString(), 10)] === 'disabled' && !isNullOrUndefined(item)) {\n this.enableItem(index, !newVal);\n }\n if (property.indexOf('header') < 0 && property[parseInt(k.toString(), 10)] === 'content'\n && !isNullOrUndefined(item) && item.children.length === 2) {\n if (typeof newVal === 'function') {\n if (this.isAngular || this.isReact) {\n this.clearAccordionTemplate(content, property[parseInt(k.toString(), 10)], CLS_CTENT);\n }\n var activeContent = item.querySelector('.' + CLS_CTENT);\n activeContent.innerHTML = '';\n this.setTemplate(newVal, activeContent, index);\n }\n else {\n if (item.classList.contains(CLS_SLCTED)) {\n this.expandItem(false, index);\n }\n detach(item.querySelector('.' + CLS_CONTENT));\n }\n }\n }\n }\n }\n else {\n isRefresh = true;\n }\n break;\n case 'dataSource':\n case 'expandedIndices':\n if (this.expandedIndices === null) {\n this.expandedIndices = [];\n }\n isRefresh = true;\n break;\n case 'headerTemplate':\n this.initializeHeaderTemplate();\n isRefresh = true;\n break;\n case 'itemTemplate':\n this.initializeItemTemplate();\n isRefresh = true;\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(acrdn, CLS_RTL$3);\n }\n else {\n this.remove(acrdn, CLS_RTL$3);\n }\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'expandMode':\n if (newProp.expandMode === 'Single' && !isNullOrUndefined(this.expandedIndices) && this.expandedIndices.length > 1) {\n this.expandItem(false);\n }\n break;\n }\n }\n if (isRefresh) {\n this.initExpand = [];\n if (!isNullOrUndefined(this.expandedIndices) && this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n this.destroyItems();\n this.renderItems();\n this.initItemExpand();\n }\n };\n __decorate$4([\n Collection([], AccordionItem)\n ], Accordion.prototype, \"items\", void 0);\n __decorate$4([\n Property([])\n ], Accordion.prototype, \"dataSource\", void 0);\n __decorate$4([\n Property()\n ], Accordion.prototype, \"itemTemplate\", void 0);\n __decorate$4([\n Property()\n ], Accordion.prototype, \"headerTemplate\", void 0);\n __decorate$4([\n Property('100%')\n ], Accordion.prototype, \"width\", void 0);\n __decorate$4([\n Property('auto')\n ], Accordion.prototype, \"height\", void 0);\n __decorate$4([\n Property([])\n ], Accordion.prototype, \"expandedIndices\", void 0);\n __decorate$4([\n Property('Multiple')\n ], Accordion.prototype, \"expandMode\", void 0);\n __decorate$4([\n Property(true)\n ], Accordion.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$4([\n Complex({}, AccordionAnimationSettings)\n ], Accordion.prototype, \"animation\", void 0);\n __decorate$4([\n Event()\n ], Accordion.prototype, \"clicked\", void 0);\n __decorate$4([\n Event()\n ], Accordion.prototype, \"expanding\", void 0);\n __decorate$4([\n Event()\n ], Accordion.prototype, \"expanded\", void 0);\n __decorate$4([\n Event()\n ], Accordion.prototype, \"created\", void 0);\n __decorate$4([\n Event()\n ], Accordion.prototype, \"destroyed\", void 0);\n Accordion = __decorate$4([\n NotifyPropertyChanges\n ], Accordion);\n return Accordion;\n}(Component));\n\nvar __extends$5 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$5(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 this.template = this.itemTemplate ? this.itemTemplate : null;\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 case 'itemTemplate':\n this.itemTemplate = newProp.itemTemplate;\n this.refresh();\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$5([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate$5([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate$5([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n __decorate$5([\n Property(null)\n ], ContextMenu.prototype, \"itemTemplate\", void 0);\n __decorate$5([\n Property(false)\n ], ContextMenu.prototype, \"enableScrolling\", void 0);\n ContextMenu = __decorate$5([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\n\nvar __extends$6 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar VMENU = 'e-vertical';\nvar SCROLLABLE = 'e-scrollable';\nvar HAMBURGER = 'e-hamburger';\n/**\n * The Menu is a graphical user interface that serve as navigation headers for your application or site.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Menu = /** @__PURE__ @class */ (function (_super) {\n __extends$6(Menu, _super);\n /**\n * Constructor for creating the component.\n *\n * @private\n * @param {MenuModel} options - Specifies the menu model\n * @param {string} element - Specifies the element\n */\n function Menu(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.tempItems = [];\n return _this;\n }\n /**\n * Get module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Menu.prototype.getModuleName = function () {\n return 'menu';\n };\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n Menu.prototype.preRender = function () {\n this.isMenu = true;\n this.element.id = this.element.id || getUniqueID('ej2-menu');\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.template = document.querySelector(this.template).innerHTML.trim();\n this.clearChanges();\n }\n }\n catch (e) {\n /* action on catch */\n }\n this.updateMenuItems(this.items);\n }\n else {\n this.updateMenuItems(this.items);\n }\n _super.prototype.preRender.call(this);\n };\n Menu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n if (this.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode && !this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n if (Browser.isDevice && !this.enableScrolling) {\n this.element.parentElement.classList.add(SCROLLABLE);\n }\n }\n if (this.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n if (this.orientation === 'Horizontal') {\n this.element.classList.add('e-hide-menu');\n }\n }\n };\n Menu.prototype.updateMenuItems = function (items) {\n this.tempItems = items;\n this.items = [];\n this.tempItems.map(this.createMenuItems, this);\n this.setProperties({ items: this.items }, true);\n this.tempItems = [];\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuModel} newProp - Specifies the new properties.\n * @param {MenuModel} oldProp - Specifies the old properties.\n * @returns {void}\n */\n Menu.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 'orientation':\n if (newProp.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n this.element.classList.remove(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n this.element.removeAttribute('aria-orientation');\n }\n break;\n case 'items':\n if (!Object.keys(oldProp.items).length) {\n this.updateMenuItems(newProp.items);\n }\n break;\n case 'hamburgerMode':\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n if (newProp.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n [].slice.call(this.element.getElementsByClassName('e-blankicon')).forEach(function (li) {\n li.style[_this.enableRtl ? 'paddingRight' : 'paddingLeft'] = '';\n });\n }\n else {\n this.element.parentElement.classList.remove(HAMBURGER);\n if (this.orientation === 'Vertical') {\n this.setBlankIconStyle(this.element);\n }\n }\n if (this.orientation === 'Vertical') {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n else {\n if (this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList[newProp.hamburgerMode ? 'add' : 'remove']('e-hide-menu');\n }\n break;\n case 'title':\n if (this.hamburgerMode && this.element.previousElementSibling) {\n newProp.title = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(newProp.title) : newProp.title;\n this.element.previousElementSibling.querySelector('.e-menu-title').innerHTML = newProp.title;\n }\n break;\n case 'target':\n if (this.hamburgerMode) {\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n if (this.orientation === 'Horizontal') {\n if (!newProp.target) {\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n }\n break;\n case 'template':\n this.template = newProp.template;\n this.refresh();\n break;\n }\n }\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n };\n Menu.prototype.createMenuItems = function (item) {\n var idx;\n var i;\n var items = this.items;\n var pIdField = this.getField('parentId');\n if (item[\"\" + pIdField]) {\n idx = this.getIndex(item[\"\" + pIdField].toString(), true);\n for (i = 0; i < idx.length; i++) {\n if (!items[idx[i]].items) {\n items[idx[i]].items = [];\n }\n items = items[idx[i]].items;\n }\n items.push(item);\n }\n else {\n this.items.push(item);\n }\n };\n /**\n * This method is used to open the Menu in hamburger mode.\n *\n * @function open\n * @returns {void}\n */\n Menu.prototype.open = function () {\n _super.prototype.openHamburgerMenu.call(this);\n };\n /**\n * Closes the Menu if it is opened in hamburger mode.\n *\n * @function close\n * @returns {void}\n */\n Menu.prototype.close = function () {\n _super.prototype.closeHamburgerMenu.call(this);\n };\n __decorate$6([\n Property('Horizontal')\n ], Menu.prototype, \"orientation\", void 0);\n __decorate$6([\n Property('')\n ], Menu.prototype, \"target\", void 0);\n __decorate$6([\n Property(null)\n ], Menu.prototype, \"template\", void 0);\n __decorate$6([\n Property(false)\n ], Menu.prototype, \"enableScrolling\", void 0);\n __decorate$6([\n Property(false)\n ], Menu.prototype, \"hamburgerMode\", void 0);\n __decorate$6([\n Property('Menu')\n ], Menu.prototype, \"title\", void 0);\n __decorate$6([\n Property(true)\n ], Menu.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$6([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], Menu.prototype, \"fields\", void 0);\n Menu = __decorate$6([\n NotifyPropertyChanges\n ], Menu);\n return Menu;\n}(MenuBase));\n\nvar __extends$7 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER$1 = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT$1 = 'e-content';\nvar CLS_NEST$1 = 'e-nested';\nvar CLS_ITEMS$1 = 'e-items';\nvar CLS_ITEM$2 = 'e-item';\nvar CLS_TEMPLATE$1 = 'e-template';\nvar CLS_RTL$4 = 'e-rtl';\nvar CLS_ACTIVE$1 = 'e-active';\nvar CLS_DISABLE$4 = 'e-disable';\nvar CLS_HIDDEN$1 = '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$2 = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL$1 = '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 = /** @__PURE__ @class */ (function (_super) {\n __extends$7(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$7([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate$7([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate$7([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$7(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$7([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate$7([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @__PURE__ @class */ (function (_super) {\n __extends$7(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$7([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate$7([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate$7([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @__PURE__ @class */ (function (_super) {\n __extends$7(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$7([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate$7([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate$7([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate$7([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate$7([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n __decorate$7([\n Property(true)\n ], TabItem.prototype, \"visible\", void 0);\n __decorate$7([\n Property()\n ], TabItem.prototype, \"id\", void 0);\n __decorate$7([\n Property(-1)\n ], TabItem.prototype, \"tabIndex\", void 0);\n return TabItem;\n}(ChildProperty));\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$7(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 (!isNullOrUndefined(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$1, this.element);\n this.element.classList.remove(CLS_TEMPLATE$1);\n if (!isNullOrUndefined(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 * Reorganizes and adjusts the Tab headers to fit the available width without re-rendering the entire Tab component.\n *\n * This method is useful for optimizing the layout when:\n * - A hidden tab item becomes visible.\n * - The number of tab items changes dynamically.\n *\n * @returns {void} This method does not return a value.\n */\n Tab.prototype.refreshOverflow = function () {\n if (!isNullOrUndefined(this.tbObj)) {\n this.tbObj.refreshOverflow();\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$1);\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 = !isNullOrUndefined(this.dragArea) ? this.dragArea : '#' + this.element.id + ' ' + ('.' + CLS_HEADER$1);\n }\n if (!isNullOrUndefined(nested)) {\n nested.parentElement.classList.add(CLS_NEST$1);\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 setStyleAttribute(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 _this.refreshOverflow();\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 (isNullOrUndefined(item.id) && !isNullOrUndefined(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$1 }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER$1 }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE$1);\n var header = ele.querySelector('.' + CLS_HEADER$1);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNullOrUndefined(select('.' + CLS_HEADER$1, this.element)) && !isNullOrUndefined(select('.' + CLS_CONTENT$1, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER$1 + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNullOrUndefined(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$1 + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN$1 + ' ' + CLS_IGNORE });\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNullOrUndefined(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$1)) {\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$1 });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM$2, id: CLS_ITEM$2 + _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$1 + _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$2, 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 (!isNullOrUndefined(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 (!isNullOrUndefined(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 (!isNullOrUndefined(toolbarHeader)) {\n if (isNullOrUndefined(toolbarHeader.id) || toolbarHeader.id === '') {\n toolbarHeader.id = this.element.id + '_' + 'tab_header_items';\n }\n }\n };\n Tab.prototype.createContentElement = function (index) {\n var contentElement = this.createElement('div', {\n id: CLS_CONTENT$1 + this.tabId + '_' + index, className: CLS_ITEM$2,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM$2 + this.tabId + '_' + index }\n });\n if (['Dynamic', 'Demand'].indexOf(this.loadOn) !== -1 ||\n (this.loadOn === 'Init' && index === Number(this.extIndex(this.itemIndexArray[0])))) {\n addClass([contentElement], CLS_ACTIVE$1);\n }\n return contentElement;\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT$1, 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$2);\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM$2 + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT$1 + this.tabId + '_' + i;\n }\n }\n }\n else {\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n if (this.loadOn === 'Init') {\n for (var i = 0; i < this.itemIndexArray.length; i++) {\n if (this.itemIndexArray[i]) {\n this.cntEle.appendChild(this.createContentElement(Number(this.extIndex(this.itemIndexArray[i]))));\n }\n }\n }\n else if (this.loadOn === 'Dynamic') {\n this.cntEle.appendChild(this.createContentElement(this.selectedItem > 0 ?\n this.selectedItem : Number(this.extIndex(this.itemIndexArray[0]))));\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNullOrUndefined(this.cntEle)) {\n this.bindSwipeEvents();\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 maxId = this.getMaxIndicesFromItems(tbItems);\n }\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n items.forEach(function (item, i) {\n var pos = (isNullOrUndefined(item.header) || isNullOrUndefined(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNullOrUndefined(item.header) || isNullOrUndefined(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNullOrUndefined(item.headerTemplate)) && (isNullOrUndefined(item.header) || isNullOrUndefined(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 && !isNullOrUndefined(_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$4 + ' ' + CLS_OVERLAY$2 : '';\n var hidden = (item.visible === false) ? ' ' + CLS_HIDDEN$1 : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNullOrUndefined(tHtml) && tHtml !== '');\n if (!isNullOrUndefined(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 = isNullOrUndefined(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAttrs = (item.disabled) ? { role: 'tab', 'aria-disabled': 'true' } : { 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$2 + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM$2 + _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$1, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE$1); });\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 (!isNullOrUndefined(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$1, 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.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$4);\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 (!isNullOrUndefined(animateObj)) {\n animateObj.begin = function () {\n setStyleAttribute(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$1);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyleAttribute(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$1);\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$1).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 (isNullOrUndefined(oldCnt) && !isNullOrUndefined(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n if (!isNullOrUndefined(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n var isPrevent = isNullOrUndefined(this.animation) || isNullOrUndefined(this.animation.next.effect) || isNullOrUndefined(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$1);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT$1, 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$1);\n };\n if (!this.initRender && !isNullOrUndefined(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE$1);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER$1 + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNullOrUndefined(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 (!isNullOrUndefined(trgParent) && trgParent.classList.contains(CLS_ACTIVE$1) === false) {\n this.selectTab(trgIndex, null, true);\n if (!isNullOrUndefined(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNullOrUndefined(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER$1); });\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$1); })[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$2 + this.tabId + '_', '');\n };\n Tab.prototype.getMaxIndicesFromItems = function (tbItems) {\n var _this = this;\n var idList = [];\n tbItems.forEach(function (item) {\n idList.push(_this.getIndexFromEle(item.id));\n });\n return Math.max.apply(Math, idList);\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNullOrUndefined(_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 (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNullOrUndefined(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 = isNullOrUndefined(cnt) ? '' : cnt;\n if (typeof cnt === 'string' || isNullOrUndefined(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 (!isNullOrUndefined(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$1)) {\n ele = select('.' + CLS_NEST$1 + '> .' + CLS_CONTENT$1 + ' > #' + CLS_CONTENT$1 + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT$1 + 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$1, tbPos]);\n if (!this.element.classList.contains(CLS_NEST$1)) {\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$1);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL$1) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL$1, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n if (!isNullOrUndefined(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$2 + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNullOrUndefined(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$1));\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$1, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '' || isNullOrUndefined(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.loadContentInitMode = function (ele) {\n if (!ele) {\n return;\n }\n if (this.loadOn === 'Init') {\n for (var i = 0; i < this.items.length; i++) {\n if (this.cntEle.children.item(i)) {\n this.getContent(this.cntEle.children.item(i), this.items[i].content, 'render', i);\n }\n }\n }\n if (this.prevIndex !== this.selectedItem) {\n ele.classList.remove(CLS_ACTIVE$1);\n }\n };\n Tab.prototype.loadContentElement = function () {\n if (!this.isTemplate) {\n var ele = this.cntEle.children.item(0);\n this.loadContentInitMode(ele);\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 (isNullOrUndefined(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n this.loadContentElement();\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyleAttribute(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 setStyleAttribute(this.element, { 'height': '100%' });\n this.loadContentElement();\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$1 + ' > .' + CLS_ITEM$2, 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$1, this.element);\n if (val === true && this.loadOn === 'Demand') {\n this.cntEle.appendChild(this.createContentElement(Number(this.extIndex(this.itemIndexArray[0]))));\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 if (this.loadOn === 'Demand') {\n this.getContent(ele, this.items[0].content, 'render', 0);\n }\n this.loadContentInitMode(ele);\n }\n setStyleAttribute(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n this.loadContentElement();\n setStyleAttribute(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$1, trgHdrEle);\n if (isNullOrUndefined(trg)) {\n return;\n }\n if (!this.reorderActiveTab) {\n if (trg.classList.contains(CLS_TB_POPUP) && !this.bdrLine.classList.contains(CLS_HIDDEN$1)) {\n this.bdrLine.classList.add(CLS_HIDDEN$1);\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 setStyleAttribute(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNullOrUndefined(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyleAttribute(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyleAttribute(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 setStyleAttribute(bar, { 'top': top_1 + 'px', 'height': '' });\n }\n else {\n setStyleAttribute(bar, { 'top': '', 'height': '' });\n }\n var tbWidth = (isNullOrUndefined(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyleAttribute(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyleAttribute(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNullOrUndefined(this.bdrLine) && !trg.classList.contains(CLS_TB_POPUP)) {\n this.bdrLine.classList.remove(CLS_HIDDEN$1);\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 || !isNullOrUndefined(trg) && trg.classList.contains(CLS_DISABLE$4)) {\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$1)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n attributes(trg.firstElementChild, { 'aria-controls': CLS_CONTENT$1 + this.tabId + '_' + this.extIndex(trg.id) });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE$1);\n trg.firstElementChild.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNullOrUndefined(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT$1 + this.tabId + '_' + no;\n }\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT$1, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT$1, this.element).children, CLS_CONTENT$1 + this.tabId + '_' + no);\n if (!isNullOrUndefined(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE$1);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT$1, this.element);\n while (this.loadOn === 'Dynamic' && this.cntEle.firstElementChild) {\n this.cntEle.removeChild(this.cntEle.firstElementChild);\n }\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNullOrUndefined(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT$1 + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM$2 + ' ' + CLS_ACTIVE$1,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM$2 + 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$1);\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$1 + 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$4, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNullOrUndefined(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN$1);\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$4)) ? '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$1);\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.bindSwipeEvents = function () {\n if (this.swipeMode !== 'None') {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\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 (!isNullOrUndefined(this.cntEle)) {\n this.bindSwipeEvents();\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 (!isNullOrUndefined(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNullOrUndefined(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNullOrUndefined(this.cntEle) && !isNullOrUndefined(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$4);\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 (!isNullOrUndefined(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 && isNullOrUndefined(e.originalEvent.changedTouches)) ||\n (this.swipeMode === 'Touch' && ((e.originalEvent.type === 'mouseup') || e.originalEvent.type === 'mouseleave')) ||\n (this.swipeMode === 'Mouse' && e.originalEvent.type === 'touchend') || (this.swipeMode === 'None')) {\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$1)) {\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$1)) {\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$1);\n if (!isNullOrUndefined(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE$4)) {\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$1, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNullOrUndefined(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$4)) {\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$1) === 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 (!isNullOrUndefined(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 (!isNullOrUndefined(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNullOrUndefined(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 && !isNullOrUndefined(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNullOrUndefined(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() && !isNullOrUndefined(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 (!isNullOrUndefined(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 && !isNullOrUndefined(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$2 + this.tabId + '_' + itemIndex, this.element);\n var cntItem = select('.' + CLS_CONTENT$1 + ' #' + CLS_CONTENT$1 + this.tabId + '_' + itemIndex, this.element);\n if (properties[j] === 'header' || properties[j] === 'headerTemplate') {\n var icon = (isNullOrUndefined(this.items[index].header) ||\n isNullOrUndefined(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$1);\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' && !isNullOrUndefined(cntItem)) {\n var strVal = typeof newVal === 'string' || isNullOrUndefined(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$2);\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 (!isNullOrUndefined(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNullOrUndefined(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 (isNullOrUndefined(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$1, 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 (!isNullOrUndefined(e.target.closest('.' + CLS_TAB)) && !e.target.closest('.' + CLS_TAB).isEqualNode(_this.element) &&\n _this.dragArea !== '.' + CLS_HEADER$1) {\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$1);\n if (_this.dragItem.classList.contains(CLS_HIDDEN$1)) {\n removeClass([_this.dragItem], CLS_HIDDEN$1);\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$1)) {\n removeClass([_this.cloneElement], CLS_HIDDEN$1);\n }\n }\n if (_this.overflowMode === 'Scrollable' && !isNullOrUndefined(_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 (!isNullOrUndefined(scrollRightNavEle) && Math.abs((scrollRightNavEle.offsetWidth / 2) +\n scrollRightNavEle.offsetLeft) > _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n hscrollBar.scrollLeft -= 10;\n }\n if (!isNullOrUndefined(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' && !isNullOrUndefined(_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$1).classList.contains(CLS_CLOSE_SHOW)) {\n addClass([this.cloneElement], CLS_CLOSE_SHOW);\n }\n removeClass([this.cloneElement.querySelector('.' + CLS_WRAP)], 'e-ripple');\n if (!isNullOrUndefined(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$1);\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 = isNullOrUndefined(_this.droppedIndex) ? _this.getEleIndex(_this.dragItem) : _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$1);\n _this.droppedIndex = isNullOrUndefined(_this.droppedIndex) ? _this.getEleIndex(_this.dragItem) : _this.droppedIndex;\n _this.selectTab(_this.droppedIndex, null, true);\n }\n }\n });\n this.dragItem = null;\n this.droppedIndex = 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 (isNullOrUndefined(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE$4, CLS_OVERLAY$2);\n tbItems.firstElementChild.setAttribute('tabindex', tbItems.firstElementChild.getAttribute('data-tabindex'));\n }\n else {\n tbItems.classList.add(CLS_DISABLE$4, CLS_OVERLAY$2);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE$1)) {\n this.select(index + 1);\n }\n }\n if (!isNullOrUndefined(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 for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n item.disabled = item.disabled || false;\n item.visible = item.visible || true;\n }\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$1, this.element);\n if (isNullOrUndefined(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n this.bindDraggable();\n }\n else {\n var tbItems = Array.from(selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element));\n var itemsCount = tbItems.length;\n if (itemsCount !== 0) {\n lastEleIndex = this.getMaxIndicesFromItems(tbItems) + 1;\n }\n if (isNullOrUndefined(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNullOrUndefined(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNullOrUndefined(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN$1);\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 (!(isNullOrUndefined(item.headerTemplate || item.header) || isNullOrUndefined(textValue_1) ||\n (textValue_1.length === 0) && !isNullOrUndefined(item.header) && isNullOrUndefined(item.header.iconCss))) {\n if (tabItems_2[place]) {\n if (isNullOrUndefined(item.id)) {\n item.id = CLS_ITEM$2 + _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 (!isNullOrUndefined(item.header) && !isNullOrUndefined(item.header.text) && (_this.isTemplate || _this.loadOn === 'Init')) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT$1 + _this.tabId + '_' + no, className: CLS_ITEM$2,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM$2 + '_' + 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 (isNullOrUndefined(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$2 + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_TB_ITEMS, _this.element));\n if (!isNullOrUndefined(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$1 + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT$1, _this.element));\n if (!isNullOrUndefined(cntTrg)) {\n _this.clearTabTemplate(cntTrg, 'content', CLS_ITEM$2);\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$1)) {\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.tbItem = selectAll('.' + CLS_TB_ITEM, _this.getTabHeader());\n index = _this.getSelectingTabIndex(index);\n index = !isNaN(index) && index >= 0 && _this.tbItem.length > index ? index : 0;\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 (isNullOrUndefined(item)) {\n return;\n }\n if (isNullOrUndefined(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN$1);\n if (value === true) {\n item.classList.add(CLS_HIDDEN$1);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN$1 + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE$1)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN$1)) {\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$1)) {\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$1)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN$1);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN$1);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN$1 + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN$1);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n if (!isNullOrUndefined(this.items[index])) {\n this.items[index].visible = !value;\n this.dataBind();\n }\n if (!isNullOrUndefined(item.firstElementChild)) {\n item.firstElementChild.setAttribute('aria-hidden', '' + value);\n }\n if (this.overflowMode === 'Popup') {\n this.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$1, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNullOrUndefined(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 (isNullOrUndefined(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNullOrUndefined(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE$4)) {\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: !isNullOrUndefined(this.content) ?\n select('#' + CLS_CONTENT$1 + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNullOrUndefined(this.content) ?\n select('#' + CLS_CONTENT$1 + 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.getSelectingTabIndex = function (args) {\n if (!isNullOrUndefined(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE$4) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN$1))) {\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 return args;\n };\n Tab.prototype.selectingContent = function (args, isInteracted) {\n if (typeof args === 'number') {\n args = this.getSelectingTabIndex(args);\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 ((!isNullOrUndefined(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$4, 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 var sortedKeys = Object.keys(newProp).sort(function (a, b) {\n if (a === 'items')\n return -1;\n if (b === 'items')\n return 1;\n return 0;\n });\n for (var _i = 0, sortedKeys_1 = sortedKeys; _i < sortedKeys_1.length; _i++) {\n var prop = sortedKeys_1[_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 this.setContentHeight(false);\n break;\n case 'cssClass':\n var headerEle = this.element.querySelector('.' + CLS_HEADER$1);\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 'swipeMode':\n if (this.touchModule) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n this.bindSwipeEvents();\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$1)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE$1).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT$1).querySelector('.' + CLS_ACTIVE$1).children[0]);\n var item = this.items[this.selectedItem];\n var pos = (isNullOrUndefined(item.header) || isNullOrUndefined(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNullOrUndefined(item.header) || isNullOrUndefined(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 (!isNullOrUndefined(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 = isNullOrUndefined(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$1).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNullOrUndefined(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 (!isNullOrUndefined(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM$2 + '.' + CLS_ACTIVE$1).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$1);\n var index = this.getIndexFromEle(element.id);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT$1).querySelector('.' + CLS_ACTIVE$1).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE$1 + ' ' + CLS_ACTIVE$1, id: CLS_ITEM$2 + 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$1 + 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$1).appendChild(wrap);\n var crElem = this.createElement('div', { innerHTML: mainContents });\n this.element.querySelector('.' + CLS_CONTENT$1).querySelector('.' + CLS_ACTIVE$1).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 if (this.heightAdjustMode === 'None' && this.height !== 'auto' && this.cntEle && !this.isVertical()) {\n var hdrEle = this.getTabHeader();\n setStyleAttribute(this.cntEle, { 'height': (this.element.clientHeight - hdrEle.offsetHeight) + 'px' });\n }\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE$1, this.element);\n if (!isNullOrUndefined(activeEle) && this.reorderActiveTab) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n __decorate$7([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate$7([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate$7([\n Property('Both')\n ], Tab.prototype, \"swipeMode\", void 0);\n __decorate$7([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate$7([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate$7([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate$7([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate$7([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate$7([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate$7([\n Property('Demand')\n ], Tab.prototype, \"loadOn\", void 0);\n __decorate$7([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate$7([\n Property(true)\n ], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$7([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate$7([\n Property(true)\n ], Tab.prototype, \"reorderActiveTab\", void 0);\n __decorate$7([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate$7([\n Property()\n ], Tab.prototype, \"dragArea\", void 0);\n __decorate$7([\n Property(false)\n ], Tab.prototype, \"allowDragAndDrop\", void 0);\n __decorate$7([\n Property(true)\n ], Tab.prototype, \"clearTemplates\", void 0);\n __decorate$7([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"onDragStart\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"dragging\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"dragged\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate$7([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\n\nvar __extends$8 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar LISTWRAP = 'e-text-wrap';\nvar IELISTWRAP = 'e-ie-wrap';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL$1 = 'e-rtl';\nvar INTERACTION = 'e-interaction';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED$1 = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-treeview-checkbox';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar RIPPLE = 'e-ripple';\nvar RIPPLEELMENT = 'e-ripple-element';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar DISABLED$1 = 'e-disabled';\nvar PREVENTSELECT = 'e-prevent';\nvar treeAriaAttr = {\n treeRole: 'group',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: ''\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$8(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$8([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate$8([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate$8([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate$8([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate$8([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate$8([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate$8([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate$8([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate$8([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate$8([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate$8([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate$8([\n Property('selectable')\n ], FieldsSettings.prototype, \"selectable\", void 0);\n __decorate$8([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate$8([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate$8([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate$8([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate$8([\n Property('navigateUrl')\n ], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty));\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$8(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$8([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate$8([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate$8([\n Property('linear')\n ], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty));\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$8(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$8([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate$8([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty));\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n *
    \n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @__PURE__ @class */ (function (_super) {\n __extends$8(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRefreshed = false;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n _this.validArr = [];\n _this.validNodes = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.changeDataSource = false;\n _this.hasTemplate = false;\n _this.isFirstRender = false;\n // Specifies whether the node is dropped or not\n _this.isNodeDropped = false;\n _this.isInteracted = false;\n _this.isRightClick = false;\n _this.mouseDownStatus = false;\n _this.isDropIn = false;\n _this.OldCheckedData = [];\n _this.isHiddenItem = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n shiftSpace: 'shift+space',\n ctrlSpace: 'ctrl+space'\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n this.DDTTreeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n if (isNullOrUndefined(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNullOrUndefined(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNullOrUndefined(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the persisted data\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.setTextWrap();\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setDisabledMode = function () {\n if (this.disabled) {\n this.element.classList.add(DISABLED$1);\n this.element.setAttribute('aria-disabled', 'true');\n }\n else {\n this.element.classList.remove(DISABLED$1);\n this.element.setAttribute('aria-disabled', 'false');\n }\n };\n TreeView.prototype.setEnableRtl = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL$1);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n if (isEnabled) {\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n };\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n this.element.classList.add(INTERACTION);\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n this.element.classList.remove(INTERACTION);\n return undefined;\n };\n TreeView.prototype.setDataBinding = function (changeDataSource) {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n this.isOffline = this.fields.dataSource.dataSource.offline;\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n _this.isOffline = _this.fields.dataSource.dataSource.offline;\n if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n if (changeDataSource) {\n _this.changeDataSource = true;\n }\n _this.renderItems(true);\n _this.changeDataSource = false;\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNullOrUndefined(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) { value = null; }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[\"\" + col]\n && col !== 'url' && columns.indexOf(mapper[\"\" + col]) === -1) {\n columns.push(mapper[\"\" + col]);\n }\n }\n query.select(columns);\n if (Object.prototype.hasOwnProperty.call(prop, 'tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNullOrUndefined(value) && !isNullOrUndefined(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNullOrUndefined(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.isChildObject = function () {\n if (typeof this.fields.child === 'object') {\n return true;\n }\n else {\n return false;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n this.listBaseOption.ariaAttributes.level = 1;\n var sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[parseInt(i.toString(), 10)], true, null, true);\n i++;\n }\n }\n var parentEle = selectAll('.' + PARENTITEM, this.element);\n if ((parentEle.length === 1 && (rootNodes && rootNodes.length !== 0)) || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n *\n * @returns {void}\n */\n TreeView.prototype.updateCheckedStateFromDS = function () {\n this.validNodes = [];\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[parseInt(i.toString(), 10)][this.fields.id]\n ? resultData[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkDisabledState(resultId, resultData[i]);\n }\n if (resultData[parseInt(i.toString(), 10)][this.fields.hasChildren]) {\n var id = resultData[parseInt(i.toString(), 10)][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[parseInt(child.toString(), 10)][this.fields.id]\n ? childData[parseInt(child.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkDisabledState(childId, childData[child]);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[parseInt(i.toString(), 10)], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n if (checkState.length > 0) {\n var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n var checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[parseInt(i.toString(), 10)], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[parseInt(index.toString(), 10)][this.fields.id]\n ? checkedData[parseInt(index.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkDisabledState(checkedId, checkedData[index]);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[parseInt(index.toString(), 10)][this.fields.id] ? this.treeData[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n if (this.treeData[parseInt(index.toString(), 10)][this.fields.isChecked] &&\n !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkDisabledState(fieldId, this.treeData[index]);\n }\n if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {\n this.validNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(index.toString(), 10)]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[parseInt(index.toString(), 10)]);\n }\n }\n this.validNodes = (this.enablePersistence) ? this.checkedNodes : this.validNodes;\n }\n this.setProperties({ checkedNodes: this.validNodes }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n *\n * @param {FieldsSettingsModel} mapper - The mapper object containing field settings.\n * @param {Object[]} checkNodes - The array of checked nodes.\n * @returns {void}\n * @private\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id]\n ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkDisabledState(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n *\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n var data = this.treeData;\n if (this.element.classList.contains('e-filtering')) {\n data = this.DDTTreeData;\n }\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[parseInt(i.toString(), 10)], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n var OldCheckedNodes = void 0;\n if (this.element.classList.contains('e-filtering')) {\n OldCheckedNodes = new DataManager(this.OldCheckedData).executeLocal(new Query().where('parentID', 'equal', nodeId, true));\n }\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(data).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(data, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n var _loop_1 = function (j) {\n var childId = childCheckedElement[parseInt(j.toString(), 10)][this_1.fields.id].toString();\n if (this_1.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n else if (this_1.element.classList.contains('e-filtering') && OldCheckedNodes.findIndex(function (e) { return e['id'] === childId; }) !== -1) {\n count++;\n }\n };\n var this_1 = this;\n for (var j = 0; j < childCheckedElement.length; j++) {\n _loop_1(j);\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkDisabledState(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n *\n * @param {Object} data - The data object to check for indeterminate state.\n * @returns {void}\n * @private\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n *\n * @param {Object[]} childItems - The array of child items to update the checked state.\n * @param {Object} treeData - The tree data object containing field values.\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[parseInt(index.toString(), 10)][this.fields.id] ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n if (childItems[parseInt(index.toString(), 10)][this.fields.isChecked] &&\n !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkDisabledState(checkedChild, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkDisabledState(checkedChild, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {\n this.validNodes.push(checkedChild);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[parseInt(index.toString(), 10)]);\n if (subChildItems && subChildItems.length) {\n if (this.parentCheckData.indexOf(treeData) === -1) {\n this.parentCheckData.push(treeData);\n }\n this.updateChildCheckState(subChildItems, childItems[parseInt(index.toString(), 10)]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkDisabledState(checkedParent, treeData);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[parseInt(len.toString(), 10)]) &&\n (this.parentCheckData[parseInt(len.toString(), 10)])) {\n this.checkIndeterminateState(this.parentCheckData[parseInt(len.toString(), 10)]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n checkboxEle.classList.add(CHECKBOXWRAP);\n var icon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else if (!isNullOrUndefined(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else {\n e.item.setAttribute('aria-checked', 'false');\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED$1)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED$1);\n this.addActionClass(e, fields.expanded, EXPANDED);\n e.item.setAttribute('tabindex', '-1');\n EventHandler.add(e.item, 'focus', this.focusIn, this);\n if (!isNullOrUndefined(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n var dataId = e.item.getAttribute('data-uid');\n textEle.innerHTML = '';\n this.renderNodeTemplate(e.curData, textEle, dataId);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n if (e.curData[this.fields.selectable] === false && !this.showCheckBox) {\n e.item.classList.add(PREVENTSELECT);\n e.item.firstElementChild.setAttribute('style', 'cursor: not-allowed');\n }\n }\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNullOrUndefined(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if ((typeof mapper.child === 'string') && isNullOrUndefined(getValue(mapper.child, ds[parseInt(i.toString(), 10)])) && !isNullOrUndefined(getValue(mapper.parentID, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n }\n else if ((typeof mapper.child === 'string') && isNullOrUndefined(getValue(mapper.child, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && (!isNullOrUndefined(getValue(mapper.child, ds[parseInt(i.toString(), 10)])) || (Object.prototype.hasOwnProperty.call(ds[parseInt(i.toString(), 10)], mapper.child)))) {\n return 2;\n }\n if (this.isChildObject()) {\n return 2;\n }\n if (!isNullOrUndefined(getValue(mapper.parentID, ds[parseInt(i.toString(), 10)])) ||\n !isNullOrUndefined(getValue(mapper.hasChildren, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[parseInt(j.toString(), 10)].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element, isFromExpandAll, expandChild) {\n var _this = this;\n if (!isFromExpandAll) {\n this.updateAttributes(element);\n }\n if (!expandChild) {\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] === true; }).length > 0\n ? true\n : this.isInitalExpand;\n }\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[parseInt(i.toString(), 10)]);\n }\n }\n removeClass(eNodes, EXPANDED);\n }\n if (!isFromExpandAll) {\n this.updateList();\n }\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateAttributes = function (element) {\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[parseInt(k.toString(), 10)].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED$1, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[parseInt(i.toString(), 10)], null);\n break;\n }\n removeClass(sNodes, SELECTED$1);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[parseInt(j.toString(), 10)]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[parseInt(j.toString(), 10)]);\n }\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[parseInt(i.toString(), 10)].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[parseInt(i.toString(), 10)]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[parseInt(i.toString(), 10)]);\n }\n else {\n this.ensureChildCheckState(liElement[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[parseInt(i.toString(), 10)].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNullOrUndefined(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECKBOXWRAP + ' .' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll(this.checkDisabledChildren ? '.' + LISTITEM : '.' + LISTITEM + ':not(.' + DISABLE + ')', ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n var count = nodes.length;\n var checkedCount = checkedNodes.length;\n var matchedChildNodes = [];\n var oldChildCount = [];\n var dataUid_1 = element.getAttribute('data-uid');\n var rootNodeChecked_1 = true;\n var childNodeChecked_1 = false;\n nodes.forEach(function (childNode) {\n if (childNode instanceof HTMLElement) {\n var ariaChecked = childNode.getAttribute('aria-checked');\n if (ariaChecked === 'true') {\n childNodeChecked_1 = true;\n }\n else {\n rootNodeChecked_1 = false;\n }\n }\n });\n var parentNodeChecked = false;\n if (this.element.classList.contains('e-filtering')) {\n var oldCheckedNodes = new DataManager(this.OldCheckedData).executeLocal(new Query().where('parentID', 'equal', dataUid_1, true));\n checkedCount = oldCheckedNodes.length;\n var parentNode = new DataManager(this.OldCheckedData).executeLocal(new Query().where('hasChildren', 'equal', true, true));\n if (parentNode.length > 0\n && (this.OldCheckedData.some(function (oldNode) { return oldNode.id === dataUid_1; }) && childNodeChecked_1)) {\n checkedCount = parentNode.length;\n parentNodeChecked = true;\n }\n var childItems = [];\n if (this.dataType === 1) {\n childItems = new DataManager(this.DDTTreeData).executeLocal(new Query().where(this.fields.parentID, 'equal', dataUid_1, true));\n }\n else {\n childItems = this.getChildNodes(this.DDTTreeData, dataUid_1);\n }\n count = childItems.length;\n }\n if (this.autoCheck && this.showCheckBox && !(this.fields.dataSource instanceof DataManager)) {\n var selectedChildNodeDetails = this.getSelectedChildNodeDetails(dataUid_1);\n matchedChildNodes = selectedChildNodeDetails;\n oldChildCount = new DataManager(this.checkActionNodes)\n .executeLocal(new Query().where('parentID', 'equal', dataUid_1, true));\n }\n if (count === 0 && checkedCount === 0) {\n return;\n }\n else if (count === checkedCount || ((parentNodeChecked && count > 0) && (oldChildCount.length === matchedChildNodes.length)\n && (oldChildCount.length !== 0 && matchedChildNodes.length !== 0) && rootNodeChecked_1\n && (this.autoCheck && this.showCheckBox))) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if ((checkedCount > 0 && !parentNodeChecked && (this.autoCheck && this.showCheckBox))) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedCount > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedCount === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNullOrUndefined(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.getSelectedChildNodeDetails = function (dataUid) {\n var _this = this;\n return this.checkedNodes\n .map(function (checkedNodeId) {\n return new DataManager(_this.DDTTreeData)\n .executeLocal(new Query().where('id', 'equal', checkedNodeId, true))[0];\n })\n .filter(function (childNode) {\n if (childNode && typeof childNode === 'object' && 'pid' in childNode) {\n var childNodePid = childNode.pid;\n if (!isNullOrUndefined(childNodePid)) {\n return childNodePid.toString() === dataUid;\n }\n }\n return false;\n });\n };\n TreeView.prototype.ensureChildCheckState = function (element, e, isFromExpandAll) {\n var _this = this;\n if (!isNullOrUndefined(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNullOrUndefined(childElement)) {\n var childCheck = Array.from(childElement.querySelectorAll('li'));\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n if (this.isFilter) {\n checkBoxes = Array.from(checkBoxes).filter(function (checkbox) {\n var dataUID = checkbox.closest('li').getAttribute('data-uid');\n return dataUID !== null && _this.checkedNodes.indexOf(dataUID) !== -1;\n });\n childCheck = Array.from(childCheck).filter(function (li) {\n var childIds = li.getAttribute('data-uid');\n return childIds !== null && _this.checkedNodes.indexOf(childIds) !== -1;\n });\n if (checkBoxes.length === 0) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n childCheck = Array.from(childElement.querySelectorAll('li'));\n }\n }\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[parseInt(index.toString(), 10)].getAttribute('data-uid');\n if (!isNullOrUndefined(this.currentLoadData) &&\n !isNullOrUndefined(getValue(this.fields.isChecked, this.currentLoadData[parseInt(index.toString(), 10)]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[parseInt(index.toString(), 10)]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && this.parentNodeCheck.indexOf(childId) !== -1)) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n }\n else {\n var isNodeChecked = checkBoxes[parseInt(index.toString(), 10)]\n .getElementsByClassName(CHECKBOXFRAME)[0]\n .classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[parseInt(index.toString(), 10)].classList.contains(CHILD) &&\n (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded && !isFromExpandAll) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n if (!isNullOrUndefined(nodes)) {\n nodes.reverse();\n for (var len = nodes.length - 1; len >= 0; len--) {\n var liEle = this.getElement(nodes[parseInt(len.toString(), 10)]);\n if (isNullOrUndefined(liEle)) {\n var node = nodes[len - nodes.length] ? nodes[len - nodes.length].toString()\n : nodes[parseInt(len.toString(), 10)]\n ? nodes[parseInt(len.toString(), 10)].toString()\n : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node, nodes);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[parseInt(i.toString(), 10)][this.fields.id]\n ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n var ele = this.element.querySelector('[data-uid=\"' + id + '\"]');\n if (ele) {\n this.changeState(ele, 'uncheck', null);\n }\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[parseInt(index.toString(), 10)], doCheck);\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[parseInt(index.toString(), 10)], doCheck);\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length - 1; j++) {\n var node = nodes[parseInt(j.toString(), 10)] ? nodes[parseInt(j.toString(), 10)].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n *\n * @param {string} node - The unique identifier of the node.\n * @param {boolean} doCheck - A boolean value indicating whether to check or uncheck the node.\n * @returns {void}\n * @private\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id]\n ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[parseInt(i.toString(), 10)][this.fields.id] ? this.treeData[parseInt(i.toString(), 10)][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[parseInt(i.toString(), 10)]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n *\n * @param {string} node - The unique identifier of the node.\n * @param {boolean} doCheck - A boolean value indicating whether to check or uncheck the node.\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id]\n ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n *\n * @param {Object[]} subChild - Array of child nodes\n * @param {string} parent - Parent identifier\n * @param {string} node - Current node identifier\n * @param {boolean} doCheck - Boolean indicating whether to perform a check\n * @param {string} [child] - Optional child identifier\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[parseInt(j.toString(), 10)][this.fields.id] ? subChild[parseInt(j.toString(), 10)][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkDisabledState(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[parseInt(j.toString(), 10)]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (!this.checkDisabledChildren && currLi && (currLi.classList.contains(DISABLE)\n || (this.disableNode && this.disableNode.indexOf(currLi.getAttribute('data-uid')) !== -1))) {\n return;\n }\n if (wrapper === currLi) {\n wrapper = select('.' + CHECKBOXWRAP, currLi);\n }\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNullOrUndefined(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNullOrUndefined(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNullOrUndefined(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkDisabledState(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNullOrUndefined(e) ? false : true, node: currLi, data: nodeData };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n firstNode.setAttribute('tabindex', '0');\n this.updateIdAttr(null, firstNode);\n }\n if (this.allowTextWrap) {\n this.updateWrap();\n }\n this.renderReactTemplates();\n this.hasPid = this.rootData[0] ? Object.prototype.hasOwnProperty.call(this.rootData[0], this.fields.parentID) : false;\n this.doExpandAction();\n }\n };\n TreeView.prototype.setTextWrap = function () {\n (this.allowTextWrap ? addClass : removeClass)([this.element], LISTWRAP);\n if (Browser.isIE) {\n (this.allowTextWrap ? addClass : removeClass)([this.element], IELISTWRAP);\n }\n };\n TreeView.prototype.updateWrap = function (ulEle) {\n if (!this.fullRowSelect) {\n return;\n }\n var liEle = ulEle ? selectAll('.' + LISTITEM, ulEle) : this.liList;\n var length = liEle.length;\n for (var i = 0; i < length; i++) {\n this.calculateWrap(liEle[parseInt(i.toString(), 10)]);\n }\n };\n TreeView.prototype.calculateWrap = function (liEle) {\n var element = select('.' + FULLROW, liEle);\n if (element && element.nextElementSibling) {\n element.style.height = this.allowTextWrap ? element.nextElementSibling.offsetHeight + 'px' : '';\n }\n };\n TreeView.prototype.doExpandAction = function () {\n var _this = this;\n var eUids = this.expandedNodes;\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] === true; }).length > 0\n ? true\n : this.isInitalExpand;\n }\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[parseInt(i.toString(), 10)] + '\"]', this.element);\n if (!isNullOrUndefined(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNullOrUndefined(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[parseInt(i.toString(), 10)] && this.expandChildren.indexOf(eUids[parseInt(i.toString(), 10)]) === -1) {\n this.expandChildren.push(eUids[parseInt(i.toString(), 10)].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var _this = this;\n this.expandCallback(arr[this.index], function () {\n _this.index++;\n if (_this.index < arr.length) {\n _this.expandGivenNodes(arr);\n }\n else {\n _this.afterFinalized();\n }\n });\n if (this.index > 0) {\n this.index = 0;\n }\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNullOrUndefined(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNullOrUndefined(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n callback();\n }\n else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isAnimate = true;\n this.isInitalExpand = false;\n if ((!this.isLoaded || this.isFieldChange) && !this.isNodeDropped) {\n var eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n this.isNodeDropped = false;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED$1, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[parseInt(i.toString(), 10)] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[parseInt(i.toString(), 10)]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED$1);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[parseInt(i.toString(), 10)].classList.contains('e-disable')) {\n this.selectNode(sNodes[parseInt(i.toString(), 10)], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = Browser.isDevice && event.originalEvent.changedTouches && !Browser.isIos\n ? document.elementFromPoint(event.originalEvent.changedTouches[0].clientX, event.originalEvent.changedTouches[0].clientY)\n : event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li || (li.classList.contains(PREVENTSELECT) && !(classList.contains(EXPANDABLE) || classList.contains(COLLAPSIBLE)))) {\n return;\n }\n else if (event.originalEvent.which !== 3) {\n var rippleElement = select('.' + RIPPLEELMENT, li);\n var rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNullOrUndefined(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n }\n else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n }\n else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n if (event.originalEvent.which === 3) {\n this.isRightClick = true;\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.updateOldCheckedData = function (data) {\n var _this = this;\n var dataManager = new DataManager(data);\n var childItems = dataManager.executeLocal(new Query().where('isChecked', 'equal', 'true', true));\n var uncheckedItems = dataManager.executeLocal(new Query().where('isChecked', 'equal', 'false', true));\n if (uncheckedItems.length > 0) {\n var index = this.OldCheckedData.findIndex(function (e) { return e['id'] === uncheckedItems[0]['id']; });\n if (index !== -1) {\n this.OldCheckedData.splice(index, 1);\n var childNodes = this.OldCheckedData.filter(function (e) { return e['parentID'] === uncheckedItems[0]['id']; });\n if (childNodes.length > 0) {\n childNodes.forEach(function (child) {\n var childIndex = _this.OldCheckedData.findIndex(function (e) { return e['id'] === child.id; });\n if (childIndex !== -1) {\n _this.OldCheckedData.splice(childIndex, 1);\n }\n });\n }\n return;\n }\n }\n if (childItems.length > 0) {\n var index = this.OldCheckedData.findIndex(function (e) { return e['id'] === childItems[0]['id']; });\n if (index === -1) {\n this.OldCheckedData.push(childItems[0]);\n return;\n }\n }\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n this.renderReactTemplates();\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n if (this.isAnimate && !this.isRefreshed) {\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: (this.animation.expand.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function () {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n _this.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n }\n else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.allowTextWrap && this.isLoaded && this.isFirstRender) {\n this.updateWrap(currLi);\n this.isFirstRender = false;\n }\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.expandArgs.isInteracted = this.isInteracted;\n this.trigger('nodeExpanded', this.expandArgs);\n }\n if (this.isHiddenItem) {\n this.collapseAll([this.getNodeData(currLi).id]);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNullOrUndefined(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = colArgs.isInteracted;\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: (this.animation.collapse.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function () {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n _this.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(liEle, null);\n colArgs.isInteracted = this.isInteracted;\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded, isFromExpandAll) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNullOrUndefined(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n if (this.fields.dataSource instanceof DataManager) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNullOrUndefined(mapper_2) || isNullOrUndefined(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }\n else {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'), false, parseFloat(parentLi.getAttribute('aria-level')) + 1);\n this.currentLoadData = this.getSortedData(childItems);\n if (isNullOrUndefined(childItems) || childItems.length === 0) {\n detach(eicon);\n if (eicon.classList.contains(LOAD)) {\n this.hideSpinner(eicon);\n }\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi, isFromExpandAll);\n this.finalizeNode(parentLi, isFromExpandAll, expandChild);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded, isFromExpandAll);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNullOrUndefined(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (expandChild) {\n this.expandedNodes.push(parentLi.getAttribute('data-uid'));\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n if (isNullOrUndefined(this.disableNode) || this.disableNode.length === 0) {\n return;\n }\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[parseInt(i.toString(), 10)][this.fields.id]\n ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n *\n * @param {Object[]} nodes - Array of nodes\n * @returns {void}\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n if (isNullOrUndefined(this.selectedNodes) || this.selectedNodes.length === 0) {\n return;\n }\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[parseInt(i.toString(), 10)][this.fields.id]\n ? nodes[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element, isFromExpandAll) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element, null, isFromExpandAll);\n if (isFromExpandAll ? (select('.' + CHECK, this.element) || select('.' + INDETERMINATE, this.element)) : true) {\n this.ensureParentCheckState(element);\n }\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return (typeof mapper.child === 'string' || isNullOrUndefined(mapper.child)) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot, level) {\n var _this = this;\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNullOrUndefined(obj)) {\n return childNodes;\n }\n if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n if (typeof this.fields.child === 'string') {\n return this.findChildNodes(obj, this.fields.id, parentId) || this.findNestedChildNodes(obj, parentId, level) || [];\n }\n if (this.isChildObject()) {\n var tempField = !isNullOrUndefined(level) ? this.fields : this.fields.child;\n var i = 1;\n while (i < level) {\n if (!isNullOrUndefined(tempField.child)) {\n tempField = tempField.child;\n }\n else {\n break;\n }\n i++;\n }\n this.updateListProp(tempField);\n var index = obj.findIndex(function (data) {\n return getValue(_this.fields.id, data) &&\n getValue(_this.fields.id, data).toString() === parentId;\n });\n if (index !== -1) {\n return getValue('child', obj[parseInt(index.toString(), 10)]);\n }\n if (index === -1) {\n for (var i_1 = 0, objlen = obj.length; i_1 < objlen; i_1++) {\n var tempArray = getValue('child', obj[parseInt(i_1.toString(), 10)]);\n var childIndex = !isNullOrUndefined(tempArray)\n ? tempArray.findIndex(function (data) {\n return getValue(_this.fields.child.id, data) &&\n getValue(_this.fields.child.id, data).toString() === parentId;\n })\n : -1;\n if (childIndex !== -1) {\n return getValue('child', tempArray[parseInt(childIndex.toString(), 10)]);\n }\n else if (!isNullOrUndefined(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId, false, level);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.findChildNodes = function (items, idField, parentId) {\n var index = items.findIndex(function (data) {\n var value = getValue(idField, data);\n return value && value.toString() === parentId;\n });\n if (index !== -1) {\n return getValue(this.fields.child, items[index]);\n }\n return null;\n };\n TreeView.prototype.findNestedChildNodes = function (items, parentId, level) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n var tempArray = getValue(this.fields.child, item);\n if (!isNullOrUndefined(tempArray)) {\n var childNodes = this.findChildNodes(tempArray, this.fields.id, parentId);\n if (childNodes) {\n return childNodes;\n }\n var nestedChildNodes = this.getChildNodes(tempArray, parentId, false, level);\n if (nestedChildNodes && nestedChildNodes.length > 0) {\n return nestedChildNodes;\n }\n }\n }\n return undefined;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNullOrUndefined(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNullOrUndefined(data[parseInt(i.toString(), 10)][0]) &&\n !isNullOrUndefined(getValue(this.fields.parentID, data[parseInt(i.toString(), 10)][0]))) {\n if (getValue(this.fields.parentID, data[parseInt(i.toString(), 10)][0]).toString() === parentId) {\n return data[parseInt(i.toString(), 10)];\n }\n }\n else if (isRoot) {\n return data[parseInt(i.toString(), 10)];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded, isFromExpandAll) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[parseInt(i.toString(), 10)];\n if (element.querySelector('.e-icons') !== cIcons[parseInt(i.toString(), 10)]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded, isFromExpandAll);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNullOrUndefined(li) || (!this.allowMultiSelection && this.isActive(li) && !isNullOrUndefined(e))) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if ((!observedArgs.cancel) && !observedArgs.node.classList.contains(PREVENTSELECT)) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !(e.ctrlKey || e.metaKey))))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[parseInt(i.toString(), 10)];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n this.isRightClick = false;\n }\n this.isRightClick = false;\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNullOrUndefined(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n focusedNode.setAttribute('tabindex', '-1');\n }\n addClass([li], FOCUS);\n li.setAttribute('tabindex', '0');\n EventHandler.add(li, 'blur', this.focusOut, this);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNullOrUndefined(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNullOrUndefined(e) ? false : true, node: currLi, nodeData: nodeData };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = Browser.isDevice && e.originalEvent.changedTouches && !Browser.isIos\n ? document.elementFromPoint(e.originalEvent.changedTouches[0].clientX, e.originalEvent.changedTouches[0].clientY)\n : e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback, isFromExpandAll) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = this.expandArgs.isInteracted;\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback, isFromExpandAll);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback, isFromExpandAll);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback, isFromExpandAll) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.isFirstRender = true;\n this.renderChildNodes(currLi, expandChild, callback, null, isFromExpandAll);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[parseInt(i.toString(), 10)]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[parseInt(i.toString(), 10)]));\n if (!isNullOrUndefined(icon_1)) {\n this.expandAction(liEles[parseInt(i.toString(), 10)], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n }\n else {\n _this.toggleSelect(focusedNode, e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n case 'shiftSpace':\n case 'ctrlSpace':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNullOrUndefined(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNullOrUndefined(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName('e-checkbox-disabled').length === 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNullOrUndefined(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n if (this.autoCheck) {\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n if (child !== null) {\n this.allCheckNode(child, this.checkedElement, null, null, false);\n }\n else {\n child = null;\n }\n }\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.updateOldCheckedData([this.getNodeData(li)]);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n *\n * @param {Element} li - The list item element\n * @param {boolean} [doCheck] - Optional parameter to specify whether to perform a check\n * @returns {void}\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var _this = this;\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n var childMatchesCheckedNodes = resultData.filter(function (item) {\n return _this.checkedNodes.indexOf(item[mapper.id].toString()) !== -1;\n }, this);\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && childMatchesCheckedNodes.length !== resultData.length && this.isFilter) {\n if (childMatchesCheckedNodes.length > 0) {\n resultData = childMatchesCheckedNodes;\n }\n }\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[parseInt(i.toString(), 10)][this.fields.id]\n ? resultData[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n var isCheck = resultData[parseInt(i.toString(), 10)][this.fields.isChecked]\n ? resultData[parseInt(i.toString(), 10)][this.fields.isChecked].toString()\n : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkDisabledState(resultId, resultData[i]);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[parseInt(i.toString(), 10)][this.fields.id]\n ? checkedData[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[parseInt(i.toString(), 10)][this.fields.id]\n ? this.treeData[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkDisabledState(checkedId, this.treeData[i]);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n var filteredChildItems = childItems.filter(function (item) {\n var itemValue = String(item[Object.keys(item)[0]]);\n return _this.checkedNodes.indexOf(itemValue) !== -1;\n });\n if (filteredChildItems.length > 0 && childItems.length && this.isFilter) {\n childItems = filteredChildItems;\n }\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.checkDisabledState = function (resultId, currentItem) {\n var requiresUpdate = this.checkDisabledChildren;\n if (!requiresUpdate) {\n var shouldPreventUpdate = true;\n if (this.loadOnDemand && this.fields.htmlAttributes) {\n currentItem = isNullOrUndefined(currentItem) ? currentItem : this.getNodeObject(resultId);\n if (!isNullOrUndefined(currentItem)) {\n var htmlAttributes = currentItem[this.fields.htmlAttributes];\n if (htmlAttributes && !isNullOrUndefined(htmlAttributes.class) && htmlAttributes.class.indexOf(DISABLE) !== -1) {\n shouldPreventUpdate = false;\n }\n }\n }\n var liElement = select(\"[data-uid=\\\"\" + resultId + \"\\\"]\", this.element);\n requiresUpdate = liElement ? !liElement.classList.contains(DISABLE)\n : (this.disableNode.indexOf(resultId) === -1 && shouldPreventUpdate);\n }\n if (requiresUpdate) {\n this.checkedNodes.push(resultId);\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[parseInt(i.toString(), 10)][this.fields.id]\n ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n var childIsCheck = childItems[parseInt(i.toString(), 10)][this.fields.isChecked]\n ? childItems[parseInt(i.toString(), 10)][this.fields.isChecked].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkDisabledState(childId, childItems[i]);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n *\n * @param {Object[]} childItems - Array of child items\n * @param {string} parent - Parent identifier\n * @param {Element} childElement - Child DOM element\n * @param {boolean} [doCheck] - Optional parameter to specify whether to perform a check\n * @returns {void}\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[parseInt(i.toString(), 10)][this.fields.id] ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString() : '';\n var isCheck = childItems[parseInt(i.toString(), 10)][this.fields.isChecked]\n ? childItems[parseInt(i.toString(), 10)][this.fields.isChecked].toString()\n : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkDisabledState(checkedChild, childItems[i]);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkDisabledState(checkedChild, childItems[i]);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[parseInt(i.toString(), 10)]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[parseInt(length_1.toString(), 10)]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNullOrUndefined(child[parseInt(length_1.toString(), 10)][this.fields.isChecked]) &&\n newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n if (child[parseInt(length_1.toString(), 10)][this.fields.isChecked] !== false || checked === 2) {\n newCheck.push(childId.toString());\n }\n else {\n childCheck = null;\n }\n childCheck = (child[parseInt(length_1.toString(), 10)][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNullOrUndefined(checked)) {\n newCheck.push(childId.toString());\n }\n var hierChildId = getValue(this.fields.child.toString(), child[parseInt(length_1.toString(), 10)]);\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[parseInt(length_1.toString(), 10)]) === true || hierChildId) {\n var id = getValue(this.fields.id, child[parseInt(length_1.toString(), 10)]);\n var childId_1 = void 0;\n if (this.dataType === 1) {\n childId_1 = this.getChildNodes(this.treeData, id.toString());\n }\n else {\n childId_1 = hierChildId;\n }\n if (childId_1) {\n if (isNullOrUndefined(validateCheck)) {\n this.allCheckNode(childId_1, newCheck, checked, childCheck);\n }\n else {\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n }\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '[tabindex=\"0\"]', this.element);\n if (!isNullOrUndefined(fNode)) {\n var ariaChecked = fNode.getAttribute('aria-checked');\n if (ariaChecked === 'mixed' || ariaChecked === 'false') {\n this.isFilter = false;\n }\n }\n if (isNullOrUndefined(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNullOrUndefined(fNode) ? (isNullOrUndefined(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[parseInt(index.toString(), 10)];\n if (isNullOrUndefined(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[parseInt(index.toString(), 10)];\n if (isNullOrUndefined(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[parseInt(index.toString(), 10)];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[parseInt(index.toString(), 10)];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], FOCUS);\n preNode.setAttribute('tabindex', '-1');\n if (!nextNode.classList.contains('e-disable')) {\n addClass([nextNode], FOCUS);\n nextNode.setAttribute('tabindex', '0');\n nextNode.focus();\n EventHandler.add(nextNode, 'blur', this.focusOut, this);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n var focusedElement = this.getFocusedNode();\n if (focusedElement.classList.contains('e-disable')) {\n focusedElement.setAttribute('tabindex', '-1');\n this.navigateNode(true);\n }\n else {\n focusedElement.setAttribute('tabindex', '0');\n addClass([focusedElement], FOCUS);\n EventHandler.add(focusedElement, 'blur', this.focusOut, this);\n }\n this.mouseDownStatus = false;\n }\n };\n TreeView.prototype.focusOut = function (event) {\n var focusedElement = this.getFocusedNode();\n if (event.target === focusedElement) {\n removeClass([focusedElement], FOCUS);\n EventHandler.remove(focusedElement, 'blur', this.focusOut);\n }\n };\n TreeView.prototype.onMouseOver = function (e) {\n if (Browser.isDevice) {\n return;\n }\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER) && !li.classList.contains(PREVENTSELECT)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n TreeView.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNullOrUndefined(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNullOrUndefined(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var selectable = currLi.classList.contains(PREVENTSELECT) ? false : true;\n var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;\n var checked = null;\n var checkboxElement = select('.' + CHECKBOXWRAP, currLi);\n if (this.showCheckBox && checkboxElement) {\n checked = currLi.getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, selectable: selectable, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNullOrUndefined(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n };\n TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {\n var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle, this.root);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n };\n TreeView.prototype.destroyTemplate = function (liEle) {\n this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);\n };\n TreeView.prototype.reRenderNodes = function () {\n this.updateListProp(this.fields);\n if (Browser.isIE) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNullOrUndefined(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNullOrUndefined(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle);\n }\n };\n TreeView.prototype.createTextbox = function (liEle) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style_1 = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n if (!isNullOrUndefined(_this.nodeTemplateFn)) {\n _this.destroyTemplate(liEle);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isReact) {\n setTimeout(function () {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }, 5);\n }\n else {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }\n }\n });\n };\n TreeView.prototype.renderTextBox = function (eventArgs, textEle, style) {\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n this.wireInputEvents(inpEle);\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n Input.destroy({ element: target, properties: this.properties });\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n EventHandler.remove(target, 'blur', this.inputFocusOut);\n this.inputObj = null;\n detach(target);\n target = null;\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n _this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent('nodeEdited', [_this.getNode(liEle)]);\n }\n });\n };\n TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {\n var newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNullOrUndefined(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var dataId = liEle.getAttribute('data-uid');\n this.renderNodeTemplate(newData, txtEle, dataId);\n this.renderReactTemplates();\n }\n else {\n if (this.enableHtmlSanitizer) {\n txtEle.innerText = SanitizeHtmlHelper.sanitize(newText);\n }\n else {\n txtEle.innerHTML = newText;\n }\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n liEle.focus();\n EventHandler.add(liEle, 'blur', this.focusOut, this);\n addClass([liEle], FOCUS);\n }\n if (this.allowTextWrap) {\n this.calculateWrap(liEle);\n }\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNullOrUndefined(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNullOrUndefined(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNullOrUndefined(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(this.treeData[parseInt(i.toString(), 10)]) && !isNullOrUndefined(dataId) && dataId.toString() === id) {\n return this.treeData[parseInt(i.toString(), 10)];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNullOrUndefined(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && dataId && dataId.toString() === id) {\n return obj[parseInt(i.toString(), 10)];\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.isChildObject()) {\n var children = 'child';\n var childData = getValue(children, obj[parseInt(i.toString(), 10)]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n enableTapHold: true,\n tapHoldThreshold: 100,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = (dragWrap.cloneNode(true));\n if (isNullOrUndefined(select('div.' + ICON, cloneEle))) {\n var icon = _this.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL$1 : '');\n virtualEle = _this.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = _this.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNullOrUndefined(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n if (!e.target.classList.contains('e-sibling')) {\n _this.removeVirtualEle();\n }\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n if (dropTarget.classList.contains('e-sibling')) {\n _this.removeVirtualEle();\n }\n }\n _this.dragStartAction = false;\n });\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNullOrUndefined(e) && !e.target.classList.contains(SIBLING) &&\n (_this.dropObj.dragData.default && _this.dropObj.dragData.default.helper.classList.contains(ROOT))) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function () {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n _this.removeVirtualEle();\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.getOffsetX = function (event, target) {\n var touchList = event.changedTouches;\n if (touchList && touchList.length > 0) {\n return touchList[0].clientX - target.getBoundingClientRect().left;\n }\n else {\n return event.offsetX;\n }\n };\n TreeView.prototype.getOffsetY = function (event, target) {\n var touchList = event.changedTouches;\n if (touchList && touchList.length > 0) {\n return touchList[0].clientY - target.getBoundingClientRect().top;\n }\n else {\n return event.offsetY;\n }\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.isDropIn = false;\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n var event = e.event;\n var offsetY = this.getOffsetY(event, e.target);\n var offsetX = this.getOffsetX(event, e.target);\n if (this.fullRowSelect && !dropWrap && !isNullOrUndefined(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if (this.hasTemplate && dropLi) {\n var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n if ((e && (!expand && !collapse) && offsetY < 7 && !checkWrapper) ||\n (((expand && offsetY < 5) || (collapse && offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((e && (!expand && !collapse) &&\n !checkWrapper && templateTarget && offsetY > templateTarget.offsetHeight - 10) ||\n ((expand && offsetY > 19) || (collapse && offsetX > 19))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n this.isDropIn = true;\n }\n }\n else {\n if ((dropLi && e && (!expand && !collapse) && (offsetY < 7) && !checkWrapper) ||\n (((expand && offsetY < 5) || (collapse && offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((dropLi && e && (!expand && !collapse) &&\n (e.target.offsetHeight > 0 && offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) ||\n (((expand && offsetY > 19) || (collapse && offsetX > 19)))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n this.isDropIn = true;\n }\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.appendIndicator = function (dropLi, icon, index) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n dropLi.insertBefore(virEle, dropLi.children[parseInt(index.toString(), 10)]);\n };\n TreeView.prototype.dropAction = function (e) {\n var event = e.event;\n var offsetY = this.getOffsetY(event, e.target);\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var nodeData = [];\n var liArray = [];\n var dragInstance = e.dragData.draggable;\n for (var i = 0; i < dragInstance.ej2_instances.length; i++) {\n if (dragInstance.ej2_instances[parseInt(i.toString(), 10)] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[parseInt(i.toString(), 10)];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = (closest(dragTarget, '.' + LISTITEM));\n var dropLi = (closest(dropTarget, '.' + LISTITEM));\n liArray.push(dragLi);\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n liArray = sNodes;\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i = sNodes.length - 1; i >= 0; i--) {\n if (dropLi.isSameNode(sNodes[parseInt(i.toString(), 10)]) ||\n this.isDescendant(sNodes[parseInt(i.toString(), 10)], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[parseInt(i.toString(), 10)], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i = 0; i < sNodes.length; i++) {\n if (dropLi.isSameNode(sNodes[parseInt(i.toString(), 10)]) ||\n this.isDescendant(sNodes[parseInt(i.toString(), 10)], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[parseInt(i.toString(), 10)], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n for (var i = 0; i < liArray.length; i++) {\n nodeData.push(this.getNode(liArray[parseInt(i.toString(), 10)]));\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n if (dragObj.element.id !== this.element.id) {\n dragObj.triggerEvent('nodeDropped', nodeData);\n this.isNodeDropped = true;\n this.fields.dataSource = this.treeData;\n }\n this.triggerEvent('nodeDropped', nodeData);\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && ((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3) || (expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19) || (!expand && !collapse))) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, null, dropTarget);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true, dropTarget);\n }\n if (this.showCheckBox) {\n this.ensureIndeterminate();\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {\n if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {\n pre = true;\n }\n else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {\n pre = false;\n }\n }\n if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n }\n else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck, dropTarget) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n var templateTarget;\n if (e && e.target) {\n templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n }\n if (e && ((pos < 7 && !dropTarget.classList.contains('e-sibling')) || (dropTarget.classList.contains('e-sibling') && !dropLi.lastChild.classList.contains('e-sibling'))) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck && !this.hasTemplate) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = !isNullOrUndefined(index) ? dropUl.childNodes[parseInt(index.toString(), 10)] : null;\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNullOrUndefined(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNullOrUndefined(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[parseInt(i.toString(), 10)]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNullOrUndefined(dropUl) && (this.preventExpand && !(dropLi.getAttribute('aria-expanded') === 'true'))) {\n dropUl.style.display = 'none';\n }\n if (!isNullOrUndefined(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNullOrUndefined(dropUl) && this.preventExpand === true) {\n if (isNullOrUndefined(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNullOrUndefined(dropUl)) {\n var args = this.expandArgs;\n if (isNullOrUndefined(args) || (args && args.name !== 'nodeExpanding')) {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n }\n if (isNullOrUndefined(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n var collapseIcon = select('div.' + COLLAPSIBLE, dropLi);\n if (!isNullOrUndefined(dropUl) && collapseIcon && (this.preventExpand && !(dropLi.getAttribute('aria-expanded') === 'true'))) {\n removeClass([collapseIcon], COLLAPSIBLE);\n dropLi.setAttribute('aria-expanded', 'false');\n addClass([collapseIcon], EXPANDABLE);\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNullOrUndefined(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[parseInt(i.toString(), 10)];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n var event = e.event;\n var offsetY = this.getOffsetY(event, e.target);\n if (offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[parseInt(index.toString(), 10)]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = (drop === true) ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n var position = null;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[parseInt(i.toString(), 10)])) {\n iconClass = iconCss[parseInt(i.toString(), 10)];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[parseInt(i.toString(), 10)] === draggedNode && dropLi !== draggedNode)\n ? ++dropTar\n : dropTar;\n if ((drop !== true && index.children[parseInt(i.toString(), 10)].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[parseInt(i.toString(), 10)] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n position = this.isDropIn ? 'Inside' : ((event.offsetY < 7) ? 'Before' : 'After');\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent_2) ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent_3) ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n position: position\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[parseInt(i.toString(), 10)]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[parseInt(i.toString(), 10)]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes, currentLevel) {\n currentLevel = isNullOrUndefined(currentLevel) ? 1 : currentLevel;\n if (level > 0 && !isNullOrUndefined(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[parseInt(i.toString(), 10)];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (currentLevel >= level && !isNullOrUndefined(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level, excludeHiddenNodes, currentLevel + 1);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[parseInt(i.toString(), 10)];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNullOrUndefined(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[parseInt(i.toString(), 10)];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNullOrUndefined(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var _i = 0, eIcons_1 = eIcons; _i < eIcons_1.length; _i++) {\n var icon = eIcons_1[_i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[parseInt(i.toString(), 10)])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n if (!isNullOrUndefined(this.nodeTemplateFn)) {\n this.destroyTemplate(node);\n }\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({ expandedNodes: [] }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[parseInt(i.toString(), 10)]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[parseInt(i.toString(), 10)]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNullOrUndefined(icon)) {\n if (toExpand) {\n this.expandAction(liEle, icon, null);\n }\n else {\n this.collapseNode(liEle, icon, null);\n }\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var id = this.getId(dropLi);\n var dropIcon1;\n if (!isNullOrUndefined(dropLi)) {\n dropIcon1 = select('div.' + ICON, dropLi);\n }\n if (this.dataType === 1 && dropIcon1 && dropIcon1.classList.contains(EXPANDABLE) && this.preventExpand && !isNullOrUndefined(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = true;\n }\n if (this.dataType !== 1) {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n this.isFirstRender = false;\n }\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n var refNode = !isNullOrUndefined(index) ? dropUl.childNodes[parseInt(index.toString(), 10)] : null;\n if (!this.isFirstRender || this.dataType === 1) {\n var args = this.expandArgs;\n if (refNode || this.sortOrder === 'None') {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !this.preventExpand && !isNullOrUndefined(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNullOrUndefined(args) || args.name !== 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n if (!refNode && ((this.sortOrder === 'Ascending') || (this.sortOrder === 'Descending'))) {\n if (dropUl.childNodes.length === 0) {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !this.preventExpand && !isNullOrUndefined(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNullOrUndefined(args) || args.name !== 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n else {\n var cNodes = dropUl.childNodes;\n for (var i = 0; i < li.length; i++) {\n for (var j = 0; j < cNodes.length; j++) {\n var returnValue = (this.sortOrder === 'Ascending') ? cNodes[parseInt(j.toString(), 10)].textContent.toUpperCase() > li[parseInt(i.toString(), 10)].innerText.toUpperCase() : cNodes[parseInt(j.toString(), 10)].textContent.toUpperCase() < li[parseInt(i.toString(), 10)].innerText.toUpperCase();\n if (returnValue) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], cNodes[parseInt(j.toString(), 10)]);\n break;\n }\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], cNodes[cNodes.length]);\n }\n }\n }\n }\n }\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNullOrUndefined(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNullOrUndefined(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[parseInt(j.toString(), 10)]);\n }\n this.treeData.splice(pos, 0, nodes[parseInt(j.toString(), 10)]);\n pos++;\n }\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = Object.prototype.hasOwnProperty.call(prop, 'navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var data = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var items = getValue('child', obj[parseInt(i.toString(), 10)]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNullOrUndefined(id)) {\n index = isNullOrUndefined(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[parseInt(k.toString(), 10)]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && (Object.prototype.hasOwnProperty.call(obj[parseInt(i.toString(), 10)], mapper.child) && obj[parseInt(i.toString(), 10)][mapper.child] !== null)) ||\n ((this.fields.dataSource instanceof DataManager) && Object.prototype.hasOwnProperty.call(obj[parseInt(i.toString(), 10)], 'child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(childData)) {\n childData = [];\n }\n index = isNullOrUndefined(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[parseInt(k.toString(), 10)]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[parseInt(i.toString(), 10)][\"\" + key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childObj = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if ((this.fields.dataSource instanceof DataManager) && !isNullOrUndefined(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue('child', obj[parseInt(i.toString(), 10)]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n var validNodes = this.nodeType(nodes);\n var validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (var i = 0, len = validID.length; i < len; i++) {\n var id = validID[parseInt(i.toString(), 10)][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n var liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n var strNodes = this.nodeType(nodes);\n for (var i = 0, len = strNodes.length; i < len; i++) {\n var liEle = this.getElement(strNodes[parseInt(i.toString(), 10)]);\n var id = strNodes[parseInt(i.toString(), 10)];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.nodeType = function (nodes) {\n var validID = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var id = void 0;\n if (typeof nodes[parseInt(i.toString(), 10)] == 'string') {\n id = (nodes[parseInt(i.toString(), 10)]) ? nodes[parseInt(i.toString(), 10)].toString() : null;\n }\n else if (typeof nodes[parseInt(i.toString(), 10)] === 'object') {\n id = nodes[parseInt(i.toString(), 10)] ? nodes[parseInt(i.toString(), 10)].getAttribute('data-uid').toString() : null;\n }\n if (validID.indexOf(id) === -1) {\n validID.push(id);\n }\n }\n return validID;\n };\n TreeView.prototype.checkValidId = function (node) {\n var _this = this;\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter(function (data) {\n return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;\n });\n }\n else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[parseInt(k.toString(), 10)][this.fields.id]\n ? this.treeData[parseInt(k.toString(), 10)][this.fields.id].toString()\n : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[parseInt(k.toString(), 10)]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(k.toString(), 10)]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n };\n TreeView.prototype.filterNestedChild = function (treeData, nodes) {\n for (var k = 0; k < treeData.length; k++) {\n var id = treeData[parseInt(k.toString(), 10)][this.fields.id]\n ? treeData[parseInt(k.toString(), 10)][this.fields.id].toString()\n : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[parseInt(k.toString(), 10)]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[parseInt(k.toString(), 10)]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNullOrUndefined(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[parseInt(l.toString(), 10)], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[parseInt(k.toString(), 10)], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[parseInt(m.toString(), 10)], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNullOrUndefined(obj) || isNullOrUndefined(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[parseInt(j.toString(), 10)]);\n if (!isNullOrUndefined(obj[parseInt(i.toString(), 10)][\"\" + field])) {\n delete obj[parseInt(i.toString(), 10)][\"\" + field];\n }\n }\n if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n this.removeField(getValue(mapper.child, obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n this.removeField(getValue('child', obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNullOrUndefined(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNullOrUndefined(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNullOrUndefined(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNullOrUndefined(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n if (isNullOrUndefined(id)) {\n return;\n }\n else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNullOrUndefined(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && !isNullOrUndefined(nodeId) && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[parseInt(i.toString(), 10)]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var childItems = getValue('child', obj[parseInt(i.toString(), 10)]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function (action, node) {\n this.renderReactTemplates();\n if (action === 'addNodes') {\n var nodeData = [];\n for (var i = 0; i < node.length; i++) {\n nodeData.push(this.getNode(this.getElement(isNullOrUndefined(node[parseInt(i.toString(), 10)][this.fields.id])\n ? getValue(this.fields.id, node[parseInt(i.toString(), 10)]).toString()\n : null)));\n }\n node = nodeData;\n }\n var eventArgs = { data: this.treeData, action: action, nodeData: node };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n var _this = this;\n if (toBind && !this.disabled) {\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n _this.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n _this.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if ((_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2))\n && e.originalEvent.which !== 3) {\n _this.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNullOrUndefined(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDoubleTapped = function (e) {\n var target = e.originalEvent.target;\n var secondTap;\n if (target && e.tapCount) {\n if (e.tapCount === 1) {\n this.firstTap = closest(target, '.' + LISTITEM);\n }\n else if (e.tapCount === 2) {\n secondTap = closest(target, '.' + LISTITEM);\n }\n }\n return (this.firstTap === secondTap);\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNullOrUndefined(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n if (nodes.length > 1 && typeof this.nodeChecked === 'function' && this.nodeChecked.length > 0) {\n this.isFilter = true;\n }\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n *\n * @param {string} node - The unique identifier of the node.\n * @param {string[]} [nodes=[]] - The list of node IDs to check.\n * @returns {void}\n * @private\n */\n TreeView.prototype.setValidCheckedNode = function (node, nodes) {\n if (nodes === void 0) { nodes = []; }\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0], nodes);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[parseInt(len.toString(), 10)][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkDisabledState(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[parseInt(a.toString(), 10)][this.fields.id] ? this.treeData[parseInt(a.toString(), 10)][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkDisabledState(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(a.toString(), 10)]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[parseInt(a.toString(), 10)], nodes);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n *\n * @param {Object[]} childItems - The child items to check.\n * @param {string} node - The node to set the check state for.\n * @param {Object} [treeData] - The optional tree data.\n * @param {string[]} [nodes=[]] - The list of node IDs to check.\n * @returns {void}\n * @private\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData, nodes) {\n if (nodes === void 0) { nodes = []; }\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[parseInt(index.toString(), 10)][this.fields.id]\n ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString()\n : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkDisabledState(checkNode, childItems[index]);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkDisabledState(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n var isParentNodeCheck = (nodes.length === 1 && nodes[0] === checkNode);\n if (subChildItems.length === node.length || isParentNodeCheck) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[parseInt(index.toString(), 10)][this.fields.id] ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n var isParentNodeCheck = ([node].length === 1 && nodes.length === 0);\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1\n && (checkedChild === node || isParentNodeCheck)) {\n this.checkDisabledState(checkedChild, childItems[index]);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkDisabledState(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[parseInt(index.toString(), 10)]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[parseInt(index.toString(), 10)]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkDisabledState(checkedParent, treeData);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[parseInt(i.toString(), 10)], nodes);\n }\n };\n TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n var pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (var j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[parseInt(j.toString(), 10)]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n };\n TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {\n var found;\n for (var i = 0, objlen = treeData.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, treeData[parseInt(i.toString(), 10)]);\n if (treeData[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === currID) {\n treeData[parseInt(i.toString(), 10)] = newData[0];\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, treeData[parseInt(i.toString(), 10)]))) {\n var childObj = getValue(mapper.child, treeData[parseInt(i.toString(), 10)]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', treeData[parseInt(i.toString(), 10)]))) {\n var childData = getValue('child', treeData[parseInt(i.toString(), 10)]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n };\n TreeView.prototype.dynamicState = function () {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n }\n else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n };\n TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {\n var _this = this;\n var data = this.fields.dataSource;\n var matchedArr = [];\n var query = this.getQuery(this.fields);\n var key = this.fields.id;\n var crud;\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n }\n else if (target) {\n if (typeof target == 'string') {\n nodesID[0] = target.toString();\n }\n else if (typeof target === 'object') {\n nodesID[0] = target.getAttribute('data-uid').toString();\n }\n }\n for (var i = 0, len = nodesID.length; i < len; i++) {\n var liEle = this.getElement(nodesID[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[parseInt(i.toString(), 10)]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length === 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n }\n else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function () { return _this.deleteSuccess(nodesID); })\n .catch(function (e) { return _this.dmFailure(e); });\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then(function () { return _this.editSucess(target, newText, prevent); })\n .catch(function (e) { return _this.dmFailure(e, target, prevent); });\n break;\n case 'insert':\n if (newNode.length === 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n }\n else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[parseInt(i.toString(), 10)]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function () {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) { return _this.dmFailure(e); });\n break;\n }\n };\n TreeView.prototype.deleteSuccess = function (nodes) {\n var nodeData = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[parseInt(i.toString(), 10)]);\n nodeData.push(this.getNode(liEle));\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n this.updateInstance();\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent('removeNode', nodeData);\n };\n TreeView.prototype.editSucess = function (target, newText, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n };\n TreeView.prototype.addSuccess = function (nodes, dropLi, index) {\n var _this = this;\n var dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n this.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n _this.addGivenNodes(nodes, dropLi, index, true, dropUl);\n _this.triggerEvent('addNodes', nodes);\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent('addNodes', nodes);\n }\n };\n TreeView.prototype.dmFailure = function (e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', { error: e });\n };\n TreeView.prototype.updatePreviousText = function (target, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n };\n TreeView.prototype.getHierarchicalParentId = function (node, data, parentsID) {\n var _this = this;\n var index = data.findIndex(function (data) {\n return data[_this.fields.id] && data[_this.fields.id].toString() === node;\n });\n if (index === -1) {\n for (var i = 0; i < data.length; i++) {\n var childItems = getValue(this.fields.child.toString(), data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(childItems)) {\n index = childItems.findIndex(function (data) {\n return data[_this.fields.id] && data[_this.fields.id].toString() === node;\n });\n if (index === -1) {\n this.getHierarchicalParentId(node, childItems, parentsID);\n }\n else {\n parentsID.push(data[parseInt(i.toString(), 10)][this.fields.id].toString());\n this.getHierarchicalParentId(data[parseInt(i.toString(), 10)][this.fields.id].toString(), this.treeData, parentsID);\n break;\n }\n }\n }\n }\n return parentsID;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeViewModel} newProp - The new property value.\n * @param {TreeViewModel} oldProp - The old property value.\n * @returns {void}\n * @private\n */\n TreeView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'allowTextWrap':\n this.setTextWrap();\n this.updateWrap();\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n this.setProperties({ expandedNodes: [] }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({ expandedNodes: isNullOrUndefined(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact || this.isReact && !(this.fields.dataSource instanceof DataManager)) {\n if (!this.element.classList.contains('e-filtering')) {\n this.DDTTreeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n }\n this.reRenderNodes();\n }\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n if (this.allowTextWrap) {\n this.setTextWrap();\n this.updateWrap();\n }\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n if (nodes[parseInt(i.toString(), 10)].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[parseInt(i.toString(), 10)], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.hasTemplate = false;\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n case 'checkDisabledChildren':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @returns {void}\n */\n TreeView.prototype.destroy = function () {\n this.clearTemplate();\n this.element.removeAttribute('aria-activedescendant');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n this.ulElement = null;\n this.liList = null;\n this.startNode = null;\n this.firstTap = null;\n this.expandArgs = null;\n this.dragLi = null;\n this.dragTarget = null;\n this.dragParent = null;\n this.dragObj = null;\n this.dropObj = null;\n this.inputObj = null;\n this.touchEditObj = null;\n this.touchExpandObj = null;\n this.touchClickObj = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n *\n * @param { object } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n * @returns {void}\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNullOrUndefined(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n }\n else {\n this.addSuccess(nodes, dropLi, index);\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[parseInt(i.toString(), 10)]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n if (!isNullOrUndefined(pid) && isNullOrUndefined(dropLi)) {\n this.isHiddenItem = true;\n this.preventExpand = false;\n this.ensureVisible(pid);\n this.preventExpand = preventTargetExpand;\n this.isHiddenItem = false;\n dropLi = this.getElement(pid.toString());\n }\n this.addGivenNodes([nodes[parseInt(i.toString(), 10)]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.updateCheckedStateFromDS();\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if ((this.fields.dataSource instanceof DataManager === false)) {\n this.preventExpand = false;\n this.triggerEvent('addNodes', nodes);\n }\n };\n /**\n * Editing can also be enabled by using the `beginEdit` property, instead of clicking on the\n * TreeView node. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @returns {void}\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (isNullOrUndefined(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele);\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n * @returns {void}\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNullOrUndefined(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNullOrUndefined(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNullOrUndefined(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.ensureVisible = function (node) {\n var parentsId = [];\n if (this.dataType === 1) {\n var nodeData = this.getTreeData(node);\n while (nodeData.length !== 0 && !isNullOrUndefined(nodeData[0][this.fields.parentID])) {\n parentsId.push(nodeData[0][this.fields.parentID].toString());\n nodeData = this.getTreeData(nodeData[0][this.fields.parentID].toString());\n }\n }\n else if (this.dataType === 2) {\n parentsId = this.getHierarchicalParentId(node, this.treeData, parentsId);\n }\n this.expandAll(parentsId.reverse(), null, null, this.isHiddenItem);\n var liEle = this.getElement(node);\n if (!isNullOrUndefined(liEle)) {\n if (typeof node == 'object') {\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n }\n setTimeout(function () { liEle.scrollIntoView({ behavior: 'smooth' }); }, 450);\n }\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n * @param {boolean} preventAnimation - Prevent the expand animation when expanding all nodes.\n * @returns {void}\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes, preventAnimation) {\n this.isAnimate = !preventAnimation;\n if (!isNullOrUndefined(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n if (!this.loadOnDemand || this.element.classList.contains('e-filtering')) {\n this.updateAttributes(this.element);\n this.updateList();\n }\n }\n }\n this.isAnimate = true;\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n *\n * @returns {string[]} - An array of strings representing the unique identifiers of checked nodes.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n *\n * @returns {string[]} An array of strings representing the unique identifiers of disabled nodes.\n */\n TreeView.prototype.getDisabledNodes = function () {\n var disabledNodes = this.disableNode;\n return disabledNodes;\n };\n /**\n * Gets the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @returns {Object} - The data associated with the specified node.\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n * @returns {Object} - The tree data associated with the specified node or element.\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNullOrUndefined(id)) {\n return this.treeData;\n }\n else {\n var data = this.getNodeObject(id);\n return isNullOrUndefined(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n *\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n * @returns {void}\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n if (isNullOrUndefined(sourceNodes) || sourceNodes.length === 0) {\n return;\n }\n var dropLi = this.getElement(target);\n var nodeData = [];\n if (isNullOrUndefined(dropLi)) {\n this.isHiddenItem = true;\n this.ensureVisible(target);\n this.isHiddenItem = false;\n dropLi = this.getElement(target);\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[parseInt(i.toString(), 10)]);\n nodeData.push(this.getNode(dragLi));\n if (isNullOrUndefined(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index, null, null, null, dropLi);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent('moveNodes', nodeData);\n };\n /**\n * Refreshes a particular node of the TreeView.\n *\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {Object[]} newData - Specifies the new data of TreeView node.\n * @returns {void}\n * ```typescript\n * var treeObj = document.getElementById(\"treeview\").ej2_instances[0];\n * var data = treeObj.getTreeData(\"01\");\n * var newData = {\n * id: data[0].id,\n * name: \"new Text\",\n * };\n * treeObj.refreshNode(\"01\", [newData]);\n * ```\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNullOrUndefined(target) || isNullOrUndefined(newData)) {\n return;\n }\n var isRefreshChild = false;\n if (this.dataType === 1 && newData.length > 1) {\n isRefreshChild = true;\n }\n else if (this.dataType === 2 && newData.length === 1) {\n var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNullOrUndefined(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n var liEle = this.getElement(target);\n var id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n var newNodeData;\n var parentData;\n if (this.dataType === 1 && isRefreshChild) {\n for (var k = 0; k < newData.length; k++) {\n if (isNullOrUndefined(newData[parseInt(k.toString(), 10)][this.fields.parentID])) {\n parentData = newData[parseInt(k.toString(), 10)];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n }\n else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNullOrUndefined(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n var level = parseFloat(liEle.getAttribute('aria-level'));\n var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n var ul = select('.' + PARENTITEM, liEle);\n var childItems = getValue(this.fields.child.toString(), newNodeData);\n if ((isRefreshChild && ul) || (isRefreshChild && !isNullOrUndefined(childItems))) {\n var parentEle = liEle.parentElement;\n var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);\n remove(liEle);\n parentEle.insertBefore(newliEle[0], parentEle.childNodes[parseInt(index.toString(), 10)]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n }\n else {\n var txtEle = select('.' + TEXTWRAP, liEle);\n var newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n var icon = select('div.' + ICON, txtEle);\n var newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n }\n else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n }\n else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n remove(txtEle);\n var fullEle = select('.' + FULLROW, liEle);\n fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n liEle = this.getElement(target);\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute('title', newNodeData[this.fields.tooltip]);\n }\n if (Object.prototype.hasOwnProperty.call(newNodeData, this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n var attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n }\n else {\n attributes(liEle, attr);\n }\n }\n if (this.selectedNodes.indexOf(id) !== -1) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n }\n this.isRefreshed = false;\n this.triggerEvent('refreshNode', [this.getNode(liEle)]);\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNullOrUndefined(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('delete', nodes);\n }\n else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text only when the `allowEditing` property is enabled.\n *\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNullOrUndefined(target) || isNullOrUndefined(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNullOrUndefined(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.fields.dataSource instanceof DataManager && !_this.isOffline) {\n _this.crudOperation('update', null, target, newText, null, null, false);\n }\n else {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"allowTextWrap\", void 0);\n __decorate$8([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate$8([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate$8([\n Property(true)\n ], TreeView.prototype, \"checkDisabledChildren\", void 0);\n __decorate$8([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"disabled\", void 0);\n __decorate$8([\n Property(null)\n ], TreeView.prototype, \"dragArea\", void 0);\n __decorate$8([\n Property(true)\n ], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate$8([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate$8([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate$8([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate$8([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate$8([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate$8([\n Property()\n ], TreeView.prototype, \"locale\", void 0);\n __decorate$8([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate$8([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate$8([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate$8([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"actionFailure\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate$8([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\n\nvar __extends$9 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar CONTROL$1 = 'e-control';\nvar ROOT$1 = 'e-sidebar';\nvar DOCKER = 'e-dock';\nvar CLOSE = 'e-close';\nvar OPEN = 'e-open';\nvar TRASITION = 'e-transition';\nvar DEFAULTBACKDROP = 'e-sidebar-overlay';\nvar RTL$2 = 'e-rtl';\nvar RIGHT = 'e-right';\nvar LEFT = 'e-left';\nvar OVER = 'e-over';\nvar PUSH = 'e-push';\nvar SLIDE = 'e-slide';\nvar VISIBILITY = 'e-visibility';\nvar DISPLAY = 'e-sidebar-display';\nvar MAINCONTENTANIMATION = 'e-content-animation';\nvar DISABLEANIMATION = 'e-disable-animation';\nvar CONTEXT = 'e-sidebar-context';\nvar SIDEBARABSOLUTE = 'e-sidebar-absolute';\n/**\n * Sidebar is an expandable or collapsible\n * component that typically act as a side container to place the primary or secondary content alongside of the main content.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Sidebar = /** @__PURE__ @class */ (function (_super) {\n __extends$9(Sidebar, _super);\n function Sidebar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.documentClickContext = _this.documentclickHandler.bind(_this);\n return _this;\n }\n Sidebar.prototype.preRender = function () {\n this.setWidth();\n };\n Sidebar.prototype.render = function () {\n this.initialize();\n this.wireEvents();\n this.renderComplete();\n };\n Sidebar.prototype.initialize = function () {\n this.setTarget();\n this.addClass();\n this.setZindex();\n if (this.enableDock) {\n this.setDock();\n }\n if (this.isOpen) {\n this.show();\n this.firstRender = true;\n }\n else {\n this.setMediaQuery();\n }\n this.checkType(true);\n this.setType(this.type);\n this.setCloseOnDocumentClick();\n this.setEnableRTL();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.setEnableRTL = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL$2);\n };\n Sidebar.prototype.setTarget = function () {\n this.targetEle = this.element.nextElementSibling;\n this.sidebarEleCopy = this.element.cloneNode(true);\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (this.target) {\n this.target.insertBefore(this.element, this.target.children[0]);\n addClass([this.element], SIDEBARABSOLUTE);\n addClass([this.target], CONTEXT);\n this.targetEle = this.getTargetElement();\n }\n };\n Sidebar.prototype.getTargetElement = function () {\n var siblingElement = this.element.nextElementSibling;\n while (!isNullOrUndefined(siblingElement)) {\n if (!siblingElement.classList.contains(ROOT$1)) {\n break;\n }\n siblingElement = siblingElement.nextElementSibling;\n }\n return siblingElement;\n };\n Sidebar.prototype.setCloseOnDocumentClick = function () {\n if (this.closeOnDocumentClick) {\n document.addEventListener('mousedown', this.documentClickContext);\n document.addEventListener('touchstart', this.documentClickContext);\n }\n else {\n document.removeEventListener('mousedown', this.documentClickContext);\n document.removeEventListener('touchstart', this.documentClickContext);\n }\n };\n Sidebar.prototype.setWidth = function () {\n if (this.enableDock && this.position === 'Left') {\n setStyleAttribute(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (this.enableDock && this.position === 'Right') {\n setStyleAttribute(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (!this.enableDock) {\n setStyleAttribute(this.element, { 'width': this.setDimension(this.width) });\n }\n };\n Sidebar.prototype.setDimension = 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 Sidebar.prototype.setZindex = function () {\n setStyleAttribute(this.element, { 'z-index': '' + this.zIndex });\n };\n Sidebar.prototype.addClass = function () {\n if (this.element.tagName === 'EJS-SIDEBAR') {\n addClass([this.element], DISPLAY);\n }\n var classELement = document.querySelector('.e-main-content');\n if (!isNullOrUndefined(classELement || this.targetEle)) {\n addClass([classELement || this.targetEle], [MAINCONTENTANIMATION]);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : null;\n if (!this.enableDock && this.type !== 'Auto') {\n addClass([this.element], [VISIBILITY]);\n }\n removeClass([this.element], [OPEN, CLOSE, RIGHT, LEFT, SLIDE, PUSH, OVER]);\n this.element.classList.add(ROOT$1);\n addClass([this.element], (this.position === 'Right') ? RIGHT : LEFT);\n if (this.enableDock) {\n addClass([this.element], DOCKER);\n }\n if (!isNullOrUndefined(this.tabIndex)) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n if (this.type === 'Auto' && !Browser.isDevice) {\n this.show();\n }\n else if (!this.isOpen) {\n addClass([this.element], [CLOSE, DISABLEANIMATION]);\n }\n };\n Sidebar.prototype.checkType = function (val) {\n if (!(this.type === 'Push' || this.type === 'Over' || this.type === 'Slide')) {\n this.type = 'Auto';\n }\n else {\n if (!this.element.classList.contains(CLOSE) && !val) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.transitionEnd = function (e) {\n this.setDock();\n if (!isNullOrUndefined(e) && !this.firstRender) {\n this.triggerChange();\n }\n this.firstRender = false;\n EventHandler.remove(this.element, 'transitionend', this.transitionEnd);\n };\n Sidebar.prototype.destroyBackDrop = function () {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (this.target && this.showBackdrop && sibling && !isNullOrUndefined(this.defaultBackdropDiv)) {\n removeClass([this.defaultBackdropDiv], DEFAULTBACKDROP);\n }\n else if (this.showBackdrop && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n /**\n * Hide the Sidebar component, if it is in an open state.\n *\n * @param {Event} e - The event triggering the hide action.\n * @returns {void}\n *\n */\n Sidebar.prototype.hide = function (e) {\n var _this = this;\n var closeArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n this.trigger('close', closeArguments, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n if (_this.element.classList.contains(CLOSE)) {\n return;\n }\n if (_this.element.classList.contains(OPEN) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], CLOSE);\n removeClass([_this.element], OPEN);\n setStyleAttribute(_this.element, { 'width': formatUnit(_this.enableDock ? _this.dockSize : _this.width) });\n _this.setType(_this.type);\n var sibling = document.querySelector('.e-main-content') || _this.targetEle;\n if (!_this.enableDock && sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n sibling.style[_this.position === 'Left' ? 'marginLeft' : 'marginRight'] = '0px';\n }\n _this.destroyBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.remove('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: false }, true);\n if (_this.enableDock) {\n setTimeout(function () { return _this.setTimeOut(); }, 50);\n }\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setTimeOut = function () {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n var elementWidth = this.element.getBoundingClientRect().width;\n if (this.element.classList.contains(OPEN) && sibling && !(this.type === 'Over' && this.enableDock)) {\n if (this.position === 'Left') {\n sibling.style.marginLeft = this.setDimension(this.width === 'auto' ? elementWidth : this.width);\n }\n else {\n sibling.style.marginRight = this.setDimension(this.width === 'auto' ? elementWidth : this.width);\n }\n }\n else if (this.element.classList.contains(CLOSE) && sibling) {\n if (this.position === 'Left') {\n sibling.style.marginLeft = this.setDimension(this.dockSize === 'auto' ? elementWidth : this.dockSize);\n }\n else {\n sibling.style.marginRight = this.setDimension(this.dockSize === 'auto' ? elementWidth : this.dockSize);\n }\n }\n };\n /**\n * Shows the Sidebar component, if it is in closed state.\n *\n * @param {Event} e - The optional event triggering the show action.\n * @returns {void}\n */\n Sidebar.prototype.show = function (e) {\n var _this = this;\n var openArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n this.trigger('open', openArguments, function (observedopenArgs) {\n if (!observedopenArgs.cancel) {\n removeClass([_this.element], [VISIBILITY, DISABLEANIMATION]);\n if (_this.element.classList.contains(OPEN)) {\n return;\n }\n if (_this.element.classList.contains(CLOSE) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], [OPEN, TRASITION]);\n setStyleAttribute(_this.element, { 'transform': '' });\n removeClass([_this.element], CLOSE);\n setStyleAttribute(_this.element, { 'width': formatUnit(_this.width) });\n _this.setType(_this.type);\n _this.createBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.add('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: true }, true);\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setAnimation = function () {\n if (this.animate) {\n removeClass([this.element], DISABLEANIMATION);\n }\n else {\n addClass([this.element], DISABLEANIMATION);\n }\n };\n Sidebar.prototype.triggerChange = function () {\n var changeArguments = { name: 'change', element: this.element };\n this.trigger('change', changeArguments);\n };\n Sidebar.prototype.setDock = function () {\n if (this.enableDock && this.position === 'Left' && !this.getState()) {\n setStyleAttribute(this.element, { 'transform': 'translateX(' + -100 + '%) translateX(' + this.setDimension(this.dockSize) + ')' });\n }\n else if (this.enableDock && this.position === 'Right' && !this.getState()) {\n setStyleAttribute(this.element, { 'transform': 'translateX(' + 100 + '%) translateX(' + '-' + this.setDimension(this.dockSize) + ')' });\n }\n if (this.element.classList.contains(CLOSE) && this.enableDock) {\n setStyleAttribute(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n };\n Sidebar.prototype.createBackDrop = function () {\n if (this.target && this.showBackdrop && this.getState()) {\n var targetString = this.target;\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n this.defaultBackdropDiv = this.createElement('div');\n addClass([this.defaultBackdropDiv], DEFAULTBACKDROP);\n setStyleAttribute(this.defaultBackdropDiv, { height: targetString.style.height });\n sibling.appendChild(this.defaultBackdropDiv);\n }\n else if (this.showBackdrop && !this.modal && this.getState()) {\n this.modal = this.createElement('div');\n this.modal.className = DEFAULTBACKDROP;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n };\n Sidebar.prototype.getPersistData = function () {\n return this.addOnPersist(['type', 'position', 'isOpen']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns module name.\n * @private\n *\n */\n Sidebar.prototype.getModuleName = function () {\n return 'sidebar';\n };\n /**\n * Shows or hides the Sidebar based on the current state.\n *\n * @returns {void}\n */\n Sidebar.prototype.toggle = function () {\n if (this.element.classList.contains(OPEN)) {\n this.hide();\n }\n else {\n this.show();\n }\n };\n Sidebar.prototype.getState = function () {\n return this.element.classList.contains(OPEN) ? true : false;\n };\n Sidebar.prototype.setMediaQuery = function () {\n if (this.mediaQuery) {\n var media = false;\n if (typeof (this.mediaQuery) === 'string') {\n media = window.matchMedia(this.mediaQuery).matches;\n }\n else {\n media = (this.mediaQuery).matches;\n }\n if (media && this.windowWidth !== window.innerWidth) {\n this.show();\n }\n else if (this.getState() && this.windowWidth !== window.innerWidth) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.resize = function () {\n if (!isNullOrUndefined(this.width) && this.width !== 'auto' && typeof this.width === 'string' && !this.width.includes('px')) {\n this.setType(this.type);\n }\n if (this.type === 'Auto') {\n if (Browser.isDevice) {\n addClass([this.element], OVER);\n }\n else {\n addClass([this.element], PUSH);\n }\n }\n this.setMediaQuery();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.documentclickHandler = function (e) {\n if (closest(e.target, '.' + CONTROL$1 + '' + '.' + ROOT$1)) {\n return;\n }\n this.hide(e);\n };\n Sidebar.prototype.enableGestureHandler = function (args) {\n if (!this.isOpen && this.position === 'Left' && args.swipeDirection === 'Right' &&\n (args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n else if (this.isOpen && this.position === 'Left' && args.swipeDirection === 'Left') {\n this.hide(args.originalEvent);\n }\n else if (this.isOpen && this.position === 'Right' && args.swipeDirection === 'Right') {\n this.hide(args.originalEvent);\n }\n else if (!this.isOpen && this.position === 'Right' && args.swipeDirection === 'Left'\n && (window.innerWidth - args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n };\n Sidebar.prototype.setEnableGestures = function () {\n if (this.enableGestures) {\n this.mainContentEle = new Touch(document.body, { swipe: this.enableGestureHandler.bind(this) });\n this.sidebarEle = new Touch(this.element, { swipe: this.enableGestureHandler.bind(this) });\n }\n else {\n if (this.mainContentEle && this.sidebarEle) {\n this.mainContentEle.destroy();\n this.sidebarEle.destroy();\n }\n }\n };\n Sidebar.prototype.wireEvents = function () {\n this.setEnableGestures();\n EventHandler.add(window, 'resize', this.resize, this);\n };\n Sidebar.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resize);\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n if (this.mainContentEle) {\n this.mainContentEle.destroy();\n }\n if (this.sidebarEle) {\n this.sidebarEle.destroy();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SidebarModel} newProp - specifies newProp value.\n * @param {SidebarModel} oldProp - specifies oldProp value.\n * @returns {void}\n * @private\n *\n */\n Sidebar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n var isRendered = this.isServerRendered;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isOpen':\n if (this.isOpen) {\n this.show();\n }\n else {\n this.hide();\n }\n break;\n case 'width':\n this.setWidth();\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'animate':\n this.setAnimation();\n break;\n case 'type':\n this.checkType(false);\n removeClass([this.element], [VISIBILITY]);\n this.addClass();\n addClass([this.element], this.type === 'Auto' ? (Browser.isDevice ? ['e-over'] :\n ['e-push']) : ['e-' + this.type.toLowerCase()]);\n break;\n case 'position':\n this.element.style.transform = '';\n this.setDock();\n if (sibling) {\n sibling.style[this.position === 'Left' ? 'marginRight' : 'marginLeft'] = '0px';\n }\n if (this.position === 'Right') {\n removeClass([this.element], LEFT);\n addClass([this.element], RIGHT);\n }\n else {\n removeClass([this.element], RIGHT);\n addClass([this.element], LEFT);\n }\n this.setType(this.type);\n break;\n case 'showBackdrop':\n if (this.showBackdrop) {\n this.createBackDrop();\n }\n else {\n if (this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n }\n break;\n case 'target':\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (isNullOrUndefined(this.target)) {\n removeClass([this.element], SIDEBARABSOLUTE);\n removeClass([oldProp.target], CONTEXT);\n setStyleAttribute(sibling, { 'margin-left': 0, 'margin-right': 0 });\n document.body.insertAdjacentElement('afterbegin', this.element);\n }\n this.isServerRendered = false;\n _super.prototype.refresh.call(this);\n this.isServerRendered = isRendered;\n break;\n case 'closeOnDocumentClick':\n this.setCloseOnDocumentClick();\n break;\n case 'enableDock':\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'zIndex':\n this.setZindex();\n break;\n case 'mediaQuery':\n this.setMediaQuery();\n break;\n case 'enableGestures':\n this.setEnableGestures();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n }\n }\n };\n Sidebar.prototype.setType = function (type) {\n var elementWidth = this.element.getBoundingClientRect().width;\n this.setZindex();\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n if (!Browser.isDevice && this.type !== 'Auto' && !(this.type === 'Over' && this.enableDock)) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = '0px';\n }\n }\n var margin = this.position === 'Left' ? elementWidth + 'px' : elementWidth + 'px';\n var eleWidth = this.position === 'Left' ? elementWidth : -(elementWidth);\n removeClass([this.element], [PUSH, OVER, SLIDE]);\n switch (type) {\n case 'Push':\n addClass([this.element], [PUSH]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n }\n break;\n case 'Slide':\n addClass([this.element], [SLIDE]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style.transform = 'translateX(' + eleWidth + 'px)';\n }\n break;\n case 'Over':\n addClass([this.element], [OVER]);\n if (this.enableDock && (this.element.classList.contains(CLOSE) || this.isOpen)) {\n if (sibling) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = this.setDimension(this.dockSize);\n }\n }\n break;\n case 'Auto':\n addClass([this.element], [TRASITION]);\n if (Browser.isDevice) {\n if (sibling && (this.enableDock) && !this.getState()) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n addClass([this.element], PUSH);\n }\n else {\n addClass([this.element], OVER);\n }\n }\n else {\n addClass([this.element], PUSH);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n }\n }\n this.createBackDrop();\n }\n };\n /**\n * Removes the control from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @returns {void}\n *\n */\n Sidebar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.target) {\n removeClass([this.target], CONTEXT);\n }\n this.destroyBackDrop();\n if (this.element) {\n removeClass([this.element], [OPEN, CLOSE, PUSH, SLIDE, OVER, LEFT, RIGHT, TRASITION, DISABLEANIMATION]);\n removeClass([this.element], SIDEBARABSOLUTE);\n this.element.style.width = '';\n this.element.style.zIndex = '';\n this.element.style.transform = '';\n if (!isNullOrUndefined(this.sidebarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n this.windowWidth = null;\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (!isNullOrUndefined(sibling)) {\n sibling.style.margin = '';\n sibling.style.transform = '';\n }\n this.unWireEvents();\n };\n __decorate$9([\n Property('auto')\n ], Sidebar.prototype, \"dockSize\", void 0);\n __decorate$9([\n Property(null)\n ], Sidebar.prototype, \"mediaQuery\", void 0);\n __decorate$9([\n Property(false)\n ], Sidebar.prototype, \"enableDock\", void 0);\n __decorate$9([\n Property('en-US')\n ], Sidebar.prototype, \"locale\", void 0);\n __decorate$9([\n Property(false)\n ], Sidebar.prototype, \"enablePersistence\", void 0);\n __decorate$9([\n Property(true)\n ], Sidebar.prototype, \"enableGestures\", void 0);\n __decorate$9([\n Property(false)\n ], Sidebar.prototype, \"isOpen\", void 0);\n __decorate$9([\n Property(false)\n ], Sidebar.prototype, \"enableRtl\", void 0);\n __decorate$9([\n Property(true)\n ], Sidebar.prototype, \"animate\", void 0);\n __decorate$9([\n Property('auto')\n ], Sidebar.prototype, \"height\", void 0);\n __decorate$9([\n Property(false)\n ], Sidebar.prototype, \"closeOnDocumentClick\", void 0);\n __decorate$9([\n Property('Left')\n ], Sidebar.prototype, \"position\", void 0);\n __decorate$9([\n Property(null)\n ], Sidebar.prototype, \"target\", void 0);\n __decorate$9([\n Property(false)\n ], Sidebar.prototype, \"showBackdrop\", void 0);\n __decorate$9([\n Property('Auto')\n ], Sidebar.prototype, \"type\", void 0);\n __decorate$9([\n Property('auto')\n ], Sidebar.prototype, \"width\", void 0);\n __decorate$9([\n Property(1000)\n ], Sidebar.prototype, \"zIndex\", void 0);\n __decorate$9([\n Event()\n ], Sidebar.prototype, \"created\", void 0);\n __decorate$9([\n Event()\n ], Sidebar.prototype, \"close\", void 0);\n __decorate$9([\n Event()\n ], Sidebar.prototype, \"open\", void 0);\n __decorate$9([\n Event()\n ], Sidebar.prototype, \"change\", void 0);\n __decorate$9([\n Event()\n ], Sidebar.prototype, \"destroyed\", void 0);\n Sidebar = __decorate$9([\n NotifyPropertyChanges\n ], Sidebar);\n return Sidebar;\n}(Component));\n\nvar __extends$a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ICONRIGHT = 'e-icon-right';\nvar ITEMTEXTCLASS = 'e-breadcrumb-text';\nvar ICONCLASS = 'e-breadcrumb-icon';\nvar MENUCLASS = 'e-breadcrumb-menu';\nvar ITEMCLASS = 'e-breadcrumb-item';\nvar POPUPCLASS = 'e-breadcrumb-popup';\nvar WRAPMODECLASS = 'e-breadcrumb-wrap-mode';\nvar SCROLLMODECLASS = 'e-breadcrumb-scroll-mode';\nvar TABINDEX = 'tabindex';\nvar DISABLEDCLASS = 'e-disabled';\nvar ARIADISABLED = 'aria-disabled';\nvar DOT = '.';\n/**\n * Defines the Breadcrumb overflow modes.\n */\nvar BreadcrumbOverflowMode;\n(function (BreadcrumbOverflowMode) {\n /**\n * Hidden mode shows the maximum number of items possible in the container space and hides the remaining items.\n * Clicking on a previous item will make the hidden item visible.\n */\n BreadcrumbOverflowMode[\"Hidden\"] = \"Hidden\";\n /**\n * Collapsed mode shows the first and last Breadcrumb items and hides the remaining items with a collapsed icon.\n * When the collapsed icon is clicked, all items become visible and navigable.\n */\n BreadcrumbOverflowMode[\"Collapsed\"] = \"Collapsed\";\n /**\n * Menu mode shows the number of Breadcrumb items that can be accommodated within the container space and creates a submenu with the remaining items.\n */\n BreadcrumbOverflowMode[\"Menu\"] = \"Menu\";\n /**\n * Wrap mode wraps the items to multiple lines when the Breadcrumb’s width exceeds the container space.\n */\n BreadcrumbOverflowMode[\"Wrap\"] = \"Wrap\";\n /**\n * Scroll mode shows an HTML scroll bar when the Breadcrumb’s width exceeds the container space.\n */\n BreadcrumbOverflowMode[\"Scroll\"] = \"Scroll\";\n /**\n * None mode shows all the items in a single line.\n */\n BreadcrumbOverflowMode[\"None\"] = \"None\";\n})(BreadcrumbOverflowMode || (BreadcrumbOverflowMode = {}));\nvar BreadcrumbItem = /** @__PURE__ @class */ (function (_super) {\n __extends$a(BreadcrumbItem, _super);\n function BreadcrumbItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$a([\n Property('')\n ], BreadcrumbItem.prototype, \"text\", void 0);\n __decorate$a([\n Property('')\n ], BreadcrumbItem.prototype, \"id\", void 0);\n __decorate$a([\n Property('')\n ], BreadcrumbItem.prototype, \"url\", void 0);\n __decorate$a([\n Property(null)\n ], BreadcrumbItem.prototype, \"iconCss\", void 0);\n __decorate$a([\n Property(false)\n ], BreadcrumbItem.prototype, \"disabled\", void 0);\n return BreadcrumbItem;\n}(ChildProperty));\n/**\n * Breadcrumb is a graphical user interface that helps to identify or highlight the current location within a hierarchical structure of websites.\n * The aim is to make the user aware of their current position in a hierarchy of website links.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Breadcrumb = /** @__PURE__ @class */ (function (_super) {\n __extends$a(Breadcrumb, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {BreadcrumbModel} options - Specifies the Breadcrumb model.\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function Breadcrumb(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = false;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n Breadcrumb.prototype.preRender = function () {\n // pre render code\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n Breadcrumb.prototype.render = function () {\n this.initialize();\n this.renderItems(this.items);\n this.wireEvents();\n };\n Breadcrumb.prototype.initialize = function () {\n this._maxItems = this.maxItems;\n if (isNullOrUndefined(this.element.getAttribute('aria-label'))) {\n this.element.setAttribute('aria-label', 'breadcrumb');\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n if (this.disabled) {\n this.element.classList.add(DISABLEDCLASS);\n this.element.setAttribute(ARIADISABLED, 'true');\n }\n if (this.overflowMode === 'Wrap') {\n this.element.classList.add(WRAPMODECLASS);\n }\n else if (this.overflowMode === 'Scroll') {\n this.element.classList.add(SCROLLMODECLASS);\n }\n this.initItems();\n this.initPvtProps();\n };\n Breadcrumb.prototype.initPvtProps = function () {\n if (this.overflowMode === 'Hidden' && this._maxItems > 0) {\n this.endIndex = this.getEndIndex();\n this.startIndex = this.endIndex + 1 - (this._maxItems - 1);\n }\n if (this.overflowMode === 'Menu') {\n if (this._maxItems >= 0) {\n this.startIndex = this._maxItems > 1 ? 1 : 0;\n this.endIndex = this.getEndIndex();\n this.popupUl = this.createElement('ul', { attrs: { TABINDEX: '0', 'role': 'menu' } });\n }\n else {\n this.startIndex = this.endIndex = null;\n }\n }\n };\n Breadcrumb.prototype.getEndIndex = function () {\n var _this = this;\n var endIndex;\n if (this.activeItem) {\n this.items.forEach(function (item, idx) {\n if (item.url === _this.activeItem || item.text === _this.activeItem) {\n endIndex = idx;\n }\n });\n }\n else {\n endIndex = this.items.length - 1;\n }\n return endIndex;\n };\n Breadcrumb.prototype.initItems = function () {\n if (!this.items.length) {\n var baseUri = void 0;\n var uri = void 0;\n var items = [];\n if (this.url) {\n var url = new URL(this.url, window.location.origin);\n baseUri = url.origin + '/';\n uri = url.href.split(baseUri)[1].split('/');\n }\n else {\n baseUri = window.location.origin + '/';\n uri = window.location.href.split(baseUri)[1].split('/');\n }\n items.push({ iconCss: 'e-icons e-home', url: baseUri });\n for (var i = 0; i < uri.length; i++) {\n if (uri[i]) {\n items.push({ text: uri[i], url: baseUri + uri[i] });\n baseUri += uri[i] + '/';\n }\n }\n this.setProperties({ items: items }, true);\n }\n };\n Breadcrumb.prototype.renderItems = function (items) {\n var _this = this;\n var item;\n var isSingleLevel;\n var isIconRight = this.element.classList.contains(ICONRIGHT);\n var itemsLength = items.length;\n if (itemsLength) {\n var isActiveItem = void 0;\n var isLastItem = void 0;\n var isLastItemInPopup_1;\n var j_1 = 0;\n var wrapDiv = void 0;\n var len = (itemsLength * 2) - 1;\n var isItemCancelled_1 = false;\n var ol = this.createElement('ol', { className: this.overflowMode === 'Wrap' ? 'e-breadcrumb-wrapped-ol' : '' });\n var firstOl = this.createElement('ol', { className: this.overflowMode === 'Wrap' ? 'e-breadcrumb-first-ol' : '' });\n var showIcon = this.hasField(items, 'iconCss');\n var isCollasped = (this.overflowMode === 'Collapsed' && this._maxItems > 0 && itemsLength > this._maxItems && !this.isExpanded);\n var isDefaultOverflowMode_1 = (this.overflowMode === 'Hidden' && this._maxItems > 0);\n if (this.overflowMode === 'Menu' && this.popupUl) {\n this.popupUl.innerHTML = '';\n }\n var listBaseOptions = {\n moduleName: this.getModuleName(),\n showIcon: showIcon,\n itemNavigable: true,\n itemCreated: function (args) {\n var isLastItem = args.curData.isLastItem;\n if (isLastItem && args.item.children.length && !_this.itemTemplate) {\n delete args.curData.isLastItem;\n if (!isLastItemInPopup_1 && !_this.enableActiveItemNavigation) {\n args.item.innerHTML = _this.createElement('span', { className: ITEMTEXTCLASS, innerHTML: args.item.children[0].innerHTML }).outerHTML;\n }\n }\n if (args.curData.iconCss && !args.curData.text && !_this.itemTemplate) {\n args.item.classList.add('e-icon-item');\n }\n if (isDefaultOverflowMode_1) {\n args.item.setAttribute('item-index', j_1.toString());\n }\n var eventArgs = {\n item: extend({}, args.curData.properties ?\n args.curData.properties : args.curData), element: args.item, cancel: false\n };\n _this.trigger('beforeItemRender', eventArgs);\n isItemCancelled_1 = eventArgs.cancel;\n var containsRightIcon = (isIconRight || eventArgs.element.classList.contains(ICONRIGHT));\n if (containsRightIcon && args.curData.iconCss && !_this.itemTemplate) {\n args.item.querySelector('.e-anchor-wrap').appendChild(args.item.querySelector(DOT + ICONCLASS));\n }\n if (eventArgs.item.disabled) {\n args.item.setAttribute(ARIADISABLED, 'true');\n args.item.classList.add(DISABLEDCLASS);\n }\n if (eventArgs.item.id) {\n args.item.setAttribute('id', eventArgs.item.id);\n }\n if ((eventArgs.item.disabled || _this.disabled) && args.item.children.length && !_this.itemTemplate) {\n args.item.children[0].setAttribute(TABINDEX, '-1');\n }\n if (args.curData.isEmptyUrl) {\n args.item.children[0].removeAttribute('href');\n if ((!isLastItem || (isLastItem && _this.enableActiveItemNavigation)) && !(eventArgs.item.disabled\n || _this.disabled)) {\n args.item.children[0].setAttribute(TABINDEX, '0');\n EventHandler.add(args.item.children[0], 'keydown', _this.keyDownHandler, _this);\n }\n }\n args.item.removeAttribute('role');\n if (isLastItem) {\n args.item.setAttribute('data-active-item', '');\n }\n if (!_this.itemTemplate) {\n _this.beforeItemRenderChanges(args.curData, eventArgs.item, args.item, containsRightIcon);\n }\n }\n };\n for (var i = 0; i < len; (i % 2 && j_1++), i++) {\n isActiveItem = (this.activeItem && (this.activeItem === items[j_1].url ||\n this.activeItem === items[j_1].text));\n if (isCollasped && i > 1 && i < len - 2) {\n continue;\n }\n else if (isDefaultOverflowMode_1 && ((j_1 < this.startIndex || j_1 > this.endIndex)\n && (i % 2 ? j_1 !== this.startIndex - 1 : true)) && j_1 !== 0) {\n continue;\n }\n if (i % 2) {\n // separator item\n wrapDiv = this.createElement('div', { className: 'e-breadcrumb-item-wrapper' });\n if ((this.separatorTemplate && this.separatorTemplate === '/') || isNullOrUndefined(this.separatorTemplate)) {\n listBaseOptions.template = initializeCSPTemplate(function () {\n return '/';\n });\n }\n else {\n listBaseOptions.template = this.separatorTemplate;\n }\n listBaseOptions.itemClass = 'e-breadcrumb-separator';\n isSingleLevel = false;\n item = [{ previousItem: items[j_1], nextItem: items[j_1 + 1] }];\n }\n else {\n // list item\n listBaseOptions.itemClass = '';\n if (this.itemTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listBaseOptions.template = this.itemTemplate;\n isSingleLevel = false;\n }\n else {\n isSingleLevel = true;\n }\n item = [extend({}, items[j_1].properties ?\n items[j_1].properties\n : items[j_1])];\n if (!item[0].url && !this.itemTemplate) {\n item = [extend({}, item[0], { isEmptyUrl: true, url: '#' })];\n }\n isLastItem = (isDefaultOverflowMode_1 || this.overflowMode === 'Menu') && (j_1 === this.endIndex);\n if (((i === len - 1 || isLastItem) && !this.itemTemplate) || isActiveItem) {\n item[0].isLastItem = true;\n }\n }\n var parent_1 = ol;\n var lastPopupItemIdx = this.startIndex + this.endIndex - this._maxItems;\n if (this.overflowMode === 'Menu' && ((j_1 >= this.startIndex && (j_1 <= lastPopupItemIdx && (i % 2 ? !(j_1 === lastPopupItemIdx) : true)) && this.endIndex >= this._maxItems && this._maxItems > 0) || this._maxItems === 0)) {\n if (i % 2) {\n continue;\n }\n else {\n parent_1 = this.popupUl;\n if (isLastItem) {\n isLastItemInPopup_1 = true;\n }\n }\n }\n else if (this.overflowMode === 'Wrap') {\n if (i === 0) {\n parent_1 = firstOl;\n }\n else {\n parent_1 = wrapDiv;\n }\n }\n var li = ListBase.createList(this.createElement, item, listBaseOptions, isSingleLevel, this).childNodes;\n if (!isItemCancelled_1) {\n append(li, parent_1);\n }\n else if (isDefaultOverflowMode_1 || isCollasped || this.overflowMode === 'Menu' || this.overflowMode === 'Wrap') {\n items.splice(j_1, 1);\n this.initPvtProps();\n return this.reRenderItems();\n }\n else if ((i === len - 1 || isLastItem)) {\n remove(parent_1.lastElementChild);\n }\n if (this.overflowMode === 'Wrap' && i !== 0 && i % 2 === 0) {\n ol.appendChild(wrapDiv);\n }\n if (isCollasped && i === 1) {\n var li_1 = this.createElement('li', { className: 'e-icons e-breadcrumb-collapsed', attrs: { TABINDEX: '0' } });\n EventHandler.add(li_1, 'keyup', this.expandHandler, this);\n ol.appendChild(li_1);\n }\n if (this.overflowMode === 'Menu' && this.startIndex === i && this.endIndex >= this._maxItems && this._maxItems >= 0) {\n var menu = this.getMenuElement();\n EventHandler.add(menu, 'keyup', this.keyDownHandler, this);\n ol.appendChild(menu);\n }\n if (isActiveItem || isLastItem) {\n break;\n }\n if (isItemCancelled_1) {\n i++;\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n setTimeout(function () {\n _this.calculateMaxItems();\n }, 5);\n }\n if (this.overflowMode === 'Wrap') {\n this.element.appendChild(firstOl);\n }\n this.element.appendChild(ol);\n if (!this.isReact) {\n this.calculateMaxItems();\n }\n }\n };\n Breadcrumb.prototype.calculateMaxItems = function () {\n if (this.overflowMode === 'Hidden' || this.overflowMode === 'Collapsed' || this.overflowMode === 'Menu') {\n var maxItems = void 0;\n var width = this.element.offsetWidth;\n var liElems = [].slice.call(this.element.children[0].children).reverse();\n var liWidth = this.overflowMode === 'Menu' ? 0 : liElems[liElems.length - 1].offsetWidth + (liElems[liElems.length - 2] ? liElems[liElems.length - 2].offsetWidth : 0);\n if (this.overflowMode === 'Menu') {\n var menuEle = this.getMenuElement();\n this.element.appendChild(menuEle);\n liWidth += menuEle.offsetWidth;\n remove(menuEle);\n }\n for (var i = 0; i < liElems.length - 2; i++) {\n if (liWidth > width) {\n maxItems = Math.ceil((i - 1) / 2) + ((this.overflowMode === 'Menu' && i <= 2) ? 0 : 1);\n if (((this.maxItems > maxItems && !(this.maxItems > -1 && maxItems === -1)) ||\n this.maxItems === -1) && this._maxItems !== maxItems) {\n this._maxItems = maxItems;\n this.initPvtProps();\n return this.reRenderItems();\n }\n else {\n break;\n }\n }\n else {\n if (this.overflowMode === 'Menu' && i === 2) {\n liWidth += liElems[liElems.length - 1].offsetWidth + liElems[liElems.length - 2].offsetWidth;\n if (liWidth > width) {\n this._maxItems = 1;\n this.initPvtProps();\n return this.reRenderItems();\n }\n }\n if (!(this.overflowMode === 'Menu' && liElems[i].classList.contains(MENUCLASS))) {\n liWidth += liElems[i].offsetWidth;\n }\n }\n }\n }\n else if ((this.overflowMode === 'Wrap' || this.overflowMode === 'Scroll') && this._maxItems > 0) {\n var width = 0;\n var liElems = this.element.querySelectorAll(DOT + ITEMCLASS);\n if (liElems.length > this._maxItems + this._maxItems - 1) {\n for (var i = this.overflowMode === 'Wrap' ? 1 : 0; i < this._maxItems + this._maxItems - 1; i++) {\n width += liElems[i].offsetWidth;\n }\n width = width + 5 + (parseInt(getComputedStyle(this.element.children[0]).paddingLeft, 10) * 2);\n if (this.overflowMode === 'Wrap') {\n this.element.querySelector('.e-breadcrumb-wrapped-ol').style.width = width + 'px';\n }\n else {\n this.element.style.width = width + 'px';\n }\n }\n }\n };\n Breadcrumb.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 Breadcrumb.prototype.getMenuElement = function () {\n return this.createElement('li', { className: 'e-icons e-breadcrumb-menu', attrs: { TABINDEX: '0' } });\n };\n Breadcrumb.prototype.beforeItemRenderChanges = function (prevItem, currItem, elem, isRightIcon) {\n var wrapElem = elem.querySelector('.e-anchor-wrap');\n if (wrapElem) {\n wrapElem.parentElement.setAttribute('aria-label', 'home');\n }\n if (currItem.text !== prevItem.text && wrapElem) {\n wrapElem.childNodes.forEach(function (child) {\n if (child.nodeType === Node.TEXT_NODE) {\n child.textContent = currItem.text;\n }\n });\n }\n if (currItem.iconCss !== prevItem.iconCss && wrapElem) { // wrapElem - for checking it is item not a separator\n var iconElem = elem.querySelector(DOT + ICONCLASS);\n if (iconElem) {\n if (currItem.iconCss) {\n removeClass([iconElem], prevItem.iconCss.split(' '));\n addClass([iconElem], currItem.iconCss.split(' '));\n }\n else {\n remove(iconElem);\n }\n }\n else if (currItem.iconCss) {\n var iconElem_1 = this.createElement('span', { className: ICONCLASS + ' ' + currItem.iconCss });\n if (isRightIcon) {\n append([iconElem_1], wrapElem);\n }\n else {\n wrapElem.insertBefore(iconElem_1, wrapElem.childNodes[0]);\n }\n }\n }\n if (currItem.url !== prevItem.url && this.enableNavigation) {\n var anchor = elem.querySelector('a.' + ITEMTEXTCLASS);\n if (anchor) {\n if (currItem.url) {\n anchor.setAttribute('href', currItem.url);\n }\n else {\n anchor.removeAttribute('href');\n }\n }\n }\n };\n Breadcrumb.prototype.reRenderItems = function () {\n if (this.overflowMode === 'Menu' && this.popupObj && this.popupObj.element.classList.contains('e-popup-open') && this.popupObj.element.querySelector('.e-edit-template')) {\n this.popupObj.hide();\n this.popupObj.destroy();\n this.isPopupCreated = false;\n detach(this.popupObj.element);\n }\n this.element.innerHTML = '';\n this.renderItems(this.items);\n };\n Breadcrumb.prototype.clickHandler = function (e) {\n var li = closest(e.target, DOT + ITEMCLASS + ':not(.e-breadcrumb-separator)');\n if (!this.enableNavigation) {\n e.preventDefault();\n }\n if (li && (closest(e.target, DOT + ITEMTEXTCLASS) || this.itemTemplate)) {\n var idx = void 0;\n if (this.overflowMode === 'Wrap') {\n idx = [].slice.call(this.element.querySelectorAll(DOT + ITEMCLASS)).indexOf(li);\n }\n else {\n idx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (this.overflowMode === 'Menu') {\n if (closest(e.target, DOT + POPUPCLASS)) {\n idx += this.startIndex;\n this.endIndex = idx;\n if (e.type === 'keydown') {\n this.documentClickHandler(e);\n }\n }\n else if (this.element.querySelector(DOT + MENUCLASS)) {\n if (idx > [].slice.call(this.element.children[0].children).indexOf(this.element.querySelector(DOT + MENUCLASS))) {\n idx += (this.popupUl.childElementCount * 2) - 2;\n idx = Math.floor(idx / 2);\n this.endIndex = idx;\n }\n else {\n this.startIndex = this.endIndex = idx;\n }\n }\n else {\n idx = Math.floor(idx / 2);\n this.startIndex = this.endIndex = idx;\n }\n }\n else {\n idx = Math.floor(idx / 2);\n }\n if (this.overflowMode === 'Hidden' && this._maxItems > 0 && this.endIndex !== 0) {\n idx = parseInt(li.getAttribute('item-index'), 10);\n if (this.startIndex > 1) {\n this.startIndex -= (this.endIndex - idx);\n }\n this.endIndex = idx;\n }\n var itemClickArgs = { element: li,\n item: this.items[idx], event: e, cancel: false };\n this.trigger('itemClick', itemClickArgs);\n if (itemClickArgs.cancel) {\n return;\n }\n if (this.items[idx]) {\n this.activeItem = this.items[idx].url || this.items[idx].text;\n }\n this.dataBind();\n }\n if (e.target.classList.contains('e-breadcrumb-collapsed')) {\n this.isExpanded = true;\n this.reRenderItems();\n }\n if (e.target.classList.contains(MENUCLASS) && !this.isPopupCreated) {\n this.renderPopup();\n }\n };\n Breadcrumb.prototype.renderPopup = function () {\n var _this = this;\n var wrapper = this.createElement('div', { className: POPUPCLASS + ' ' + this.cssClass + (this.enableRtl ? ' e-rtl' : '') });\n document.body.appendChild(wrapper);\n this.isPopupCreated = true;\n this.popupObj = new Popup(wrapper, {\n content: this.popupUl,\n relateTo: this.element.querySelector(DOT + MENUCLASS),\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n collision: { X: 'fit', Y: 'flip' },\n open: function () {\n if (_this.popupUl) {\n _this.popupUl.focus();\n }\n }\n });\n this.popupWireEvents();\n this.popupObj.show();\n };\n Breadcrumb.prototype.documentClickHandler = function (e) {\n if (this.overflowMode === 'Menu' && this.popupObj && this.popupObj.element.classList.contains('e-popup-open') && !closest(e.target, DOT + MENUCLASS) && !closest(e.target, DOT + 'e-edit-template')) {\n this.popupObj.hide();\n this.popupObj.destroy();\n this.isPopupCreated = false;\n detach(this.popupObj.element);\n }\n };\n Breadcrumb.prototype.resize = function () {\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n };\n Breadcrumb.prototype.expandHandler = function (e) {\n if (e.key === 'Enter') {\n this.isExpanded = true;\n this.reRenderItems();\n }\n };\n Breadcrumb.prototype.keyDownHandler = function (e) {\n if (e.key === 'Enter') {\n this.clickHandler(e);\n }\n };\n Breadcrumb.prototype.popupKeyDownHandler = function (e) {\n if (e.key === 'Escape') {\n this.documentClickHandler(e);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {BreadcrumbModel} newProp - Specifies the new properties.\n * @param {BreadcrumbModel} oldProp - Specifies the old properties.\n * @returns {void}\n */\n Breadcrumb.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 'items':\n case 'enableActiveItemNavigation':\n this.reRenderItems();\n break;\n case 'activeItem':\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n break;\n case 'overflowMode':\n case 'maxItems':\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n if (oldProp.overflowMode === 'Wrap') {\n this.element.classList.remove(WRAPMODECLASS);\n }\n else if (newProp.overflowMode === 'Wrap') {\n this.element.classList.add(WRAPMODECLASS);\n }\n if (oldProp.overflowMode === 'Scroll') {\n this.element.classList.remove(SCROLLMODECLASS);\n }\n else if (newProp.overflowMode === 'Scroll') {\n this.element.classList.add(SCROLLMODECLASS);\n }\n break;\n case 'url':\n this.initItems();\n this.reRenderItems();\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 if ((oldProp.cssClass && oldProp.cssClass.indexOf(ICONRIGHT) > -1) && !(newProp.cssClass &&\n newProp.cssClass.indexOf(ICONRIGHT) > -1) || !(oldProp.cssClass && oldProp.cssClass.indexOf(ICONRIGHT) > -1) &&\n (newProp.cssClass && newProp.cssClass.indexOf(ICONRIGHT) > -1)) {\n this.reRenderItems();\n }\n break;\n case 'enableRtl':\n this.element.classList.toggle('e-rtl');\n break;\n case 'disabled':\n this.element.classList.toggle(DISABLEDCLASS);\n this.element.setAttribute(ARIADISABLED, newProp.disabled + '');\n break;\n }\n }\n };\n Breadcrumb.prototype.wireEvents = function () {\n this.delegateClickHanlder = this.documentClickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHanlder, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resize.bind(this));\n };\n Breadcrumb.prototype.popupWireEvents = function () {\n EventHandler.add(this.popupObj.element, 'click', this.clickHandler, this);\n EventHandler.add(this.popupObj.element, 'keydown', this.popupKeyDownHandler, this);\n };\n Breadcrumb.prototype.unWireEvents = function () {\n EventHandler.remove(document, 'click', this.delegateClickHanlder);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n window.removeEventListener('resize', this.resize.bind(this));\n if (this.popupObj) {\n EventHandler.remove(this.popupObj.element, 'click', this.clickHandler);\n EventHandler.remove(this.popupObj.element, 'keydown', this.popupKeyDownHandler);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Breadcrumb.prototype.getPersistData = function () {\n return this.addOnPersist(['activeItem']);\n };\n /**\n * Get module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Breadcrumb.prototype.getModuleName = function () {\n return 'breadcrumb';\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Breadcrumb.prototype.destroy = function () {\n var _this = this;\n if (this.popupObj && this.popupObj.element.classList.contains('e-popup-open')) {\n this.popupObj.destroy();\n this.isPopupCreated = false;\n detach(this.popupObj.element);\n }\n var classes = [];\n var attributes = ['aria-label'];\n if (this.cssClass) {\n classes.concat(this.cssClass.split(' '));\n }\n if (this.enableRtl) {\n classes.push('e-rtl');\n }\n if (this.disabled) {\n classes.push(DISABLEDCLASS);\n attributes.push(ARIADISABLED);\n }\n if (this.overflowMode === 'Wrap') {\n classes.push(WRAPMODECLASS);\n }\n else if (this.overflowMode === 'Scroll') {\n classes.push(SCROLLMODECLASS);\n }\n this.unWireEvents();\n this.element.innerHTML = '';\n removeClass([this.element], classes);\n attributes.forEach(function (attribute) {\n _this.element.removeAttribute(attribute);\n });\n _super.prototype.destroy.call(this);\n };\n __decorate$a([\n Property('')\n ], Breadcrumb.prototype, \"url\", void 0);\n __decorate$a([\n Collection([], BreadcrumbItem)\n ], Breadcrumb.prototype, \"items\", void 0);\n __decorate$a([\n Property('')\n ], Breadcrumb.prototype, \"activeItem\", void 0);\n __decorate$a([\n Property(-1)\n ], Breadcrumb.prototype, \"maxItems\", void 0);\n __decorate$a([\n Property('Menu')\n ], Breadcrumb.prototype, \"overflowMode\", void 0);\n __decorate$a([\n Property('')\n ], Breadcrumb.prototype, \"cssClass\", void 0);\n __decorate$a([\n Property(null)\n ], Breadcrumb.prototype, \"itemTemplate\", void 0);\n __decorate$a([\n Property('/')\n ], Breadcrumb.prototype, \"separatorTemplate\", void 0);\n __decorate$a([\n Property(true)\n ], Breadcrumb.prototype, \"enableNavigation\", void 0);\n __decorate$a([\n Property(false)\n ], Breadcrumb.prototype, \"enableActiveItemNavigation\", void 0);\n __decorate$a([\n Property(false)\n ], Breadcrumb.prototype, \"disabled\", void 0);\n __decorate$a([\n Property('')\n ], Breadcrumb.prototype, \"locale\", void 0);\n __decorate$a([\n Event()\n ], Breadcrumb.prototype, \"beforeItemRender\", void 0);\n __decorate$a([\n Event()\n ], Breadcrumb.prototype, \"itemClick\", void 0);\n __decorate$a([\n Event()\n ], Breadcrumb.prototype, \"created\", void 0);\n Breadcrumb = __decorate$a([\n NotifyPropertyChanges\n ], Breadcrumb);\n return Breadcrumb;\n}(Component));\n\nvar __extends$b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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// Constant variables\nvar CLS_CAROUSEL = 'e-carousel';\nvar CLS_ACTIVE$2 = 'e-active';\nvar CLS_RTL$5 = 'e-rtl';\nvar CLS_PARTIAL = 'e-partial';\nvar CLS_SWIPE = 'e-swipe';\nvar CLS_SLIDE_CONTAINER = 'e-carousel-slide-container';\nvar CLS_ITEMS$2 = 'e-carousel-items';\nvar CLS_CLONED = 'e-cloned';\nvar CLS_ITEM$3 = 'e-carousel-item';\nvar CLS_PREVIOUS = 'e-previous';\nvar CLS_NEXT = 'e-next';\nvar CLS_PREV_ICON = 'e-previous-icon';\nvar CLS_NEXT_ICON = 'e-next-icon';\nvar CLS_NAVIGATORS = 'e-carousel-navigators';\nvar CLS_INDICATORS = 'e-carousel-indicators';\nvar CLS_INDICATOR_BARS = 'e-indicator-bars';\nvar CLS_INDICATOR_BAR = 'e-indicator-bar';\nvar CLS_INDICATOR$1 = 'e-indicator';\nvar CLS_ICON$1 = 'e-icons';\nvar CLS_PLAY_PAUSE = 'e-play-pause';\nvar CLS_PLAY_ICON = 'e-play-icon';\nvar CLS_PAUSE_ICON = 'e-pause-icon';\nvar CLS_PREV_BUTTON = 'e-previous-button';\nvar CLS_NEXT_BUTTON = 'e-next-button';\nvar CLS_PLAY_BUTTON = 'e-play-button';\nvar CLS_FLAT = 'e-flat';\nvar CLS_ROUND = 'e-round';\nvar CLS_HOVER_ARROWS = 'e-hover-arrows';\nvar CLS_HOVER = 'e-carousel-hover';\nvar CLS_TEMPLATE$2 = 'e-template';\nvar CLS_SLIDE_ANIMATION = 'e-carousel-slide-animation';\nvar CLS_FADE_ANIMATION = 'e-carousel-fade-animation';\nvar CLS_CUSTOM_ANIMATION = 'e-carousel-custom-animation';\nvar CLS_ANIMATION_NONE = 'e-carousel-animation-none';\nvar CLS_PREV_SLIDE = 'e-prev';\nvar CLS_NEXT_SLIDE = 'e-next';\nvar CLS_TRANSITION_START = 'e-transition-start';\nvar CLS_TRANSITION_END = 'e-transition-end';\n/**\n * Specifies the action (touch & mouse) which enables the slide swiping action in carousel.\n * * Touch - Enables or disables the swiping action in touch interaction.\n * * Mouse - Enables or disables the swiping action in mouse interaction.\n *\n * @aspNumberEnum\n */\nvar CarouselSwipeMode;\n(function (CarouselSwipeMode) {\n /** Enables or disables the swiping action in touch interaction. */\n CarouselSwipeMode[CarouselSwipeMode[\"Touch\"] = 1] = \"Touch\";\n /** Enables or disables the swiping action in mouse interaction. */\n CarouselSwipeMode[CarouselSwipeMode[\"Mouse\"] = 2] = \"Mouse\";\n})(CarouselSwipeMode || (CarouselSwipeMode = {}));\n/** Specifies the carousel individual item. */\nvar CarouselItem = /** @__PURE__ @class */ (function (_super) {\n __extends$b(CarouselItem, _super);\n function CarouselItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$b([\n Property()\n ], CarouselItem.prototype, \"cssClass\", void 0);\n __decorate$b([\n Property()\n ], CarouselItem.prototype, \"interval\", void 0);\n __decorate$b([\n Property()\n ], CarouselItem.prototype, \"template\", void 0);\n __decorate$b([\n Property()\n ], CarouselItem.prototype, \"htmlAttributes\", void 0);\n return CarouselItem;\n}(ChildProperty));\nvar Carousel = /** @__PURE__ @class */ (function (_super) {\n __extends$b(Carousel, _super);\n /**\n * Constructor for creating the Carousel widget\n *\n * @param {CarouselModel} options Accepts the carousel model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function Carousel(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isSwipe = false;\n return _this;\n }\n Carousel.prototype.getModuleName = function () {\n return CLS_CAROUSEL.replace('e-', '');\n };\n Carousel.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedIndex']);\n };\n Carousel.prototype.preRender = function () {\n this.keyConfigs = {\n home: 'home',\n end: 'end',\n space: 'space',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n var defaultLocale = {\n nextSlide: 'Next slide',\n of: 'of',\n pauseSlideTransition: 'Pause slide transition',\n playSlideTransition: 'Play slide transition',\n previousSlide: 'Previous slide',\n slide: 'Slide',\n slideShow: 'Slide show'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n Carousel.prototype.render = function () {\n this.initialize();\n this.renderSlides();\n this.renderNavigators();\n this.renderPlayButton();\n this.renderIndicators();\n this.applyAnimation();\n this.wireEvents();\n };\n Carousel.prototype.onPropertyChanged = function (newProp, oldProp) {\n var target;\n var rtlElement;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'animationEffect':\n this.applyAnimation();\n break;\n case 'cssClass':\n classList(this.element, [newProp.cssClass], [oldProp.cssClass]);\n break;\n case 'selectedIndex':\n this.setActiveSlide(this.selectedIndex, oldProp.selectedIndex > this.selectedIndex ? 'Previous' : 'Next');\n this.autoSlide();\n break;\n case 'htmlAttributes':\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n break;\n case 'enableTouchSwipe':\n if (!this.enableTouchSwipe && this.touchModule) {\n this.touchModule.destroy();\n }\n if (this.element.querySelector(\".\" + CLS_ITEMS$2)) {\n this.renderTouchActions();\n }\n break;\n case 'loop':\n if (this.loop && isNullOrUndefined(this.autoSlideInterval)) {\n this.applySlideInterval();\n }\n this.handleNavigatorsActions(this.selectedIndex);\n if (this.partialVisible || !(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n this.reRenderSlides();\n }\n break;\n case 'allowKeyboardInteraction':\n if (this.keyModule) {\n this.keyModule.destroy();\n this.keyModule = null;\n }\n if (newProp.allowKeyboardInteraction) {\n this.renderKeyboardActions();\n }\n break;\n case 'enableRtl':\n rtlElement = [].slice.call(this.element.querySelectorAll(\".\" + CLS_PREV_BUTTON + \",\\n .\" + CLS_NEXT_BUTTON + \", .\" + CLS_PLAY_BUTTON));\n rtlElement.push(this.element);\n if (this.enableRtl) {\n addClass(rtlElement, CLS_RTL$5);\n }\n else {\n removeClass(rtlElement, CLS_RTL$5);\n }\n if (this.partialVisible || !(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n var cloneCount = this.loop ? this.getNumOfItems() : 0;\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + cloneCount);\n }\n break;\n case 'buttonsVisibility':\n target = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n if (target) {\n switch (this.buttonsVisibility) {\n case 'Hidden':\n this.resetTemplates(['previousButtonTemplate', 'nextButtonTemplate']);\n remove(target);\n break;\n case 'VisibleOnHover':\n addClass([].slice.call(target.childNodes), CLS_HOVER_ARROWS);\n break;\n case 'Visible':\n removeClass([].slice.call(target.childNodes), CLS_HOVER_ARROWS);\n break;\n }\n }\n else {\n this.renderNavigators();\n this.renderPlayButton();\n }\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(this.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(this.height) });\n break;\n case 'autoPlay':\n if (this.showPlayButton && isNullOrUndefined(this.playButtonTemplate)) {\n this.playButtonClickHandler(null, true);\n }\n this.autoSlide();\n break;\n case 'interval':\n this.autoSlide();\n break;\n case 'showIndicators':\n case 'indicatorsType':\n target = this.element.querySelector(\".\" + CLS_INDICATORS);\n if (target) {\n this.resetTemplates(['indicatorsTemplate']);\n remove(target);\n }\n this.renderIndicators();\n break;\n case 'showPlayButton':\n target = this.element.querySelector(\".\" + CLS_PLAY_PAUSE);\n if (!this.showPlayButton && target) {\n remove(target);\n this.resetTemplates(['playButtonTemplate']);\n }\n this.renderPlayButton();\n break;\n case 'items':\n case 'dataSource': {\n var selectedData = prop === 'dataSource' ? this.dataSource : this.items;\n if (!isNullOrUndefined(selectedData) && selectedData.length > 0 && this.selectedIndex >= selectedData.length) {\n this.setActiveSlide(selectedData.length - 1, 'Previous');\n this.autoSlide();\n }\n this.reRenderSlides();\n this.reRenderIndicators();\n break;\n }\n case 'partialVisible':\n if (this.partialVisible) {\n addClass([this.element], CLS_PARTIAL);\n }\n else {\n removeClass([this.element], CLS_PARTIAL);\n }\n this.reRenderSlides();\n break;\n case 'swipeMode':\n EventHandler.remove(this.element, 'mousedown touchstart', this.swipeStart);\n EventHandler.remove(this.element, 'mousemove touchmove', this.swiping);\n EventHandler.remove(this.element, 'mouseup touchend', this.swipStop);\n this.swipeModehandlers();\n this.reRenderSlides();\n break;\n }\n }\n };\n Carousel.prototype.reRenderSlides = function () {\n var target = this.element.querySelector(\".\" + CLS_ITEMS$2);\n if (target) {\n this.resetTemplates(['itemTemplate']);\n remove(target);\n }\n this.renderSlides();\n };\n Carousel.prototype.reRenderIndicators = function () {\n var target = this.element.querySelector(\".\" + CLS_INDICATORS);\n if (target) {\n this.resetTemplates(['indicatorsTemplate']);\n remove(target);\n }\n this.renderIndicators();\n };\n Carousel.prototype.initialize = function () {\n var carouselClasses = [];\n carouselClasses.push(CLS_CAROUSEL);\n if (this.cssClass) {\n carouselClasses.push(this.cssClass);\n }\n if (this.enableRtl) {\n carouselClasses.push(CLS_RTL$5);\n }\n if (this.partialVisible) {\n carouselClasses.push(CLS_PARTIAL);\n }\n if (!(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n carouselClasses.push(CLS_SWIPE);\n }\n addClass([this.element], carouselClasses);\n setStyleAttribute(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n attributes(this.element, { 'role': 'group', 'aria-roledescription': 'carousel', 'aria-label': this.localeObj.getConstant('slideShow') });\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n };\n Carousel.prototype.renderSlides = function () {\n var _this = this;\n var slideContainer = this.element.querySelector('.' + CLS_SLIDE_CONTAINER);\n if (!slideContainer) {\n slideContainer = this.createElement('div', { className: CLS_SLIDE_CONTAINER, attrs: { 'tabindex': '0', 'role': 'tabpanel' } });\n this.element.appendChild(slideContainer);\n }\n this.itemsContainer = this.createElement('div', { className: CLS_ITEMS$2, attrs: { 'aria-live': this.autoPlay ? 'off' : 'polite' } });\n slideContainer.appendChild(this.itemsContainer);\n var numOfItems = this.getNumOfItems();\n if (numOfItems > 0 && this.loop) {\n if (this.items.length > 0) {\n this.items.slice(-numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer, true);\n });\n }\n else if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n this.dataSource.slice(-numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.itemsContainer, true);\n });\n }\n }\n if (this.items.length > 0) {\n this.slideItems = this.items;\n this.items.forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer);\n });\n }\n else if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n this.slideItems = this.dataSource;\n this.dataSource.forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.itemsContainer);\n });\n }\n if (numOfItems > 0 && this.loop) {\n if (this.items.length > 0) {\n this.items.slice(0, numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer, true);\n });\n }\n else if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n this.dataSource.slice(0, numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.itemsContainer, true);\n });\n }\n }\n this.renderTemplates();\n this.itemsContainer.style.setProperty('--carousel-items-count', \"\" + this.itemsContainer.children.length);\n var slideWidth = isNullOrUndefined(this.itemsContainer.firstElementChild) ? 0 :\n this.itemsContainer.firstElementChild.clientWidth;\n this.itemsContainer.style.transitionProperty = 'none';\n var cloneCount = this.loop ? numOfItems : 0;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + cloneCount);\n this.autoSlide();\n this.renderTouchActions();\n this.renderKeyboardActions();\n };\n Carousel.prototype.getTranslateX = function (slideWidth, count) {\n if (count === void 0) { count = 1; }\n return this.enableRtl ? \"translateX(\" + (slideWidth) * (count) + \"px)\" :\n \"translateX(\" + -(slideWidth) * (count) + \"px)\";\n };\n Carousel.prototype.renderSlide = function (item, itemTemplate, index, container, isClone) {\n if (isClone === void 0) { isClone = false; }\n var itemEle = this.createElement('div', {\n id: getUniqueID('carousel_item'),\n className: CLS_ITEM$3 + \" \" + (item.cssClass ? item.cssClass : '') + \" \" + (this.selectedIndex === index && !isClone ? CLS_ACTIVE$2 : ''),\n attrs: {\n 'aria-hidden': this.selectedIndex === index && !isClone ? 'false' : 'true', 'data-index': index.toString(),\n 'role': 'group', 'aria-roledescription': 'slide'\n }\n });\n if (isClone) {\n itemEle.classList.add(CLS_CLONED);\n }\n if (!isNullOrUndefined(item.htmlAttributes)) {\n this.setHtmlAttributes(item.htmlAttributes, itemEle);\n }\n var templateId = this.element.id + '_template';\n var template = this.templateParser(itemTemplate)(item, this, 'itemTemplate', templateId, false);\n append(template, itemEle);\n container.appendChild(itemEle);\n };\n Carousel.prototype.renderNavigators = function () {\n if (this.buttonsVisibility === 'Hidden') {\n return;\n }\n var navigators = this.createElement('div', { className: CLS_NAVIGATORS });\n var itemsContainer = this.element.querySelector(\".\" + CLS_SLIDE_CONTAINER);\n itemsContainer.insertAdjacentElement('afterend', navigators);\n if (!isNullOrUndefined(this.slideItems) && this.slideItems.length > 1) {\n this.renderNavigatorButton('Previous');\n this.renderNavigatorButton('Next');\n }\n this.renderTemplates();\n };\n Carousel.prototype.renderNavigatorButton = function (direction) {\n var buttonContainer = this.createElement('div', {\n className: (direction === 'Previous' ? CLS_PREVIOUS : CLS_NEXT) + ' ' + (this.buttonsVisibility === 'VisibleOnHover' ? CLS_HOVER_ARROWS : '')\n });\n if (direction === 'Previous' && this.previousButtonTemplate) {\n addClass([buttonContainer], CLS_TEMPLATE$2);\n var templateId = this.element.id + '_previousButtonTemplate';\n var template = this.templateParser(this.previousButtonTemplate)({ type: 'Previous' }, this, 'previousButtonTemplate', templateId, false);\n append(template, buttonContainer);\n }\n else if (direction === 'Next' && this.nextButtonTemplate) {\n addClass([buttonContainer], CLS_TEMPLATE$2);\n var templateId = this.element.id + '_nextButtonTemplate';\n var template = this.templateParser(this.nextButtonTemplate)({ type: 'Next' }, this, 'nextButtonTemplate', templateId, false);\n append(template, buttonContainer);\n }\n else {\n var button = this.createElement('button', {\n attrs: { 'aria-label': this.localeObj.getConstant(direction === 'Previous' ? 'previousSlide' : 'nextSlide'), 'type': 'button' }\n });\n var buttonObj = new Button({\n cssClass: CLS_FLAT + ' ' + CLS_ROUND + ' ' + (direction === 'Previous' ? CLS_PREV_BUTTON : CLS_NEXT_BUTTON),\n iconCss: CLS_ICON$1 + ' ' + (direction === 'Previous' ? CLS_PREV_ICON : CLS_NEXT_ICON),\n enableRtl: this.enableRtl,\n disabled: !this.loop && this.selectedIndex === (direction === 'Previous' ? 0 : this.slideItems.length - 1)\n });\n buttonObj.appendTo(button);\n buttonContainer.appendChild(button);\n }\n this.element.querySelector('.' + CLS_NAVIGATORS).appendChild(buttonContainer);\n EventHandler.add(buttonContainer, 'click', this.navigatorClickHandler, this);\n };\n Carousel.prototype.renderPlayButton = function () {\n if (isNullOrUndefined(this.slideItems) || this.buttonsVisibility === 'Hidden' || !this.showPlayButton || this.slideItems.length <= 1) {\n return;\n }\n var playPauseWrap = this.createElement('div', {\n className: CLS_PLAY_PAUSE + ' ' + (this.buttonsVisibility === 'VisibleOnHover' ? CLS_HOVER_ARROWS : '')\n });\n if (this.playButtonTemplate) {\n addClass([playPauseWrap], CLS_TEMPLATE$2);\n var templateId = this.element.id + '_playButtonTemplate';\n var template = this.templateParser(this.playButtonTemplate)({}, this, 'playButtonTemplate', templateId, false);\n append(template, playPauseWrap);\n }\n else {\n var playButton = this.createElement('button', {\n attrs: { 'aria-label': this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'), 'type': 'button' }\n });\n var isLastSlide = this.selectedIndex === this.slideItems.length - 1 && !this.loop;\n var buttonObj = new Button({\n cssClass: CLS_FLAT + ' ' + CLS_ROUND + ' ' + CLS_PLAY_BUTTON,\n iconCss: CLS_ICON$1 + ' ' + (this.autoPlay && !isLastSlide ? CLS_PAUSE_ICON : CLS_PLAY_ICON),\n isToggle: true,\n enableRtl: this.enableRtl\n });\n if (isLastSlide) {\n this.setProperties({ autoPlay: false }, true);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('playSlideTransition'));\n this.itemsContainer.setAttribute('aria-live', 'polite');\n }\n buttonObj.appendTo(playButton);\n playPauseWrap.appendChild(playButton);\n }\n var navigators = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n navigators.insertBefore(playPauseWrap, navigators.lastElementChild);\n this.renderTemplates();\n EventHandler.add(playPauseWrap, 'click', this.playButtonClickHandler, this);\n };\n Carousel.prototype.renderIndicators = function () {\n var _this = this;\n if (!this.showIndicators || isNullOrUndefined(this.indicatorsType)) {\n return;\n }\n var indicatorClass = 'e-default';\n if (!this.indicatorsTemplate) {\n indicatorClass = \"e-\" + this.indicatorsType.toLowerCase();\n }\n var indicatorWrap = this.createElement('div', { className: CLS_INDICATORS + \" \" + indicatorClass });\n var indicatorBars = this.createElement('div', { className: CLS_INDICATOR_BARS });\n indicatorWrap.appendChild(indicatorBars);\n var progress;\n if (this.slideItems) {\n switch (this.indicatorsType) {\n case 'Fraction':\n if (this.indicatorsTemplate) {\n this.renderIndicatorTemplate(indicatorBars, this.selectedIndex + 1);\n }\n else {\n indicatorBars.innerText = this.selectedIndex + 1 + \" / \" + this.slideItems.length;\n }\n break;\n case 'Progress':\n if (this.indicatorsTemplate) {\n this.renderIndicatorTemplate(indicatorBars, this.selectedIndex + 1);\n }\n else {\n progress = this.createElement('div', { className: CLS_INDICATOR_BAR });\n progress.style.setProperty('--carousel-items-current', \"\" + (this.selectedIndex + 1));\n progress.style.setProperty('--carousel-items-count', \"\" + this.slideItems.length);\n indicatorBars.appendChild(progress);\n }\n break;\n case 'Default':\n case 'Dynamic':\n this.slideItems.forEach(function (item, index) {\n var indicatorBar = _this.createElement('div', {\n className: CLS_INDICATOR_BAR + ' ' + (_this.selectedIndex === index ? CLS_ACTIVE$2 : _this.selectedIndex - 1 === index ? CLS_PREV_SLIDE : _this.selectedIndex + 1 === index ? CLS_NEXT_SLIDE : ''),\n attrs: { 'data-index': index.toString(), 'aria-current': _this.selectedIndex === index ? 'true' : 'false' }\n });\n indicatorBar.style.setProperty('--carousel-items-current', \"\" + _this.selectedIndex);\n if (_this.indicatorsTemplate) {\n _this.renderIndicatorTemplate(indicatorBar, index);\n }\n else if (_this.indicatorsType === 'Default') {\n var indicator = _this.createElement('button', { className: CLS_INDICATOR$1, attrs: { 'type': 'button', 'aria-label': _this.localeObj.getConstant('slide') + ' ' + (index + 1) + ' ' + _this.localeObj.getConstant('of') + ' ' + _this.slideItems.length } });\n indicatorBar.appendChild(indicator);\n indicator.appendChild(_this.createElement('div', {}));\n var buttonObj = new Button({ cssClass: 'e-flat e-small' });\n buttonObj.appendTo(indicator);\n }\n indicatorBars.appendChild(indicatorBar);\n if (_this.indicatorsType === 'Default') {\n EventHandler.add(indicatorBar, 'click', _this.indicatorClickHandler, _this);\n }\n });\n break;\n }\n }\n this.element.appendChild(indicatorWrap);\n };\n Carousel.prototype.renderIndicatorTemplate = function (indicatorBar, index) {\n if (index === void 0) { index = 0; }\n addClass([indicatorBar], CLS_TEMPLATE$2);\n var templateId = this.element.id + '_indicatorsTemplate';\n var template = this.templateParser(this.indicatorsTemplate)({ index: index, selectedIndex: this.selectedIndex }, this, 'indicatorsTemplate', templateId, false);\n append(template, indicatorBar);\n };\n Carousel.prototype.renderKeyboardActions = function () {\n if (!this.allowKeyboardInteraction) {\n return;\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n };\n Carousel.prototype.renderTouchActions = function () {\n if (!this.enableTouchSwipe) {\n return;\n }\n this.touchModule = new Touch(this.element, { swipe: this.swipeHandler.bind(this) });\n };\n Carousel.prototype.applyAnimation = function () {\n removeClass([this.element], [CLS_CUSTOM_ANIMATION, CLS_FADE_ANIMATION, CLS_SLIDE_ANIMATION, CLS_ANIMATION_NONE]);\n switch (this.animationEffect) {\n case 'Slide':\n addClass([this.element], CLS_SLIDE_ANIMATION);\n break;\n case 'Fade':\n addClass([this.element], CLS_FADE_ANIMATION);\n break;\n case 'None':\n addClass([this.element], CLS_ANIMATION_NONE);\n break;\n case 'Custom':\n addClass([this.element], CLS_CUSTOM_ANIMATION);\n break;\n }\n };\n Carousel.prototype.autoSlide = function () {\n if (isNullOrUndefined(this.slideItems) || this.slideItems.length <= 1) {\n return;\n }\n this.resetSlideInterval();\n this.applySlideInterval();\n };\n Carousel.prototype.autoSlideChange = function () {\n var activeSlide = this.element.querySelector(\".\" + CLS_ITEM$3 + \".\" + CLS_ACTIVE$2)\n || this.element.querySelector(\".\" + CLS_INDICATORS + \" .\" + CLS_ACTIVE$2);\n if (isNullOrUndefined(activeSlide)) {\n return;\n }\n var activeIndex = parseInt(activeSlide.dataset.index, 10);\n if (!this.loop && activeIndex === this.slideItems.length - 1) {\n this.resetSlideInterval();\n }\n else {\n var index = (activeIndex + 1) % this.slideItems.length;\n if (!this.element.classList.contains(CLS_HOVER)) {\n this.setActiveSlide(index, 'Next');\n }\n this.autoSlide();\n }\n };\n Carousel.prototype.applySlideInterval = function () {\n var _this = this;\n if (!this.autoPlay || this.element.classList.contains(CLS_HOVER)) {\n return;\n }\n var itemInterval = this.interval;\n if (this.items.length > 0 && !isNullOrUndefined(this.items[this.selectedIndex || 0].interval)) {\n itemInterval = this.items[this.selectedIndex || 0].interval;\n }\n this.autoSlideInterval = setInterval(function () { return _this.autoSlideChange(); }, itemInterval);\n };\n Carousel.prototype.resetSlideInterval = function () {\n clearInterval(this.autoSlideInterval);\n this.autoSlideInterval = null;\n };\n Carousel.prototype.getSlideIndex = function (direction) {\n var currentIndex = this.selectedIndex || 0;\n if (direction === 'Previous') {\n currentIndex--;\n if (currentIndex < 0) {\n currentIndex = this.slideItems.length - 1;\n }\n }\n else {\n currentIndex++;\n if (currentIndex === this.slideItems.length) {\n currentIndex = 0;\n }\n }\n return currentIndex;\n };\n Carousel.prototype.setActiveSlide = function (currentIndex, direction, isSwiped) {\n var _this = this;\n if (isSwiped === void 0) { isSwiped = false; }\n if (this.element.querySelectorAll(\".\" + CLS_ITEM$3 + \".\" + CLS_PREV_SLIDE + \",.\" + CLS_ITEM$3 + \".\" + CLS_NEXT_SLIDE).length > 0) {\n return;\n }\n currentIndex = isNullOrUndefined(currentIndex) ? 0 : currentIndex;\n var allSlides = [].slice.call(this.element.querySelectorAll(\".\" + CLS_ITEM$3 + \":not(.e-cloned)\"));\n var activeSlide = this.element.querySelector(\".\" + CLS_ITEM$3 + \".\" + CLS_ACTIVE$2);\n if (isNullOrUndefined(activeSlide) && this.showIndicators) {\n var activeIndicator = this.element.querySelector(\".\" + CLS_INDICATOR_BAR + \".\" + CLS_ACTIVE$2);\n var activeIndex_1 = parseInt(activeIndicator.dataset.index, 10);\n addClass([allSlides[parseInt(activeIndex_1.toString(), 10)]], CLS_ACTIVE$2);\n return;\n }\n else if (isNullOrUndefined(activeSlide)) {\n addClass([allSlides[parseInt(currentIndex.toString(), 10)]], CLS_ACTIVE$2);\n return;\n }\n var activeIndex = parseInt(activeSlide.dataset.index, 10);\n var currentSlide = allSlides[parseInt(currentIndex.toString(), 10)];\n var eventArgs = {\n currentIndex: activeIndex,\n nextIndex: currentIndex,\n currentSlide: activeSlide,\n nextSlide: currentSlide,\n slideDirection: direction,\n isSwiped: isSwiped,\n cancel: false\n };\n this.trigger('slideChanging', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ selectedIndex: currentIndex }, true);\n attributes(args.currentSlide, { 'aria-hidden': 'true' });\n attributes(args.nextSlide, { 'aria-hidden': 'false' });\n _this.refreshIndicators(activeIndex, currentIndex);\n _this.slideChangedEventArgs = {\n currentIndex: args.nextIndex,\n previousIndex: args.currentIndex,\n currentSlide: args.nextSlide,\n previousSlide: args.currentSlide,\n slideDirection: direction,\n isSwiped: isSwiped\n };\n var slideWidth = allSlides[parseInt(currentIndex.toString(), 10)].clientWidth;\n var numOfItems = _this.getNumOfItems();\n if (!_this.isSwipe) {\n _this.itemsContainer.style.transitionDuration = '0.6s';\n }\n _this.isSwipe = false;\n if ((_this.animationEffect === 'Fade')) {\n _this.itemsContainer.classList.add('e-fade-in-out');\n }\n else {\n _this.itemsContainer.style.transitionProperty = 'transform';\n }\n if (_this.loop) {\n if (_this.slideChangedEventArgs.currentIndex === 0 && _this.slideChangedEventArgs.slideDirection === 'Next') {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, allSlides.length + numOfItems);\n }\n else if (_this.slideChangedEventArgs.currentIndex === _this.slideItems.length - 1 && _this.slideChangedEventArgs.slideDirection === 'Previous') {\n _this.itemsContainer.style.transform = _this.partialVisible ? _this.getTranslateX(slideWidth) : 'translateX(0px)';\n }\n else {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, currentIndex + numOfItems);\n }\n }\n else {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, currentIndex);\n }\n if (_this.animationEffect === 'Slide') {\n if (direction === 'Previous') {\n addClass([args.nextSlide], CLS_PREV_SLIDE);\n args.nextSlide.setAttribute('data-slide-height', args.nextSlide.offsetHeight.toString());\n addClass([args.currentSlide, args.nextSlide], CLS_TRANSITION_END);\n }\n else {\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n args.nextSlide.setAttribute('data-slide-height', args.nextSlide.offsetHeight.toString());\n addClass([args.currentSlide, args.nextSlide], CLS_TRANSITION_START);\n }\n }\n else if (_this.animationEffect === 'Fade') {\n removeClass([args.currentSlide], CLS_ACTIVE$2);\n addClass([args.nextSlide], CLS_ACTIVE$2);\n }\n else if (_this.animationEffect === 'Custom') {\n if (direction === 'Previous') {\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n addClass([args.currentSlide], CLS_PREV_SLIDE);\n }\n else {\n addClass([args.currentSlide], CLS_PREV_SLIDE);\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n }\n }\n else {\n _this.onTransitionEnd();\n }\n _this.handleNavigatorsActions(currentIndex);\n });\n };\n Carousel.prototype.onTransitionEnd = function () {\n var _this = this;\n removeClass(this.element.querySelectorAll(\".\" + CLS_ITEMS$2), 'e-fade-in-out');\n var numOfItems = this.getNumOfItems();\n if (this.slideChangedEventArgs) {\n this.itemsContainer.style.transitionProperty = 'none';\n if (this.loop && (this.slideChangedEventArgs.currentIndex === 0 && this.slideChangedEventArgs.slideDirection === 'Next' ||\n this.slideChangedEventArgs.currentIndex === this.slideItems.length - 1 && this.slideChangedEventArgs.slideDirection === 'Previous')) {\n var slideWidth = this.slideChangedEventArgs.currentSlide.clientWidth;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.slideChangedEventArgs.currentIndex + numOfItems);\n }\n addClass([this.slideChangedEventArgs.currentSlide], CLS_ACTIVE$2);\n removeClass([this.slideChangedEventArgs.previousSlide], CLS_ACTIVE$2);\n this.trigger('slideChanged', this.slideChangedEventArgs, function () {\n removeClass(_this.element.querySelectorAll(\".\" + CLS_ITEM$3), [CLS_PREV_SLIDE, CLS_NEXT_SLIDE, CLS_TRANSITION_START, CLS_TRANSITION_END]);\n _this.slideChangedEventArgs = null;\n });\n }\n };\n Carousel.prototype.refreshIndicators = function (activeIndex, currentIndex) {\n var _this = this;\n var slideIndicator = this.element.querySelector(\".\" + CLS_INDICATOR_BARS);\n if (isNullOrUndefined(slideIndicator)) {\n return;\n }\n var indicators = [].slice.call(slideIndicator.childNodes);\n switch (this.indicatorsType) {\n case 'Default':\n case 'Dynamic':\n attributes(indicators[parseInt(activeIndex.toString(), 10)], { 'aria-current': 'false' });\n attributes(indicators[parseInt(currentIndex.toString(), 10)], { 'aria-current': 'true' });\n removeClass(indicators, [CLS_ACTIVE$2, CLS_PREV_SLIDE, CLS_NEXT_SLIDE]);\n addClass([indicators[parseInt(currentIndex.toString(), 10)]], CLS_ACTIVE$2);\n if (indicators[currentIndex - 1]) {\n addClass([indicators[currentIndex - 1]], CLS_PREV_SLIDE);\n }\n if (indicators[currentIndex + 1]) {\n addClass([indicators[currentIndex + 1]], CLS_NEXT_SLIDE);\n }\n indicators.forEach(function (item) { return item.style.setProperty('--carousel-items-current', \"\" + _this.selectedIndex); });\n break;\n case 'Fraction':\n if (this.indicatorsTemplate) {\n if (slideIndicator.children.length > 0) {\n slideIndicator.removeChild(slideIndicator.firstElementChild);\n }\n this.renderIndicatorTemplate(slideIndicator, currentIndex + 1);\n }\n else {\n slideIndicator.innerText = this.selectedIndex + 1 + \" / \" + this.slideItems.length;\n }\n break;\n case 'Progress':\n if (this.indicatorsTemplate) {\n if (slideIndicator.children.length > 0) {\n slideIndicator.removeChild(slideIndicator.firstElementChild);\n }\n this.renderIndicatorTemplate(slideIndicator, currentIndex + 1);\n }\n else {\n slideIndicator.firstElementChild.style.setProperty('--carousel-items-current', \"\" + (this.selectedIndex + 1));\n }\n break;\n }\n };\n Carousel.prototype.setHtmlAttributes = function (attribute, element) {\n var keys = Object.keys(attribute);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key === 'class') {\n addClass([element], attribute[\"\" + key]);\n }\n else {\n element.setAttribute(key, attribute[\"\" + key]);\n }\n }\n };\n Carousel.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n Carousel.prototype.getNavigatorState = function (target, isPrevious) {\n var button = target.querySelector(\".\" + (isPrevious ? CLS_PREV_BUTTON : CLS_NEXT_BUTTON));\n if (button) {\n var buttonObj = getInstance(button, Button);\n return buttonObj.disabled;\n }\n return false;\n };\n Carousel.prototype.navigatorClickHandler = function (e) {\n var target = e.currentTarget;\n var isDisabled = this.getNavigatorState(target, target.classList.contains(CLS_PREVIOUS));\n if (isDisabled) {\n return;\n }\n var direction = target.classList.contains(CLS_PREVIOUS) ? 'Previous' : 'Next';\n this.setActiveSlide(this.getSlideIndex(direction), direction);\n this.autoSlide();\n };\n Carousel.prototype.indicatorClickHandler = function (e) {\n var target = closest(e.target, \".\" + CLS_INDICATOR_BAR);\n var index = parseInt(target.dataset.index, 10);\n if (this.selectedIndex !== index) {\n this.setActiveSlide(index, this.selectedIndex > index ? 'Previous' : 'Next');\n this.autoSlide();\n }\n };\n Carousel.prototype.playButtonClickHandler = function (e, isPropertyChange) {\n if (isPropertyChange === void 0) { isPropertyChange = false; }\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n if (playButton) {\n var buttonObj = getInstance(playButton, Button);\n if (!isPropertyChange) {\n this.setProperties({ autoPlay: !this.autoPlay }, true);\n }\n playButton.setAttribute('aria-label', this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'));\n buttonObj.iconCss = CLS_ICON$1 + ' ' + (this.autoPlay ? CLS_PAUSE_ICON : CLS_PLAY_ICON);\n buttonObj.dataBind();\n this.itemsContainer.setAttribute('aria-live', this.autoPlay ? 'off' : 'polite');\n if (this.autoPlay && !this.loop && this.selectedIndex === this.slideItems.length - 1) {\n this.setActiveSlide(0, 'Next');\n }\n this.autoSlide();\n }\n };\n Carousel.prototype.keyHandler = function (e) {\n if (!this.allowKeyboardInteraction) {\n return;\n }\n var direction;\n var slideIndex;\n var isSlideTransition = false;\n var target = e.target;\n e.preventDefault();\n switch (e.action) {\n case 'space':\n if (this.showIndicators && target.classList.contains(CLS_INDICATOR$1)) {\n target.click();\n }\n else if (target.classList.contains(CLS_CAROUSEL) || target.classList.contains(CLS_PLAY_BUTTON)) {\n this.playButtonClickHandler(e);\n }\n else if (target.classList.contains(CLS_NEXT_BUTTON)) {\n this.next();\n }\n else if (target.classList.contains(CLS_PREV_BUTTON)) {\n this.prev();\n }\n break;\n case 'end':\n slideIndex = this.slideItems.length - 1;\n direction = 'Next';\n isSlideTransition = true;\n break;\n case 'home':\n slideIndex = 0;\n direction = 'Previous';\n isSlideTransition = true;\n break;\n case 'moveUp':\n case 'moveLeft':\n case 'moveDown':\n case 'moveRight':\n if (this.showIndicators && isNullOrUndefined(this.indicatorsTemplate)) {\n this.element.focus();\n }\n direction = (e.action === 'moveUp' || e.action === 'moveLeft') ? 'Previous' : 'Next';\n slideIndex = this.getSlideIndex(direction);\n isSlideTransition = !this.isSuspendSlideTransition(slideIndex, direction);\n break;\n }\n if (isSlideTransition) {\n this.setActiveSlide(slideIndex, direction);\n this.autoSlide();\n isSlideTransition = false;\n }\n };\n Carousel.prototype.swipeHandler = function (e) {\n if (this.element.classList.contains(CLS_HOVER) || isNullOrUndefined(this.slideItems) || this.slideItems.length <= 1) {\n return;\n }\n var direction = (e.swipeDirection === 'Right') ? 'Previous' : 'Next';\n var slideIndex = this.getSlideIndex(direction);\n if (!this.isSuspendSlideTransition(slideIndex, direction)) {\n this.setActiveSlide(slideIndex, direction, true);\n this.autoSlide();\n }\n };\n Carousel.prototype.isSuspendSlideTransition = function (index, direction) {\n return !this.loop && (direction === 'Next' && index === 0 || direction === 'Previous' && index === this.slideItems.length - 1);\n };\n Carousel.prototype.handleNavigatorsActions = function (index) {\n if (this.buttonsVisibility === 'Hidden') {\n return;\n }\n if (this.showPlayButton) {\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n var isLastSlide = this.selectedIndex === this.slideItems.length - 1 && !this.loop;\n var isButtonUpdate = isNullOrUndefined(this.playButtonTemplate) && playButton && isLastSlide;\n if (isNullOrUndefined(this.playButtonTemplate) && playButton && !isLastSlide) {\n isButtonUpdate = !playButton.classList.contains(CLS_ACTIVE$2);\n }\n if (isButtonUpdate) {\n this.setProperties({ autoPlay: !isLastSlide }, true);\n playButton.setAttribute('aria-label', this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'));\n this.itemsContainer.setAttribute('aria-live', this.autoPlay ? 'off' : 'polite');\n var buttonObj = getInstance(playButton, Button);\n buttonObj.iconCss = CLS_ICON$1 + ' ' + (this.autoPlay ? CLS_PAUSE_ICON : CLS_PLAY_ICON);\n buttonObj.dataBind();\n }\n }\n var prevButton = this.element.querySelector(\".\" + CLS_PREV_BUTTON);\n if (prevButton && isNullOrUndefined(this.previousButtonTemplate)) {\n var buttonObj = getInstance(prevButton, Button);\n buttonObj.disabled = !this.loop && index === 0;\n buttonObj.dataBind();\n }\n var nextButton = this.element.querySelector(\".\" + CLS_NEXT_BUTTON);\n if (nextButton && isNullOrUndefined(this.nextButtonTemplate)) {\n var buttonObj = getInstance(nextButton, Button);\n buttonObj.disabled = !this.loop && index === this.slideItems.length - 1;\n buttonObj.dataBind();\n }\n };\n Carousel.prototype.onHoverActions = function (e) {\n var navigator = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n switch (e.type) {\n case 'mouseenter':\n if (this.buttonsVisibility === 'VisibleOnHover' && navigator) {\n removeClass([].slice.call(navigator.childNodes), CLS_HOVER_ARROWS);\n }\n if (this.pauseOnHover) {\n addClass([this.element], CLS_HOVER);\n }\n break;\n case 'mouseleave':\n if (this.buttonsVisibility === 'VisibleOnHover' && navigator) {\n addClass([].slice.call(navigator.childNodes), CLS_HOVER_ARROWS);\n }\n removeClass([this.element], CLS_HOVER);\n if (this.isSwipe) {\n this.swipStop();\n }\n break;\n }\n this.autoSlide();\n };\n Carousel.prototype.onFocusActions = function (e) {\n switch (e.type) {\n case 'focusin':\n addClass([this.element], CLS_HOVER);\n break;\n case 'focusout':\n removeClass([this.element], CLS_HOVER);\n break;\n }\n this.autoSlide();\n };\n Carousel.prototype.destroyButtons = function () {\n var buttonCollections = [].slice.call(this.element.querySelectorAll('.e-control.e-btn'));\n for (var _i = 0, buttonCollections_1 = buttonCollections; _i < buttonCollections_1.length; _i++) {\n var button = buttonCollections_1[_i];\n var instance = getInstance(button, Button);\n if (instance) {\n instance.destroy();\n }\n }\n };\n Carousel.prototype.getNumOfItems = function () {\n return this.partialVisible ? 2 : 1;\n };\n Carousel.prototype.getTranslateValue = function (element) {\n var style = getComputedStyle(element);\n return window.WebKitCSSMatrix ?\n new WebKitCSSMatrix(style.webkitTransform).m41 : 0;\n };\n Carousel.prototype.swipeStart = function (e) {\n if (!this.timeStampStart) {\n this.timeStampStart = Date.now();\n }\n e.preventDefault();\n this.isSwipe = false;\n this.itemsContainer.classList.add('e-swipe-start');\n this.prevPageX = e.touches ? e.touches[0].pageX : e.pageX;\n this.initialTranslate = this.getTranslateValue(this.itemsContainer);\n };\n Carousel.prototype.swiping = function (e) {\n if (!this.itemsContainer.classList.contains('e-swipe-start')) {\n return;\n }\n this.isSwipe = true;\n e.preventDefault();\n var pageX = e.touches ? e.touches[0].pageX : e.pageX;\n var positionDiff = this.prevPageX - (pageX);\n if (!this.loop && ((this.enableRtl && ((this.selectedIndex === 0 && positionDiff > 0) ||\n (this.selectedIndex === this.itemsContainer.childElementCount - 1 && positionDiff < 0))) ||\n (!this.enableRtl && ((this.selectedIndex === 0 && positionDiff < 0) ||\n (this.selectedIndex === this.itemsContainer.childElementCount - 1 && positionDiff > 0))))) {\n return;\n }\n this.itemsContainer.style.transform = \"translateX(\" + (this.initialTranslate + (this.enableRtl ? positionDiff : -positionDiff)) + \"px)\";\n };\n Carousel.prototype.swipStop = function () {\n var time = Date.now() - this.timeStampStart;\n var distanceX = this.getTranslateValue(this.itemsContainer) - this.initialTranslate;\n distanceX = distanceX < 0 ? distanceX * -1 : distanceX;\n if (this.isSwipe) {\n var offsetDist = distanceX * (Browser.isDevice ? 6 : 1.66);\n this.itemsContainer.style.transitionDuration = (((Browser.isDevice ? distanceX : offsetDist) / time) / 10) + 's';\n }\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n var threshold = slideWidth / 2;\n this.itemsContainer.classList.remove('e-swipe-start');\n var value = this.getTranslateValue(this.itemsContainer);\n if (value - this.initialTranslate < -threshold) {\n this.swipeNavigation(!this.enableRtl);\n }\n else if (value - this.initialTranslate > threshold) {\n this.swipeNavigation(this.enableRtl);\n }\n else {\n this.itemsContainer.style.transform = \"translateX(\" + this.initialTranslate + \"px)\";\n if (this.animationEffect === 'Fade') {\n this.itemsContainer.classList.add('e-fade-in-out');\n }\n }\n };\n Carousel.prototype.swipeNavigation = function (isRtl) {\n if (isRtl) {\n this.next();\n }\n else {\n this.prev();\n }\n };\n Carousel.prototype.swipeModehandlers = function () {\n if ((this.swipeMode & CarouselSwipeMode.Touch) === CarouselSwipeMode.Touch) {\n EventHandler.add(this.itemsContainer, 'touchstart', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'touchmove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'touchend', this.swipStop, this);\n }\n if ((this.swipeMode & CarouselSwipeMode.Mouse) === CarouselSwipeMode.Mouse) {\n EventHandler.add(this.itemsContainer, 'mousedown', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'mousemove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'mouseup', this.swipStop, this);\n }\n if ((this.swipeMode === 0) && (this.swipeMode & CarouselSwipeMode.Mouse & CarouselSwipeMode.Touch) ===\n (CarouselSwipeMode.Mouse & CarouselSwipeMode.Touch)) {\n EventHandler.add(this.itemsContainer, 'mousedown touchstart', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'mousemove touchmove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'mouseup touchend', this.swipStop, this);\n }\n };\n Carousel.prototype.resizeHandler = function () {\n if (this.itemsContainer && this.itemsContainer.firstElementChild) {\n var numOfItems = this.getNumOfItems();\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n if (this.loop) {\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + numOfItems);\n }\n else {\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex);\n }\n }\n };\n Carousel.prototype.wireEvents = function () {\n if (this.animationEffect !== 'Custom' && this.enableTouchSwipe) {\n this.swipeModehandlers();\n }\n EventHandler.add(this.element, 'focusin focusout', this.onFocusActions, this);\n EventHandler.add(this.element, 'mouseenter mouseleave', this.onHoverActions, this);\n EventHandler.add(this.element.firstElementChild, 'animationend', this.onTransitionEnd, this);\n EventHandler.add(this.element.firstElementChild, 'transitionend', this.onTransitionEnd, this);\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n };\n Carousel.prototype.unWireEvents = function () {\n var _this = this;\n var indicators = [].slice.call(this.element.querySelectorAll(\".\" + CLS_INDICATOR_BAR));\n indicators.forEach(function (indicator) {\n EventHandler.remove(indicator, 'click', _this.indicatorClickHandler);\n });\n var navigators = [].slice.call(this.element.querySelectorAll(\".\" + CLS_PREVIOUS + \",.\" + CLS_NEXT));\n navigators.forEach(function (navigator) {\n EventHandler.remove(navigator, 'click', _this.navigatorClickHandler);\n });\n var playIcon = this.element.querySelector(\".\" + CLS_PLAY_PAUSE);\n if (playIcon) {\n EventHandler.remove(playIcon, 'click', this.playButtonClickHandler);\n }\n EventHandler.remove(this.element.firstElementChild, 'animationend', this.onTransitionEnd);\n EventHandler.remove(this.element.firstElementChild, 'transitionend', this.onTransitionEnd);\n EventHandler.clearEvents(this.element);\n EventHandler.clearEvents(this.itemsContainer);\n EventHandler.remove(window, 'resize', this.resizeHandler);\n };\n /**\n * Method to transit from the current slide to the previous slide.\n *\n * @returns {void}\n */\n Carousel.prototype.prev = function () {\n if (!this.loop && this.selectedIndex === 0) {\n return;\n }\n var index = (this.selectedIndex === 0) ? this.slideItems.length - 1 : this.selectedIndex - 1;\n this.setActiveSlide(index, 'Previous');\n this.autoSlide();\n };\n /**\n * Method to transit from the current slide to the next slide.\n *\n * @returns {void}\n */\n Carousel.prototype.next = function () {\n if (!this.loop && this.selectedIndex === this.slideItems.length - 1) {\n return;\n }\n var index = (this.selectedIndex === this.slideItems.length - 1) ? 0 : this.selectedIndex + 1;\n this.setActiveSlide(index, 'Next');\n this.autoSlide();\n };\n /**\n * Method to play the slides programmatically.\n *\n * @returns {void}\n */\n Carousel.prototype.play = function () {\n var playIcon = this.element.querySelector(\".\" + CLS_PLAY_ICON);\n if (this.showPlayButton && playIcon) {\n classList(playIcon, [CLS_PAUSE_ICON], [CLS_PLAY_ICON]);\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('pauseSlideTransition'));\n }\n this.setProperties({ autoPlay: true }, true);\n this.itemsContainer.setAttribute('aria-live', 'off');\n this.applySlideInterval();\n };\n /**\n * Method to pause the slides programmatically.\n *\n * @returns {void}\n */\n Carousel.prototype.pause = function () {\n var pauseIcon = this.element.querySelector(\".\" + CLS_PAUSE_ICON);\n if (this.showPlayButton && pauseIcon) {\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('playSlideTransition'));\n classList(pauseIcon, [CLS_PLAY_ICON], [CLS_PAUSE_ICON]);\n }\n this.setProperties({ autoPlay: false }, true);\n this.itemsContainer.setAttribute('aria-live', 'off');\n this.resetSlideInterval();\n };\n /**\n * Method to render react and angular templates\n *\n * @returns {void}\n * @private\n */\n Carousel.prototype.renderTemplates = function () {\n if (this.isAngular || this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Method to reset react and angular templates\n *\n * @param {string[]} templates Accepts the template ID\n * @returns {void}\n * @private\n */\n Carousel.prototype.resetTemplates = function (templates) {\n if (this.isAngular || this.isReact) {\n this.clearTemplate(templates);\n }\n };\n /**\n * Method for destroy the carousel component.\n *\n * @returns {void}\n */\n Carousel.prototype.destroy = function () {\n var _this = this;\n this.resetTemplates();\n if (this.touchModule) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n if (this.keyModule) {\n this.keyModule.destroy();\n this.keyModule = null;\n }\n this.resetSlideInterval();\n this.destroyButtons();\n this.unWireEvents();\n [].slice.call(this.element.children).forEach(function (ele) { _this.element.removeChild(ele); });\n removeClass([this.element], [CLS_CAROUSEL, this.cssClass, CLS_RTL$5, CLS_SWIPE]);\n ['role', 'style'].forEach(function (attr) { _this.element.removeAttribute(attr); });\n this.itemsContainer = null;\n _super.prototype.destroy.call(this);\n };\n __decorate$b([\n Collection([], CarouselItem)\n ], Carousel.prototype, \"items\", void 0);\n __decorate$b([\n Property('Slide')\n ], Carousel.prototype, \"animationEffect\", void 0);\n __decorate$b([\n Property()\n ], Carousel.prototype, \"previousButtonTemplate\", void 0);\n __decorate$b([\n Property()\n ], Carousel.prototype, \"nextButtonTemplate\", void 0);\n __decorate$b([\n Property()\n ], Carousel.prototype, \"indicatorsTemplate\", void 0);\n __decorate$b([\n Property()\n ], Carousel.prototype, \"playButtonTemplate\", void 0);\n __decorate$b([\n Property()\n ], Carousel.prototype, \"cssClass\", void 0);\n __decorate$b([\n Property([])\n ], Carousel.prototype, \"dataSource\", void 0);\n __decorate$b([\n Property()\n ], Carousel.prototype, \"itemTemplate\", void 0);\n __decorate$b([\n Property(0)\n ], Carousel.prototype, \"selectedIndex\", void 0);\n __decorate$b([\n Property('100%')\n ], Carousel.prototype, \"width\", void 0);\n __decorate$b([\n Property('100%')\n ], Carousel.prototype, \"height\", void 0);\n __decorate$b([\n Property(5000)\n ], Carousel.prototype, \"interval\", void 0);\n __decorate$b([\n Property(true)\n ], Carousel.prototype, \"autoPlay\", void 0);\n __decorate$b([\n Property(true)\n ], Carousel.prototype, \"pauseOnHover\", void 0);\n __decorate$b([\n Property(true)\n ], Carousel.prototype, \"loop\", void 0);\n __decorate$b([\n Property(false)\n ], Carousel.prototype, \"showPlayButton\", void 0);\n __decorate$b([\n Property(true)\n ], Carousel.prototype, \"enableTouchSwipe\", void 0);\n __decorate$b([\n Property(true)\n ], Carousel.prototype, \"allowKeyboardInteraction\", void 0);\n __decorate$b([\n Property(true)\n ], Carousel.prototype, \"showIndicators\", void 0);\n __decorate$b([\n Property('Default')\n ], Carousel.prototype, \"indicatorsType\", void 0);\n __decorate$b([\n Property('Visible')\n ], Carousel.prototype, \"buttonsVisibility\", void 0);\n __decorate$b([\n Property(false)\n ], Carousel.prototype, \"partialVisible\", void 0);\n __decorate$b([\n Property(CarouselSwipeMode.Touch)\n ], Carousel.prototype, \"swipeMode\", void 0);\n __decorate$b([\n Property()\n ], Carousel.prototype, \"htmlAttributes\", void 0);\n __decorate$b([\n Event()\n ], Carousel.prototype, \"slideChanging\", void 0);\n __decorate$b([\n Event()\n ], Carousel.prototype, \"slideChanged\", void 0);\n Carousel = __decorate$b([\n NotifyPropertyChanges\n ], Carousel);\n return Carousel;\n}(Component));\n\nvar __extends$c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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// Constant variables\nvar CLS_APPBAR = 'e-appbar';\nvar CLS_HORIZONTAL_BOTTOM = 'e-horizontal-bottom';\nvar CLS_STICKY = 'e-sticky';\nvar CLS_PROMINENT = 'e-prominent';\nvar CLS_DENSE = 'e-dense';\nvar CLS_RTL$6 = 'e-rtl';\nvar CLS_LIGHT = 'e-light';\nvar CLS_DARK = 'e-dark';\nvar CLS_PRIMARY = 'e-primary';\nvar CLS_INHERIT = 'e-inherit';\n/**\n * The AppBar displays the information and actions related to the current application screen. It is used to show branding, screen titles, navigation, and actions.\n * Support to inherit colors from AppBar provided to Button, DropDownButton, Menu and TextBox.\n * Set CssClass property with e-inherit CSS class to inherit the background and color from AppBar.\n */\nvar AppBar = /** @__PURE__ @class */ (function (_super) {\n __extends$c(AppBar, _super);\n /**\n * Constructor for creating the AppBar widget\n *\n * @param {AppBarModel} options Accepts the AppBar model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function AppBar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n AppBar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove(CLS_APPBAR);\n this.element.removeAttribute('style');\n this.element.removeAttribute('role');\n };\n AppBar.prototype.getModuleName = function () {\n return 'appbar';\n };\n AppBar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n AppBar.prototype.preRender = function () {\n // pre render code\n };\n AppBar.prototype.render = function () {\n this.element.classList.add(CLS_APPBAR);\n if (this.element.tagName !== 'HEADER') {\n this.element.setAttribute('role', 'banner');\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (this.position === 'Bottom') {\n this.element.classList.add(CLS_HORIZONTAL_BOTTOM);\n }\n if (this.isSticky) {\n this.element.classList.add(CLS_STICKY);\n }\n if (this.enableRtl) {\n this.element.classList.add(CLS_RTL$6);\n }\n this.setHeightMode();\n this.setColorMode();\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n };\n AppBar.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 'mode':\n removeClass([this.element], [CLS_DENSE, CLS_PROMINENT]);\n this.setHeightMode();\n break;\n case 'position':\n if (this.position === 'Bottom') {\n addClass([this.element], CLS_HORIZONTAL_BOTTOM);\n }\n else {\n removeClass([this.element], CLS_HORIZONTAL_BOTTOM);\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 'isSticky':\n if (this.isSticky) {\n addClass([this.element], CLS_STICKY);\n }\n else {\n removeClass([this.element], CLS_STICKY);\n }\n break;\n case 'htmlAttributes':\n if (!isNullOrUndefined(this.htmlAttributes)) {\n if (!isNullOrUndefined(oldProp.htmlAttributes)) {\n var keys = Object.keys(oldProp.htmlAttributes);\n for (var _b = 0, keys_1 = keys; _b < keys_1.length; _b++) {\n var key = keys_1[_b];\n if (key === 'class') {\n removeClass([this.element], oldProp.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.removeAttribute(key);\n }\n }\n }\n this.setHtmlAttributes(newProp.htmlAttributes, this.element);\n }\n break;\n case 'colorMode':\n removeClass([this.element], [CLS_DARK, CLS_PRIMARY, CLS_INHERIT, CLS_LIGHT]);\n this.setColorMode();\n break;\n case 'enableRtl':\n if (this.enableRtl) {\n addClass([this.element], CLS_RTL$6);\n }\n else {\n removeClass([this.element], CLS_RTL$6);\n }\n break;\n }\n }\n };\n AppBar.prototype.setHtmlAttributes = function (attribute, element) {\n var keys = Object.keys(attribute);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n if (key === 'class') {\n addClass([element], attribute[\"\" + key]);\n }\n else {\n element.setAttribute(key, attribute[\"\" + key]);\n }\n }\n };\n AppBar.prototype.setHeightMode = function () {\n if (this.mode === 'Prominent') {\n this.element.classList.add(CLS_PROMINENT);\n }\n else if (this.mode === 'Dense') {\n this.element.classList.add(CLS_DENSE);\n }\n };\n AppBar.prototype.setColorMode = function () {\n switch (this.colorMode) {\n case 'Light':\n this.element.classList.add(CLS_LIGHT);\n break;\n case 'Dark':\n this.element.classList.add(CLS_DARK);\n break;\n case 'Primary':\n this.element.classList.add(CLS_PRIMARY);\n break;\n case 'Inherit':\n this.element.classList.add(CLS_INHERIT);\n break;\n }\n };\n __decorate$c([\n Property('Regular')\n ], AppBar.prototype, \"mode\", void 0);\n __decorate$c([\n Property('Top')\n ], AppBar.prototype, \"position\", void 0);\n __decorate$c([\n Property()\n ], AppBar.prototype, \"cssClass\", void 0);\n __decorate$c([\n Property(false)\n ], AppBar.prototype, \"isSticky\", void 0);\n __decorate$c([\n Property()\n ], AppBar.prototype, \"htmlAttributes\", void 0);\n __decorate$c([\n Property('Light')\n ], AppBar.prototype, \"colorMode\", void 0);\n __decorate$c([\n Event()\n ], AppBar.prototype, \"created\", void 0);\n __decorate$c([\n Event()\n ], AppBar.prototype, \"destroyed\", void 0);\n AppBar = __decorate$c([\n NotifyPropertyChanges\n ], AppBar);\n return AppBar;\n}(Component));\n\nvar __extends$d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PROGRESSVALUE = '--progress-value';\nvar PROGRESSPOS = '--progress-position';\nvar VERTICALSTEP = 'e-vertical';\nvar HORIZSTEP = 'e-horizontal';\nvar ITEMLIST = 'e-stepper-steps';\n/**\n * Defines the status of the step.\n */\nvar StepStatus;\n(function (StepStatus) {\n /**\n * Shows the status of the step is not started.\n */\n StepStatus[\"NotStarted\"] = \"NotStarted\";\n /**\n * Shows the step is in progress.\n */\n StepStatus[\"InProgress\"] = \"InProgress\";\n /**\n * Shows the status of the step is completed.\n */\n StepStatus[\"Completed\"] = \"Completed\";\n})(StepStatus || (StepStatus = {}));\n/**\n * Specifies the steps of the Stepper.\n */\nvar Step = /** @__PURE__ @class */ (function (_super) {\n __extends$d(Step, _super);\n function Step() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$d([\n Property('')\n ], Step.prototype, \"cssClass\", void 0);\n __decorate$d([\n Property(false)\n ], Step.prototype, \"disabled\", void 0);\n __decorate$d([\n Property('')\n ], Step.prototype, \"iconCss\", void 0);\n __decorate$d([\n Property(null)\n ], Step.prototype, \"isValid\", void 0);\n __decorate$d([\n Property('')\n ], Step.prototype, \"label\", void 0);\n __decorate$d([\n Property(false)\n ], Step.prototype, \"optional\", void 0);\n __decorate$d([\n Property(StepStatus.NotStarted)\n ], Step.prototype, \"status\", void 0);\n __decorate$d([\n Property('')\n ], Step.prototype, \"text\", void 0);\n return Step;\n}(ChildProperty));\n/**\n * Defines the orientation type of the Stepper.\n */\nvar StepperOrientation;\n(function (StepperOrientation) {\n /**\n * Steps are displayed horizontally.\n */\n StepperOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Steps are displayed vertically.\n */\n StepperOrientation[\"Vertical\"] = \"Vertical\";\n})(StepperOrientation || (StepperOrientation = {}));\n/**\n * StepperBase component act as base class to the stepper component.\n */\nvar StepperBase = /** @__PURE__ @class */ (function (_super) {\n __extends$d(StepperBase, _super);\n /**\n * * Constructor for Base class\n *\n * @param {StepperBaseModel} options - Specifies the Base model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function StepperBase(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * This method is abstract member of the Component.\n *\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n StepperBase.prototype.preRender = function () {\n };\n /**\n * This method is abstract member of the Component.\n *\n * @private\n * @returns {string} - It returns the current module name.\n */\n StepperBase.prototype.getModuleName = function () {\n return 'stepperBase';\n };\n /**\n * This method is abstract member of the Component.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n StepperBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * This method is abstract member of the Component.\n *\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n StepperBase.prototype.render = function () {\n };\n StepperBase.prototype.updateOrientaion = function (wrapper) {\n if (wrapper.classList.contains(HORIZSTEP) || wrapper.classList.contains(VERTICALSTEP)) {\n wrapper.classList.remove(HORIZSTEP, VERTICALSTEP);\n }\n if (!(isNullOrUndefined(this.orientation))) {\n wrapper.classList.add('e-' + this.orientation.toLocaleLowerCase());\n }\n };\n StepperBase.prototype.renderProgressBar = function (wrapper) {\n this.progressStep = this.createElement('div', { className: 'e-stepper-progressbar' });\n this.progressbar = this.createElement('div', { className: 'e-progressbar-value' });\n var beforeLabel = (wrapper.querySelector('li').querySelector('.e-step-label-container'));\n this.progressStep.appendChild(this.progressbar);\n wrapper.prepend(this.progressStep);\n this.progressbar.style.setProperty(PROGRESSVALUE, (0) + '%');\n if (wrapper.classList.contains(VERTICALSTEP)) {\n if (wrapper.classList.contains('e-label-bottom') || wrapper.classList.contains('e-label-top')) {\n var stepsContainer = (wrapper.querySelector('.' + ITEMLIST));\n this.progressStep.style.setProperty(PROGRESSPOS, (stepsContainer.offsetWidth / 2) + 'px');\n }\n else {\n this.progressStep.style.setProperty(PROGRESSPOS, ((this.progressBarPosition / 2) - 1) + 'px');\n }\n }\n if (beforeLabel && (beforeLabel.classList.contains('e-label-before'))) {\n this.progressStep.style.setProperty(PROGRESSPOS, (((this.progressBarPosition) - 1)) + 5 + 'px');\n }\n if (wrapper.classList.contains(HORIZSTEP)) {\n this.setProgressPosition(wrapper);\n }\n };\n StepperBase.prototype.setProgressPosition = function (wrapper, isResize) {\n var stepItemContainer = (wrapper.querySelector('.e-step-container'));\n var stepItemEle = stepItemContainer.firstElementChild;\n if (isResize !== true) {\n var topPos = 0;\n if (wrapper.classList.contains('e-label-before')) {\n topPos = (stepItemContainer.offsetParent.offsetHeight - (stepItemEle.offsetHeight / 2) - 1);\n }\n else {\n topPos = (stepItemEle.offsetHeight / 2);\n }\n this.progressStep.style.setProperty('--progress-top-position', topPos + 'px');\n }\n var lastEle = wrapper.querySelector('.' + ITEMLIST).lastChild.firstChild;\n if (wrapper.classList.contains('e-rtl')) {\n var leftPost = ((stepItemEle.offsetLeft + stepItemEle.offsetWidth) - wrapper.querySelector('.' + ITEMLIST).offsetWidth);\n this.progressStep.style.setProperty('--progress-left-position', Math.abs(leftPost) + 'px');\n this.progressStep.style.setProperty('--progress-bar-width', Math.abs(lastEle.offsetLeft - stepItemEle.offsetLeft) + 'px');\n }\n else {\n this.progressStep.style.setProperty('--progress-left-position', (stepItemEle.offsetLeft + 1) + 'px');\n this.progressStep.style.setProperty('--progress-bar-width', ((lastEle.offsetWidth + lastEle.offsetLeft - 2) - (stepItemEle.offsetLeft + 2)) + 'px');\n }\n };\n /**\n * This method is abstract member of the Component.\n *\n * @param {StepperBaseModel} newProp - Specifies new properties\n * @param {StepperBaseModel} oldProp - Specifies old properties\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n StepperBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n };\n __decorate$d([\n Collection([], Step)\n ], StepperBase.prototype, \"steps\", void 0);\n __decorate$d([\n Property('')\n ], StepperBase.prototype, \"cssClass\", void 0);\n __decorate$d([\n Property(false)\n ], StepperBase.prototype, \"readOnly\", void 0);\n __decorate$d([\n Property(StepperOrientation.Horizontal)\n ], StepperBase.prototype, \"orientation\", void 0);\n __decorate$d([\n Event()\n ], StepperBase.prototype, \"created\", void 0);\n StepperBase = __decorate$d([\n NotifyPropertyChanges\n ], StepperBase);\n return StepperBase;\n}(Component));\n\nvar __extends$e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ITEMCONTAINER = 'e-step-container';\nvar ITEMLIST$1 = 'e-stepper-steps';\nvar ICONCSS = 'e-indicator';\nvar TEXTCSS = 'e-step-text-container';\nvar STEPLABEL = 'e-step-label-container';\nvar OPTIONAL = 'e-step-label-optional';\nvar SELECTED$2 = 'e-step-selected';\nvar INPROGRESS = 'e-step-inprogress';\nvar NOTSTARTED = 'e-step-notstarted';\nvar FOCUS$1 = 'e-step-focus';\nvar COMPLETED = 'e-step-completed';\nvar DISABLED$2 = 'e-step-disabled';\nvar READONLY = 'e-stepper-readonly';\nvar PROGRESSVALUE$1 = '--progress-value';\nvar RTL$3 = 'e-rtl';\nvar TEMPLATE = 'e-step-template';\nvar LABELAFTER = 'e-label-after';\nvar LABELBEFORE = 'e-label-before';\nvar VERTICALSTEP$1 = 'e-vertical';\nvar HORIZSTEP$1 = 'e-horizontal';\nvar STEPICON = 'e-step-item';\nvar STEPTEXT = 'e-step-text';\nvar TEXT = 'e-text';\nvar STEPSLABEL = 'e-step-label';\nvar LABEL = 'e-label';\nvar STEPINDICATOR = 'e-step-type-indicator';\nvar LABELINDICATOR = 'e-step-type-label';\nvar INDICATORICON = 'e-step-indicator';\nvar STEPPERTOOLTIP = 'e-stepper-tooltip';\nvar STEPPERIPROGRESSTIP = 'e-step-inprogress-tip';\nvar LINEARSTEP = 'e-linear';\nvar PREVSTEP = 'e-previous';\nvar NEXTSTEP = 'e-next';\n/**\n * Defines the step progress animation of the Stepper.\n */\nvar StepperAnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$e(StepperAnimationSettings, _super);\n function StepperAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$e([\n Property(true)\n ], StepperAnimationSettings.prototype, \"enable\", void 0);\n __decorate$e([\n Property(2000)\n ], StepperAnimationSettings.prototype, \"duration\", void 0);\n __decorate$e([\n Property(0)\n ], StepperAnimationSettings.prototype, \"delay\", void 0);\n return StepperAnimationSettings;\n}(ChildProperty));\n/**\n * Defines the label position in the Stepper.\n */\nvar StepLabelPosition;\n(function (StepLabelPosition) {\n /**\n * Displays the label on top position regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Top\"] = \"Top\";\n /**\n * Displays the label on bottom position regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Bottom\"] = \"Bottom\";\n /**\n * Displays the label on left side regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Start\"] = \"Start\";\n /**\n * Displays the label on right side regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"End\"] = \"End\";\n})(StepLabelPosition || (StepLabelPosition = {}));\n/**\n * Defines whether steps are display with only indicator, only labels or combination of both.\n */\nvar StepType;\n(function (StepType) {\n /**\n * Steps are shown indicator with label defined.\n */\n StepType[\"Default\"] = \"Default\";\n /**\n * Steps are shown with only label.\n */\n StepType[\"Label\"] = \"Label\";\n /**\n * Steps are shown with only indicator.\n */\n StepType[\"Indicator\"] = \"Indicator\";\n})(StepType || (StepType = {}));\n/**\n * The Stepper component visualizes several steps and indicates the current progress by highlighting already completed steps.\n *\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Stepper = /** @__PURE__ @class */ (function (_super) {\n __extends$e(Stepper, _super);\n /**\n * * Constructor for creating the Stepper component.\n *\n * @param {StepperModel} options - Specifies the Stepper model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Stepper(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.stepperItemElements = [];\n return _this;\n }\n Stepper.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n var localeText = { optional: 'Optional' };\n this.l10n = new L10n('stepper', localeText, this.locale);\n this.keyConfigs = {\n downarrow: 'downarrow',\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n uparrow: 'uparrow',\n space: 'space',\n enter: 'enter',\n home: 'home',\n end: 'end',\n tab: 'tab',\n shiftTab: 'shift+tab',\n escape: 'escape'\n };\n this.tooltipOpen = false;\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Stepper.prototype.getModuleName = function () {\n return 'stepper';\n };\n Stepper.prototype.render = function () {\n this.initialize();\n this.navigationHandler(this.activeStep, null, false);\n this.updateStepperStatus(true);\n };\n Stepper.prototype.initialize = function () {\n this.element.setAttribute('aria-label', this.element.id);\n this.updatePosition();\n this.stepperItemList = this.createElement('ol', { className: ITEMLIST$1 });\n this.updateOrientaion(this.element);\n this.updateStepType();\n this.element.appendChild(this.stepperItemList);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.trim().split(' '));\n }\n if (this.readOnly) {\n this.element.classList.add(READONLY);\n }\n if (this.enableRtl) {\n this.element.classList.add(RTL$3);\n }\n this.wireEvents();\n this.updateTemplateFunction();\n this.renderItems();\n if (this.steps.length > 0) {\n this.initiateProgressBar();\n this.checkValidStep();\n this.updateAnimation();\n this.updateTooltip();\n this.wireKeyboardEvent();\n }\n };\n Stepper.prototype.initiateProgressBar = function () {\n var _this = this;\n if (this.steps.length > 1) {\n if (this.isAngular && this.template) {\n setTimeout(function () { _this.renderProgressBar(_this.element); });\n }\n else {\n this.renderProgressBar(this.element);\n }\n }\n };\n Stepper.prototype.updatePosition = function () {\n this.progressBarPosition = this.beforeLabelWidth = this.textEleWidth = 0;\n };\n Stepper.prototype.renderDefault = function (index) {\n var step = this.steps[parseInt(index.toString(), 10)];\n return !step.iconCss && !step.text && !step.label;\n };\n Stepper.prototype.updateAnimation = function () {\n var progressEle = this.element.querySelector('.e-progressbar-value');\n if (this.animation.enable) {\n if (this.animation.duration >= 0) {\n if (progressEle) {\n progressEle.style.setProperty('--duration', ((this.animation.duration) + 'ms'));\n }\n }\n if (this.animation.delay >= 0) {\n if (progressEle) {\n progressEle.style.setProperty('--delay', ((this.animation.delay) + 'ms'));\n }\n }\n }\n else {\n if (progressEle) {\n progressEle.style.setProperty('--delay', (0 + 'ms'));\n progressEle.style.setProperty('--duration', (0 + 'ms'));\n }\n }\n };\n Stepper.prototype.updateStepType = function () {\n if (!isNullOrUndefined(this.stepType)) {\n var stepTypeLower = this.stepType.toLowerCase();\n var validStepTypes = ['indicator', 'label', 'default'];\n if (validStepTypes.indexOf(stepTypeLower) !== -1) {\n if (stepTypeLower !== 'default') {\n this.element.classList.add('e-step-type-' + stepTypeLower);\n }\n if ((stepTypeLower === 'indicator' || stepTypeLower === 'label') && this.labelContainer) {\n this.clearLabelPosition();\n }\n }\n }\n };\n Stepper.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.updateResize, this);\n EventHandler.add(window, 'click', this.updateStepFocus, this);\n };\n Stepper.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.updateResize);\n EventHandler.remove(window, 'click', this.updateStepFocus);\n };\n Stepper.prototype.updateResize = function () {\n if (this.stepperItemList && this.progressbar && this.element.classList.contains(HORIZSTEP$1)) {\n this.setProgressPosition(this.element, true);\n }\n this.navigateToStep(this.activeStep, null, null, false, false);\n };\n Stepper.prototype.updateStepFocus = function () {\n if (this.isKeyNavFocus) {\n this.isKeyNavFocus = false;\n var isFocus = this.element.querySelector('.' + FOCUS$1);\n if (isFocus) {\n isFocus.classList.remove(FOCUS$1);\n this.element.classList.remove('e-steps-focus');\n }\n }\n };\n Stepper.prototype.updateStepperStatus = function (isInitial) {\n for (var index = 0; index < this.steps.length; index++) {\n var item = this.steps[parseInt(index.toString(), 10)];\n var status_1 = item.status.toLowerCase();\n if (isInitial && this.activeStep === 0 && index === 0) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n item.status = StepStatus.InProgress;\n this.isProtectedOnChange = prevOnChange;\n }\n if (item && status_1 !== 'notstarted' && index === this.activeStep) {\n for (var i = 0; i < this.steps.length; i++) {\n var itemElement = this.stepperItemElements[parseInt(i.toString(), 10)];\n itemElement.classList.remove(SELECTED$2, INPROGRESS, COMPLETED, NOTSTARTED);\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (status_1 === 'completed') {\n this.updateStatusClass(i, index, itemElement);\n }\n else {\n this.updateStatusClass(i, index, itemElement, true);\n }\n this.isProtectedOnChange = prevOnChange;\n }\n }\n else if (item && status_1 !== 'notstarted' && index !== this.activeStep) {\n this.navigationHandler(this.activeStep, null, true);\n }\n }\n };\n Stepper.prototype.updateStatusClass = function (currentStep, index, ele, isInprogress) {\n var stepItem = this.steps[parseInt(currentStep.toString(), 10)];\n if (currentStep < index) {\n ele.classList.add(COMPLETED);\n stepItem.status = StepStatus.Completed;\n }\n else if (currentStep === index) {\n ele.classList.add(isInprogress ? INPROGRESS : COMPLETED, SELECTED$2);\n }\n else {\n ele.classList.add(NOTSTARTED);\n }\n };\n Stepper.prototype.renderItems = function () {\n var _this = this;\n var _a;\n var isHorizontal = this.element.classList.contains(HORIZSTEP$1);\n var isVertical = this.element.classList.contains(VERTICALSTEP$1);\n var labelPositionLower = !isNullOrUndefined(this.labelPosition) ? this.labelPosition.toLowerCase() : '';\n for (var index = 0; index < this.steps.length; index++) {\n this.stepperItemContainer = this.createElement('li', { className: ITEMCONTAINER });\n var stepSpan = this.createElement('span', { className: 'e-step' });\n var item = this.steps[parseInt(index.toString(), 10)];\n var isItemLabel = item.label ? true : false;\n var isItemText = item.text ? true : false;\n var isIndicator = this.element.classList.contains(STEPINDICATOR);\n this.stepperItemContainer.classList[(index === 0) ? 'add' : 'remove'](SELECTED$2, INPROGRESS);\n this.stepperItemContainer.classList[(index !== 0) ? 'add' : 'remove'](NOTSTARTED);\n if (isHorizontal) {\n this.stepperItemContainer.style.setProperty('--max-width', 100 / this.steps.length + '%');\n }\n if (this.renderDefault(index) && (isNullOrUndefined(this.template) || this.template === '')) {\n var isIndicator_1 = !this.element.classList.contains('e-step-type-default') && this.stepType.toLowerCase() === 'indicator';\n if (isIndicator_1) {\n stepSpan.classList.add('e-icons', INDICATORICON);\n }\n if (!isIndicator_1 && item.isValid == null) {\n stepSpan.classList.add('e-step-content');\n stepSpan.innerHTML = (index + 1).toString();\n }\n this.stepperItemContainer.appendChild(stepSpan);\n }\n else if (isNullOrUndefined(this.template) || this.template === '') {\n var isRender = true;\n if ((item.iconCss || (!item.iconCss && isItemText && isItemLabel)) && (((!isItemText && !isItemLabel) ||\n !this.element.classList.contains(LABELINDICATOR)))) {\n if (item.iconCss) {\n var itemIcon = item.iconCss.trim().split(' ');\n (_a = stepSpan.classList).add.apply(_a, [ICONCSS].concat(itemIcon));\n this.stepperItemContainer.classList.add(STEPICON);\n }\n else if (!item.iconCss && isItemText && isItemLabel) {\n stepSpan.classList.add(ICONCSS);\n stepSpan.innerHTML = item.text;\n this.stepperItemContainer.classList.add(STEPICON);\n }\n this.stepperItemContainer.appendChild(stepSpan);\n if (((isHorizontal && (labelPositionLower === 'start' || labelPositionLower === 'end') && isItemLabel) ||\n (isVertical && (labelPositionLower === 'top' || labelPositionLower === 'bottom') && isItemLabel)) && !isIndicator) {\n this.element.classList.add('e-label-' + labelPositionLower);\n this.createTextLabelElement(item.label);\n isRender = false;\n }\n }\n if (isItemText && (!item.iconCss || !isIndicator) && isRender &&\n !(item.iconCss && isItemLabel)) {\n if ((!item.iconCss && isIndicator) ||\n ((!item.iconCss || this.element.classList.contains(LABELINDICATOR)) && !isItemLabel)) {\n if (!item.iconCss && !isItemLabel) {\n this.element.classList.add('e-step-type-indicator');\n }\n this.checkValidState(item, stepSpan);\n isItemLabel = false;\n }\n else {\n if (!isItemLabel) {\n this.createTextLabelElement(item.text);\n }\n if (isItemLabel && this.element.classList.contains(LABELINDICATOR)) {\n var textSpan = this.createElement('span', { className: TEXT });\n textSpan.innerText = item.label;\n }\n isItemText = isItemLabel ? false : true;\n }\n }\n if (isItemLabel && isItemLabel && (!item.iconCss || !isIndicator) && isRender) {\n if (!item.iconCss && !isItemText && isIndicator) {\n this.checkValidState(item, stepSpan, true);\n }\n else if ((!((this.element.classList.contains(LABELINDICATOR)) && isItemText)) ||\n (this.element.classList.contains(LABELINDICATOR) && isItemLabel)) {\n this.createTextLabelElement(item.label, true);\n this.updateLabelPosition();\n if ((!item.iconCss && !isItemText && !this.stepperItemContainer.classList.contains(STEPICON)) ||\n this.element.classList.contains(LABELINDICATOR)) {\n this.stepperItemContainer.classList.add('e-step-label-only');\n if (item.isValid !== null) {\n var iconSpan = this.createElement('span', { className: 'e-step-validation-icon e-icons' });\n this.labelContainer.appendChild(iconSpan);\n }\n }\n }\n }\n }\n if (item.optional) {\n var optionalSpan = this.createElement('span', { className: OPTIONAL });\n this.l10n.setLocale(this.locale);\n var optionalContent = this.l10n.getConstant('optional');\n optionalSpan.innerText = optionalContent;\n if (isItemLabel && (this.labelContainer && ((this.element.classList.contains(LABELAFTER) && !this.stepperItemContainer.classList.contains('e-step-label-only'))\n || (isHorizontal && this.element.classList.contains(LABELBEFORE) && !this.stepperItemContainer.classList.contains('e-step-label-only'))))\n || (isVertical && this.element.classList.contains(LABELBEFORE))) {\n this.labelContainer.appendChild(optionalSpan);\n }\n else {\n this.stepperItemContainer.appendChild(optionalSpan);\n }\n if (item.isValid !== null) {\n this.stepperItemContainer.classList.add(item.isValid ? 'e-step-valid' : 'e-step-error');\n }\n }\n if (item.cssClass) {\n addClass([this.stepperItemContainer], item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n this.stepperItemContainer.classList[item.disabled ? 'add' : 'remove'](DISABLED$2);\n attributes(this.stepperItemContainer, { 'tabindex': '-1', 'aria-disabled': 'true' });\n }\n if (item.isValid !== null) {\n if (item.isValid) {\n this.stepperItemContainer.classList.add('e-step-valid');\n }\n else {\n this.stepperItemContainer.classList.add('e-step-error');\n }\n }\n this.renderItemContent(index, false);\n if (this.stepperItemContainer.classList.contains(INPROGRESS)) {\n attributes(this.stepperItemContainer, { 'tabindex': '0', 'aria-current': 'true' });\n }\n else {\n attributes(this.stepperItemContainer, { 'tabindex': '-1' });\n }\n this.wireItemsEvents(this.stepperItemContainer, index);\n this.stepperItemElements.push(this.stepperItemContainer);\n var eventArgs = { element: this.stepperItemContainer, index: index };\n this.trigger('beforeStepRender', eventArgs, function (args) {\n _this.stepperItemList.appendChild(args.element);\n });\n if (isVertical) {\n if (this.isAngular && this.template) {\n setTimeout(function () { _this.calculateProgressBarPosition(); });\n }\n else {\n this.calculateProgressBarPosition();\n }\n }\n }\n if (isVertical) {\n if (this.element.classList.contains(LABELBEFORE)) {\n var listItems = this.stepperItemList.querySelectorAll('.' + LABEL);\n for (var i = 0; i < listItems.length; i++) {\n var labelEle = listItems[parseInt((i).toString(), 10)];\n labelEle.style.setProperty('--label-width', (this.beforeLabelWidth) + 5 + 'px');\n }\n }\n }\n };\n Stepper.prototype.createTextLabelElement = function (content, isLabelEle) {\n if (isLabelEle === void 0) { isLabelEle = false; }\n var spanEle = this.createElement('span', { className: isLabelEle ? LABEL : TEXTCSS + \" \" + TEXT });\n spanEle.innerText = content;\n if (isLabelEle) {\n this.labelContainer = this.createElement('span', { className: STEPLABEL });\n this.labelContainer.appendChild(spanEle);\n }\n else {\n this.stepperItemContainer.appendChild(spanEle);\n }\n this.stepperItemContainer.classList.add(isLabelEle ? STEPSLABEL : STEPTEXT);\n };\n Stepper.prototype.calculateProgressBarPosition = function () {\n var isBeforeLabel = (this.element.classList.contains(LABELBEFORE)) ? true : false;\n var iconOnly = (this.stepperItemContainer.classList.contains(STEPICON) &&\n !this.stepperItemContainer.classList.contains(STEPTEXT) &&\n !this.stepperItemContainer.classList.contains(STEPSLABEL));\n var textEle = (this.stepperItemContainer.querySelector('.' + TEXTCSS));\n if (textEle) {\n this.textEleWidth = this.textEleWidth < textEle.offsetWidth ? textEle.offsetWidth : this.textEleWidth;\n }\n if (isBeforeLabel) {\n var labelWidth = this.stepperItemContainer.querySelector('.' + LABEL).offsetWidth + 15;\n this.beforeLabelWidth = Math.max(this.beforeLabelWidth, labelWidth);\n var iconEle = this.element.querySelector('ol').lastChild.querySelector('.' + ICONCSS);\n var textEle_1 = this.stepperItemContainer.querySelector('.' + TEXTCSS);\n if (iconEle || textEle_1) {\n var itemWidth = this.beforeLabelWidth + ((this.stepperItemContainer.querySelector('.' + ICONCSS)\n || textEle_1).offsetWidth / 2);\n this.progressBarPosition = Math.max(this.progressBarPosition, itemWidth);\n }\n else {\n this.progressBarPosition = Math.max(this.progressBarPosition, (this.beforeLabelWidth / 2));\n }\n }\n else {\n var lastChild = this.element.querySelector('ol').lastChild;\n var lastChildWidth = iconOnly ? this.stepperItemContainer.offsetWidth :\n lastChild.firstChild.offsetWidth;\n this.progressBarPosition = Math.max(this.progressBarPosition, lastChildWidth);\n }\n };\n Stepper.prototype.checkValidState = function (item, stepSpan, isLabel) {\n if (item.isValid == null) {\n stepSpan.classList.add('e-step-content');\n if (isLabel) {\n stepSpan.innerHTML = item.label;\n }\n else {\n stepSpan.innerHTML = item.label ? item.label : item.text;\n }\n this.stepperItemContainer.appendChild(stepSpan);\n }\n else {\n stepSpan.classList.add(ICONCSS);\n this.stepperItemContainer.appendChild(stepSpan);\n this.stepperItemContainer.classList.add(STEPICON);\n }\n };\n Stepper.prototype.updateCurrentLabel = function () {\n var labelPos = this.labelPosition.toLowerCase();\n var currentLabelPos = this.element.classList.contains(HORIZSTEP$1)\n ? (labelPos === 'top' ? 'before' : labelPos === 'bottom' ? 'after' : labelPos)\n : (labelPos === 'start' ? 'before' : labelPos === 'end' ? 'after' : labelPos);\n return currentLabelPos;\n };\n Stepper.prototype.updateLabelPosition = function () {\n this.clearLabelPosition();\n this.labelContainer.classList.add('e-label-' + this.updateCurrentLabel());\n if (this.labelPosition.toLowerCase() === 'start' && this.orientation.toLowerCase() === 'vertical') {\n if (this.stepperItemContainer.firstChild) {\n this.stepperItemContainer.firstChild.before(this.labelContainer);\n }\n else {\n this.stepperItemContainer.appendChild(this.labelContainer);\n }\n }\n else {\n this.stepperItemContainer.appendChild(this.labelContainer);\n }\n this.element.classList.add('e-label-' + this.updateCurrentLabel());\n };\n Stepper.prototype.clearLabelPosition = function () {\n var removeCss = this.labelContainer.classList.value.match(/(e-label-[after|before]+)/g);\n if (removeCss) {\n removeClass([this.labelContainer], removeCss);\n removeClass([this.element], removeCss);\n }\n };\n Stepper.prototype.checkValidStep = function () {\n var isStepIndicator = this.element.classList.contains(STEPINDICATOR);\n var _loop_1 = function (index) {\n var item = this_1.steps[parseInt(index.toString(), 10)];\n var itemElement = this_1.stepperItemElements[parseInt(index.toString(), 10)];\n if (item.isValid !== null) {\n var indicatorEle = void 0;\n var iconEle_1;\n if (isStepIndicator && !item.iconCss) {\n indicatorEle = itemElement.querySelector('.' + ICONCSS);\n }\n else {\n iconEle_1 = itemElement.querySelector('.' + ICONCSS);\n }\n if (!indicatorEle && isStepIndicator && this_1.renderDefault(index)) {\n indicatorEle = itemElement.querySelector('.' + INDICATORICON);\n }\n var textLabelIcon = itemElement.querySelector('.e-step-validation-icon');\n var itemIcon = item.iconCss.trim().split(' ');\n var validStep = itemElement.classList.contains('e-step-valid');\n var validIconClass = validStep ? 'e-check' : 'e-circle-info';\n if (indicatorEle) {\n indicatorEle.classList.remove(INDICATORICON);\n if (indicatorEle.innerHTML !== '') {\n indicatorEle.innerHTML = '';\n }\n indicatorEle.classList.add('e-icons', validIconClass, ICONCSS);\n }\n if (this_1.renderDefault(index) && !isStepIndicator) {\n var stepSpan = itemElement.querySelector('.e-step');\n stepSpan.classList.add('e-icons', validIconClass, ICONCSS);\n }\n if (iconEle_1) {\n if (iconEle_1.innerHTML !== '') {\n iconEle_1.innerHTML = '';\n }\n else if (itemIcon.length > 0) {\n itemIcon.forEach(function (icon) { iconEle_1.classList.remove(icon); });\n }\n iconEle_1.classList.add('e-icons', validIconClass);\n }\n if (textLabelIcon) {\n textLabelIcon.classList.add(validStep ? 'e-circle-check' : 'e-circle-info');\n if (this_1.element.classList.contains(VERTICALSTEP$1)) {\n var labelEle = itemElement.querySelector('.' + LABEL);\n var textEle = itemElement.querySelector('.' + TEXT);\n var itemWidth = textEle ? textEle.offsetWidth + textEle.getBoundingClientRect().left :\n labelEle.offsetWidth + labelEle.getBoundingClientRect().left;\n var validationIcon = itemElement.querySelector('.e-step-validation-icon');\n validationIcon.style.setProperty('--icon-position', (itemWidth + 20) + 'px');\n }\n }\n }\n };\n var this_1 = this;\n for (var index = 0; index < this.steps.length; index++) {\n _loop_1(index);\n }\n };\n Stepper.prototype.updateTooltip = function () {\n if (this.showTooltip) {\n this.tooltipObj = new Tooltip({\n target: '.e-step-container', windowCollision: true,\n opensOn: 'Custom', cssClass: this.cssClass ? (STEPPERTOOLTIP + ' ' + this.cssClass) : STEPPERTOOLTIP,\n position: 'TopCenter'\n });\n this.tooltipObj.appendTo(this.stepperItemList);\n }\n else {\n if (!isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n }\n };\n Stepper.prototype.wireItemsEvents = function (itemElement, index) {\n EventHandler.add(itemElement, 'click', this.linearModeHandler.bind(this, itemElement, index), this);\n EventHandler.add(itemElement, 'mouseover', this.openStepperTooltip.bind(this, index), this);\n EventHandler.add(itemElement, 'mouseleave', this.closeStepperTooltip, this);\n };\n Stepper.prototype.unWireItemsEvents = function () {\n for (var index = 0; index < this.steps.length; index++) {\n var itemElement = this.stepperItemElements[parseInt(index.toString(), 10)];\n EventHandler.remove(itemElement, 'click', this.linearModeHandler.bind(this, itemElement, index));\n EventHandler.remove(itemElement, 'mouseover', this.openStepperTooltip.bind(this, index));\n EventHandler.remove(itemElement, 'mouseleave', this.closeStepperTooltip);\n }\n };\n Stepper.prototype.linearModeHandler = function (itemElement, index, e) {\n if (this.linear) {\n var linearModeValue = index - this.activeStep;\n if (Math.abs(linearModeValue) === 1) {\n this.stepClickHandler(index, e, itemElement);\n }\n }\n else {\n this.stepClickHandler(index, e, itemElement);\n }\n };\n Stepper.prototype.openStepperTooltip = function (index) {\n var currentStep = this.steps[parseInt(index.toString(), 10)];\n if (this.showTooltip && (currentStep.label || currentStep.text)) {\n if (!this.tooltipOpen) {\n this.updateTooltipContent(index);\n this.tooltipObj.open(this.stepperItemElements[parseInt((index).toString(), 10)]);\n if (this.stepType.toLocaleLowerCase() !== 'label' && ((this.stepType.toLocaleLowerCase() === 'indicator') ||\n (currentStep.label !== '' && currentStep.iconCss !== '') || (currentStep.label === null && currentStep.iconCss === '' && currentStep.text !== ''))) {\n var tooltipPopupClass = currentStep.status.toLowerCase() === 'inprogress' ?\n STEPPERTOOLTIP + \" \" + STEPPERIPROGRESSTIP + \" \" + (this.cssClass ? this.cssClass : '') : STEPPERTOOLTIP + \" \" + (this.cssClass ? this.cssClass : '');\n this.tooltipObj.setProperties({ cssClass: tooltipPopupClass.trim() });\n }\n this.tooltipOpen = true;\n }\n }\n };\n Stepper.prototype.closeStepperTooltip = function () {\n if (this.tooltipOpen) {\n this.tooltipObj.close();\n this.tooltipOpen = false;\n }\n };\n Stepper.prototype.updateTooltipContent = function (index) {\n if (this.showTooltip) {\n if (this.isReact) {\n this.clearTemplate(['stepperTooltipTemplate']);\n }\n var content = void 0;\n var currentStep = this.steps[parseInt(index.toString(), 10)];\n if (this.tooltipTemplate) {\n content = this.createElement('span', { className: 'e-stepper-tooltip-content' });\n var templateFunction = this.getTemplateFunction(this.tooltipTemplate);\n append(templateFunction({ value: currentStep }, this, 'stepperTooltipTemplate', (this.element.id + 'tooltipTemplate'), this.isStringTemplate), content);\n this.tooltipObj.setProperties({ content: content }, true);\n }\n else {\n var content_1 = currentStep.label ? currentStep.label : currentStep.text;\n this.tooltipObj.setProperties({ content: initializeCSPTemplate(function () { return content_1; }) }, true);\n }\n this.renderReactTemplates();\n }\n };\n Stepper.prototype.stepClickHandler = function (index, e, itemElement) {\n var clickEventArgs = {\n element: itemElement, event: e, previousStep: this.activeStep,\n activeStep: index\n };\n this.trigger('stepClick', clickEventArgs);\n this.navigateToStep(index, e, itemElement, true);\n };\n Stepper.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template) : null;\n };\n Stepper.prototype.renderItemContent = function (index, isrerender) {\n var listItems = this.stepperItemList.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt((index).toString(), 10)]);\n }\n if (this.template) {\n if (isrerender) {\n listItems[parseInt((index).toString(), 10)].classList.add(TEMPLATE);\n }\n else {\n this.stepperItemContainer.classList.add(TEMPLATE);\n }\n var item = this.steps[parseInt(index.toString(), 10)];\n append(this.templateFunction({ step: item, currentStep: index }, this, 'stepperTemplate', (this.element.id + '_stepperTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : this.stepperItemContainer);\n }\n this.renderReactTemplates();\n };\n Stepper.prototype.removeItemContent = function (ele) {\n ele.classList.remove(TEMPLATE);\n var firstChild = ele.firstElementChild;\n for (var i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n };\n Stepper.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['stepperTemplate']);\n }\n for (var i = 0; i < this.steps.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Stepper.prototype.getTemplateFunction = function (template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Stepper.prototype.navigateToStep = function (index, e, itemElement, isInteracted, isUpdated) {\n var _this = this;\n var eventArgs = {\n element: itemElement, event: e, isInteracted: isInteracted,\n previousStep: this.activeStep, activeStep: index, cancel: false\n };\n if (isUpdated !== false) {\n var previousStep_1 = this.activeStep;\n this.trigger('stepChanging', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.navigationHandler(index);\n var eventArgs = {\n element: itemElement, event: e, isInteracted: isInteracted,\n previousStep: previousStep_1, activeStep: _this.activeStep\n };\n _this.trigger('stepChanged', eventArgs);\n });\n }\n else {\n this.navigationHandler(index);\n }\n };\n Stepper.prototype.navigationHandler = function (index, stepStatus, isUpdated) {\n index = Math.min(index, this.steps.length - 1);\n var Itemslength = this.stepperItemElements.length;\n if (index >= 0 && index < Itemslength - 1) {\n index = this.stepperItemElements[parseInt(index.toString(), 10)].classList.contains(DISABLED$2) ? this.activeStep : index;\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.activeStep = parseInt(index.toString(), 10);\n this.isProtectedOnChange = prevOnChange;\n for (var i = 0; i < this.steps.length; i++) {\n var itemElement = this.stepperItemElements[parseInt(i.toString(), 10)];\n var item = this.steps[parseInt(i.toString(), 10)];\n itemElement.classList.remove(SELECTED$2, INPROGRESS, COMPLETED, NOTSTARTED);\n if (i === this.activeStep) {\n itemElement.classList.add(SELECTED$2);\n }\n if (this.activeStep >= 0 && this.progressbar) {\n if (this.element.classList.contains(HORIZSTEP$1)) {\n this.calculateProgressbarPos();\n }\n else {\n this.progressbar.style.setProperty(PROGRESSVALUE$1, ((100 / (this.steps.length - 1)) * index) + '%');\n }\n }\n else if (this.activeStep < 0 && this.progressbar) {\n this.progressbar.style.setProperty(PROGRESSVALUE$1, 0 + '%');\n }\n if (i === this.activeStep) {\n itemElement.classList.add(INPROGRESS);\n }\n else if (this.activeStep > 0 && i < this.activeStep) {\n itemElement.classList.add(COMPLETED);\n }\n else {\n itemElement.classList.add(NOTSTARTED);\n }\n if (itemElement.classList.contains(INPROGRESS)) {\n attributes(itemElement, { 'tabindex': '0', 'aria-current': 'true' });\n }\n else {\n attributes(itemElement, { 'tabindex': '-1', 'aria-current': 'false' });\n }\n var prevOnChange_1 = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (isUpdated !== false) {\n if (i < this.activeStep || (this.steps.length - 1 === this.activeStep && item.status.toLowerCase() === 'completed')) {\n item.status = StepStatus.Completed;\n }\n else if (i === this.activeStep) {\n item.status = StepStatus.InProgress;\n }\n else if (i > this.activeStep) {\n item.status = StepStatus.NotStarted;\n }\n if (stepStatus && this.activeStep === i) {\n item.status = stepStatus;\n }\n if (item.status.toLowerCase() === 'completed') {\n itemElement.classList.remove(SELECTED$2, INPROGRESS, NOTSTARTED);\n itemElement.classList.add(COMPLETED);\n }\n if (item.status.toLowerCase() === 'notstarted') {\n itemElement.classList.remove(SELECTED$2, INPROGRESS, COMPLETED);\n itemElement.classList.add(NOTSTARTED);\n }\n }\n this.isProtectedOnChange = prevOnChange_1;\n this.updateIndicatorStatus(i, itemElement);\n }\n this.updateStepInteractions();\n };\n Stepper.prototype.calculateProgressbarPos = function () {\n var _this = this;\n if ((this.element.classList.contains(LABELBEFORE) || this.element.classList.contains(LABELAFTER)) &&\n !this.element.classList.contains(STEPINDICATOR) &&\n this.stepperItemElements[parseInt(this.activeStep.toString(), 10)].classList.contains(STEPICON)) {\n var progressPos = this.element.querySelector('.e-stepper-progressbar');\n var selectedEle = this.stepperItemElements[parseInt(this.activeStep.toString(), 10)]\n .firstChild;\n var value = this.activeStep === 0 ? 0 : (selectedEle.offsetLeft - progressPos.offsetLeft +\n (selectedEle.offsetWidth / 2)) / progressPos.offsetWidth * 100;\n if (this.element.classList.contains(RTL$3)) {\n value = (progressPos.getBoundingClientRect().right - selectedEle.getBoundingClientRect().right +\n (selectedEle.offsetWidth / 2)) / progressPos.offsetWidth * 100;\n this.progressbar.style.setProperty(PROGRESSVALUE$1, (value) + '%');\n }\n else {\n this.progressbar.style.setProperty(PROGRESSVALUE$1, (value) + '%');\n }\n }\n else {\n var totalLiWidth_1 = 0;\n var activeLiWidth_1 = 0;\n this.stepperItemElements.forEach(function (element, index) {\n var itemWidth = element.offsetWidth;\n totalLiWidth_1 += itemWidth;\n if (index <= _this.activeStep) {\n activeLiWidth_1 += (index === _this.activeStep && index !== 0) ? (itemWidth / 2) : itemWidth;\n }\n });\n var spaceWidth = (this.stepperItemList.offsetWidth - totalLiWidth_1) /\n (this.stepperItemElements.length - 1);\n var progressValue = ((activeLiWidth_1 + (spaceWidth * this.activeStep)) /\n this.stepperItemList.offsetWidth) * 100;\n this.progressbar.style.setProperty(PROGRESSVALUE$1, (progressValue) + '%');\n }\n };\n Stepper.prototype.updateIndicatorStatus = function (index, itemElement) {\n if (this.renderDefault(index) && this.element.classList.contains(STEPINDICATOR) && !itemElement.classList.contains('e-step-valid')\n && !itemElement.classList.contains('e-step-error')) {\n if (itemElement.classList.contains(COMPLETED)) {\n itemElement.firstChild.classList.remove('e-icons', 'e-step-indicator');\n itemElement.firstChild.classList.add(ICONCSS, 'e-icons', 'e-check');\n }\n else if (itemElement.classList.contains(INPROGRESS) || itemElement.classList.contains(NOTSTARTED)) {\n itemElement.firstChild.classList.remove(ICONCSS, 'e-icons', 'e-check');\n itemElement.firstChild.classList.add('e-icons', 'e-step-indicator');\n }\n }\n };\n Stepper.prototype.updateStepInteractions = function () {\n var _this = this;\n this.element.classList.toggle(LINEARSTEP, this.linear);\n this.stepperItemElements.forEach(function (step, index) {\n step.classList.toggle(PREVSTEP, (index === _this.activeStep - 1));\n step.classList.toggle(NEXTSTEP, (index === _this.activeStep + 1));\n });\n };\n Stepper.prototype.removeItemElements = function () {\n for (var i = 0; i < this.stepperItemElements.length; i++) {\n remove(this.stepperItemElements[parseInt(i.toString(), 10)]);\n }\n this.stepperItemElements = [];\n };\n /**\n * Move to next step from current step in Stepper.\n *\n * @returns {void}\n */\n Stepper.prototype.nextStep = function () {\n if (this.activeStep !== this.steps.length - 1) {\n this.navigateToStep(this.activeStep + 1, null, null, false);\n }\n };\n /**\n * Move to previous step from current step in Stepper.\n *\n * @returns {void}\n */\n Stepper.prototype.previousStep = function () {\n if (this.activeStep > 0) {\n this.navigateToStep(this.activeStep - 1, null, null, false);\n }\n };\n /**\n * Reset the state of the Stepper and move to the first step.\n *\n * @returns {void}\n */\n Stepper.prototype.reset = function () {\n if (this.activeStep === 0) {\n this.updateStepInteractions();\n }\n else {\n var isDisabled = this.stepperItemElements[0].classList.contains(DISABLED$2) ? true : false;\n this.navigateToStep(isDisabled ? -1 : 0, null, null, false);\n }\n };\n /**\n * Refreshes the position of the progress bar programmatically when the dimensions of the parent container are changed.\n *\n * @returns {void}\n */\n Stepper.prototype.refreshProgressbar = function () {\n if (this.stepperItemList && this.progressbar) {\n this.setProgressPosition(this.element);\n }\n this.navigateToStep(this.activeStep, null, null, false, false);\n };\n Stepper.prototype.updateElementClassArray = function () {\n var classArray = [RTL$3, READONLY, 'e-steps-focus', LABELAFTER, LABELBEFORE, 'e-label-top',\n 'e-label-bottom', 'e-label-start', 'e-label-end', STEPINDICATOR, LABELINDICATOR, VERTICALSTEP$1, HORIZSTEP$1, LINEARSTEP];\n removeClass([this.element], classArray);\n };\n /**\n * Destroy the stepper control.\n *\n * @returns {void}\n */\n Stepper.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.unWireItemsEvents();\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.clearTemplate();\n if (this.stepperItemList) {\n remove(this.stepperItemList);\n }\n this.stepperItemList = null;\n if (this.progressStep) {\n remove(this.progressStep);\n }\n this.progressStep = null;\n this.progressbar = null;\n this.progressBarPosition = null;\n this.stepperItemContainer = null;\n this.textContainer = null;\n this.labelContainer = null;\n this.updateElementClassArray();\n this.element.removeAttribute('aria-label');\n if (this.showTooltip) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n if (this.keyboardModuleStepper) {\n this.keyboardModuleStepper.destroy();\n }\n this.keyboardModuleStepper = null;\n };\n Stepper.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleStepper = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Stepper.prototype.keyActionHandler = function (e) {\n if (this.readOnly) {\n return;\n }\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n case 'leftarrow':\n case 'rightarrow':\n case 'tab':\n case 'shiftTab':\n this.handleNavigation(this.enableRtl && this.element.classList.contains(HORIZSTEP$1) ? (e.action === 'leftarrow' || e.action === 'tab' || e.action === 'uparrow') : (e.action === 'rightarrow' || e.action === 'tab' || e.action === 'downarrow'), e);\n break;\n case 'space':\n case 'enter':\n case 'escape':\n this.handleNavigation(null, e);\n break;\n case 'home':\n case 'end':\n this.handleNavigation(null, e, this.enableRtl);\n break;\n }\n };\n Stepper.prototype.handleNavigation = function (isNextStep, e, isRTL) {\n this.isKeyNavFocus = true;\n this.element.classList.add('e-steps-focus');\n var focusedEle = this.element.querySelector('.' + FOCUS$1);\n if (!focusedEle) {\n focusedEle = this.element.querySelector('.' + SELECTED$2);\n }\n var stepItems = Array.prototype.slice.call(this.stepperItemList.children);\n var index = stepItems.indexOf(focusedEle);\n if (e.action === 'tab' || e.action === 'shiftTab' || e.action === 'downarrow' || e.action === 'uparrow' || e.action === 'space' || e.action === 'home' || e.action === 'end') {\n if ((e.action === 'tab' && index === stepItems.length - 1) || (e.action === 'shiftTab' && index === 0)) {\n if (focusedEle.classList.contains(FOCUS$1)) {\n this.updateStepFocus();\n return;\n }\n }\n else {\n e.preventDefault();\n }\n }\n if (e.action === 'escape') {\n stepItems[parseInt(index.toString(), 10)].classList.remove(FOCUS$1);\n this.element.classList.remove('e-steps-focus');\n }\n if (!(e.action === 'space' || e.action === 'enter')) {\n var prevIndex = index;\n index = isNextStep ? index + 1 : index - 1;\n while ((index >= 0 && index < stepItems.length) && stepItems[parseInt(index.toString(), 10)].classList.contains(DISABLED$2)) {\n index = isNextStep ? index + 1 : index - 1;\n }\n index = (index < 0) ? 0 : (index > stepItems.length - 1) ? stepItems.length - 1 : index;\n if (stepItems[parseInt(prevIndex.toString(), 10)].classList.contains(FOCUS$1)) {\n stepItems[parseInt(prevIndex.toString(), 10)].classList.remove(FOCUS$1);\n }\n if ((e.action === 'home' || e.action === 'end')) {\n if (e.action === 'home') {\n index = isRTL ? stepItems.length - 1 : 0;\n }\n else {\n index = isRTL ? 0 : stepItems.length - 1;\n }\n }\n if (index >= 0 && index < stepItems.length) {\n stepItems[parseInt(index.toString(), 10)].classList.add(FOCUS$1);\n }\n }\n else if ((e.action === 'space' || e.action === 'enter')) {\n var isupdateFocus = false;\n if (this.linear) {\n var linearModeValue = this.activeStep - index;\n if (Math.abs(linearModeValue) === 1) {\n this.navigateToStep(index, null, null, true);\n isupdateFocus = true;\n }\n }\n else {\n this.navigateToStep(index, null, null, true);\n isupdateFocus = true;\n }\n if (isupdateFocus) {\n this.updateStepFocus();\n this.stepperItemElements[index].focus();\n }\n }\n };\n Stepper.prototype.renderStepperItems = function (isUpdate, isStepType) {\n this.updateElementClassArray();\n this.removeItemElements();\n this.element.querySelector('.e-stepper-progressbar').remove();\n if (isUpdate) {\n this.updatePosition();\n }\n if (isStepType) {\n this.updateStepType();\n }\n if (this.readOnly && !this.element.classList.contains(READONLY)) {\n this.element.classList.add(READONLY);\n }\n if (this.enableRtl && !this.element.classList.contains(RTL$3)) {\n this.element.classList.add(RTL$3);\n }\n this.updateOrientaion(this.element);\n this.renderItems();\n this.renderProgressBar(this.element);\n this.checkValidStep();\n this.updateAnimation();\n this.navigateToStep(this.activeStep, null, this.stepperItemElements[this.activeStep], true);\n };\n Stepper.prototype.updateDynamicSteps = function (steps, prevSteps) {\n if (!(steps instanceof Array && prevSteps instanceof Array)) {\n var stepCounts = Object.keys(steps);\n for (var i = 0; i < stepCounts.length; i++) {\n var index = parseInt(Object.keys(steps)[i], 10);\n var changedPropsCount = Object.keys(steps[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(steps[index])[j];\n if (property === 'status') {\n if (this.activeStep === index) {\n this.navigationHandler(index, steps[index].status);\n }\n else {\n this.steps[index].status = prevSteps[index].status;\n }\n }\n else {\n this.removeItemElements();\n this.renderItems();\n this.updateStepperStatus();\n }\n if (property === 'label' && (this.steps[index].iconCss || this.steps[index].text) &&\n this.stepType.toLowerCase() === 'default') {\n this.refreshProgressbar();\n }\n this.updateStepInteractions();\n this.checkValidStep();\n }\n }\n }\n else {\n this.renderStepperItems(true, true);\n }\n };\n Stepper.prototype.updateDynamicActiveStep = function (activeStep, preActiveStep) {\n this.activeStep = (activeStep > this.steps.length - 1 || activeStep < -1) ? preActiveStep : this.activeStep;\n if (this.activeStep >= 0 && this.stepperItemElements[parseInt(this.activeStep.toString(), 10)].classList.contains(DISABLED$2)) {\n this.activeStep = preActiveStep;\n }\n if (this.linear) {\n var linearModeValue = preActiveStep - this.activeStep;\n if (Math.abs(linearModeValue) === 1) {\n this.navigateToStep(this.activeStep, null, null, true);\n }\n }\n else {\n this.navigateToStep(this.activeStep, null, this.stepperItemElements[this.activeStep], true);\n }\n };\n Stepper.prototype.updateDynamicCssClass = function (cssClass, prevCssClass) {\n if (prevCssClass) {\n removeClass([this.element], prevCssClass.trim().split(' '));\n }\n if (cssClass) {\n addClass([this.element], cssClass.trim().split(' '));\n }\n if (this.tooltipObj) {\n this.tooltipObj.setProperties({ cssClass: this.cssClass ? (STEPPERTOOLTIP + ' ' + this.cssClass) : STEPPERTOOLTIP });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {StepperModel} newProp - Specifies new properties\n * @param {StepperModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Stepper.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 'steps': {\n this.updateDynamicSteps(newProp.steps, oldProp.steps);\n break;\n }\n case 'orientation':\n this.updateOrientaion(this.element);\n this.renderStepperItems(true);\n break;\n case 'activeStep':\n this.updateDynamicActiveStep(newProp.activeStep, oldProp.activeStep);\n break;\n case 'enableRtl':\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL$3);\n break;\n case 'readOnly':\n this.element.classList[this.readOnly ? 'add' : 'remove'](READONLY);\n break;\n case 'cssClass':\n this.updateDynamicCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'labelPosition':\n this.renderStepperItems(true);\n break;\n case 'showTooltip':\n this.updateTooltip();\n break;\n case 'stepType':\n this.renderStepperItems(true, true);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n case 'animation':\n this.updateAnimation();\n break;\n case 'linear':\n this.updateStepInteractions();\n break;\n }\n }\n };\n __decorate$e([\n Property(0)\n ], Stepper.prototype, \"activeStep\", void 0);\n __decorate$e([\n Complex({}, StepperAnimationSettings)\n ], Stepper.prototype, \"animation\", void 0);\n __decorate$e([\n Property(false)\n ], Stepper.prototype, \"linear\", void 0);\n __decorate$e([\n Property(false)\n ], Stepper.prototype, \"showTooltip\", void 0);\n __decorate$e([\n Property('')\n ], Stepper.prototype, \"template\", void 0);\n __decorate$e([\n Property('')\n ], Stepper.prototype, \"tooltipTemplate\", void 0);\n __decorate$e([\n Property(StepLabelPosition.Bottom)\n ], Stepper.prototype, \"labelPosition\", void 0);\n __decorate$e([\n Property(StepType.Default)\n ], Stepper.prototype, \"stepType\", void 0);\n __decorate$e([\n Event()\n ], Stepper.prototype, \"stepChanged\", void 0);\n __decorate$e([\n Event()\n ], Stepper.prototype, \"stepChanging\", void 0);\n __decorate$e([\n Event()\n ], Stepper.prototype, \"stepClick\", void 0);\n __decorate$e([\n Event()\n ], Stepper.prototype, \"beforeStepRender\", void 0);\n Stepper = __decorate$e([\n NotifyPropertyChanges\n ], Stepper);\n return Stepper;\n}(StepperBase));\n\nexport { Accordion, AccordionActionSettings, AccordionAnimationSettings, AccordionItem, ActionSettings, AppBar, Breadcrumb, BreadcrumbItem, BreadcrumbOverflowMode, Carousel, CarouselItem, CarouselSwipeMode, ContextMenu, FieldSettings, FieldsSettings, HScroll, Header, Item, Menu, MenuAnimationSettings, MenuItem, NodeAnimationSettings, Sidebar, Step, StepLabelPosition, StepStatus, StepType, Stepper, StepperAnimationSettings, StepperBase, StepperOrientation, Tab, TabActionSettings, TabAnimationSettings, TabItem, Toolbar, TreeView, VScroll, addScrolling, destroyScroll };\n","import { EventHandler, Touch, isNullOrUndefined, getValue, select, Browser, debounce, Property, ChildProperty, selectAll, compile, L10n, addClass, removeClass, extend, append, setStyleAttribute, prepend, rippleEffect, detach, Complex, Event, NotifyPropertyChanges, Component, classList, closest, KeyboardEvents, attributes, isUndefined, formatUnit, Animation, getUniqueID, remove, SanitizeHtmlHelper, setValue, matches as matches$1, createElement, getComponent } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil, Predicate, JsonAdaptor } from '@syncfusion/ej2-data';\nimport { ListBase, Sortable, cssClass, moveTo } from '@syncfusion/ej2-lists';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\nimport { hideSpinner, createSpinner, showSpinner, isCollide, Popup, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { Input, TextBox } from '@syncfusion/ej2-inputs';\nimport { createCheckBox, Button } from '@syncfusion/ej2-buttons';\nimport { TreeView } from '@syncfusion/ej2-navigations';\n\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 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 * @param {boolean} [queryStringUpdated] - Optional parameter.\n * @param {string} [currentValue] - Optional parameter.\n * @param {boolean} [isVirtual] - Optional parameter.\n * @param {boolean} [refresh] - Optional parameter.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nfunction 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// eslint-disable-next-line valid-jsdoc\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=true] - Specifies the case sensitive option for search operation.\n * @param {(string | number | boolean | { [key: string]: Object })[]} [dataSource] - Specifies the data source.\n * @param {{ text: string, value: string }} [fields] - Specifies the fields.\n * @param {string} [type] - Specifies the type.\n * @returns {{ item: Element | null, index: number | null }} Returns the search matched items.\n */\nfunction Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type, ignoreAccent) {\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 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()) ||\n (type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1)) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n var 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 (ignoreAccent && text && queryStr) {\n text = text.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n queryStr = queryStr.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n }\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/**\n * @param {string} value - The value to escape.\n * @returns {string} Returns the escaped string.\n */\nfunction escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n/**\n * @param {string} elementId - The ID of the list element.\n * @returns {void}\n */\nfunction resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n\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 */\nfunction highlightSearch(element, query, ignoreCase, type) {\n var isHtmlElement = /<[^>]*>/g.test(element.innerText);\n if (isHtmlElement) {\n element.innerText = element.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nfunction 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\nvar __assign = (undefined && undefined.__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 __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar VirtualScroll = /** @__PURE__ @class */ (function () {\n function VirtualScroll(parent) {\n var _this = this;\n this.sentinelInfo = {\n 'up': {\n check: function (rect, info) {\n var top = rect.top - _this.containerElementRect.top;\n info.entered = top >= 0;\n return top + (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2) >= 0;\n },\n axis: 'Y'\n },\n 'down': {\n check: function (rect, info) {\n var top = rect.bottom;\n info.entered = rect.bottom <= _this.containerElementRect.bottom;\n return top - (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2)\n <= _this.parent.listItemHeight * _this.parent.virtualItemCount / 2;\n }, axis: 'Y'\n }\n };\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('observe', this.observe, this);\n this.parent.on('setGeneratedData', this.setGeneratedData, this);\n this.parent.on('dataProcessAsync', this.dataProcessAsync, this);\n this.parent.on('setCurrentViewDataAsync', this.setCurrentViewDataAsync, this);\n this.parent.on('bindScrollEvent', this.bindScrollEvent, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('observe', this.observe);\n this.parent.off('setGeneratedData', this.setGeneratedData);\n this.parent.off('dataProcessAsync', this.dataProcessAsync);\n this.parent.off('setCurrentViewDataAsync', this.setCurrentViewDataAsync);\n this.parent.off('bindScrollEvent', this.bindScrollEvent);\n };\n VirtualScroll.prototype.bindScrollEvent = function (component) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.component = component.component;\n this.observe(function (scrollArgs) { return _this.scrollListener(scrollArgs); });\n };\n VirtualScroll.prototype.observe = function (callback) {\n this.containerElementRect = this.parent.popupContentElement.getBoundingClientRect();\n EventHandler.add(this.parent.popupContentElement, 'wheel mousedown', this.popupScrollHandler, this);\n this.touchModule = new Touch(this.parent.popupContentElement, {\n scroll: this.popupScrollHandler.bind(this)\n });\n EventHandler.add(this.parent.popupContentElement, 'scroll', this.virtualScrollHandler(callback), this);\n };\n VirtualScroll.prototype.getModuleName = function () {\n return 'VirtualScroll';\n };\n VirtualScroll.prototype.popupScrollHandler = function () {\n this.parent.isMouseScrollAction = true;\n this.parent.isPreventScrollAction = false;\n };\n VirtualScroll.prototype.getPageQuery = function (query, virtualStartIndex, virtualEndIndex) {\n if (virtualEndIndex !== 0 && !this.parent.allowFiltering && this.component !== 'autocomplete') {\n query = query.skip(virtualStartIndex);\n }\n return query;\n };\n VirtualScroll.prototype.setGeneratedData = function (qStartIndex, recentlyGeneratedData) {\n var loopIteration = 0;\n var endIndex = this.parent.listData.length + this.parent.virtualItemStartIndex;\n for (var i = this.parent.virtualItemStartIndex; i < endIndex; i++) {\n var alreadyAddedData = this.parent.generatedDataObject[i];\n if (!alreadyAddedData) {\n if (recentlyGeneratedData !== null && this.parent.listData.slice(loopIteration, loopIteration + 1).length > 0) {\n var slicedData = this.parent.listData.slice(loopIteration, loopIteration + 1);\n if (slicedData.length > 0) {\n // Safely assign slicedData to this.parent.generatedDataObject[i]\n this.parent.generatedDataObject[i] = slicedData;\n }\n }\n }\n loopIteration++;\n }\n };\n VirtualScroll.prototype.generateAndExecuteQueryAsync = function (query, virtualItemStartIndex, virtualItemEndIndex, isQueryGenerated) {\n if (virtualItemStartIndex === void 0) { virtualItemStartIndex = 0; }\n if (virtualItemEndIndex === void 0) { virtualItemEndIndex = 0; }\n if (isQueryGenerated === void 0) { isQueryGenerated = false; }\n var dataSource = this.parent.dataSource;\n if (!isQueryGenerated) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.parent.query)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newQuery = this.removeSkipAndTakeEvents(this.parent.query.clone());\n query = this.getPageQuery(newQuery, virtualItemStartIndex, virtualItemEndIndex);\n }\n else {\n query = this.getPageQuery(query, virtualItemStartIndex, virtualItemEndIndex);\n }\n }\n var tempCustomFilter = this.parent.isCustomFilter;\n if (this.component === 'combobox') {\n var totalData = 0;\n if (this.parent.dataSource instanceof DataManager) {\n totalData = this.parent.dataSource.dataSource.json.length;\n }\n else if (this.parent.dataSource && this.parent.dataSource.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n totalData = this.parent.dataSource.length;\n }\n if (totalData > 0) {\n this.parent.isCustomFilter = (totalData === this.parent.totalItemCount &&\n this.parent.queryString !== this.parent.typedString) ? true : this.parent.isCustomFilter;\n }\n }\n this.parent.resetList(dataSource, this.parent.fields, query);\n this.parent.isCustomFilter = tempCustomFilter;\n };\n VirtualScroll.prototype.removeSkipAndTakeEvents = function (query) {\n query.queries = query.queries.filter(function (event) {\n return event.fn !== 'onSkip' && event.fn !== 'onTake';\n });\n return query;\n };\n VirtualScroll.prototype.setCurrentViewDataAsync = function (component) {\n // eslint-disable-next-line\n var currentData = [];\n var isResetListCalled = false;\n var isListUpdated = true;\n if (isNullOrUndefined(this.component)) {\n this.component = component.component;\n }\n var endIndex = this.parent.viewPortInfo.endIndex;\n if (this.component === 'multiselect' && this.parent.mode === 'CheckBox' && this.parent.value && Array.isArray(this.parent.value) && this.parent.value.length > 0 && this.parent.enableSelectionOrder && this.parent.targetElement().trim() === '') {\n if (this.parent.viewPortInfo.startIndex < this.parent.value.length) {\n endIndex = this.parent.viewPortInfo.endIndex - this.parent.value.length;\n if (this.parent.viewPortInfo.startIndex === 0) {\n this.parent.updateVirtualReOrderList(true);\n if (this.parent.value.length < this.parent.itemCount) {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0)\n .take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ?\n this.parent.appendUncheckList : false;\n isListUpdated = false;\n }\n else {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n }\n isListUpdated = false;\n }\n else if (this.parent.viewPortInfo.startIndex !== 0) {\n this.parent.updateVirtualReOrderList(true);\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n isListUpdated = false;\n }\n if (this.parent.viewPortInfo.startIndex !== 0 &&\n this.parent.viewPortInfo.startIndex - this.parent.value.length !== this.parent.itemCount &&\n (this.parent.viewPortInfo.startIndex + this.parent.itemCount > this.parent.value.length)) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0).take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ? this.parent.appendUncheckList : false;\n }\n }\n else {\n var reOrderList = this.parent.list.querySelectorAll('.e-reorder')[0];\n if (this.parent.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n var query = this.parent.getForQuery(this.parent.value).clone(); // Assuming query is of type any\n var skipvalue = this.parent.viewPortInfo.startIndex - this.parent.value.length >= 0\n ? this.parent.viewPortInfo.startIndex - this.parent.value.length\n : 0;\n query = query.skip(skipvalue);\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n }\n this.parent.totalItemsCount();\n }\n if (isListUpdated) {\n for (var i = this.parent.viewPortInfo.startIndex; i < endIndex; i++) {\n var index = i;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var alreadyAddedData = this.parent.generatedDataObject[index];\n if (this.component === 'multiselect' && this.parent.hideSelectedItem) {\n if (alreadyAddedData) {\n var value = getValue(this.parent.fields.value, alreadyAddedData[0]);\n if (this.parent.value &&\n value !== null &&\n Array.isArray(this.parent.value) &&\n this.parent.value.length > 0 &&\n this.parent.value.indexOf(value) < 0) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n if (this.parent.viewPortInfo.endIndex === this.parent.totalItemCount + this.parent.value.length &&\n this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n }\n else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n break;\n }\n else if (this.parent.value === null || (this.parent.value && this.parent.value.length === 0)) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n if (index === endIndex - 1) {\n if (currentData.length !== this.parent.itemCount) {\n if (this.parent.hideSelectedItem) {\n var query = this.parent.value && this.parent.value.length > 0 ?\n this.parent.getForQuery(this.parent.value).clone() : new Query;\n if (this.parent.value && (this.parent.viewPortInfo.endIndex === this.parent.totalItemCount +\n this.parent.value.length) && this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n }\n else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n }\n }\n }\n }\n else {\n if (alreadyAddedData) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n this.parent.setCurrentView = false;\n }\n }\n if (!isResetListCalled && isListUpdated) {\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.startIndex === 0 && this.parent.virtualCustomData) {\n currentData.splice(0, 0, this.parent.virtualCustomData);\n }\n var totalData = [];\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.endIndex === this.parent.totalItemCount) {\n if (this.parent.virtualCustomSelectData && this.parent.virtualCustomSelectData.length > 0) {\n totalData = currentData.concat(this.parent.virtualCustomSelectData);\n currentData = totalData;\n }\n }\n this.parent.renderItems(currentData, this.parent.fields, this.component === 'multiselect' && this.parent.mode === 'CheckBox');\n }\n if (this.component === 'multiselect') {\n this.parent.updatevirtualizationList();\n }\n this.parent.getSkeletonCount();\n this.parent.skeletonCount = this.parent.totalItemCount !== 0 && this.parent.totalItemCount < this.parent.itemCount * 2 &&\n ((!(this.parent.dataSource instanceof DataManager)) || ((this.parent.dataSource instanceof DataManager) &&\n (this.parent.totalItemCount <= this.parent.itemCount))) ? 0 : this.parent.skeletonCount;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.parent.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n virtualTrackElement.style = this.parent.GetVirtualTrackHeight();\n }\n else if (!virtualTrackElement && this.parent.skeletonCount > 0 && this.parent.popupWrapper) {\n var virualElement = this.parent.createElement('div', {\n id: this.parent.element.id + '_popup', className: 'e-virtual-ddl', styles: this.parent.GetVirtualTrackHeight()\n });\n this.parent.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n this.parent.UpdateSkeleton();\n this.parent.liCollections = this.parent.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n (virtualContentElement).style = this.parent.getTransformValues();\n }\n if (this.parent.fields.groupBy) {\n this.parent.scrollStop();\n }\n if (this.parent.keyCode === 40 &&\n this.parent.isScrollChanged &&\n this.parent.hideSelectedItem &&\n !isNullOrUndefined(this.parent.currentFocuedListElement)) {\n var currentSelectElem = this.parent.getElementByValue(this.parent.currentFocuedListElement.getAttribute('data-value'));\n this.parent.addListFocus(currentSelectElem);\n this.parent.isScrollChanged = false;\n }\n };\n VirtualScroll.prototype.generateQueryAndSetQueryIndexAsync = function (query, isPopupOpen) {\n var isStartIndexInitialised = false;\n var queryStartIndex = 0;\n var queryEndIndex = 0;\n var vEndIndex = this.parent.viewPortInfo.endIndex;\n if (!isPopupOpen && vEndIndex !== 0) {\n for (var i = this.parent.viewPortInfo.startIndex; i <= vEndIndex; i++) {\n if (!(i in this.parent.generatedDataObject)) {\n if (!isStartIndexInitialised) {\n isStartIndexInitialised = true;\n queryStartIndex = queryEndIndex = i;\n }\n else {\n queryEndIndex = i === vEndIndex ? i : i + 1;\n }\n }\n }\n }\n if (isStartIndexInitialised &&\n !(this.parent.totalItemCount === queryStartIndex &&\n this.parent.totalItemCount === queryEndIndex)) {\n this.parent.virtualItemStartIndex = queryStartIndex;\n this.parent.virtualItemEndIndex = queryEndIndex;\n this.parent.setCurrentView = true;\n this.generateAndExecuteQueryAsync(query, queryStartIndex, queryEndIndex);\n if (this.component === 'multiselect' &&\n this.parent.hideSelectedItem &&\n this.parent.value &&\n Array.isArray(this.parent.value) &&\n this.parent.value.length > 0) {\n this.parent.totalItemsCount();\n }\n if (this.component === 'multiselect' &&\n this.parent.virtualItemStartIndex === this.parent.virtualItemEndIndex) {\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n }\n }\n if (!(this.parent.dataSource instanceof DataManager) ||\n (this.parent.dataSource instanceof DataManager &&\n !this.parent.isRequesting)) {\n this.setCurrentViewDataAsync();\n }\n };\n VirtualScroll.prototype.dataProcessAsync = function (isOpenPopup) {\n this.parent.selectedValueInfo = null;\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n this.generateQueryAndSetQueryIndexAsync(new Query(), isOpenPopup);\n };\n VirtualScroll.prototype.virtualScrollRefreshAsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.parent.isCustomFilter = (!(this.parent.isTyped || (this.component === 'combobox' && this.parent.allowFiltering && this.parent.queryString !== this.parent.typedString) || (!isNullOrUndefined(this.parent.filterInput) && !isNullOrUndefined(this.parent.filterInput.value) && this.parent.filterInput.value !== '') && this.component !== 'combobox') && !(this.component === 'autocomplete' && this.parent.value != null)) || this.parent.isCustomFilter;\n if (this.parent.allowFiltering || this.component === 'autocomplete') {\n if (!isNullOrUndefined(this.parent.typedString) && !(this.component === 'combobox' && !isNullOrUndefined(this.parent.typedString) && this.parent.allowFiltering)) {\n if (this.parent.viewPortInfo.endIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.endIndex = this.parent.dataCount;\n }\n if (this.parent.viewPortInfo.startIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.startIndex = this.parent.dataCount - this.parent.itemCount;\n }\n }\n else {\n this.parent.getSkeletonCount(true);\n if (this.component === 'combobox') {\n this.parent.skeletonCount = this.parent.totalItemCount !== 0 &&\n this.parent.totalItemCount < (this.parent.itemCount * 2) && ((!(this.parent.dataSource instanceof DataManager)) ||\n ((this.parent.dataSource instanceof DataManager) && (this.parent.totalItemCount <= this.parent.itemCount))) ?\n 0 : this.parent.skeletonCount;\n }\n }\n }\n return [4 /*yield*/, this.dataProcessAsync()];\n case 1:\n _a.sent();\n if (this.parent.keyboardEvent != null &&\n (!(this.parent.dataSource instanceof DataManager) ||\n (this.parent.dataSource instanceof DataManager &&\n !this.parent.isRequesting))) {\n this.parent.handleVirtualKeyboardActions(this.parent.keyboardEvent, this.parent.pageCount);\n }\n if (!this.parent.customFilterQuery) {\n this.parent.isCustomFilter = false;\n }\n return [2 /*return*/];\n }\n });\n });\n };\n VirtualScroll.prototype.scrollListener = function (scrollArgs) {\n var _this = this;\n if (!this.parent.isPreventScrollAction && !this.parent.isVirtualTrackHeight) {\n this.parent.preventSetCurrentData = false;\n var info = scrollArgs.sentinel;\n var pStartIndex = this.parent.previousStartIndex;\n this.parent.viewPortInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset, false);\n this.parent.isUpwardScrolling = false;\n if (this.parent.previousStartIndex !== pStartIndex && !this.parent.isKeyBoardAction) {\n this.parent.isScrollActionTriggered = false;\n this.parent.currentPageNumber = this.parent.viewPortInfo.currentPageNumber;\n this.parent.virtualListInfo = __assign({}, this.parent.viewPortInfo);\n this.parent.isPreventKeyAction = true;\n this.parent.isVirtualScrolling = true;\n setTimeout(function () {\n _this.parent.pageCount = _this.parent.getPageCount();\n _this.virtualScrollRefreshAsync().then(function () {\n if (_this.parent.popupObj) {\n _this.parent.list = _this.parent.popupObj.element.querySelector('.' + 'e-content') || select('.' + 'e-content');\n _this.parent.updateSelectionList();\n _this.parent.liCollections = _this.parent.getItems();\n }\n _this.parent.isKeyBoardAction = false;\n _this.parent.isVirtualScrolling = false;\n _this.parent.isPreventKeyAction = false;\n });\n }, 5);\n }\n else if (this.parent.isScrollActionTriggered) {\n this.parent.isPreventKeyAction = false;\n this.parent.isScrollActionTriggered = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.parent.getTransformValues();\n }\n this.parent.previousInfo = this.parent.viewPortInfo;\n }\n };\n VirtualScroll.prototype.getInfoFromView = function (direction, info, e, isscrollAction) {\n var infoType = {\n direction: direction, sentinelInfo: info, offsets: e,\n startIndex: this.parent.previousStartIndex, endIndex: this.parent.previousEndIndex\n };\n var vHeight = this.parent.popupContentElement ?\n this.parent.popupContentElement.getBoundingClientRect().height : 0;\n //Row Start and End Index calculation\n var rowHeight = this.parent.listItemHeight;\n var exactTopIndex = e.top / rowHeight;\n var infoViewIndices = vHeight / rowHeight;\n var exactEndIndex = exactTopIndex + infoViewIndices;\n var pageSizeBy4 = this.parent.virtualItemCount / 4;\n var totalItemCount = this.parent.totalItemCount;\n if (infoType.direction === 'down') {\n var sIndex = Math.round(exactEndIndex) - Math.round((pageSizeBy4));\n if (isNullOrUndefined(infoType.startIndex) || (exactEndIndex >\n (infoType.startIndex + Math.round((this.parent.virtualItemCount / 2 + pageSizeBy4)))\n && infoType.endIndex !== totalItemCount)) {\n infoType.startIndex = sIndex >= 0 ? Math.round(sIndex) : 0;\n infoType.startIndex = infoType.startIndex > exactTopIndex ? Math.floor(exactTopIndex) : infoType.startIndex;\n var eIndex = infoType.startIndex + this.parent.virtualItemCount;\n infoType.startIndex = eIndex < exactEndIndex ? (Math.ceil(exactEndIndex) - this.parent.virtualItemCount)\n : infoType.startIndex;\n infoType.endIndex = eIndex < totalItemCount ? eIndex : totalItemCount;\n infoType.startIndex = eIndex >= totalItemCount\n ? (infoType.endIndex - this.parent.virtualItemCount > 0\n ? infoType.endIndex - this.parent.virtualItemCount\n : 0)\n : infoType.startIndex;\n infoType.currentPageNumber = Math.ceil(infoType.endIndex / this.parent.virtualItemCount);\n }\n }\n else if (infoType.direction === 'up') {\n if ((infoType.startIndex && infoType.endIndex) || (Math.ceil(exactTopIndex) > this.parent.previousStartIndex)) {\n var loadAtIndex = Math.round(((infoType.startIndex * rowHeight) + (pageSizeBy4 * rowHeight)) / rowHeight);\n if (exactTopIndex < loadAtIndex || (Math.ceil(exactTopIndex) > this.parent.previousStartIndex)) {\n var idxAddedToExactTop = (pageSizeBy4) > infoViewIndices ? pageSizeBy4 :\n (infoViewIndices + infoViewIndices / 4);\n var eIndex = Math.round(exactTopIndex + idxAddedToExactTop);\n infoType.endIndex = (eIndex < totalItemCount) ? eIndex : totalItemCount;\n var sIndex = infoType.endIndex - this.parent.virtualItemCount;\n infoType.startIndex = sIndex > 0 ? sIndex : 0;\n infoType.endIndex = sIndex < 0 ? this.parent.virtualItemCount : infoType.endIndex;\n infoType.currentPageNumber = Math.ceil(infoType.startIndex / this.parent.virtualItemCount);\n }\n }\n }\n if (!isscrollAction) {\n this.parent.previousStartIndex = infoType.startIndex;\n this.parent.startIndex = infoType.startIndex;\n this.parent.previousEndIndex = infoType.endIndex;\n }\n else {\n this.parent.scrollPreStartIndex = infoType.startIndex;\n }\n return infoType;\n };\n VirtualScroll.prototype.virtualScrollHandler = function (callback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var prevTop = 0;\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n return function (e) {\n var top = e.target.scrollTop;\n var left = e.target.scrollLeft;\n var direction = prevTop < top && !_this.parent.isUpwardScrolling ? 'down' : 'up';\n prevTop = top;\n var current = _this.sentinelInfo[direction];\n var pstartIndex = _this.parent.scrollPreStartIndex;\n var scrollOffsetargs = {\n top: top,\n left: left\n };\n if (_this.parent.list && _this.parent.list.querySelectorAll('.e-virtual-list').length > 0) {\n _this.getInfoFromView(direction, current, scrollOffsetargs, true);\n if (_this.parent.scrollPreStartIndex !== pstartIndex && !_this.parent.isPreventScrollAction) {\n _this.parent.isScrollActionTriggered = true;\n var virtualPoup = (_this.parent.list.querySelector('.e-virtual-ddl-content'));\n virtualPoup.style.transform = 'translate(0px,' + top + 'px)';\n }\n }\n var debounceFunction = debounced100;\n if (current.axis === 'X') {\n debounceFunction = debounced50;\n }\n debounceFunction({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n };\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FieldSettings = /** @__PURE__ @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 __decorate([\n Property()\n ], FieldSettings.prototype, \"disabled\", void 0);\n return FieldSettings;\n}(ChildProperty));\nvar 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 = /** @__PURE__ @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.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n _this.isVirtualizationEnabled = false;\n _this.isCustomDataUpdated = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.isCheckBoxSelection = false;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n _this.remoteDataCount = -1;\n _this.isRemoteDataUpdated = false;\n _this.isIncrementalRequest = false;\n _this.itemCount = 30;\n _this.virtualListHeight = 0;\n _this.isVirtualScrolling = false;\n _this.isPreventScrollAction = false;\n _this.scrollPreStartIndex = 0;\n _this.isScrollActionTriggered = false;\n _this.previousStartIndex = 0;\n _this.isMouseScrollAction = false;\n _this.isKeyBoardAction = false;\n _this.isScrollChanged = false;\n _this.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.skeletonCount = 32;\n _this.isVirtualTrackHeight = false;\n _this.virtualSelectAll = false;\n _this.incrementalQueryString = '';\n _this.incrementalEndIndex = 0;\n _this.incrementalStartIndex = 0;\n _this.incrementalPreQueryString = '';\n _this.isObjectCustomValue = false;\n _this.appendUncheckList = false;\n _this.getInitialData = false;\n _this.preventPopupOpen = true;\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.isDynamicData = false;\n _this.isPrimitiveData = 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 if (!isNullOrUndefined(this.listData)) {\n var dataSource = this.listData;\n var fields_1 = 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_1.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields_1.text, item).toString(), text)) {\n value = getValue(fields_1.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_1.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) &&\n itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields_1.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields_1.text, item), text)) {\n value = getValue(fields_1.value, item);\n }\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 ((!isNullOrUndefined(this.noRecordsTemplate) && 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) && (noDataElement[i]).textContent !== '')) {\n ele.appendChild(noDataElement[i]);\n }\n }\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.checkAndResetCache = function () {\n if (this.isVirtualizationEnabled) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n this.selectedValueInfo = null;\n }\n };\n DropDownBase.prototype.updateIncrementalInfo = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.isIncrementalRequest = true;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isIncrementalRequest = false;\n };\n DropDownBase.prototype.updateIncrementalView = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n };\n DropDownBase.prototype.updateVirtualItemIndex = function () {\n this.virtualItemStartIndex = this.viewPortInfo.startIndex;\n this.virtualItemEndIndex = this.viewPortInfo.endIndex;\n this.virtualListInfo = this.viewPortInfo;\n };\n DropDownBase.prototype.getFilteringSkeletonCount = function () {\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount < this.itemCount * 2 && ((!(this.dataSource instanceof DataManager)) ||\n ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount))) ? 0 : this.skeletonCount;\n var skeletonUpdated = true;\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && (this.totalItemCount < (this.itemCount * 2)) && ((!(this.dataSource instanceof DataManager)) || ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount)))) {\n this.skeletonCount = 0;\n skeletonUpdated = false;\n }\n if (!this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (currentSkeletonCount !== this.skeletonCount && skeletonUpdated) {\n this.UpdateSkeleton(true, Math.abs(currentSkeletonCount - this.skeletonCount));\n }\n else {\n this.UpdateSkeleton();\n }\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n if ((this.list.getElementsByClassName('e-virtual-ddl').length > 0)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0 && this.list.querySelector('.e-dropdownbase')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.list.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.list.getElementsByClassName('e-virtual-ddl-content').length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownBase.prototype.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listContainerHeight != null ? parseInt(this.listContainerHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 4 < this.itemCount ? this.itemCount : actualCount * 4;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.virtualItemCount = this.itemCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2);\n };\n DropDownBase.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ?\n 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) ||\n this.skeletonCount === 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 - parseInt(window.getComputedStyle(this.getItems()[1]).marginBottom, 10)) + '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 if (isContainSkeleton.firstChild) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\n }\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue &&\n this.properties.value &&\n this.properties.value instanceof Array &&\n 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 * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - The event object.\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.preventPopupOpen = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var group = element.querySelectorAll('select>optgroup');\n var fields;\n var isSelectGroupCheck = this.getModuleName() === 'multiselect' && this.isGroupChecking && group.length > 0;\n fields = isSelectGroupCheck ? { value: 'value', text: 'text', groupBy: 'categeory' } : fields = { value: 'value', text: 'text' };\n var jsonElement = [];\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 if (isSelectGroupCheck) {\n this.getJSONfromOption(jsonElement, child, fields, item.label);\n }\n else {\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, isSelectGroupCheck ? fields.groupBy : this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss, this.fields.disabled);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss, disabled) {\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 disabled: !isNullOrUndefined(disabled) ? disabled : this.fields && this.fields.disabled\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields, category) {\n if (category === void 0) { category = null; }\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 if (!isNullOrUndefined(category)) {\n json[fields.groupBy] = category;\n }\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 * @param {MouseEvent | KeyboardEventArgs | TouchEvent} event - Specifies the event which is the reason for the invocation of this method.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n var isWhereExist_1 = false;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n var isReOrder = true;\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onWhere') {\n isWhereExist_1 = true;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (e.count !== 0 && e.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = e.count;\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition === 'or' || newQuery.queries[queryElements].e.operator === 'equal')) {\n isReOrder = false;\n }\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition === 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator === 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = e.count;\n }\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n _this.isRequesting = false;\n var listItems = e.result;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(listItems, fields);\n return;\n }\n if ((!_this.isVirtualizationEnabled && listItems.length === 0) ||\n (_this.isVirtualizationEnabled && listItems.length === 0 && !isWhereExist_1)) {\n _this.isDataFetched = true;\n }\n if (!isWhereExist_1) {\n _this.remoteDataCount = e.count;\n }\n _this.dataCount = !_this.virtualSelectAll ? e.count : _this.dataCount;\n _this.totalItemCount = !_this.virtualSelectAll ? e.count : _this.totalItemCount;\n ulElement = _this.renderItems(listItems, fields);\n _this.appendUncheckList = false;\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n if (_this.getInitialData) {\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n if (_this.isVirtualizationEnabled && _this.setCurrentView) {\n _this.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n }\n if (_this.keyboardEvent != null) {\n _this.handleVirtualKeyboardActions(_this.keyboardEvent, _this.pageCount);\n }\n if (_this.isVirtualizationEnabled) {\n _this.getFilteringSkeletonCount();\n }\n if (_this.virtualSelectAll && _this.virtualSelectAllData) {\n _this.virtualSelectionAll(_this.virtualSelectAllState, _this.liCollections, _this.CurrentEvent);\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.virtualSelectAll = false;\n }\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n _this.isRequesting = false;\n var isReOrder = true;\n var listItems = void 0;\n if (_this.isVirtualizationEnabled && !_this.virtualGroupDataSource && _this.fields.groupBy) {\n var data = new DataManager(_this.dataSource).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n var dataManager = _this.isVirtualizationEnabled &&\n _this.virtualGroupDataSource\n && !_this.isCustomDataUpdated ? new DataManager(_this.virtualGroupDataSource) :\n 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 &&\n listItems.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = listItems.count;\n listItems = (newQuery).executeLocal(dataManager);\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition === 'or' || newQuery.queries[queryElements].e.operator === 'equal')) {\n isReOrder = false;\n }\n }\n if (isReOrder) {\n listItems = (newQuery).executeLocal(dataManager);\n _this.isVirtualTrackHeight = (!(_this.dataSource instanceof DataManager) &&\n !_this.isCustomDataUpdated) ? true : false;\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition === 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator === 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder && (!(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated) &&\n !_this.virtualSelectAll) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = _this.virtualSelectAll ? listItems.length :\n listItems.count;\n }\n listItems = _this.isVirtualizationEnabled ? listItems.result : listItems;\n // eslint-enable @typescript-eslint/no-explicit-any\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n return;\n }\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n if (_this.getInitialData) {\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n }\n };\n DropDownBase.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updatePopupState = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.virtualSelectionAll = function (state, li, event) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updateRemoteData = function () {\n this.setListData(this.dataSource, this.fields, this.query);\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.isObjectInArray = function (objectToFind, array) {\n return array.some(function (item) {\n return Object.keys(objectToFind).every(function (key) {\n return Object.prototype.hasOwnProperty.call(item, key) && item[key] === objectToFind[key];\n });\n });\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.isRequesting = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.isVirtualizationEnabled && !this.isCustomDataUpdated && !this.virtualSelectAll) {\n this.notify('setGeneratedData', {\n module: 'VirtualScroll'\n });\n }\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n if (!this.isVirtualizationEnabled) {\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n }\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML === '') {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n if (ulElement.children[0].classList.contains('e-hide-group-header')) {\n setStyleAttribute(ulElement.children[1], { zIndex: 11 });\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n if (!this.isVirtualizationEnabled) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n if (this.fields.disabled) {\n var liCollections = listElement.querySelectorAll('.' + dropDownBaseClasses.li);\n for (var index = 0; index < liCollections.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.disabled]) {\n this.disableListItem(liCollections[index]);\n }\n }\n }\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = this.fields.disabled ? listElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled') : listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n if (this.isVirtualizationEnabled && this.viewPortInfo.startIndex !== 0) {\n var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n focusItem = elements && elements.length > 0 ? elements[2] : focusItem;\n }\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\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 if (this.element.querySelector('optgroup') && this.isGroupChecking && this.getModuleName() === 'multiselect') {\n dataSource = ListBase.groupDataSource(dataSource, fields, this.sortOrder);\n }\n else {\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else if (this.getModuleName() !== 'listbox' || (this.getModuleName() === 'listbox' && !this.preventDefActionFilter)) {\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 computedHeight = getComputedStyle(this.getValidLi(), null).getPropertyValue('height');\n var liHeight = this.getModuleName() === 'multiselect' ? parseFloat(computedHeight) : parseInt(computedHeight, 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 for (var i = topIndex; i > -1; i--) {\n var index = this.isVirtualizationEnabled ? i + virtualListCount : i;\n if (this.isVirtualizationEnabled) {\n if (this.fixedHeaderElement && this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n if (isDownkey) {\n if ((!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.selected) && this.getModuleName() !== 'autocomplete') || (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.focus) && this.getModuleName() === 'autocomplete')) ;\n }\n }\n else {\n if (this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n }\n }\n };\n DropDownBase.prototype.getPageCount = function (returnExactCount) {\n if (this.list) {\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 else {\n return 0;\n }\n };\n DropDownBase.prototype.updateGroupHeader = function (index, liCollections, target) {\n if (!isNullOrUndefined(liCollections[index]) &&\n liCollections[index].classList.contains(dropDownBaseClasses.group)) {\n this.updateGroupFixedHeader(liCollections[index], target);\n return true;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n return false;\n }\n };\n DropDownBase.prototype.updateGroupFixedHeader = function (element, target) {\n if (this.fixedHeaderElement) {\n if (!isNullOrUndefined(element.innerHTML)) {\n this.fixedHeaderElement.innerHTML = element.innerHTML;\n }\n this.fixedHeaderElement.style.position = 'fixed';\n this.fixedHeaderElement.style.top = (this.list.parentElement.offsetTop + this.list.offsetTop) - window.scrollY + 'px';\n this.fixedHeaderElement.style.display = 'block';\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n if (this.isVirtualizationEnabled) {\n return this.liCollections[0].classList.contains('e-virtual-list') ? this.liCollections[this.skeletonCount] : this.liCollections[0];\n }\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {boolean} isCheckBoxUpdate - Specifies whether the list item is updated with checkbox.\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 if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\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 if (this.getModuleName() !== 'listbox' || (this.getModuleName() === 'listbox' && !this.preventDefActionFilter)) {\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.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');\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 if (this.getModuleName() === 'multiselect' && this.isCheckBoxSelection && this.appendUncheckList && this.list && this.list.querySelector('.e-active')) {\n virtualUlElement.appendChild(ulElement);\n isCheckBoxUpdate = true;\n }\n else {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n }\n var reOrderList = this.list.querySelectorAll('.e-reorder');\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList && reOrderList.length > 0 && !isCheckBoxUpdate) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList[0]);\n }\n this.updateListElements(listData);\n }\n else if (!virtualUlElement) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n else {\n if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\n ulElement = this.createListItems(listData, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n var isRemovedUlelement = false;\n if (!oldUlElement && this.list.querySelector('.e-list-parent' + '.e-reorder')) {\n oldUlElement = this.list.querySelector('.e-list-parent' + '.e-reorder');\n }\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect')) || isRemovedUlelement) {\n if (!this.appendUncheckList) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n }\n else {\n virtualUlElement.appendChild(ulElement);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement) || (!virtualUlElement.firstChild)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n return ulElement;\n };\n DropDownBase.prototype.createVirtualContent = function () {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content'\n }));\n }\n };\n DropDownBase.prototype.updateListElements = function (listData) {\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.listData = listData;\n this.postRender(this.list, listData, this.bindEvent);\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n var ulElement;\n if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n ulElement = ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n if (this.isVirtualizationEnabled && this.isReact) {\n this.renderReactTemplates();\n }\n return ulElement;\n }\n else {\n ulElement = ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n if (this.isVirtualizationEnabled && this.isReact) {\n this.renderReactTemplates();\n }\n return ulElement;\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 = [];\n if (this.fields.disabled && this.getModuleName() === 'multiselect' && this.liCollections) {\n listItems = this.liCollections;\n }\n else {\n listItems = this.getItems();\n }\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 * @param {HTMLElement} ulElement - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValueFilter = function (value, ulElement) {\n var index;\n if (!ulElement) {\n return null;\n }\n var listItems = ulElement.querySelectorAll('li' + ':not(.e-list-group-item)');\n if (listItems) {\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n if (element) {\n element.dispatchEvent(evt);\n }\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.isPrimitiveData = true;\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 * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\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) &&\n 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 this.isPrimitiveData = 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 if (this.getModuleName() === 'listbox') {\n if (!this.isReact || (this.isReact && (!isNullOrUndefined(newProp.dataSource) || !isNullOrUndefined(newProp.sortOrder)))) {\n this.updateDataSource(updateData, oldProp);\n }\n }\n else {\n this.isDynamicData = true;\n this.updateDataSource(updateData, oldProp);\n }\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 {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n EventHandler.add(document, 'scroll', this.updateGroupFixedHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n DropDownBase.prototype.removeScrollEvent = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var isListboxEmpty = itemsCount === 0;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = typeof this.itemTemplate !== 'function' &&\n itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n if (this.getModuleName() === 'listbox') {\n this.listData.splice(isListboxEmpty ?\n this.listData.length : index, 0, item);\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n }\n else {\n this.listData.push(item);\n }\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n if (this.getModuleName() === 'listbox') {\n this.updateActionCompleteData(li, item, isListboxEmpty ? null : index + i);\n }\n else {\n this.updateActionCompleteData(li, item, index);\n }\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.isAddNewItemTemplate = true;\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index] && this.liCollections[index].parentNode) {\n this.liCollections[index].parentNode.\n insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n if (itemIndex && this.getModuleName() === 'listbox') {\n this.ulElement.insertBefore(liCollections[i], this.ulElement.childNodes[itemIndex + i]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\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 /**\n * Checks if the given HTML element is disabled.\n *\n * @param {HTMLElement} li - The HTML element to check.\n * @returns {boolean} - Returns true if the element is disabled, otherwise false.\n */\n DropDownBase.prototype.isDisabledElement = function (li) {\n if (li && li.classList.contains('e-disabled')) {\n return true;\n }\n return false;\n };\n /**\n * Checks whether the list item at the specified index is disabled.\n *\n * @param {number} index - The index of the list item to check.\n * @returns {boolean} True if the list item is disabled, false otherwise.\n */\n DropDownBase.prototype.isDisabledItemByIndex = function (index) {\n if (this.fields.disabled && this.liCollections) {\n return this.isDisabledElement(this.liCollections[index]);\n }\n return false;\n };\n /**\n * Disables the given list item.\n *\n * @param { HTMLLIElement } li - The list item to disable.\n * @returns {void}\n */\n DropDownBase.prototype.disableListItem = function (li) {\n li.classList.add('e-disabled');\n li.setAttribute('aria-disabled', 'true');\n li.setAttribute('aria-selected', 'false');\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document) {\n EventHandler.remove(document, 'scroll', this.updateGroupFixedHeader);\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null, disabled: 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));\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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// don't use space in classnames\nvar 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 resizeIcon: 'e-resizer-right e-icons',\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$1(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.isTouched = false;\n _this.isFocused = false;\n _this.autoFill = false;\n _this.isUpdateHeaderHeight = false;\n _this.isUpdateFooterHeight = false;\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.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.fields.disabled ? this.ulElement.querySelector('.' + dropDownListClasses.li + ':not(.e-disabled)') : 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)) ||\n (this.allowObjectBinding && this.previousValue &&\n this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem :\n dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {\n this.checkAndResetCache();\n if (this.enableVirtualization && this.list) {\n this.updateInitialData();\n }\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 if (this.inputWrapper && this.inputWrapper.container) {\n this.inputWrapper.container.setAttribute('aria-disabled', 'false');\n this.inputWrapper.container.removeAttribute('disabled');\n }\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 if (this.inputWrapper && this.inputWrapper.container) {\n this.inputWrapper.container.setAttribute('aria-disabled', 'true');\n this.inputWrapper.container.setAttribute('disabled', '');\n }\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 /**\n * Checks if the given value is disabled.\n *\n * @param { string | number | boolean | object } value - The value to check for disablement. Can be a string, number, boolean, or object.\n * @returns { boolean } A boolean indicating whether the value is disabled.\n */\n DropDownList.prototype.isDisableItemValue = function (value) {\n if (typeof (value) === 'object') {\n var objectValue = JSON.parse(JSON.stringify(value))[this.fields.value];\n return this.isDisabledItemByIndex(this.getIndexByValue(objectValue));\n }\n return this.isDisabledItemByIndex(this.getIndexByValue(value));\n };\n DropDownList.prototype.updateValues = function () {\n if (this.fields.disabled) {\n if (this.value != null) {\n this.value = !this.isDisableItemValue(this.value) ? this.value : null;\n }\n if (this.text != null) {\n this.text = !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (this.index != null) {\n this.index = !this.isDisabledItemByIndex(this.index) ? this.index : null;\n this.activeIndex = this.index;\n }\n }\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 this.isFocused = false;\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 this.isFocused = true;\n };\n DropDownList.prototype.resizingWireEvent = function () {\n // Mouse events\n EventHandler.add(document, 'mousemove', this.resizePopup, this);\n EventHandler.add(document, 'mouseup', this.stopResizing, this);\n // Touch events\n EventHandler.add(document, 'touchmove', this.resizePopup, this);\n EventHandler.add(document, 'touchend', this.stopResizing, this);\n };\n DropDownList.prototype.resizingUnWireEvent = function () {\n // Mouse events\n EventHandler.remove(document, 'mousemove', this.resizePopup);\n EventHandler.remove(document, 'mouseup', this.stopResizing);\n // Touch events\n EventHandler.remove(document, 'touchmove', this.resizePopup);\n EventHandler.remove(document, 'touchend', this.stopResizing);\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.startResizing = function (event) {\n this.isResizing = true;\n this.trigger('resizeStart', event);\n // Get initial touch or mouse coordinates\n var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;\n var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;\n // Store the initial dimensions of the popup\n if (this.list && this.list.parentElement) {\n this.originalWidth = this.list.parentElement.offsetWidth;\n this.originalHeight = this.list.parentElement.offsetHeight;\n this.originalMouseX = clientX;\n this.originalMouseY = clientY;\n }\n // Wire up events for resizing\n this.resizingWireEvent();\n if (event) {\n event.preventDefault(); // Prevent selection behavior if event exists\n }\n };\n DropDownList.prototype.resizePopup = function (event) {\n if (!this.isResizing) {\n return;\n }\n this.trigger('resizing', event);\n // Get the current touch or mouse position\n var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;\n var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;\n // Calculate the new width and height based on drag\n var dx = clientX - this.originalMouseX;\n var dy = clientY - this.originalMouseY;\n if (this.list && this.list.parentElement) {\n // Minimum width and height (100px)\n var minWidth = parseInt(window.getComputedStyle(this.list.parentElement).minWidth, 10);\n var minHeight = parseInt(window.getComputedStyle(this.list.parentElement).minHeight, 10);\n minWidth = minWidth || 100;\n minHeight = minHeight || 120;\n // Ensure the new width and height are not less than the minimum\n this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);\n this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);\n this.list.parentElement.style.width = this.resizeWidth + \"px\";\n this.list.parentElement.style.height = this.resizeHeight + \"px\";\n this.list.parentElement.style.maxHeight = this.resizeHeight + \"px\";\n this.list.style.maxHeight = this.resizeHeight + \"px\";\n if (this.fixedHeaderElement && this.ulElement) {\n this.fixedHeaderElement.style.width = this.ulElement.offsetWidth + \"px\";\n }\n }\n if (event) {\n event.preventDefault(); // Prevent selection behavior if event exists\n }\n };\n DropDownList.prototype.stopResizing = function (event) {\n if (this.isResizing) {\n this.isResizing = false;\n this.trigger('resizeStop', event);\n // Unwire the resize event listeners\n this.resizingUnWireEvent();\n }\n if (event) {\n event.preventDefault(); // Prevent selection behavior if event exists\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) || this.isDisabledElement(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) ||\n 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 :\n 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 ?\n 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')) &&\n 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 ?\n 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 ?\n this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ?\n 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 ?\n this.selectedLI.offsetTop +\n (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop -\n (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 = void 0;\n if (this.fields.disabled) {\n var enableLiCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li + ':not(.e-disabled)');\n li = incrementalSearch(e.charCode, enableLiCollections, this.activeIndex, true, this.element.id);\n }\n else {\n li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n }\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.fields.disabled && this.list && this.list.querySelectorAll('.e-list-item:not(.e-disabled)').length === 0) {\n return;\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value = this.getItemData().value;\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n var filterIndex = this.getIndexByValue(value);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle) && !isVirtualKeyAction) {\n this.setSelection(focusEle, e);\n if (this.enableVirtualization) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop +\n (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n if (this.fields.groupBy) {\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex === 0 ?\n this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n }\n this.list.scrollTop = selectedLiOffsetTop -\n (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var virtualIndex = this.activeIndex;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n index = isVirtualKeyAction ? virtualIndex : index;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n if (!this.enableVirtualization) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n else {\n if (!isVirtualKeyAction) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[this.skeletonCount]\n : this.liCollections[index];\n nextItem = !isNullOrUndefined(nextItem) && !nextItem.classList.contains('e-virtual-list') ? nextItem : null;\n }\n else {\n if (this.getModuleName() === 'autocomplete') {\n var value = this.getFormattedValue(this.selectedLI.getAttribute('data-value'));\n nextItem = this.getElementByValue(value);\n }\n else {\n nextItem = this.getElementByValue(this.getItemData().value);\n }\n }\n }\n }\n if (!isNullOrUndefined(nextItem)) {\n var focusAtFirstElement = this.liCollections[this.skeletonCount] &&\n this.liCollections[this.skeletonCount].classList.contains('e-item-focus');\n this.setSelection(nextItem, e);\n if (focusAtFirstElement && this.enableVirtualization && this.getModuleName() === 'autocomplete' && !isVirtualKeyAction) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) :\n this.selectedLI.offsetTop;\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex === 0 && this.fields.groupBy ?\n this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.getModuleName() !== 'autocomplete' && ((this.viewPortInfo.endIndex !== this.totalItemCount && e.action === 'down') || (this.viewPortInfo.startIndex !== 0 && e.action === 'up'))) {\n if (e.action === 'down') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex + this.itemCount) <\n (this.totalItemCount - this.itemCount) ? this.viewPortInfo.startIndex + this.itemCount :\n 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 = this.liCollections[0].getAttribute('data-value') !== 'null' ?\n this.getFormattedValue(this.liCollections[0].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\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 ?\n 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 = 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);\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 = this.getItemData().value;\n var filterIndex = this.getIndexByValueFilter(value, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist' && this.filterInput) {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n var itemIndex;\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index].classList.contains(dropDownListClasses.focus)\n || this.liCollections[index].classList.contains(dropDownListClasses.selected)) {\n itemIndex = index;\n break;\n }\n }\n if (itemIndex != null && this.isDisabledElement(this.liCollections[itemIndex])) {\n if (this.getModuleName() !== 'autocomplete') {\n if (this.liCollections.length - 1 === itemIndex && e.action === 'down') {\n e.action = 'up';\n }\n if (itemIndex === 0 && e.action === 'up') {\n e.action = 'down';\n }\n }\n this.updateUpDownAction(e);\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 if (!this.enableVirtualization && this.liCollections[findLi] && this.liCollections[findLi].classList.contains('e-disabled')) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n switch (e.action) {\n case 'down':\n case 'up':\n if (this.itemData != null || this.getModuleName() === 'autocomplete') {\n this.updateUpDownAction(e, true);\n }\n break;\n case 'pageUp':\n this.activeIndex = this.getModuleName() === 'autocomplete' ?\n this.getIndexByValue(this.selectedLI.getAttribute('data-value')) + this.getPageCount() - 1 :\n this.getIndexByValue(this.previousValue);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = this.getModuleName() === 'autocomplete' ?\n this.getIndexByValue(this.selectedLI.getAttribute('data-value')) - this.getPageCount() :\n this.getIndexByValue(this.previousValue);\n this.pageDownSelection(!isNullOrUndefined(this.activeIndex) ?\n (this.activeIndex + this.getPageCount()) : (2 * this.getPageCount()), e, true);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n }\n this.keyboardEvent = null;\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isDisabledElement(li)) {\n return;\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 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 && previousItem && previousItem.classList.contains('e-disabled')) {\n var validIndex = steps >= 0 ? steps + 1 : 0;\n while (validIndex < this.liCollections.length) {\n previousItem = this.liCollections[validIndex];\n if (previousItem && !previousItem.classList.contains('e-disabled')) {\n break;\n }\n validIndex--;\n if (validIndex < 0) {\n return;\n }\n }\n }\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = (this.liCollections.length >= steps && steps >= 0) ?\n 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' &&\n !previousItem.classList.contains('e-active')) || (this.getModuleName() === 'autocomplete' &&\n !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 && previousItem && previousItem.classList.contains('e-disabled')) {\n while (steps >= 0 && steps < this.liCollections.length) {\n previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if (previousItem && !previousItem.classList.contains('e-disabled')) {\n break;\n }\n steps++;\n }\n }\n if (this.enableVirtualization && this.skeletonCount > 0) {\n steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n if (this.getModuleName() === 'combobox' && this.isTyped) {\n this.isInteracted = false;\n }\n this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut(e);\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n this.keyboardEvent = null;\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = li.getAttribute('data-value') !== null ?\n 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' &&\n !this.allowObjectBinding ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var filterIndex = this.getIndexByValueFilter(value, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n }\n else {\n if (this.enableVirtualization && this.activeIndex == null && this.dataSource instanceof DataManager) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.activeIndex = this.getIndexByValue(value);\n }\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n this.isTouched = !isNullOrUndefined(e);\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (!isNullOrUndefined(dataItem.value) && !this.enableVirtualization && this.allowFiltering) {\n this.activeIndex = this.getIndexByValueFilter(dataItem.value, this.actionCompleteData.ulElement);\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding &&\n (this.previousValue != null && this.isObjectInArray(this.previousValue, [this.allowCustom &&\n this.isObjectCustomValue ? this.value ? this.value : dataItem : dataItem.value ?\n 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.isPrimitiveData ? this.fields.value : '';\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ?\n getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ?\n this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) ||\n (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : 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 ?\n this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) ||\n (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : 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 * @param {boolean} isCustomValue - Specifies whether the value is custom value or not.\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 ?\n this.value : this.getDataByValue(dataItem.value) : dataItem.value;\n this.setProperties({ 'index': index, 'text': dataItem.text ? dataItem.text.toString() : 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 var option = document.createElement('option');\n option.text = this.text;\n option.setAttribute('selected', '');\n this.hiddenElement.appendChild(option);\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.filterArgs = e;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n this.getInitialData = true;\n this.renderList();\n if (!this.isSecondClick && !this.isDropDownClick) {\n this.executeCloneElements();\n }\n }\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n if (!this.getInitialData) {\n this.searchLists(e);\n }\n if ((this.enableVirtualization && this.getModuleName() !== 'autocomplete') || (this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount !== 0)) {\n this.getFilteringSkeletonCount();\n }\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else if (((this.getModuleName() !== 'combobox')) || (this.isFiltering() && this.getModuleName() === 'combobox' && this.typedString !== '')) {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = (this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery)) ?\n this.customFilterQuery.clone() : query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n if (this.enableVirtualization && this.viewPortInfo.endIndex !== 0) {\n var takeValue = this.getTakeValue();\n var alreadySkipAdded = false;\n if (filterQuery) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n alreadySkipAdded = true;\n break;\n }\n }\n }\n var queryTakeValue = 0;\n var querySkipValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ?\n filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ?\n this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n var skipExists = 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 querySkipValue = filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n alreadySkipAdded = false;\n --queryElements;\n continue;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ?\n queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (!skipExists && (this.allowFiltering || !this.isPopupOpen || !alreadySkipAdded)) {\n if (querySkipValue > 0) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else {\n if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n this.checkAndResetCache();\n this.isRequesting = false;\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.customFilterQuery = query ? query.clone() : query;\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 * @deprecated\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 this.getInitialData) ? false : true;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n if (this.enableVirtualization) {\n if (this.isFiltering()) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.list.parentElement.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 this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\n }\n this.renderReactTemplates();\n if (this.filterInput && this.filterInput.value === '' && this.getModuleName() === 'combobox') {\n this.executeCloneElements();\n }\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 && this.isDeviceFullScreen) {\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 if (!isNullOrUndefined(e) && !isNullOrUndefined(e.data) && e.data.length > 1 && this.autoFill && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.inputElement.value = e.data;\n }\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 if (_this.getModuleName() === 'combobox' && _this.isFiltering() && isNullOrUndefined(_this.list)) {\n _this.renderList();\n }\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.getTakeValue = function () {\n return this.allowFiltering && this.getModuleName() === 'dropdownlist' && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.isNotSearchList && !this.enableVirtualization) {\n this.isNotSearchList = false;\n return;\n }\n if (this.getInitialData) {\n this.updateActionCompleteDataValues(ulElement, list);\n this.getInitialData = false;\n this.searchLists(this.filterArgs);\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) &&\n ((!(this.dataSource instanceof DataManager)) ||\n ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount))) ? 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_1 = this.allowObjectBinding && !isNullOrUndefined(this.value) ?\n 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_1 : x[checkField_1] === value_1;\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_1 : x[checkField_1] === value_1;\n });\n }\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', value_1)))\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 if (this.isDynamicData) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ?\n getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n this.selectedLI = this.getElementByValue(currentValue);\n this.isDynamicData = false;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.allowCustom || (this.allowFiltering && !this.isValueInList(list, this.value) &&\n 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))) &&\n !this.enableVirtualization) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var isValidAddition = !isNullOrUndefined(this.value) && selectedItem && selectedItem.getAttribute('data-value') === value.toString();\n if (isValidAddition) {\n this.addNewItem(list, selectedItem);\n }\n }\n if (!isNullOrUndefined(this.itemData) || (isNullOrUndefined(this.itemData) && this.enableVirtualization)) {\n this.getSkeletonCount();\n this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < (this.itemCount * 2) &&\n ((!(this.dataSource instanceof DataManager)) ||\n ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount))) ? 0 : this.skeletonCount;\n this.UpdateSkeleton();\n this.focusIndexItem();\n }\n if (this.enableVirtualization) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n else if (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && !this.isFiltering()) {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n }\n else if (this.enableVirtualization && this.getModuleName() === 'autocomplete') {\n this.activeIndex = this.skeletonCount;\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n if (this.enableVirtualization) {\n if (!this.list.querySelector('.e-virtual-list')) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n }\n }\n if (this.enableVirtualization && tempItemCount !== this.itemCount) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.isValueInList = function (list, valueToFind) {\n if (Array.isArray(list)) {\n for (var i = 0; i < list.length; i++) {\n if (list[i] === valueToFind) {\n return true;\n }\n }\n }\n else if (typeof list === 'object' && list !== null) {\n for (var key in list) {\n if (Object.prototype.hasOwnProperty.call(list, key) && list[key] === valueToFind) {\n return true;\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_2 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean') && data === value_2) ||\n (getValue(_this.fields.value, data) === value_2));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = ((this.enableVirtualization && !isNullOrUndefined(value)) || !this.enableVirtualization) ?\n this.getIndexByValue(value) : this.activeIndex;\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n if (!(this.enableVirtualization && isNullOrUndefined(element))) {\n this.removeFocus();\n }\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.updateSelectionList = function () {\n var selectedItem = this.list && this.list.querySelector('.' + 'e-active');\n if (!selectedItem && !isNullOrUndefined(this.value) && this.getModuleName() !== 'autocomplete') {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var findEle = this.findListElement(this.list, 'li', 'data-value', value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n popupEle.setAttribute('aria-label', _this.element.id);\n popupEle.setAttribute('role', 'dialog');\n var searchBox = _this.setSearchBox(popupEle);\n _this.listContainerHeight = _this.allowFiltering && _this.getModuleName() === 'dropdownlist' && Browser.isDevice ?\n formatUnit(Math.round(window.outerHeight).toString() + 'px') : formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n _this.isUpdateHeaderHeight = _this.header.offsetHeight !== 0;\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n _this.isUpdateFooterHeight = _this.footer.offsetHeight !== 0;\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) +\n parseInt(window.getComputedStyle(listitems[0]).marginBottom, 10) : 0;\n }\n if (_this.enableVirtualization && !_this.list.classList.contains(dropDownBaseClasses.noData)) {\n _this.getSkeletonCount();\n _this.skeletonCount = _this.totalItemCount < (_this.itemCount * 2) && ((!(_this.dataSource instanceof DataManager)) ||\n ((_this.dataSource instanceof DataManager) && (_this.totalItemCount <= _this.itemCount))) ? 0 : _this.skeletonCount;\n if (!_this.list.querySelector('.e-virtual-ddl-content')) {\n _this.list.appendChild(_this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: _this.getTransformValues()\n })).appendChild(_this.list.querySelector('.e-list-parent'));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n _this.UpdateSkeleton();\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.virtualItemCount = _this.itemCount;\n if (!_this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-virtual-ddl', styles: _this.GetVirtualTrackHeight()\n });\n popupEle.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl')[0].style = _this.GetVirtualTrackHeight();\n }\n }\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container) &&\n _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) -\n (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) -\n (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.isDeviceFullScreen && (!_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) &&\n !(_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() && _this.isDeviceFullScreen) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n if (_this.enableVirtualization) {\n _this.notify('bindScrollEvent', {\n module: 'VirtualScroll',\n component: _this.getModuleName(),\n enable: _this.enableVirtualization\n });\n setTimeout(function () {\n if (_this.value || _this.list.querySelector('.e-active')) {\n _this.updateSelectionList();\n if (_this.selectedValueInfo && _this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n else {\n _this.scrollBottom(true, true);\n }\n }\n }, 5);\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (_this.getModuleName() !== 'dropdownlist' && _this.list.classList.contains('e-nodata')) {\n attributes(_this.targetElement(), { 'aria-activedescendant': 'no-record' });\n _this.popupContentElement.setAttribute('role', 'status');\n _this.popupContentElement.setAttribute('id', 'no-record');\n }\n _this.inputElement.setAttribute('aria-expanded', 'true');\n _this.inputElement.setAttribute('aria-controls', _this.element.id + '_popup');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n if (_this.isReact) {\n setTimeout(function () {\n if (_this.popupHeight && _this.list && _this.popupHeight !== 'auto' && !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n var popupHeightValue = typeof _this.popupHeight === 'string' ? parseInt(_this.popupHeight, 10) : _this.popupHeight;\n if (!_this.isUpdateHeaderHeight && _this.headerTemplate && _this.header) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.header.offsetHeight).toString() + 'px';\n _this.isUpdateHeaderHeight = true;\n }\n if (!_this.isUpdateFooterHeight && _this.footerTemplate && _this.footer) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.footer.offsetHeight).toString() + 'px';\n _this.isUpdateFooterHeight = true;\n }\n }\n }, 15);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n if (_this.allowResize) {\n var resizePaddingBottom = 16;\n // Create the resizer div\n _this.resizer = _this.createElement('div', {\n id: _this.element.id + '_resize-popup',\n className: dropDownListClasses.resizeIcon // Adding class for styling\n });\n // Add the resizer div to the popup\n if (_this.list && _this.list.parentElement) {\n _this.list.parentElement.classList.add('e-resize');\n if (_this.popupHeight.toString().toLowerCase() !== 'auto') {\n _this.list.parentElement.style.height = '100%';\n }\n _this.list.parentElement.style.paddingBottom = (_this.getModuleName() === 'dropdownlist' && _this.allowFiltering && _this.searchBoxHeight) ? (_this.searchBoxHeight + resizePaddingBottom).toString() + 'px' : resizePaddingBottom.toString() + 'px';\n if (_this.header || _this.footer || _this.itemTemplate) {\n _this.list.parentElement.style.paddingBottom = ((parseInt(_this.list.parentElement.style.maxHeight, 10) - parseInt(_this.list.style.maxHeight, 10)) + resizePaddingBottom).toString() + 'px';\n }\n _this.list.parentElement.appendChild(_this.resizer);\n //hold the popup resize\n _this.list.parentElement.style.width = _this.resizeWidth + \"px\";\n _this.list.parentElement.style.height = _this.resizeHeight + \"px\";\n _this.list.parentElement.style.maxHeight = _this.resizeHeight + \"px\";\n _this.list.style.maxHeight = _this.resizeHeight + \"px\";\n }\n // Attach mouse and touch events to the resizer\n EventHandler.add(_this.resizer, 'mousedown', _this.startResizing, _this);\n EventHandler.add(_this.resizer, 'touchstart', _this.startResizing, _this);\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.length > 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 else if (_this.enableVirtualization) {\n _this.focusIndexItem();\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 &&\n elementRect.right <= window.innerWidth);\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 + parseInt(window.getComputedStyle(firstItem).marginBottom, 10);\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight && !this.enableVirtualization) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (width.indexOf('px') > -1) && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial, isInitialSelection, keyAction) {\n var _this = this;\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyAction === void 0) { keyAction = null; }\n if (isNullOrUndefined(this.selectedLI) && this.enableVirtualization) {\n this.selectedLI = this.list.querySelector('.' + dropDownBaseClasses.li);\n if (!isNullOrUndefined(this.selectedLI) && this.selectedLI.classList.contains('e-virtual-list')) {\n this.selectedLI = this.liCollections[this.skeletonCount];\n }\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n var selectedListMargin = this.selectedLI &&\n !isNaN(parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10)) ?\n parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10) : 0;\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ?\n this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * (this.selectedLI.offsetHeight +\n selectedListMargin)) : this.selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * (this.selectedLI.offsetHeight + selectedListMargin)) +\n (this.selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 :\n nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10);\n var boxRange = selectedLiOffsetTop - (virtualListCount * (this.selectedLI.offsetHeight + selectedListMargin)) +\n (this.selectedLI.offsetHeight + selectedListMargin) - 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 &&\n currentElementValue === lastElementValue && keyAction !== 'end' && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n if (this.enableVirtualization && this.itemTemplate) {\n this.list.scrollTop += nextOffset;\n }\n else {\n if (this.enableVirtualization) {\n liCount = keyAction === 'pageDown' ? this.getPageCount() + 1 : liCount;\n }\n this.list.scrollTop += (this.selectedLI.offsetHeight + selectedListMargin) * liCount;\n }\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction === 'end') {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyAction === 'pageDown' && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n isInitial && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight +\n (this.listItemHeight * 2) : this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\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 selectedListMargin = this.selectedLI &&\n !isNaN(parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10)) ?\n parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10) : 0;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ?\n this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * (this.selectedLI.offsetHeight +\n selectedListMargin)) : this.selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * (this.selectedLI.offsetHeight +\n selectedListMargin)) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ?\n 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 + selectedListMargin)) +\n (this.selectedLI.offsetHeight + selectedListMargin) - 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 &&\n currentElementValue === firstElementValue && keyAction !== 'home' && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= (this.selectedLI.offsetHeight + selectedListMargin) * liCount;\n this.isPreventKeyAction = this.list.scrollTop !== 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction === 'home') {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyAction === 'pageUp' && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\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 ?\n 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) &&\n !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.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() && this.isDeviceFullScreen) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n this.filterInput.removeAttribute('aria-activedescendant');\n this.filterInput.removeAttribute('aria-disabled');\n this.filterInput.removeAttribute('role');\n this.filterInput.removeAttribute('autocomplete');\n this.filterInput.removeAttribute('autocapitalize');\n this.filterInput.removeAttribute('spellcheck');\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n if (this.enableVirtualization) {\n if ((this.value == null || this.isTyped)) {\n this.viewPortInfo.endIndex = this.viewPortInfo && this.viewPortInfo.endIndex > 0 ?\n this.viewPortInfo.endIndex : this.itemCount;\n if (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'dropdownlist' &&\n !isNullOrUndefined(this.typedString) && this.typedString !== '') || (this.getModuleName() === 'combobox' &&\n 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 (_this.getModuleName() === 'dropdownlist') {\n Input.destroy({\n element: _this.filterInput,\n floatLabelType: _this.floatLabelType,\n properties: { placeholder: _this.filterBarPlaceholder },\n buttons: _this.clearIconElement\n }, _this.clearIconElement);\n }\n _this.filterInputObj = null;\n 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 ?\n this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && isFilterValue && this.totalItemCount !== dataSourceCount) {\n this.updateInitialData();\n this.checkAndResetCache();\n }\n };\n DropDownList.prototype.updateInitialData = function () {\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n if (this.getModuleName() === 'combobox') {\n this.typedString = '';\n }\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.getModuleName() !== 'autocomplete' && this.totalItemCount !== 0 && this.totalItemCount > (this.itemCount * 2)) {\n this.getSkeletonCount();\n }\n this.UpdateSkeleton();\n this.listData = currentData;\n this.updateActionCompleteDataValues(ulElement, currentData);\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.inputElement.removeAttribute('aria-controls');\n if (this.popupObj) {\n if (this.resizer) {\n EventHandler.remove(this.resizer, 'mousedown', this.startResizing);\n EventHandler.remove(this.resizer, 'touchstart', this.startResizing);\n }\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')) &&\n 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: {\n 'aria-hidden': 'true',\n 'tabindex': '-1',\n 'class': dropDownListClasses.hiddenElement\n }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n if (!this.hiddenElement.hasAttribute('aria-label')) {\n this.hiddenElement.setAttribute('aria-label', this.getModuleName());\n }\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) &&\n 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 if (!this.inputElement.hasAttribute('aria-label')) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n }\n else if (this.getModuleName() === 'dropdownlist') {\n if (!this.targetElement().hasAttribute('aria-label')) {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n }\n if (!this.inputElement.hasAttribute('aria-label')) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n if (this.enableVirtualization) {\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n if (this.index !== null) {\n this.activeIndex = this.index + this.skeletonCount;\n }\n }\n this.initValue();\n this.selectedValueInfo = this.viewPortInfo;\n if (this.enableVirtualization) {\n this.activeIndex = this.activeIndex + this.skeletonCount;\n }\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = this.allowObjectBinding ? this.getDataByValue(selectElement.options[selectElement.selectedIndex].value) :\n 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 ?\n 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 parseInt(window.getComputedStyle(item).marginBottom, 10);\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 if (this.list && !(this.isReact)) {\n this.list.innerHTML = '';\n }\n else {\n this.list = null;\n }\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))) ||\n ((props.dataSource instanceof DataManager) || (!isNullOrUndefined(props) && Array.isArray(props.dataSource) &&\n !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) ?\n 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 var index = isNullOrUndefined(value) ? null : this.index;\n if ((isNullOrUndefined(index) && (currentValue === value)) || this.isAngular) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value });\n }\n else {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'index': index, 'value': value });\n }\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (!isNullOrUndefined(newProp.dataSource) && !this.isTouched && (isNullOrUndefined(newProp.value) &&\n isNullOrUndefined(newProp.index)) && !isNullOrUndefined(this.preselectedIndex) && !isNullOrUndefined(this.index)) {\n newProp.index = this.index;\n }\n if (!isNullOrUndefined(newProp.value) || !isNullOrUndefined(newProp.index)) {\n this.isTouched = true;\n }\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n this_1.getSkeletonCount();\n this_1.checkAndResetCache();\n break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (this_1.fields.disabled) {\n newProp.text = newProp.text && !this_1.isDisabledItemByIndex(this_1.getIndexByValue(this_1.getValueByText(newProp.text)))\n ? newProp.text : null;\n }\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 (this_1.fields.disabled) {\n newProp.value = newProp.value != null && !this_1.isDisableItemValue(newProp.value) ? newProp.value : null;\n }\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) && !isNullOrUndefined(oldProp.value) &&\n 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) ?\n 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_3 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ?\n getValue(checkField, newProp.value) : newProp.value;\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_3)))\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 (this_1.fields.disabled) {\n newProp.index = newProp.index != null && !this_1.isDisabledItemByIndex(newProp.index) ? newProp.index : null;\n }\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]) &&\n 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) ?\n 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, @typescript-eslint/no-empty-function\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 &&\n this.selectedValueInfo.startIndex > 0 && this.value != null) {\n this.notify('dataProcessAsync', {\n module: 'VirtualScroll',\n isOpen: true\n });\n }\n if (!this.isSecondClick && !this.isDropDownClick) {\n this.executeCloneElements();\n }\n };\n DropDownList.prototype.executeCloneElements = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n setTimeout(function () {\n proxy.cloneElements();\n proxy.isSecondClick = true;\n }, duration);\n }\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.isVirtualTrackHeight = false;\n this.customFilterQuery = null;\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (isSelectVal && this.enableVirtualization && this.selectedLI.classList) {\n isSelectVal = this.selectedLI.classList.contains('e-active');\n }\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (!this.enableVirtualization && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.isTyped = true;\n }\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Method to disable specific item in the popup.\n *\n * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n * @returns {void}\n * @deprecated\n */\n DropDownList.prototype.disableItem = function (item) {\n if (this.fields.disabled) {\n if (!this.list) {\n this.renderList();\n }\n var itemIndex = -1;\n if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n if (typeof (item) === 'string') {\n itemIndex = this.getIndexByValue(item);\n }\n else if (typeof item === 'object') {\n if (item instanceof HTMLLIElement) {\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index] === item) {\n itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n break;\n }\n }\n }\n else {\n var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n for (var index = 0; index < this.listData.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n itemIndex = this.getIndexByValue(value);\n break;\n }\n }\n }\n }\n else {\n itemIndex = item;\n }\n var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n if (isValidIndex && !(JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled])) {\n var li = this.liCollections[itemIndex];\n if (li) {\n this.disableListItem(li);\n var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n parsedData[this.fields.disabled] = true;\n this.listData[itemIndex] = parsedData;\n this.dataSource = this.listData;\n if (li.classList.contains(dropDownListClasses.focus)) {\n this.removeFocus();\n }\n if (li.classList.contains(dropDownListClasses.selected)) {\n this.clear();\n }\n }\n }\n }\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 && this.inputWrapper.container.parentElement) {\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 }\n delete this.hiddenElement;\n this.filterInput = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.clearIconElement = null;\n this.popupObj = null;\n this.popupContentElement = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onselect)) {\n this.inputElement.onselect = null;\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties,\n buttons: this.inputWrapper.container.querySelectorAll('.e-input-group-icon')[0]\n }, this.clearButton);\n this.clearButton = null;\n this.inputElement = null;\n this.inputWrapper = null;\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate$1([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate$1([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate$1([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate$1([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate$1([\n Property(true)\n ], DropDownList.prototype, \"isDeviceFullScreen\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownList.prototype, \"enableVirtualization\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownList.prototype, \"allowResize\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownList.prototype, \"allowObjectBinding\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate$1([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"resizeStop\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"resizing\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"resizeStart\", void 0);\n DropDownList = __decorate$1([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RTL = 'e-rtl';\nvar DROPDOWNTREE = 'e-ddt';\nvar HIDDENELEMENT = 'e-ddt-hidden';\nvar DROPDOWNICON = 'e-input-group-icon e-ddt-icon e-icons';\nvar SHOW_CHIP = 'e-show-chip';\nvar SHOW_CLEAR = 'e-show-clear';\nvar SHOW_DD_ICON = 'e-show-dd-icon';\nvar CHIP_INPUT = 'e-chip-input';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTGROUP = 'e-input-group';\nvar ICONANIMATION = 'e-icon-anim';\nvar CLOSEICON_CLASS = 'e-clear-icon e-icons';\nvar CHIP_WRAPPER = 'e-chips-wrapper';\nvar CHIP_COLLECTION = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar HIDEICON = 'e-icon-hide';\nvar DDTHIDEICON = 'e-ddt-icon-hide';\nvar POPUP_CLASS = 'e-ddt e-popup';\nvar PARENTITEM = 'e-list-parent';\nvar CONTENT = 'e-popup-content';\nvar DROPDOWN = 'e-dropdown';\nvar DISABLED = 'e-disabled';\nvar ICONS = 'e-icons';\nvar CHECKALLPARENT = 'e-selectall-parent';\nvar CHECKALLHIDE = 'e-hide-selectall';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar ALLTEXT = 'e-all-text';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar FILTERWRAP = 'e-filter-wrap';\nvar DDTICON = 'e-ddt-icon';\nvar FOOTER = 'e-ddt-footer';\nvar HEADER = 'e-ddt-header';\nvar NODATACONTAINER = 'e-ddt-nodata';\nvar NODATA = 'e-no-data';\nvar HEADERTEMPLATE = 'HeaderTemplate';\nvar FOOTERTEMPLATE = 'FooterTemplate';\nvar NORECORDSTEMPLATE = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE = 'ActionFailureTemplate';\nvar CUSTOMTEMPLATE = 'CustomTemplate';\nvar REMAIN_WRAPPER = 'e-remain';\nvar OVERFLOW_VIEW = 'e-overflow';\nvar SHOW_TEXT = 'e-show-text';\nvar TOTAL_COUNT_WRAPPER = 'e-total-count';\nvar REMAIN_COUNT = 'e-wrap-count';\nvar Fields = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Fields, _super);\n function Fields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('child')\n ], Fields.prototype, \"child\", void 0);\n __decorate$2([\n Property([])\n ], Fields.prototype, \"dataSource\", void 0);\n __decorate$2([\n Property('expanded')\n ], Fields.prototype, \"expanded\", void 0);\n __decorate$2([\n Property('hasChildren')\n ], Fields.prototype, \"hasChildren\", void 0);\n __decorate$2([\n Property('htmlAttributes')\n ], Fields.prototype, \"htmlAttributes\", void 0);\n __decorate$2([\n Property('iconCss')\n ], Fields.prototype, \"iconCss\", void 0);\n __decorate$2([\n Property('imageUrl')\n ], Fields.prototype, \"imageUrl\", void 0);\n __decorate$2([\n Property('parentValue')\n ], Fields.prototype, \"parentValue\", void 0);\n __decorate$2([\n Property(null)\n ], Fields.prototype, \"query\", void 0);\n __decorate$2([\n Property('selectable')\n ], Fields.prototype, \"selectable\", void 0);\n __decorate$2([\n Property('selected')\n ], Fields.prototype, \"selected\", void 0);\n __decorate$2([\n Property(null)\n ], Fields.prototype, \"tableName\", void 0);\n __decorate$2([\n Property('text')\n ], Fields.prototype, \"text\", void 0);\n __decorate$2([\n Property('tooltip')\n ], Fields.prototype, \"tooltip\", void 0);\n __decorate$2([\n Property('value')\n ], Fields.prototype, \"value\", void 0);\n return Fields;\n}(ChildProperty));\nvar TreeSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$2(TreeSettings, _super);\n function TreeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(false)\n ], TreeSettings.prototype, \"autoCheck\", void 0);\n __decorate$2([\n Property(true)\n ], TreeSettings.prototype, \"checkDisabledChildren\", void 0);\n __decorate$2([\n Property('Auto')\n ], TreeSettings.prototype, \"expandOn\", void 0);\n __decorate$2([\n Property(false)\n ], TreeSettings.prototype, \"loadOnDemand\", void 0);\n return TreeSettings;\n}(ChildProperty));\n/**\n * The Dropdown Tree control allows you to select single or multiple values from hierarchical data in a tree-like structure.\n * It has several out-of-the-box features, such as data binding, check boxes, templates, filter,\n * UI customization, accessibility, and preselected values.\n * ```html\n * \n * ```\n * ```typescript\n * let ddtObj: DropDownTree = new DropDownTree();\n * ddtObj.appendTo(\"#tree\");\n * ```\n */\nvar DropDownTree = /** @__PURE__ @class */ (function (_super) {\n __extends$2(DropDownTree, _super);\n function DropDownTree(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterTimer = null;\n _this.isFilteredData = false;\n _this.isFilterRestore = false;\n _this.selectedData = [];\n _this.filterDelayTime = 300;\n _this.isClicked = false;\n _this.documentClickContext = _this.onDocumentClick.bind(_this);\n // Specifies if the checkAll method has been called\n _this.isCheckAllCalled = false;\n _this.isFromFilterChange = false;\n return _this;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string}\n * @hidden\n */\n DropDownTree.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n DropDownTree.prototype.getLocaleName = function () {\n return 'drop-down-tree';\n };\n /**\n * Initialize the event handler.\n *\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.preRender = function () {\n this.inputFocus = false;\n this.isPopupOpen = false;\n this.isFirstRender = true;\n this.isInitialized = false;\n this.currentText = null;\n this.currentValue = null;\n this.oldValue = null;\n this.removeValue = false;\n this.selectedText = [];\n this.treeItems = [];\n this.dataValue = null;\n this.isNodeSelected = false;\n this.isDynamicChange = false;\n this.clearIconWidth = 0;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE;\n this.customTemplateId = \"\" + this.element.id + CUSTOMTEMPLATE;\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n ctrlA: 'ctrl+A'\n };\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownTree.prototype.render = function () {\n var isTree = select('#' + this.element.id + '_tree', document);\n if (isTree) {\n var popupDiv = select('#' + this.element.id + '_options', document);\n detach(popupDiv ? popupDiv : isTree.parentElement);\n }\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNullOrUndefined(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('aria-expanded', 'false');\n this.inputEle.setAttribute('role', 'combobox');\n this.inputEle.setAttribute('aria-haspopup', 'tree');\n this.inputEle.setAttribute('aria-controls', this.element.id + '_options');\n }\n if (isNullOrUndefined(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n }\n else {\n if (!isNullOrUndefined(this.element.id)) {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text', id: this.element.id + '_textbox' } });\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n }\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n buttons: this.showDropDownIcon ? [DROPDOWNICON] : null,\n properties: {\n readonly: true,\n placeholder: this.placeholder,\n enabled: this.enabled,\n cssClass: this.cssClass,\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n if (!this.inputWrapper.classList.contains(INPUTGROUP)) {\n this.inputWrapper.classList.add(INPUTGROUP);\n }\n if (this.showDropDownIcon) {\n this.inputWrapper.classList.add(SHOW_DD_ICON);\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.createHiddenElement();\n this.createClearIcon();\n this.inputWrapper.classList.add(DROPDOWNTREE);\n this.setElementWidth(this.width);\n this.updateDataAttribute();\n this.setHTMLAttributes();\n this.setAttributes();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.classList.add(DROPDOWN);\n this.tree = this.createElement('div', { id: this.element.id + '_tree' });\n this.popupDiv.appendChild(this.tree);\n if (!this.destroyPopupOnHide) {\n document.body.appendChild(this.popupDiv);\n }\n this.wireTreeEvents();\n addClass([this.popupDiv], DDTHIDEICON);\n this.renderTree();\n this.isRemoteData = this.fields.dataSource instanceof DataManager;\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter') {\n this.createChip();\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n if (this.mode !== 'Box') {\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n }\n }\n if (!this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n }\n this.wireEvents();\n var firstUl = select('.' + PARENTITEM, this.treeObj.element);\n if (firstUl && firstUl.getAttribute('aria-multiselectable')) {\n firstUl.removeAttribute('aria-multiselectable');\n }\n this.oldValue = this.value;\n if (!this.isRemoteData) {\n this.isInitialized = true;\n }\n this.hasTemplate = this.itemTemplate || this.headerTemplate || this.footerTemplate || this.actionFailureTemplate\n || this.noRecordsTemplate || this.customTemplate || this.valueTemplate;\n this.renderComplete();\n };\n DropDownTree.prototype.hideCheckAll = function (flag) {\n var checkAllEle = !isNullOrUndefined(this.popupEle) ? this.popupEle.querySelector('.' + CHECKALLPARENT) : null;\n if (!isNullOrUndefined(checkAllEle)) {\n if (flag && !checkAllEle.classList.contains(CHECKALLHIDE)) {\n addClass([checkAllEle], CHECKALLHIDE);\n }\n else if (!flag && checkAllEle.classList.contains(CHECKALLHIDE)) {\n removeClass([checkAllEle], CHECKALLHIDE);\n }\n }\n };\n DropDownTree.prototype.renderFilter = function () {\n this.filterContainer = this.createElement('div', {\n id: this.element.id + '_filter_wrap',\n className: FILTERWRAP\n });\n var filterInput = this.createElement('input', {\n id: this.element.id + '_filter',\n attrs: { autocomplete: 'off', 'aria-label': this.filterBarPlaceholder }\n });\n this.filterContainer.appendChild(filterInput);\n prepend([this.filterContainer], this.popupEle);\n this.filterObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: this.filterBarPlaceholder,\n input: this.filterChangeHandler.bind(this)\n });\n this.filterObj.appendTo('#' + this.element.id + '_filter');\n this.keyboardModule = new KeyboardEvents(this.filterObj.element, {\n keyAction: this.filterKeyAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.filterKeyAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n var focusedElement;\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n addClass([_this.inputWrapper], [INPUTFOCUS]);\n break;\n case 'moveDown':\n e.preventDefault();\n _this.filterObj.element.blur();\n focusedElement = _this.treeObj.element.querySelector('li');\n if (focusedElement) {\n focusedElement.focus();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.filterChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n window.clearTimeout(this.filterTimer);\n this.filterTimer = window.setTimeout(function () { _this.filterHandler(args.value, args.event); }, this.filterDelayTime);\n }\n };\n DropDownTree.prototype.isChildObject = function () {\n if (typeof this.treeObj.fields.child === 'object') {\n return true;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.filterHandler = function (value, event) {\n var _this = this;\n this.isFromFilterChange = true;\n if (!this.isFilteredData) {\n if (this.isRemoteData) {\n this.treeObj.expandedNodes = [];\n }\n this.treeData = this.treeObj.getTreeData();\n }\n var filterFields = this.cloneFields(this.fields);\n var args = {\n cancel: false,\n preventDefaultAction: false,\n event: event,\n text: value.trim(),\n fields: filterFields\n };\n this.trigger('filtering', args, function (args) {\n if (!args.cancel) {\n var flag = false;\n var fields = void 0;\n _this.isFilteredData = true;\n if (args.text === '') {\n _this.isFilteredData = false;\n _this.isFilterRestore = true;\n fields = _this.cloneFields(_this.fields);\n _this.treeObj.element.classList.remove('e-filtering');\n }\n else if (args.preventDefaultAction) {\n fields = args.fields;\n _this.treeObj.element.classList.add('e-filtering');\n }\n else {\n if (_this.treeDataType === 1) {\n fields = _this.selfReferencefilter(args.text, args.fields);\n }\n else {\n if (_this.fields.dataSource instanceof DataManager) {\n fields = _this.remoteDataFilter(args.text, args.fields);\n fields.child = _this.fields.child;\n _this.treeObj.fields = _this.getTreeFields(args.fields);\n _this.treeObj.dataBind();\n flag = true;\n }\n else {\n fields = _this.nestedFilter(args.text, args.fields);\n }\n }\n _this.treeObj.element.classList.add('e-filtering');\n }\n _this.hideCheckAll(_this.isFilteredData);\n if (flag) {\n return;\n }\n if (_this.isRemoteData) {\n if (_this.isChildObject()) {\n fields.child = _this.fields.child;\n }\n else {\n fields = args.fields;\n }\n }\n _this.treeObj.fields = _this.getTreeFields(fields);\n _this.treeObj.dataBind();\n if (_this.hasTemplate && _this.portals && _this.treeObj.portals) {\n for (var i = 0; i < _this.treeObj.portals.length; i++) {\n if (_this.portals.indexOf(_this.treeObj.portals[i]) === -1) {\n _this.portals.push(_this.treeObj.portals[i]);\n }\n }\n if (_this.isReact) {\n _this.renderReactTemplates();\n }\n }\n }\n });\n };\n DropDownTree.prototype.remoteDataFilter = function (value, filteredFields) {\n var _this = this;\n filteredFields.dataSource = this.treeData.map(function (item) {\n return _this.remoteChildFilter(value, item);\n }).filter(function (filteredChild) {\n return !isNullOrUndefined(filteredChild);\n });\n return filteredFields;\n };\n DropDownTree.prototype.remoteChildFilter = function (value, node, isChild, isChildFiltering) {\n var children = this.isChildObject() ? node['child'] : node[this.fields.child];\n if (isNullOrUndefined(children)) {\n return (this.isMatchedNode(value, node, isChild, isChildFiltering)) ? node : null;\n }\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n var filteredChild = this.remoteChildFilter(value, children[i], true, true);\n if (!isNullOrUndefined(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n isChildFiltering = false;\n if (matchedChildren.length !== 0) {\n filteredItems.child = matchedChildren;\n }\n else {\n filteredItems.child = null;\n filteredItems = (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n return filteredItems;\n };\n DropDownTree.prototype.nestedFilter = function (value, filteredFields) {\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n var filteredChild = this.nestedChildFilter(value, this.treeData[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n DropDownTree.prototype.nestedChildFilter = function (value, node) {\n var children = node[this.fields.child];\n if (isNullOrUndefined(children)) {\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n else {\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n var filteredChild = this.nestedChildFilter(value, children[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n if (matchedChildren.length !== 0) {\n filteredItems[this.fields.child] = matchedChildren;\n return filteredItems;\n }\n else {\n filteredItems[this.fields.child] = null;\n return (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n }\n };\n DropDownTree.prototype.selfReferencefilter = function (value, filteredFields) {\n var matchedData = [];\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n if (this.isMatchedNode(value, this.treeData[i])) {\n matchedData.push(this.treeData[i]);\n }\n }\n for (var i = 0; i < matchedData.length; i++) {\n if (matchedDataSource.indexOf(matchedData[i]) === -1) {\n matchedDataSource.push(matchedData[i]);\n var parentId = matchedData[parseInt(i.toString(), 10)][this.fields.parentValue];\n while (!isNullOrUndefined(parentId)) {\n var parent_1 = null;\n for (var j = 0; j < this.treeData.length; j++) {\n var value_1 = this.treeData[parseInt(j.toString(), 10)][this.fields.value];\n if (!isNullOrUndefined(value_1) && (value_1 === parentId)) {\n parent_1 = this.treeData[j];\n break;\n }\n }\n if (!isNullOrUndefined(parent_1) && (matchedDataSource.indexOf(parent_1) === -1)) {\n matchedDataSource.push(parent_1);\n parentId = parent_1[this.fields.parentValue];\n }\n else {\n break;\n }\n }\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n DropDownTree.prototype.isMatchedNode = function (value, node, isChild, isChildFiltering) {\n var checkValue;\n var isObjectValue = isChild && isChildFiltering && this.isChildObject();\n checkValue = isObjectValue ? node[this.fields.child.text] : node[this.fields.text];\n if (!checkValue && !isNullOrUndefined(this.fields.child.text)) {\n var tempChild = this.fields.child;\n while (!node[tempChild.text]) {\n tempChild = tempChild.child;\n }\n checkValue = node[tempChild.text];\n }\n if (this.ignoreCase) {\n checkValue = checkValue.toLowerCase();\n value = value.toLowerCase();\n }\n if (this.ignoreAccent) {\n checkValue = DataUtil.ignoreDiacritics(checkValue);\n value = DataUtil.ignoreDiacritics(value);\n }\n if (this.filterType === 'StartsWith') {\n return checkValue.slice(0, value.length) === value;\n }\n else if (this.filterType === 'EndsWith') {\n return checkValue.slice(-value.length) === value;\n }\n else {\n return checkValue.indexOf(value) !== -1;\n }\n };\n /* To wire events for the dropdown tree */\n DropDownTree.prototype.wireEvents = function () {\n EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);\n EventHandler.add(this.inputWrapper, 'mousemove', this.mouseIn, this);\n EventHandler.add(this.inputWrapper, 'mouseout', this.onMouseLeave, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireTreeEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.tree, {\n keyAction: this.treeAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireCheckAllWrapperEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.checkAllParent, {\n keyAction: this.checkAllAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n /* To unwire events for the dropdown tree */\n DropDownTree.prototype.unWireEvents = function () {\n EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);\n EventHandler.remove(this.inputWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.inputWrapper, 'mouseout', this.onMouseLeave);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(window, 'resize', this.windowResize);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n this.keyboardModule.destroy();\n if (this.showSelectAll && this.checkAllParent) {\n EventHandler.remove(this.checkAllParent, 'mouseup', this.clickHandler);\n }\n document.removeEventListener('mousedown', this.documentClickContext);\n };\n /* Trigger when the dropdown is clicked */\n DropDownTree.prototype.dropDownClick = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n else {\n this.focusIn(e);\n this.renderPopup();\n }\n this.showOverAllClear();\n };\n DropDownTree.prototype.mouseIn = function () {\n if (this.enabled || !this.readonly) {\n this.showOverAllClear();\n }\n };\n DropDownTree.prototype.onMouseLeave = function () {\n if (!this.inputFocus) {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n };\n DropDownTree.prototype.getDirective = function () {\n return 'EJS-DROPDOWNTREE';\n };\n DropDownTree.prototype.focusOut = function (e) {\n if (!this.enabled || this.readonly || !this.inputFocus) {\n return;\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && (e.target === this.inputWrapper)) {\n return;\n }\n var target = e.relatedTarget;\n if ((target !== this.inputEle) && (isNullOrUndefined(target)) && (e.target !== this.inputWrapper || !this.isPopupOpen)) {\n this.onFocusOut(e);\n }\n };\n DropDownTree.prototype.onFocusOut = function (event) {\n this.inputFocus = false;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n }\n if (this.showClearButton) {\n this.clearIconWidth = select('.e-clear-icon', this.inputWrapper).offsetWidth;\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n if ((this.allowMultiSelection || this.showCheckBox)) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.mode !== 'Delimiter' && this.mode !== 'Custom') {\n if (this.chipWrapper && (this.mode === 'Default')) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n if (isValue && this.mode !== 'Custom') {\n this.showOrHideValueTemplate(true);\n }\n if (!this.wrapText && isValue) {\n this.updateView();\n }\n }\n if (this.changeOnBlur) {\n this.triggerChangeEvent(event);\n }\n this.removeValue = false;\n this.oldValue = this.value;\n this.trigger('blur');\n };\n DropDownTree.prototype.updateView = function () {\n if ((!this.showCheckBox && !this.allowMultiSelection) || this.mode === 'Custom' || this.inputFocus) {\n return;\n }\n if (this.mode !== 'Box') {\n addClass([this.inputWrapper, this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n if (this.value && this.value.length !== 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n addClass([this.inputEle], CHIP_INPUT);\n this.updateOverFlowView();\n }\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.triggerChangeEvent = function (event) {\n var isEqual = this.ddtCompareValues(this.oldValue, this.value);\n if ((!isEqual || this.isChipDelete) && !this.removeValue) {\n var eventArgs = {\n e: event,\n oldValue: this.oldValue,\n value: this.value,\n isInteracted: event ? true : false,\n element: this.element\n };\n this.trigger('change', eventArgs);\n this.oldValue = this.value;\n }\n };\n DropDownTree.prototype.ddtCompareValues = function (oldValue, newValue) {\n if (oldValue === null || newValue === null) {\n var isValid = oldValue === null ? ((newValue === oldValue) ? true : false) :\n (oldValue.length === 0 ? (newValue === oldValue) : false);\n return isValid;\n }\n else if (oldValue.length !== newValue.length) {\n return false;\n }\n for (var i = 0; i < oldValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n };\n DropDownTree.prototype.focusIn = function (e) {\n if (!this.enabled || this.readonly || this.inputFocus) {\n return;\n }\n this.showOverAllClear();\n this.inputFocus = true;\n addClass([this.inputWrapper], [INPUTFOCUS]);\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter' && this.inputFocus) {\n if (this.chipWrapper && (this.value && this.value.length !== 0)) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputEle], CHIP_INPUT);\n this.showOrHideValueTemplate(false, true);\n }\n addClass([this.inputWrapper], SHOW_CHIP);\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n if (this.inputWrapper.contains(this.overFlowWrapper)) {\n addClass([this.overFlowWrapper], HIDEICON);\n }\n if (this.mode === 'Delimiter') {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n this.showOrHideValueTemplate(true);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n removeClass([this.inputWrapper], SHOW_TEXT);\n this.ensurePlaceHolder();\n }\n }\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n };\n DropDownTree.prototype.treeAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n _this.inputWrapper.focus();\n e.preventDefault();\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'tab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n if (!_this.showCheckBox) {\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n }\n break;\n case 'space':\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n _this.selectAll(true);\n }\n break;\n }\n }\n else {\n e.stopImmediatePropagation();\n }\n });\n };\n DropDownTree.prototype.keyActionHandler = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n if (_this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n case 'altDown':\n if (!_this.isPopupOpen) {\n _this.showPopup();\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (_this.showSelectAll && _this.showCheckBox) {\n _this.checkAllParent.focus();\n }\n break;\n case 'tab':\n if (!_this.isPopupOpen && _this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.checkAllAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n var focusedElement;\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n _this.clickHandler(e);\n break;\n case 'moveDown':\n e.preventDefault();\n focusedElement = _this.treeObj.element.querySelector('li[tabindex=\"0\"]') || _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n break;\n }\n }\n });\n };\n DropDownTree.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.setWidth() });\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement && e.target === formElement) {\n this.isDynamicChange = true;\n this.setProperties({ value: null }, true);\n this.resetValue(true);\n this.isDynamicChange = false;\n }\n };\n DropDownTree.prototype.getAriaAttributes = function () {\n return {};\n };\n DropDownTree.prototype.updateOverFlowView = function () {\n this.overFlowWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], HIDEICON);\n if (this.value && this.value.length) {\n var data = '';\n var overAllContainer = void 0;\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n this.overFlowWrapper.innerHTML = '';\n var l10nLocale = { overflowCountTemplate: '+${count} more..', totalCountTemplate: '${count} selected' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n var remainContent = this.l10n.getConstant('overflowCountTemplate');\n var totalContent = this.l10n.getConstant('totalCountTemplate');\n var remainElement = this.createElement('span', { className: REMAIN_WRAPPER });\n this.overFlowWrapper.appendChild(remainElement);\n remainElement.innerText = remainContent.replace('${count}', this.value.length.toString());\n var remainSize = remainElement.offsetWidth;\n remove(remainElement);\n if (this.showDropDownIcon) {\n downIconWidth = select('.' + DDTICON, this.inputWrapper).offsetWidth;\n }\n if (!isNullOrUndefined(this.value)) {\n if (this.mode !== 'Box') {\n if (this.valueTemplate) {\n remaining = this.updateChipAndValueTemplate(false, downIconWidth, remainSize);\n this.checkRemainingTemplate(remaining, remainElement, remainContent, totalContent);\n this.updateDelimMode();\n return;\n }\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.overFlowWrapper.innerHTML;\n if (this.enableHtmlSanitizer) {\n this.overFlowWrapper.innerText = SanitizeHtmlHelper.sanitize(data);\n }\n else {\n this.overFlowWrapper.innerHTML = data;\n }\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - index;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n var textArr = this.overFlowWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.overFlowWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n else {\n remaining = this.updateChipAndValueTemplate(true, downIconWidth, remainSize);\n }\n }\n this.checkRemainingTemplate(remaining, remainElement, remainContent, totalContent);\n }\n else {\n this.overFlowWrapper.innerHTML = '';\n addClass([this.overFlowWrapper], HIDEICON);\n }\n this.updateDelimMode();\n };\n DropDownTree.prototype.checkRemainingTemplate = function (remaining, remainElement, remainContent, totalContent) {\n if (remaining > 0) {\n this.overFlowWrapper.appendChild(this.updateRemainTemplate(remainElement, remaining, remainContent, totalContent));\n }\n if (this.mode === 'Box' && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([remainElement], REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.updateChipAndValueTemplate = function (isChip, downIconWidth, remainSize) {\n if (downIconWidth === void 0) { downIconWidth = 0; }\n var currentHtmlContent = '';\n var overAllContainer;\n var previousHtmlContent;\n var previousData;\n var index = 1;\n var wrapperLength;\n var remainingItemsCount;\n addClass([isChip ? this.chipWrapper : this.valueTemplateContainer], HIDEICON);\n var clonedElement = (isChip ? this.chipWrapper :\n this.valueTemplateContainer).cloneNode(true);\n var valueElements = isChip ? selectAll('.' + CHIP, clonedElement) : Array.prototype.slice.call(clonedElement.children);\n for (var i = 0; i < valueElements.length; i++) {\n previousHtmlContent = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.appendChild(valueElements[i]);\n currentHtmlContent = this.overFlowWrapper.innerHTML;\n wrapperLength = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperLength + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (previousData !== undefined && previousData !== '') {\n previousHtmlContent = previousData;\n i = index + 1;\n }\n this.overFlowWrapper.innerHTML = previousHtmlContent;\n remainingItemsCount = this.value.length - i;\n wrapperLength = this.overFlowWrapper.offsetWidth;\n while (((wrapperLength + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperLength !== 0 && this.overFlowWrapper.innerHTML !== '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.lastChild);\n remainingItemsCount++;\n wrapperLength = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperLength + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n previousData = currentHtmlContent;\n index = i;\n }\n else if (i === 0) {\n previousData = '';\n index = -1;\n }\n }\n return remainingItemsCount;\n };\n DropDownTree.prototype.updateRemainTemplate = function (remainElement, remaining, remainContent, totalContent) {\n if (this.overFlowWrapper.firstChild && this.overFlowWrapper.firstChild.nodeType === 3 &&\n this.overFlowWrapper.firstChild.nodeValue === '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.firstChild);\n }\n remainElement.innerHTML = '';\n remainElement.innerText = (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box' || this.valueTemplateContainer)) ?\n remainContent.replace('${count}', remaining.toString()) : totalContent.replace('${count}', remaining.toString());\n if (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) {\n removeClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n }\n else {\n addClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n return remainElement;\n };\n DropDownTree.prototype.getOverflowVal = function (index) {\n var selectedData = this.getSelectedData(this.value[parseInt(index.toString(), 10)]);\n return getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n };\n DropDownTree.prototype.updateDelimMode = function () {\n if (this.mode !== 'Box') {\n if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper) && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([this.overFlowWrapper], REMAIN_COUNT);\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n }\n else if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper)) {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.createHiddenElement = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDENELEMENT, 'tabindex': '-1', 'multiple': '', 'aria-label': this.getModuleName() }\n });\n }\n else {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': HIDDENELEMENT, 'aria-label': this.getModuleName() }\n });\n }\n prepend([this.hiddenElement], this.inputWrapper);\n this.validationAttribute();\n };\n DropDownTree.prototype.createClearIcon = function () {\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n if (this.showClearButton) {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.validationAttribute = function () {\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n var attr = this.inputEle.getAttribute(attributes[i]);\n if (attr) {\n this.hiddenElement.setAttribute(attributes[i], attr);\n this.inputEle.removeAttribute(attributes[i]);\n }\n }\n };\n DropDownTree.prototype.createChip = function () {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.chipWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollection = this.createElement('span', {\n className: CHIP_COLLECTION\n });\n this.chipWrapper.appendChild(this.chipCollection);\n this.inputWrapper.insertBefore(this.chipWrapper, this.hiddenElement);\n addClass([this.inputWrapper], SHOW_CHIP);\n var isValid = this.getValidMode();\n if (isValid && this.value !== null && (this.value && this.value.length !== 0)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else if (this.value === null || (this.value && this.value.length === 0) || this.checkWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.getValidMode = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return this.mode === 'Box' ? true : (this.mode === 'Default' && this.inputFocus) ? true : false;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.createSelectAllWrapper = function () {\n this.checkAllParent = this.createElement('div', {\n className: CHECKALLPARENT, attrs: { 'tabindex': '0' }\n });\n this.selectAllSpan = this.createElement('span', {\n className: ALLTEXT\n });\n this.selectAllSpan.textContent = '';\n var ele = closest(this.element, '.' + BIGGER);\n var touchClass = isNullOrUndefined(ele) ? '' : SMALL;\n this.checkBoxElement = createCheckBox(this.createElement, true, { cssClass: touchClass });\n this.checkBoxElement.setAttribute('role', 'checkbox');\n this.checkAllParent.appendChild(this.checkBoxElement);\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n EventHandler.add(this.checkAllParent, 'mouseup', this.clickHandler, this);\n this.wireCheckAllWrapperEvents();\n };\n DropDownTree.prototype.clickHandler = function (e) {\n var target;\n if ((e.currentTarget && e.currentTarget.classList.contains(CHECKALLPARENT))) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.target;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNullOrUndefined(this.checkWrapper)) {\n this.isClicked = true;\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.changeState(this.checkWrapper, checkElement.classList.contains(CHECK) ? 'uncheck' : 'check', e);\n this.isClicked = false;\n }\n e.preventDefault();\n };\n DropDownTree.prototype.changeState = function (wrapper, state, e) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (!this.isReverseUpdate) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(true);\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK))) {\n frameSpan.classList.remove(CHECK);\n ariaState = 'false';\n if (!this.isReverseUpdate) {\n this.treeObj.uncheckAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(false);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n ariaState = state === 'check' ? 'true' : 'false';\n if (!isNullOrUndefined(ariaState)) {\n wrapper.parentElement.setAttribute('aria-checked', ariaState);\n }\n };\n DropDownTree.prototype.setLocale = function (unSelect) {\n if (!this.selectAllSpan) {\n return;\n }\n if (this.selectAllText !== 'Select All' || this.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.unSelectAllText : this.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this, templateName, null, !this.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n this.selectAllSpan.textContent = unSelect ? this.unSelectAllText : this.selectAllText;\n }\n };\n DropDownTree.prototype.setAttributes = function () {\n this.inputEle.setAttribute('tabindex', '-1');\n this.inputEle.setAttribute('aria-label', this.getModuleName());\n var id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', '0');\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n attributes(this.inputWrapper, this.getAriaAttributes());\n };\n DropDownTree.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 this.inputWrapper.classList.add(this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly') {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\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.inputEle);\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n };\n DropDownTree.prototype.updateDataAttribute = function () {\n var value = this.htmlAttributes;\n var invalidAttr = ['class', 'style', 'id', 'type'];\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.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 DropDownTree.prototype.showOverAllClear = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.overAllClear) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (isValue && this.showClearButton) {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n };\n DropDownTree.prototype.setTreeValue = function () {\n if (this.value !== null && this.value.length !== 0) {\n var data = void 0;\n if (this.showCheckBox || this.allowMultiSelection) {\n for (var i = this.value.length - 1; i >= 0; i--) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNullOrUndefined(data)) {\n this.value.splice(i, 1);\n }\n }\n if (this.value.length !== 0) {\n this.setValidValue();\n }\n }\n else {\n data = this.treeObj.getTreeData(this.value[0])[0];\n if (!isNullOrUndefined(data)) {\n this.setProperties({ text: data[this.fields.text] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ value: this.currentValue }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setTreeText = function () {\n if (this.value !== null && !this.isInitialized) {\n return;\n }\n if (this.text !== null) {\n var data = void 0;\n var valArr = [];\n if (this.showCheckBox || this.allowMultiSelection) {\n var textArr = this.text.split(this.delimiterChar);\n for (var i = 0; i < textArr.length; i++) {\n data = this.getItems(textArr[i]);\n if (!isNullOrUndefined(data)) {\n valArr.push(data[this.fields.value].toString());\n }\n }\n if (valArr.length !== 0) {\n this.oldValue = this.value;\n this.setProperties({ value: valArr }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n else {\n data = this.getItems(this.text);\n if (!isNullOrUndefined(data)) {\n this.oldValue = this.value;\n this.setProperties({ value: [data[this.fields.value].toString()] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setSelectedValue = function () {\n if (this.value !== null && !(this.value.length === 0)) {\n return;\n }\n if (!this.isInitialized) {\n this.oldValue = this.value;\n if (this.treeObj.selectedNodes.length > 0 && !this.showCheckBox) {\n this.setProperties({ value: this.treeObj.selectedNodes }, true);\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n }\n else if (this.showCheckBox && this.treeObj.checkedNodes) {\n if (this.treeObj.checkedNodes.length > 0) {\n this.setProperties({ value: this.treeObj.checkedNodes }, true);\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.updateMode();\n }\n }\n this.updateSelectedValues();\n this.currentText = this.text;\n this.currentValue = this.value;\n }\n };\n DropDownTree.prototype.setValueTemplate = function () {\n var _this = this;\n if (this.valueTemplate) {\n var compiledString = this.initializeValueTemplate();\n this.getValueTemplateElement(this.value[0], compiledString);\n if (this.hasTemplate && this.portals) {\n if (this.treeObj.portals) {\n this.portals = this.portals.concat(this.treeObj.portals.filter(function (item) {\n return !_this.portals.includes(item);\n }));\n }\n if (this.isReact) {\n this.renderReactTemplates(this.reactCallBack);\n }\n }\n this.showOrHideValueTemplate(true);\n }\n };\n DropDownTree.prototype.getValueTemplateElement = function (value, compiledString) {\n var selectedData = this.getNodeData(value, this.isFilteredData ? this.treeData : this.treeItems);\n var templateElements = compiledString(selectedData, this, 'valueTemplate', this.element.id + \"valueTemplate\", this.isStringTemplate, undefined, this.valueTemplateContainer);\n if (templateElements) {\n templateElements = Array.prototype.slice.call(templateElements);\n append(templateElements, this.valueTemplateContainer);\n }\n };\n DropDownTree.prototype.setValidValue = function () {\n var _this = this;\n if (!this.showCheckBox && !this.allowMultiSelection) {\n Input.setValue(this.text, this.inputEle, this.floatLabelType);\n this.setValueTemplate();\n var id = this.value[0].toString();\n if (this.treeObj.selectedNodes[0] !== id) {\n setValue('selectedNodes', [id], this.treeObj);\n if (this.fields.dataSource instanceof DataManager) {\n this.updateSelectedValues();\n }\n }\n }\n else {\n if (this.showCheckBox) {\n var difference = this.value.length !== this.treeObj.checkedNodes.length || this.value.filter(function (e) {\n return _this.treeObj.checkedNodes.indexOf(e) === -1;\n }).length > 0;\n if (difference || this.treeSettings.autoCheck) {\n this.treeObj.checkedNodes = this.value.slice();\n this.treeObj.dataBind();\n this.setMultiSelect();\n }\n }\n else {\n this.treeObj.selectedNodes = this.value.slice();\n this.selectedText = [];\n this.updateSelectedValues();\n }\n this.treeObj.dataBind();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (!isNullOrUndefined(this.value) && this.value.length > 0 && !isNullOrUndefined(this.currentText)) {\n this.inputWrapper.setAttribute('aria-label', this.currentText.replace(/,/g, ', '));\n }\n if (this.isInitialized) {\n this.triggerChangeEvent();\n }\n };\n DropDownTree.prototype.getItems = function (givenText) {\n var data;\n if (this.treeDataType === 1) {\n for (var i = 0; i < this.treeItems.length; i++) {\n var text = getValue(this.fields.text, this.treeItems[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(this.treeItems[i]) && !isNullOrUndefined(text) && text === givenText) {\n data = this.treeItems[i];\n break;\n }\n }\n }\n else {\n data = this.getNestedItems(this.treeItems, this.fields, givenText);\n }\n return data;\n };\n DropDownTree.prototype.getNestedItems = function (data, field, givenText) {\n var newData;\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n var dataId = getValue(this.fields.text, data[parseInt(i.toString(), 10)]);\n if (data[i] && dataId && dataId.toString() === givenText) {\n return data[i];\n }\n else if (typeof field.child === 'string' && !isNullOrUndefined(getValue(field.child, data[i]))) {\n var childData = getValue(field.child, data[parseInt(i.toString(), 10)]);\n newData = this.getNestedItems(childData, this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', data[i]))) {\n var child = 'child';\n newData = this.getNestedItems(getValue(child, data[parseInt(i.toString(), 10)]), this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n }\n return newData;\n };\n DropDownTree.prototype.getChildType = function (mapper) {\n return (typeof mapper.child === 'string' || isNullOrUndefined(mapper.child)) ? mapper : mapper.child;\n };\n /* To render the treeview */\n DropDownTree.prototype.renderTree = function () {\n this.treeObj = new TreeView({\n fields: this.getTreeFields(this.fields),\n enableRtl: this.enableRtl,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeChecked: this.onNodeChecked.bind(this),\n nodeChecking: this.beforeCheck.bind(this),\n nodeExpanded: this.onNodeExpanded.bind(this),\n actionFailure: this.onActionFailure.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n dataBound: this.OnDataBound.bind(this),\n allowMultiSelection: this.allowMultiSelection,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n showCheckBox: this.showCheckBox,\n autoCheck: this.treeSettings.autoCheck,\n sortOrder: this.sortOrder,\n expandOn: this.treeSettings.expandOn,\n loadOnDemand: this.treeSettings.loadOnDemand,\n nodeSelecting: this.onBeforeSelect.bind(this),\n nodeTemplate: this.itemTemplate,\n checkDisabledChildren: this.treeSettings.checkDisabledChildren\n });\n this.treeObj.root = this.root ? this.root : this;\n this.treeObj.appendTo(this.tree);\n };\n /* To render the popup element */\n DropDownTree.prototype.renderPopup = function () {\n var _this = this;\n if (this.isFilteredData) {\n this.treeObj.element.classList.remove('e-filtering');\n this.filterObj.value = '';\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.isFilterRestore = true;\n this.isFilteredData = false;\n this.hideCheckAll(false);\n }\n var isCancelled = false;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n addClass([_this.inputWrapper], [ICONANIMATION]);\n if (_this.isFirstRender) {\n _this.popupEle = _this.createElement('div', {\n id: _this.element.id + '_options', className: POPUP_CLASS + ' ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n _this.popupEle.setAttribute('role', 'region');\n _this.popupEle.setAttribute('aria-label', _this.element.id);\n document.body.appendChild(_this.popupEle);\n _this.createPopup(_this.popupEle);\n }\n else {\n _this.popupEle = _this.popupObj.element;\n if (_this.isReact && _this.isFilterRestore) {\n _this.treeObj.refresh();\n _this.isFilteredData = true;\n _this.popupEle.removeChild(_this.filterContainer);\n }\n }\n }\n else {\n isCancelled = true;\n }\n if (_this.isFirstRender && !isCancelled || _this.isFilteredData) {\n _this.isFilteredData = false;\n prepend([_this.popupDiv], _this.popupEle);\n removeClass([_this.popupDiv], DDTHIDEICON);\n if (_this.allowFiltering) {\n _this.renderFilter();\n }\n if (_this.showCheckBox && _this.showSelectAll && (!_this.popupDiv.classList.contains(NODATA))) {\n _this.createSelectAllWrapper();\n _this.popupEle.insertBefore(_this.checkAllParent, _this.popupDiv);\n }\n if (_this.headerTemplate) {\n _this.setHeaderTemplate();\n }\n if (_this.footerTemplate) {\n _this.setFooterTemplate();\n }\n _this.isFirstRender = false;\n if (_this.hasTemplate && _this.portals) {\n if (_this.treeObj.portals) {\n _this.portals = _this.portals.concat(_this.treeObj.portals.filter(function (item) {\n return !_this.portals.includes(item);\n }));\n }\n if (_this.isReact) {\n _this.renderReactTemplates(_this.reactCallBack);\n }\n }\n }\n if (!isCancelled) {\n attributes(_this.inputEle, { 'aria-expanded': 'true' });\n _this.popupObj.show(null, (_this.zIndex === 1000) ? _this.inputEle : null);\n removeClass([_this.popupEle], DDTHIDEICON);\n _this.updatePopupHeight();\n _this.popupObj.refreshPosition();\n if (!(_this.showCheckBox && _this.showSelectAll) && (!_this.popupDiv.classList.contains(NODATA)\n && _this.treeItems.length > 0)) {\n var focusedElement = _this.value != null && _this.text != null ? _this.treeObj.element.querySelector('[data-uid=\"' + _this.value[0] + '\"]') : null;\n if (focusedElement) {\n _this.treeObj.element.querySelector('li').setAttribute('tabindex', '-1');\n focusedElement.setAttribute('tabindex', '0');\n }\n else {\n var oldFocussedNode = _this.treeObj.element.querySelector('.e-node-focus');\n focusedElement = _this.treeObj.element.querySelector('li[tabindex=\"0\"]:not(.e-disable)') ||\n _this.treeObj.element.querySelector('li:not(.e-disable)');\n if (oldFocussedNode && oldFocussedNode !== focusedElement) {\n oldFocussedNode.setAttribute('tabindex', '-1');\n removeClass([oldFocussedNode], 'e-node-focus');\n }\n }\n if (!isNullOrUndefined(focusedElement)) {\n if (!_this.allowFiltering) {\n focusedElement.focus();\n }\n addClass([focusedElement], ['e-node-focus']);\n }\n }\n if (_this.treeObj.checkedNodes.length > 0 && !_this.isFilterRestore) {\n var nodes = _this.treeObj.element.querySelectorAll('li');\n var checkedNodes = _this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n if ((checkedNodes.length === nodes.length) && _this.checkBoxElement) {\n var wrap = closest(_this.checkBoxElement, '.' + CHECKBOXWRAP);\n _this.changeState(wrap, 'check');\n _this.checkSelectAll = false;\n }\n }\n if (_this.allowFiltering) {\n removeClass([_this.inputWrapper], [INPUTFOCUS]);\n _this.filterObj.element.focus();\n }\n var eventArgs = { popup: _this.popupObj };\n _this.trigger('open', eventArgs);\n }\n });\n };\n DropDownTree.prototype.reactCallBack = function () {\n if (!isNullOrUndefined(this.popupObj)) {\n this.updatePopupHeight();\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.updatePopupHeight = function () {\n if (this.isFirstRender) {\n return;\n }\n var popupHeight = this.getHeight();\n this.popupEle.style.maxHeight = popupHeight;\n if (this.allowFiltering) {\n var height = Math.round(this.filterContainer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.headerTemplate) {\n var height = Math.round(this.header.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.showCheckBox && this.showSelectAll && (!this.popupDiv.classList.contains(NODATA))) {\n var height = Math.round(this.checkAllParent.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n var border = parseInt(window.getComputedStyle(this.popupEle).borderTopWidth, 10);\n border = border + parseInt(window.getComputedStyle(this.popupEle).borderBottomWidth, 10);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - border + 'px');\n this.popupDiv.style.maxHeight = popupHeight;\n };\n DropDownTree.prototype.createPopup = function (element) {\n var _this = this;\n if (this.isFirstRender) {\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n zIndex: this.zIndex,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n close: function () {\n _this.isPopupOpen = false;\n },\n open: function () {\n document.addEventListener('mousedown', _this.documentClickContext);\n _this.isPopupOpen = true;\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n }\n };\n /* To calculate the width when change via set model */\n DropDownTree.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNullOrUndefined(inputWidth)) {\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = (inputWidth.match(/px|%|em/)) ? (inputWidth) :\n (formatUnit(inputWidth));\n }\n }\n };\n /* To calculate the width of the popup */\n DropDownTree.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n width = (this.inputWrapper.offsetWidth * parseFloat(width) / 100).toString() + 'px';\n }\n else if (typeof this.popupWidth === 'string') {\n width = (this.popupWidth.match(/px|em/)) ? (this.popupWidth) : width;\n }\n return width;\n };\n /* To calculate the height of the popup */\n DropDownTree.prototype.getHeight = function () {\n var height = formatUnit(this.popupHeight);\n if (height.indexOf('%') > -1) {\n // Will set the height of the popup according to the view port height\n height = (document.documentElement.clientHeight * parseFloat(height) / 100).toString() + 'px';\n }\n else if (typeof this.popupHeight === 'string') {\n height = (this.popupHeight.match(/px|em/)) ? (this.popupHeight) : height;\n }\n return height;\n };\n DropDownTree.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var isTree = closest(target, '.' + PARENTITEM);\n var isFilter = closest(target, '.' + FILTERWRAP);\n var isHeader = closest(target, '.' + HEADER);\n var isFooter = closest(target, '.' + FOOTER);\n var isScroller = target.classList.contains(DROPDOWN) ? true :\n (matches$1(target, '.e-ddt .e-popup') || matches$1(target, '.e-ddt .e-treeview'));\n if ((this.isPopupOpen && ((!isNullOrUndefined(this.inputWrapper) &&\n this.inputWrapper.contains(target)) || isTree || isScroller || isHeader || isFooter)) ||\n ((this.allowMultiSelection || this.showCheckBox) && (this.isPopupOpen && target.classList.contains(CHIP_CLOSE) ||\n (this.isPopupOpen && (target.classList.contains(CHECKALLPARENT) || target.classList.contains(ALLTEXT)\n || target.classList.contains(CHECKBOXFRAME)))))) {\n this.isDocumentClick = false;\n e.preventDefault();\n }\n else if (!isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.contains(target) && this.inputFocus && !isFilter) {\n this.focusOut(e);\n }\n };\n DropDownTree.prototype.onActionFailure = function (e) {\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.popupDiv], NODATA);\n };\n DropDownTree.prototype.OnDataBound = function (args) {\n this.treeItems = args.data;\n if (this.treeItems.length <= 0) {\n this.l10nUpdate();\n addClass([this.popupDiv], NODATA);\n this.hideCheckAll(true);\n }\n else if (this.popupDiv.classList.contains(NODATA) && this.treeItems.length >= 1) {\n removeClass([this.popupDiv], NODATA);\n this.hideCheckAll(false);\n }\n if (!this.isFilteredData) {\n this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\n }\n if (this.isFirstRender && this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n this.treeObj.element.focus();\n this.isInitialized = true;\n }\n var eventArgs = { data: args.data };\n this.trigger('dataBound', eventArgs);\n if (this.filterObj === null) {\n this.isFilteredData = false;\n }\n if (this.isFilteredData) {\n this.treeObj.expandAll();\n }\n if (this.isFilterRestore) {\n this.restoreFilterSelection();\n if (!this.showSelectAll) {\n this.isFilterRestore = false;\n }\n }\n };\n DropDownTree.prototype.restoreFilterSelection = function () {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value ? this.value : [];\n }\n else {\n this.treeObj.selectedNodes = this.value ? this.value : [];\n }\n };\n /* To set cssclass for the dropdowntree */\n DropDownTree.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n DropDownTree.prototype.setEnableRTL = function (state) {\n if (state) {\n this.inputWrapper.classList.add(RTL);\n }\n else {\n this.inputWrapper.classList.remove(RTL);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n if (this.treeObj) {\n this.treeObj.enableRtl = state;\n this.treeObj.dataBind();\n }\n };\n /* To set enable property */\n DropDownTree.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputEle);\n if (this.enabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\n };\n DropDownTree.prototype.cloneFields = function (fields) {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: this.cloneChildField(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes, query: fields.query,\n selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n };\n DropDownTree.prototype.cloneChildField = function (fields) {\n if (typeof fields === 'string') {\n return fields;\n }\n else {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: (fields.child ? this.cloneChildField(fields.child) : null), hasChildren: fields.hasChildren,\n expanded: fields.expanded, iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes,\n query: fields.query, selected: fields.selected, selectable: fields.selectable,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n }\n };\n DropDownTree.prototype.getTreeFields = function (fields) {\n var treeFields = {\n dataSource: fields.dataSource, id: fields.value, text: fields.text, parentID: fields.parentValue,\n child: this.getTreeChildren(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, isChecked: fields.selected,\n htmlAttributes: fields.htmlAttributes, query: fields.query, selectable: fields.selectable, selected: fields.selected,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return treeFields;\n };\n DropDownTree.prototype.getTreeChildren = function (mapper) {\n if (typeof mapper === 'string') {\n return mapper;\n }\n else if (!isNullOrUndefined(mapper)) {\n mapper = this.getActualProperties(mapper);\n var childFields = mapper;\n if (mapper.value) {\n childFields.id = mapper.value;\n }\n if (mapper.parentValue) {\n childFields.parentID = mapper.parentValue;\n }\n if (mapper.child) {\n childFields.child = this.getTreeChildren(mapper.child);\n }\n if (mapper.selected && this.showCheckBox) {\n childFields.isChecked = mapper.selected;\n }\n return childFields;\n }\n return null;\n };\n DropDownTree.prototype.getTreeDataType = function (ds, field) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if ((typeof field.child === 'string') && isNullOrUndefined(getValue(field.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n if (isNullOrUndefined(this.fields.dataSource)) {\n this.fields.dataSource = [];\n }\n for (var i = 0, len = this.fields.dataSource.length; i < len; i++) {\n if ((typeof field.child === 'string') && !isNullOrUndefined(getValue(field.child, this.fields.dataSource[i]))) {\n return 2;\n }\n if (!isNullOrUndefined(getValue(field.parentValue, this.fields.dataSource[i])) ||\n !isNullOrUndefined(getValue(field.hasChildren, this.fields.dataSource[i]))) {\n return 1;\n }\n }\n return 1;\n };\n /* Triggers when the tree fields is changed dynamically */\n DropDownTree.prototype.setFields = function () {\n this.resetValue();\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.treeObj.dataBind();\n };\n DropDownTree.prototype.getEventArgs = function (args) {\n var checkData = args.data;\n var selectData = args.nodeData;\n var state;\n if (this.showCheckBox) {\n if (args.action === 'check') {\n state = 'select';\n }\n else if (args.action === 'uncheck') {\n state = 'un-select';\n }\n }\n var eventArgs = {\n action: this.showCheckBox ? state : args.action,\n isInteracted: this.isClicked ? true : args.isInteracted,\n item: args.node,\n itemData: this.showCheckBox ? checkData[0] : selectData\n };\n return eventArgs;\n };\n DropDownTree.prototype.onBeforeSelect = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n if (this.value === null) {\n this.setProperties({ value: [] }, true);\n }\n }\n };\n DropDownTree.prototype.updateHiddenValue = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return;\n }\n if (this.value && this.value.length) {\n this.hiddenElement.innerHTML = '';\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /* Triggers when the tree node is selected */\n DropDownTree.prototype.onNodeSelected = function (args) {\n if (this.showCheckBox) {\n return;\n }\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n var selectedText;\n if (args.isInteracted) {\n var id = getValue('id', args.nodeData).toString();\n if (!this.allowMultiSelection) {\n this.hiddenElement.innerHTML = '';\n this.setProperties({ value: [id] }, true);\n if (this.itemTemplate) {\n selectedText = getValue('text', this.treeObj.getNode(id));\n }\n else {\n selectedText = getValue('text', args.nodeData).toString();\n }\n Input.setValue(selectedText, this.inputEle, this.floatLabelType);\n this.setProperties({ text: selectedText }, true);\n this.currentText = this.text;\n this.currentValue = this.value;\n this.setValueTemplate();\n if (!isNullOrUndefined(this.value) && this.value.length > 0) {\n this.inputWrapper.setAttribute('aria-label', args.nodeData.text.toString());\n }\n attributes(this.inputWrapper, { 'aria-describedby': this.element.id });\n attributes(this.inputWrapper, { 'aria-activedescendant': id.toString() });\n this.updateHiddenValue();\n this.showOverAllClear();\n this.hidePopup();\n this.isNodeSelected = true;\n }\n else if (this.allowMultiSelection) {\n this.setMultiSelect();\n }\n }\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.onNodeClicked = function (args) {\n if (!this.changeOnBlur && this.isNodeSelected) {\n this.triggerChangeEvent(args.event);\n this.isNodeSelected = false;\n }\n var target = args.event.target;\n if ((target.classList.contains('e-fullrow') || target.classList.contains('e-list-text')) && this.showCheckBox) {\n this.isClicked = true;\n var getNodeDetails = this.treeObj.getNode(args.node);\n if (getNodeDetails.isChecked === 'true') {\n this.treeObj.uncheckAll([args.node]);\n }\n else {\n this.treeObj.checkAll([args.node]);\n }\n this.isClicked = false;\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (!this.changeOnBlur && (this.allowMultiSelection || this.showCheckBox)) {\n this.triggerChangeEvent(args.event);\n }\n };\n DropDownTree.prototype.onNodeChecked = function (args) {\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isFilteredData && args.action === 'uncheck') {\n var id = getValue('id', args.data[0]).toString();\n this.removeSelectedData(id, true);\n }\n if (!this.isChipDelete && args.isInteracted || (!this.isFilteredData && args.action === 'check' && this.isFromFilterChange)) {\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (this.showSelectAll && this.checkBoxElement) {\n var nodes = this.treeObj.element.querySelectorAll('li');\n var checkedNodes = this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n var wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n if ((wrap && args.action === 'uncheck' && (args.isInteracted || checkedNodes.length === 0 ||\n (!isNullOrUndefined(args.data[0]) && args.data[0].isChecked === 'false'))) || !args.isInteracted && this.isFilterRestore) {\n this.isFilterRestore = false;\n this.isReverseUpdate = true;\n this.changeState(wrap, 'uncheck');\n this.isReverseUpdate = false;\n }\n else if (wrap && args.action === 'check'\n && checkedNodes.length === nodes.length\n && (args.isInteracted || this.isCheckAllCalled || (!isNullOrUndefined(args.data[0]) && args.data[0].isChecked === 'true'))) {\n this.isReverseUpdate = true;\n this.isCheckAllCalled = false;\n this.changeState(wrap, 'check');\n this.isReverseUpdate = false;\n }\n }\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.beforeCheck = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n }\n };\n DropDownTree.prototype.onNodeExpanded = function () {\n if (this.hasTemplate && this.portals && this.treeObj.portals) {\n for (var i = 0; i < this.treeObj.portals.length; i++) {\n if (this.portals.indexOf(this.treeObj.portals[i]) === -1) {\n this.portals.push(this.treeObj.portals[i]);\n }\n }\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.updateClearButton = function (state) {\n if (state) {\n if (!this.inputWrapper.contains(this.overAllClear)) {\n this.inputEle.parentElement.insertBefore(this.overAllClear, this.inputEle.nextSibling);\n }\n else {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n var chipClose = selectAll('.' + CHIP_CLOSE, this.chipWrapper);\n for (var i = 0; i < chipClose.length; i++) {\n if (!state) {\n addClass([chipClose[i]], HIDEICON);\n }\n else {\n removeClass([chipClose[i]], HIDEICON);\n }\n }\n }\n };\n DropDownTree.prototype.updateDropDownIconState = function (state) {\n var spinIcon = select('.' + DDTICON, this.inputWrapper);\n if (state) {\n if (!spinIcon) {\n Input.appendSpan(DROPDOWNICON, this.inputWrapper, this.createElement);\n }\n else {\n removeClass([spinIcon], HIDEICON);\n }\n addClass([this.inputWrapper], SHOW_DD_ICON);\n }\n else {\n addClass([spinIcon], HIDEICON);\n removeClass([this.inputWrapper], SHOW_DD_ICON);\n }\n };\n DropDownTree.prototype.updateMode = function () {\n if (this.mode === 'Custom') {\n return;\n }\n if (this.mode !== 'Delimiter') {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var isValid = this.getValidMode();\n if (this.chipWrapper.classList.contains(HIDEICON) && isValid) {\n removeClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(false, true);\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n else if (!isValid) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n this.showOrHideValueTemplate(true);\n }\n var isValue = this.value !== null ? (this.value.length !== 0 ? true : false) : false;\n if (isValid && isValue) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n else if (this.inputEle.classList.contains(CHIP_INPUT)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n this.showOrHideValueTemplate(true);\n }\n }\n };\n DropDownTree.prototype.ensurePlaceHolder = function () {\n if (isNullOrUndefined(this.value) || (this.value !== null && this.value.length === 0)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(true);\n }\n }\n };\n DropDownTree.prototype.ensureClearIconPosition = function (floatLabelType) {\n if (floatLabelType !== 'Never') {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.setMultiSelectValue = function (newValues) {\n var _this = this;\n if (!this.isFilteredData) {\n this.setProperties({ value: this.isFromFilterChange && newValues && newValues.length === 0 ? this.value : newValues }, true);\n this.isFromFilterChange = false;\n if (newValues && newValues.length !== 0 && !this.showCheckBox &&\n !this.ddtCompareValues(this.treeObj.selectedNodes, this.value.slice())) {\n this.treeObj.selectedNodes = this.value.slice();\n this.treeObj.dataBind();\n }\n }\n else {\n var selectedValues = isNullOrUndefined(this.value) ? [] : this.value;\n selectedValues = selectedValues.filter(function (selectedValue) {\n var nodeData = _this.treeObj.getTreeData(selectedValue);\n if (Array.isArray(nodeData)) {\n return nodeData.every(function (nodeSelectedData) { return nodeSelectedData.selected; });\n }\n return true;\n });\n for (var i = 0; i < newValues.length; i++) {\n if (isNullOrUndefined(this.value) || this.value.indexOf(newValues[i]) === -1) {\n selectedValues.push(newValues[i]);\n }\n }\n this.setProperties({ value: selectedValues }, true);\n }\n };\n DropDownTree.prototype.setMultiSelect = function () {\n if (this.showCheckBox && !this.isDynamicChange) {\n this.setMultiSelectValue(this.treeObj.checkedNodes.slice());\n }\n else {\n var ddtValue = this.allowMultiSelection ? (this.showCheckBox ? this.treeObj.checkedNodes\n : this.treeObj.selectedNodes) : (this.value ? (this.showCheckBox ? this.value : [this.value[0]]) : null);\n this.setMultiSelectValue(ddtValue);\n if (this.showCheckBox && this.value !== null) {\n this.treeObj.checkedNodes = this.value;\n this.treeObj.dataBind();\n }\n }\n this.selectedText = [];\n var checkSelection = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (this.inputWrapper.contains(this.chipWrapper) && !checkSelection) {\n removeClass([this.inputEle], CHIP_INPUT);\n detach(this.chipWrapper);\n }\n var isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n removeClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(false, true);\n }\n }\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.chipWrapper && (this.mode === 'Box' && !isValue)) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputEle], CHIP_INPUT);\n this.showOrHideValueTemplate(true);\n }\n this.updateSelectedValues();\n };\n DropDownTree.prototype.getSelectedData = function (value) {\n var data = null;\n if (this.isFilteredData) {\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n data = this.selectedData[i];\n break;\n }\n }\n }\n if (isNullOrUndefined(data)) {\n if (this.treeSettings.loadOnDemand) {\n data = this.getNodeData(value, this.treeItems);\n }\n else {\n data = this.treeObj.getNode(value);\n }\n if (!isNullOrUndefined(data)) {\n this.selectedData.push(data);\n }\n }\n return data;\n };\n DropDownTree.prototype.getNodeData = function (id, dataSource) {\n var childItems;\n if (isNullOrUndefined(id)) {\n return childItems;\n }\n else if (this.treeDataType === 1) {\n for (var i = 0, objlen = dataSource.length; i < objlen; i++) {\n var dataId = getValue(this.fields.value, dataSource[i]);\n if (!isNullOrUndefined(dataSource[i]) && !isNullOrUndefined(dataId) && dataId.toString() === id) {\n return dataSource[i];\n }\n }\n }\n else {\n return this.getChildNodeData(dataSource, this.fields, id);\n }\n return childItems;\n };\n DropDownTree.prototype.getChildNodeData = function (obj, mapper, id) {\n var newChildItems;\n if (isNullOrUndefined(obj)) {\n return newChildItems;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataValue = getValue(mapper.value, obj[i]);\n if (obj[i] && dataValue && dataValue.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[i]))) {\n var childNodeData = getValue(mapper.child, obj[i]);\n newChildItems = this.getChildNodeData(childNodeData, this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[i]))) {\n var child = 'child';\n newChildItems = this.getChildNodeData(getValue(child, obj[i]), this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n }\n return newChildItems;\n };\n DropDownTree.prototype.getChildMapperFields = function (mapper) {\n return (typeof mapper.child === 'string' || isNullOrUndefined(mapper.child)) ? mapper : mapper.child;\n };\n DropDownTree.prototype.removeSelectedData = function (value, muteOnChange) {\n var selectedValues = isNullOrUndefined(this.value) ? [] : this.value.slice();\n selectedValues.splice(selectedValues.indexOf(value), 1);\n this.setProperties({ value: selectedValues }, muteOnChange);\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n this.selectedData.splice(i, 1);\n break;\n }\n }\n };\n DropDownTree.prototype.initializeValueTemplate = function () {\n if (!this.valueTemplate) {\n return null;\n }\n if (this.valueTemplateContainer) {\n while (this.valueTemplateContainer.firstChild) {\n this.valueTemplateContainer.removeChild(this.valueTemplateContainer.firstChild);\n }\n }\n else {\n this.valueTemplateContainer = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + SHOW_TEXT + ' ' + 'e-input-value' + ' ' + HIDEICON });\n }\n this.inputWrapper.insertBefore(this.valueTemplateContainer, this.inputEle);\n return this.templateComplier(this.valueTemplate);\n };\n DropDownTree.prototype.showOrHideValueTemplate = function (show, showChip) {\n if (showChip === void 0) { showChip = false; }\n if (!this.valueTemplateContainer || this.mode === 'Box') {\n return;\n }\n if (show) {\n removeClass([this.valueTemplateContainer], HIDEICON);\n addClass([this.inputWrapper], SHOW_CHIP);\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n addClass([this.valueTemplateContainer], HIDEICON);\n if (!showChip) {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n };\n DropDownTree.prototype.updateSelectedValues = function () {\n var _this = this;\n this.dataValue = '';\n var temp;\n var text;\n var textValue = '';\n var selectedData;\n this.hiddenElement.innerHTML = '';\n var hiddenInputValue = '';\n if ((!this.isChipDelete || this.treeSettings.autoCheck) && (this.inputWrapper.contains(this.chipWrapper))) {\n this.chipCollection.innerHTML = '';\n }\n if (!this.isFilteredData) {\n this.selectedData = [];\n }\n if (!isNullOrUndefined(this.value)) {\n var compiledString = this.initializeValueTemplate();\n for (var i = 0, len = this.value.length; i < len; i++) {\n selectedData = this.getSelectedData(this.value[i]);\n text = getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n this.selectedText.push(text);\n temp = this.selectedText[this.selectedText.length - 1];\n if (this.selectedText.length > 1) {\n this.dataValue += (this.delimiterChar + ' ' + temp);\n textValue += (',' + temp);\n }\n else {\n this.dataValue += temp;\n textValue += temp;\n }\n if (this.mode !== 'Custom' && this.mode !== 'Delimiter' && (!this.isChipDelete || this.treeSettings.autoCheck) &&\n (this.allowMultiSelection || this.showCheckBox)) {\n this.setChipValues(temp, this.value[i]);\n }\n hiddenInputValue += '';\n if (this.valueTemplate) {\n this.getValueTemplateElement(this.value[i], compiledString);\n }\n }\n if (this.hasTemplate && this.portals) {\n if (this.treeObj.portals) {\n this.portals = this.portals.concat(this.treeObj.portals.filter(function (item) {\n return !_this.portals.includes(item);\n }));\n }\n if (this.isReact) {\n this.renderReactTemplates(this.reactCallBack);\n }\n }\n if (this.selectedText.length >= 1) {\n this.setProperties({ text: textValue }, true);\n }\n this.hiddenElement.innerHTML = hiddenInputValue;\n if (this.mode === 'Custom' && (this.allowMultiSelection || this.showCheckBox)) {\n this.setTagValues();\n }\n }\n var isValid = this.getValidMode();\n if (this.mode !== 'Custom' && this.mode !== 'Box' && (this.allowMultiSelection || this.showCheckBox) && !isValid) {\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n this.showOrHideValueTemplate(true);\n }\n Input.setValue(this.dataValue, this.inputEle, this.floatLabelType);\n if (textValue === '') {\n this.setProperties({ text: null }, true);\n }\n else {\n this.setProperties({ text: textValue }, true);\n }\n if (this.showClearButton && this.inputFocus) {\n this.showOverAllClear();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (!isNullOrUndefined(this.value) && this.value.length > 0 && !isNullOrUndefined(this.currentText)) {\n this.inputWrapper.setAttribute('aria-label', this.currentText.replace(/,/g, ', '));\n }\n else {\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n }\n };\n DropDownTree.prototype.setChipValues = function (text, value) {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value }\n });\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE + ' ' + ICONS });\n if (this.enableHtmlSanitizer) {\n chipContent.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n chipContent.innerHTML = text;\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.showClearButton) {\n chip.appendChild(chipClose);\n EventHandler.add(chipClose, 'mousedown', this.removeChip, this);\n }\n };\n DropDownTree.prototype.setTagValues = function () {\n if (this.value === null || this.text == null || this.value.length === 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n return;\n }\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n if (!this.inputWrapper.classList.contains(SHOW_CHIP)) {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n var chip = this.createElement('span', {\n className: CHIP\n });\n if (!this.inputEle.classList.contains(CHIP_INPUT)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n if (this.chipWrapper.classList.contains(HIDEICON)) {\n removeClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(false, true);\n }\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var template = this.customTemplate;\n var templateId = this.customTemplateId;\n var templatestring = 'customTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({ 'value': this.value, 'text': this.text }, this, templatestring, templateId, this.isStringTemplate, undefined, chipContent);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, chipContent);\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n };\n DropDownTree.prototype.setSelectAllWrapper = function (state) {\n if (this.isFirstRender) {\n return;\n }\n if (state && !this.popupEle.contains(this.checkAllParent) && this.showCheckBox) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n }\n else if (this.popupEle.contains(this.checkAllParent)) {\n detach(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n DropDownTree.prototype.setHeaderTemplate = function () {\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n }\n var compiledString = this.templateComplier(this.headerTemplate);\n var tempArr = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, undefined, this.header);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.header);\n }\n this.popupEle.insertBefore(this.header, this.checkAllParent ? this.checkAllParent : this.popupDiv);\n };\n DropDownTree.prototype.templateComplier = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return compile(template);\n };\n DropDownTree.prototype.setFooterTemplate = function () {\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], FOOTER);\n }\n var compiledString = this.templateComplier(this.footerTemplate);\n var tempArr = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n DropDownTree.prototype.clearAll = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n this.resetValue();\n this.showOverAllClear();\n if ((this.allowMultiSelection || this.showCheckBox)) {\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n }\n if (e) {\n this.isClearButtonClick = true;\n }\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n };\n DropDownTree.prototype.removeChip = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n var element = e.target.parentElement;\n var value = element.getAttribute('data-value');\n if (this.chipCollection) {\n if (element) {\n remove(element);\n }\n }\n this.isChipDelete = true;\n this.isClearButtonClick = true;\n this.removeSelectedData(value, true);\n this.selectedText = [];\n if (this.allowMultiSelection) {\n this.treeObj.selectedNodes = this.value.slice();\n this.updateSelectedValues();\n }\n if (this.showCheckBox) {\n this.treeObj.uncheckAll([value]);\n this.clearCheckAll();\n this.setMultiSelect();\n }\n this.triggerChangeEvent(e);\n this.isChipDelete = false;\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.resetValue = function (isDynamicChange) {\n if (Array.isArray(this.value) && this.value.length === 0 && this.text == null) {\n return;\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n if (!isDynamicChange) {\n this.oldValue = this.value;\n this.setProperties({ value: [] }, true);\n this.showOrHideValueTemplate(false);\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n }\n this.dataValue = null;\n this.setProperties({ text: null }, true);\n this.selectedData = [];\n setValue('selectedNodes', [], this.treeObj);\n this.hiddenElement.innerHTML = '';\n if (this.showCheckBox) {\n this.treeObj.uncheckAll();\n this.setMultiSelect();\n this.clearCheckAll();\n }\n if (this.oldValue === null && !isDynamicChange) {\n this.removeValue = true;\n }\n else if (isDynamicChange) {\n this.triggerChangeEvent();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n this.chipCollection.innerHTML = '';\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.clearCheckAll = function () {\n if (this.showSelectAll && this.value && this.value.length === 0) {\n this.setLocale(false);\n }\n };\n DropDownTree.prototype.selectAllItems = function (state) {\n if (this.showCheckBox) {\n if (state) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n }\n else {\n this.treeObj.uncheckAll();\n }\n this.checkSelectAll = state;\n }\n else if (this.allowMultiSelection) {\n if (!state) {\n this.treeObj.selectedNodes = [];\n }\n else {\n var li = selectAll('li', this.treeObj.element);\n var id = void 0;\n var arr = [];\n for (var i = 0; i < li.length; i++) {\n id = li[i].getAttribute('data-uid').toString();\n arr.push(id);\n }\n this.treeObj.selectedNodes = arr;\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText) {\n if (state) {\n this.updateView();\n }\n else {\n this.updateOverflowWrapper(true);\n }\n }\n };\n DropDownTree.prototype.updateTreeSettings = function (prop) {\n if (prop === 'autoCheck') {\n this.treeObj.autoCheck = this.treeSettings.autoCheck;\n }\n else if (prop === 'loadOnDemand') {\n this.treeObj.loadOnDemand = this.treeSettings.loadOnDemand;\n }\n else if (prop === 'expandOn') {\n this.treeObj.expandOn = this.treeSettings.expandOn;\n this.treeObj.dataBind();\n return;\n }\n else if (prop === 'checkDisabledChildren') {\n this.treeObj.checkDisabledChildren = this.treeSettings.checkDisabledChildren;\n }\n this.treeObj.dataBind();\n this.setMultiSelect();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.updateCheckBoxState = function (checkBox) {\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.showCheckBox = checkBox;\n this.treeObj.dataBind();\n this.isDynamicChange = true;\n this.setSelectAllWrapper(this.showSelectAll);\n if (this.showSelectAll) {\n this.setLocale();\n }\n if (this.showCheckBox) {\n this.updateMode();\n }\n this.setMultiSelect();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateTemplate = function () {\n if (this.popupObj) {\n this.clearTemplate();\n this.portals = [];\n this.popupObj.destroy();\n if (this.isPopupOpen) {\n this.hidePopup();\n this.isFirstRender = true;\n this.renderPopup();\n }\n else {\n this.isFirstRender = true;\n }\n }\n };\n DropDownTree.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No Records Found' || this.actionFailureTemplate !== 'The Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No Records Found', actionFailureTemplate: 'The Request Failed' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n if (this.treeObj) {\n this.treeObj.element.removeAttribute('aria-activedescendant');\n }\n };\n DropDownTree.prototype.updateRecordTemplate = function (action) {\n if (this.treeItems && this.treeItems.length <= 0) {\n this.l10nUpdate(action);\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n }\n };\n DropDownTree.prototype.updateOverflowWrapper = function (state) {\n if (!state) {\n if (!this.inputWrapper.contains(this.overFlowWrapper)) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n }\n }\n else if (this.inputWrapper.contains(this.overFlowWrapper) && state) {\n this.overFlowWrapper.innerHTML = '';\n }\n };\n DropDownTree.prototype.updateMultiSelection = function (state) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.allowMultiSelection = state;\n this.treeObj.dataBind();\n this.updateOption();\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n this.setMultiSelect();\n };\n DropDownTree.prototype.updateAllowFiltering = function (state) {\n if (!this.isFirstRender) {\n if (state) {\n this.renderFilter();\n }\n else {\n this.destroyFilter();\n }\n }\n };\n DropDownTree.prototype.updateFilterPlaceHolder = function () {\n if (this.filterObj) {\n this.filterObj.placeholder = this.filterBarPlaceholder;\n this.filterObj.element.setAttribute('aria-label', this.filterBarPlaceholder);\n }\n };\n DropDownTree.prototype.updateValue = function (value) {\n this.isDynamicChange = true;\n if (isNullOrUndefined(value) || value.length === 0) {\n this.resetValue(true);\n }\n else {\n this.setTreeValue();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateText = function (text) {\n if (isNullOrUndefined(text)) {\n this.resetValue();\n }\n else {\n this.setTreeText();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n };\n DropDownTree.prototype.updateModelMode = function () {\n var validMode = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (!validMode) {\n return;\n }\n if (!this.wrapText) {\n var overFlow = select('.e-overflow:not(.e-input-value)', this.inputWrapper);\n if (overFlow) {\n overFlow.innerHTML = '';\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText && (this.value && this.value.length !== 0)) {\n this.updateOverFlowView();\n addClass([this.inputEle], CHIP_INPUT);\n if (this.mode === 'Box') {\n removeClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n }\n };\n DropDownTree.prototype.updateOption = function () {\n if (!this.hiddenElement.hasAttribute('multiple') && (this.allowMultiSelection || this.showCheckBox)) {\n this.hiddenElement.setAttribute('multiple', '');\n }\n else if (this.hiddenElement.hasAttribute('multiple') && (!this.allowMultiSelection && !this.showCheckBox)) {\n this.hiddenElement.removeAttribute('multiple');\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {DropDownTreeModel} newProp - specifies the newProp value.\n * @param {DropDownTreeModel} oldProp - specifies the newProp value.\n * @returns {void}\n * @private\n */\n DropDownTree.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 if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRTL(this.enableRtl);\n break;\n case 'fields':\n this.setFields();\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.inputEle);\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, newProp.floatLabelType, this.placeholder, this.createElement);\n this.ensureClearIconPosition(newProp.floatLabelType);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'allowFiltering':\n this.updateAllowFiltering(newProp.allowFiltering);\n break;\n case 'filterBarPlaceholder':\n this.updateFilterPlaceHolder();\n break;\n case 'value':\n this.oldValue = oldProp.value;\n this.updateValue(newProp.value);\n break;\n case 'text':\n this.updateText(newProp.text);\n break;\n case 'allowMultiSelection':\n this.updateMultiSelection(newProp.allowMultiSelection);\n break;\n case 'mode':\n if (!this.showCheckBox && !this.allowMultiSelection) {\n return;\n }\n if (this.mode === 'Custom') {\n if (this.overFlowWrapper) {\n detach(this.overFlowWrapper);\n }\n if (this.chipWrapper) {\n detach(this.chipWrapper);\n }\n this.setTagValues();\n }\n else {\n if (oldProp.mode === 'Custom') {\n this.updateOverflowWrapper(this.wrapText);\n }\n this.updateModelMode();\n }\n break;\n case 'delimiterChar':\n if (this.mode === 'Box') {\n return;\n }\n if (this.showCheckBox || this.allowMultiSelection) {\n this.setMultiSelect();\n }\n break;\n case 'selectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale();\n }\n break;\n case 'unSelectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale(false);\n }\n break;\n case 'showSelectAll':\n if (this.showCheckBox) {\n this.setSelectAllWrapper(newProp.showSelectAll);\n this.updatePopupHeight();\n }\n break;\n case 'showCheckBox':\n this.updateCheckBoxState(newProp.showCheckBox);\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.updatePopupHeight();\n this.updateOption();\n break;\n case 'treeSettings':\n for (var _b = 0, _c = Object.keys(newProp.treeSettings); _b < _c.length; _b++) {\n var prop_1 = _c[_b];\n this.updateTreeSettings(prop_1);\n }\n break;\n case 'customTemplate':\n if (this.mode !== 'Custom') {\n return;\n }\n this.chipCollection.innerHTML = '';\n this.setTagValues();\n break;\n case 'sortOrder':\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.sortOrder = newProp.sortOrder;\n this.treeObj.dataBind();\n this.updateValue(this.value);\n break;\n case 'showDropDownIcon':\n this.updateDropDownIconState(newProp.showDropDownIcon);\n break;\n case 'popupWidth':\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n this.updatePopupHeight();\n }\n break;\n case 'zIndex':\n if (this.popupObj) {\n this.popupObj.zIndex = newProp.zIndex;\n this.popupObj.dataBind();\n }\n break;\n case 'headerTemplate':\n this.updateTemplate();\n break;\n case 'footerTemplate':\n this.updateTemplate();\n break;\n case 'itemTemplate':\n this.updateTemplate();\n this.treeObj.nodeTemplate = newProp.itemTemplate;\n this.treeObj.dataBind();\n break;\n case 'noRecordsTemplate':\n this.updateRecordTemplate();\n break;\n case 'actionFailureTemplate':\n this.updateRecordTemplate(true);\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'wrapText':\n this.updateOverflowWrapper(this.wrapText);\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateView();\n }\n else {\n addClass([this.overFlowWrapper], HIDEICON);\n if (this.chipWrapper && this.mode === 'Box') {\n removeClass([this.chipWrapper], HIDEICON);\n }\n else {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.ensurePlaceHolder();\n }\n break;\n }\n }\n };\n /**\n * Allows you to clear the selected values from the Dropdown Tree component.\n *\n * @method clear\n * @returns {void}\n */\n DropDownTree.prototype.clear = function () {\n this.clearAll();\n if (this.inputFocus) {\n this.onFocusOut();\n }\n else {\n if (this.changeOnBlur) {\n this.triggerChangeEvent();\n }\n this.removeValue = false;\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 DropDownTree.prototype.destroy = function () {\n this.clearTemplate();\n this.unWireEvents();\n this.setCssClass(null, this.cssClass);\n this.setProperties({ text: null }, true);\n this.treeObj.destroy();\n this.destroyFilter();\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n detach(this.inputWrapper);\n detach(this.popupDiv);\n detach(this.hiddenElement);\n Input.setRipple(false, [this.inputObj]);\n this.element.classList.remove('e-input');\n if (this.showCheckBox || this.allowMultiSelection || (this.value && this.valueTemplateContainer)) {\n this.element.classList.remove(CHIP_INPUT);\n }\n detach(this.inputObj.container);\n if (this.inputObj.buttons.length) {\n detach(this.inputObj.buttons[0]);\n }\n this.inputObj = null;\n while (this.hiddenElement.options.length > 0) {\n this.hiddenElement.remove(0);\n }\n this.hiddenElement.innerHTML = '';\n this.hiddenElement = null;\n this.inputWrapper.innerHTML = '';\n this.inputWrapper = null;\n this.popupDiv = null;\n this.tree = null;\n this.popupObj = null;\n this.treeObj = null;\n this.overAllClear = null;\n if (this.chipCollection) {\n var chipsIcons = selectAll('.e-chips-close', this.chipCollection);\n for (var _i = 0, chipsIcons_1 = chipsIcons; _i < chipsIcons_1.length; _i++) {\n var element = chipsIcons_1[_i];\n EventHandler.remove(element, 'mousedown', this.removeChip);\n }\n }\n this.chipWrapper = null;\n this.chipCollection = null;\n this.checkAllParent = null;\n this.selectAllSpan = null;\n this.checkBoxElement = null;\n this.checkWrapper = null;\n this.popupEle = null;\n this.header = null;\n this.footer = null;\n this.overFlowWrapper = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n this.setProperties({ value: [] }, true);\n };\n DropDownTree.prototype.destroyFilter = function () {\n if (this.filterObj) {\n this.filterObj.destroy();\n detach(this.filterObj.element);\n detach(this.filterContainer);\n this.filterObj = null;\n }\n };\n DropDownTree.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n if (this.isReact) {\n this.clearTemplate(['headerTemplate', 'footerTemplate', 'itemTemplate', 'actionFailureTemplate',\n 'noRecordsTemplate']);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n /**\n * Ensures visibility of the Dropdown Tree item by using item value or item element.\n * If many Dropdown Tree items are present, and we are in need to find a particular item, then the `ensureVisible` property\n * helps you to bring the item to visibility by expanding the Dropdown Tree and scrolling to the specific item.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n * @returns {void}\n */\n DropDownTree.prototype.ensureVisible = function (item) {\n this.treeObj.ensureVisible(item);\n };\n /**\n * To get the updated data source of the Dropdown Tree.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element\n * @returns {'{[key: string]: Object }[]'} - returns the updated data source of the Dropdown Tree.\n */\n DropDownTree.prototype.getData = function (item) {\n return this.treeObj.getTreeData(item);\n };\n /**\n * Close the Dropdown tree pop-up.\n *\n * @returns {void}\n */\n DropDownTree.prototype.hidePopup = function () {\n var eventArgs = { popup: this.popupObj, cancel: false };\n this.trigger('close', eventArgs);\n if (eventArgs.cancel) {\n return;\n }\n this.inputWrapper.classList.remove(ICONANIMATION);\n if (this.popupEle) {\n addClass([this.popupEle], DDTHIDEICON);\n }\n attributes(this.inputEle, { 'aria-expanded': 'false' });\n if (this.popupObj && this.isPopupOpen) {\n this.popupObj.hide();\n if (this.inputFocus) {\n this.inputWrapper.focus();\n if (this.allowFiltering) {\n addClass([this.inputWrapper], [INPUTFOCUS]);\n }\n }\n if (this.destroyPopupOnHide) {\n this.isFirstRender = true;\n this.destroyPopup();\n }\n }\n };\n /**\n * Based on the state parameter, entire list item will be selected or deselected.\n *\n * @param {boolean} state - Unselects/Selects entire Dropdown Tree items.\n * @returns {void}\n *\n */\n DropDownTree.prototype.selectAll = function (state) {\n this.selectAllItems(state);\n };\n /**\n * Opens the popup that displays the Dropdown Tree items.\n *\n * @returns {void}\n */\n DropDownTree.prototype.showPopup = function () {\n if (!this.enabled || this.readonly || this.isPopupOpen) {\n return;\n }\n this.renderPopup();\n this.focusIn();\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - returns the module name.\n */\n DropDownTree.prototype.getModuleName = function () {\n return 'dropdowntree';\n };\n __decorate$2([\n Property('The Request Failed')\n ], DropDownTree.prototype, \"actionFailureTemplate\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"allowFiltering\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"allowMultiSelection\", void 0);\n __decorate$2([\n Property(true)\n ], DropDownTree.prototype, \"changeOnBlur\", void 0);\n __decorate$2([\n Property('')\n ], DropDownTree.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property('${value.length} item(s) selected')\n ], DropDownTree.prototype, \"customTemplate\", void 0);\n __decorate$2([\n Property(',')\n ], DropDownTree.prototype, \"delimiterChar\", void 0);\n __decorate$2([\n Property(true)\n ], DropDownTree.prototype, \"enabled\", void 0);\n __decorate$2([\n Complex({}, Fields)\n ], DropDownTree.prototype, \"fields\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"filterBarPlaceholder\", void 0);\n __decorate$2([\n Property('StartsWith')\n ], DropDownTree.prototype, \"filterType\", void 0);\n __decorate$2([\n Property('Never')\n ], DropDownTree.prototype, \"floatLabelType\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"footerTemplate\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"ignoreAccent\", void 0);\n __decorate$2([\n Property(true)\n ], DropDownTree.prototype, \"ignoreCase\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"headerTemplate\", void 0);\n __decorate$2([\n Property({})\n ], DropDownTree.prototype, \"htmlAttributes\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"itemTemplate\", void 0);\n __decorate$2([\n Property('Default')\n ], DropDownTree.prototype, \"mode\", void 0);\n __decorate$2([\n Property('No Records Found')\n ], DropDownTree.prototype, \"noRecordsTemplate\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"placeholder\", void 0);\n __decorate$2([\n Property('300px')\n ], DropDownTree.prototype, \"popupHeight\", void 0);\n __decorate$2([\n Property('100%')\n ], DropDownTree.prototype, \"popupWidth\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"readonly\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"showSelectAll\", void 0);\n __decorate$2([\n Property('Select All')\n ], DropDownTree.prototype, \"selectAllText\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"showCheckBox\", void 0);\n __decorate$2([\n Property(true)\n ], DropDownTree.prototype, \"destroyPopupOnHide\", void 0);\n __decorate$2([\n Property(true)\n ], DropDownTree.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$2([\n Property(true)\n ], DropDownTree.prototype, \"showClearButton\", void 0);\n __decorate$2([\n Property(true)\n ], DropDownTree.prototype, \"showDropDownIcon\", void 0);\n __decorate$2([\n Property('None')\n ], DropDownTree.prototype, \"sortOrder\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"text\", void 0);\n __decorate$2([\n Complex({}, TreeSettings)\n ], DropDownTree.prototype, \"treeSettings\", void 0);\n __decorate$2([\n Property('Unselect All')\n ], DropDownTree.prototype, \"unSelectAllText\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"value\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"valueTemplate\", void 0);\n __decorate$2([\n Property('100%')\n ], DropDownTree.prototype, \"width\", void 0);\n __decorate$2([\n Property(1000)\n ], DropDownTree.prototype, \"zIndex\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"wrapText\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"actionFailure\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"beforeOpen\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"change\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"close\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"blur\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"created\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"dataBound\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"destroyed\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"filtering\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"focus\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"keyPress\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"open\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"select\", void 0);\n DropDownTree = __decorate$2([\n NotifyPropertyChanges\n ], DropDownTree);\n return DropDownTree;\n}(Component));\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject$1 = {\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$3(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.selectedLI = this.getElementByValue(this.value);\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 var changeData = {};\n if (this.allowObjectBinding) {\n value = this.getDataByValue(value);\n if (isNullOrUndefined(value)) {\n var fields_1 = this.fields;\n var isvalidTextField_1 = false;\n var isValidValue_1 = false;\n if (this.allowObjectBinding) {\n var keys = Object.keys(this.value);\n keys.forEach(function (key) {\n if (key === fields_1.value) {\n isValidValue_1 = true;\n return;\n }\n });\n keys.forEach(function (key) {\n if (key === fields_1.text) {\n isvalidTextField_1 = true;\n return;\n }\n });\n }\n changeData = {\n text: isValidValue_1 ? isvalidTextField_1 ? getValue(fields_1.text, this.value) : getValue(fields_1.value, this.value) : null,\n value: isValidValue_1 ? this.value : null,\n index: null\n };\n }\n }\n if (this.allowObjectBinding) {\n this.setProperties(changeData, true);\n }\n else {\n this.setProperties({ value: value, text: value ? value.toString() : value, index: null }, true);\n }\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)) ||\n (this.allowObjectBinding && this.previousValue && this.value &&\n !this.isObjectInArray(this.previousValue, [this.value]))) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (this.fields.disabled) {\n if (this.value != null) {\n this.value = !this.isDisableItemValue(this.value) ? this.value : null;\n }\n if (this.text != null) {\n this.text = !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (this.index != null) {\n this.index = !this.isDisabledItemByIndex(this.index) ? this.index : null;\n this.activeIndex = this.index;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var li = this.getElementByValue(currentValue);\n var doesItemExist = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue_1 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding\n ? this.getDataByValue(dataItem.value)\n : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text)\n || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : 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\n ? this.getDataByValue(dataItem.value)\n : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text)\n || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value });\n }\n }\n }\n }\n if (li) {\n this.setSelection(li, null);\n }\n else if ((!this.enableVirtualization && this.allowCustom) ||\n (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 ? this.readonly.toString() : 'false',\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$1;\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, this.ignoreAccent);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\n var isEndIndexValid = this.viewPortInfo.endIndex >= this.incrementalEndIndex &&\n this.incrementalEndIndex <= this.totalItemCount;\n var isIncrementalEndIndexZero = this.incrementalEndIndex === 0;\n if (isEndIndexValid || isIncrementalEndIndexZero) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (isIncrementalEndIndexZero) {\n this.incrementalEndIndex = Math.min(100, this.totalItemCount);\n }\n else {\n this.incrementalEndIndex = Math.min(this.incrementalEndIndex + 100, this.totalItemCount);\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\n ? this.totalItemCount\n : 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 var startIndex = activeItem.index - ((this.itemCount / 2) - 2) > 0\n ? activeItem.index - ((this.itemCount / 2) - 2)\n : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount\n ? this.totalItemCount\n : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex !== this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var startIndex_1 = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount\n ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2)\n : this.totalItemCount;\n var endIndex_1 = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount\n ? this.totalItemCount\n : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex_1, endIndex_1);\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 var virtualContent = this.list.getElementsByClassName('e-virtual-ddl-content')[0];\n virtualContent.style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = activeElement.offsetTop;\n var virtualListInfoStartIndex = this.virtualListInfo && this.virtualListInfo.startIndex\n ? this.virtualListInfo.startIndex\n : 0;\n var virtualListHeight = activeElement.offsetHeight;\n var selectedLiOffsetTopWithStartIndex = selectedLiOffsetTop +\n (virtualListInfoStartIndex * virtualListHeight);\n var virtualListLength = this.list.querySelectorAll('.e-virtual-list').length;\n var scrollTopOffset = virtualListLength * virtualListHeight;\n this.list.scrollTop = selectedLiOffsetTopWithStartIndex - scrollTopOffset;\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if ((e && e.type === 'keydown' && e.action === 'enter') || (e && e.type === 'click')) {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(value);\n var dataItem = this.getItemData();\n var setValue = this.allowObjectBinding ? this.itemData : dataItem.value;\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': setValue }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n * @deprecated\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 * @deprecated\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)) ||\n (this.allowObjectBinding && this.previousValue && currentFillValue &&\n !this.isObjectInArray(this.previousValue, [this.getDataByValue(currentFillValue)]))) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(activeElement.getAttribute('data-value'))) :\n 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.typedString = this.filterInput.value;\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (!isNullOrUndefined(this.inputElement) && this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (this.isDisabledElement(li)) {\n return;\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 if (this.autofill && ((!this.allowObjectBinding && previousValue === this.value) ||\n (this.allowObjectBinding && previousValue && this.isObjectInArray(previousValue, [this.value]))) && ((!this.allowObjectBinding && currentValue !== this.value) ||\n (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) ||\n (this.allowObjectBinding && previousValue_1 && this.value && !this.isObjectInArray(previousValue_1, [this.value]))) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom && this.isFocused) {\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)) ||\n (this.allowObjectBinding && ((previousValue == null && this.value !== null) ||\n (previousValue && !this.isObjectInArray(previousValue, [this.value]))))) {\n this.onChangeEvent(e, true);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp, oldProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n this.renderComplete();\n this.autoFill = this.autofill;\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 * @deprecated\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 * @deprecated\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 * @deprecated\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 * @deprecated\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 * @deprecated\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 * @deprecated\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 * @deprecated\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 * @deprecated\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$3([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate$3([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate$3([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate$3([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate$3([\n Property(true)\n ], ComboBox.prototype, \"isDeviceFullScreen\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate$3([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate$3([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate$3([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate$3([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate$3([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate$3([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate$3([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate$3([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate$3([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n __decorate$3([\n Property(false)\n ], ComboBox.prototype, \"allowObjectBinding\", void 0);\n ComboBox = __decorate$3([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var filterType = (this.queryString === '' && !isNullOrUndefined(value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(value)) ? value : this.queryString;\n if (this.isFiltered) {\n if ((this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery))) {\n filterQuery = this.customFilterQuery.clone();\n }\n else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount) && !this.enableVirtualization) {\n // Since default value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization) {\n var queryTakeValue = 0;\n var querySkipValue = 0;\n var takeValue = this.getTakeValue();\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos\n ? filterQuery.queries[queryElements].e.nos\n : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n var currentTakeValue = this.query.queries[queryElements].e.nos;\n queryTakeValue = takeValue <= currentTakeValue ? currentTakeValue : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n continue;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n var currentQueryTakeValue = filterQuery.queries[queryElements].e.nos;\n queryTakeValue = currentQueryTakeValue <= queryTakeValue ? queryTakeValue : currentQueryTakeValue;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (querySkipValue > 0 && this.virtualItemStartIndex <= querySkipValue) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n if (queryTakeValue > 0 && takeValue <= queryTakeValue) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n this.isRequesting = false;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.customFilterQuery = query;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\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 isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.enableVirtualization && !isNoDataElement) {\n if (!this.list.querySelector('.e-virtual-ddl-content') && this.list.querySelector('.e-list-parent')) {\n var virtualElement = this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n });\n this.list.appendChild(virtualElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl') && this.list.parentElement) {\n var virtualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);\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 if (!isNullOrUndefined(this.itemData) && !this.enableVirtualization) {\n this.focusIndexItem();\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 this.isFiltered = false;\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return false;\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text\n ? newProp.text\n : newProp && newProp.value\n ? newProp.value\n : this.value;\n if (this.allowObjectBinding) {\n oldValue = !isNullOrUndefined(oldValue)\n ? getValue((this.fields.value) ? this.fields.value : '', oldValue)\n : oldValue;\n value = !isNullOrUndefined(value)\n ? getValue((this.fields.value) ? this.fields.value : '', value)\n : value;\n }\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields1_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 if (newProp && newProp.text) {\n _this_2.setOldText(oldValue);\n }\n else if (newProp && newProp.value) {\n _this_2.setOldValue(oldValue);\n }\n else {\n _this_2.updateValues();\n }\n }\n });\n }\n else if (newProp) {\n if (newProp.text) {\n this.setOldText(oldValue);\n }\n else {\n this.setOldValue(oldValue);\n }\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - The event object.\n * @returns {void}\n * @deprecated\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 * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - The event object.\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n isHighlight = null;\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate$4([\n Complex({ value: null, iconCss: null, groupBy: null, disabled: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate$4([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate$4([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate$4([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate$4([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate$4([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate$4([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate$4([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate$4([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate$4([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate$4([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate$4([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate$4([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate$4([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate$4([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate$4([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate$4([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\n\n/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nfunction createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n floatLabelElement.setAttribute('for', element.id);\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nfunction updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nfunction removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nfunction setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nfunction floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nfunction floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nfunction encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\n\nvar __extends$5 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FOCUS = 'e-input-focus';\nvar DISABLED$1 = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER$1 = 'e-chips-collection';\nvar CHIP$1 = 'e-chips';\nvar CHIP_CONTENT$1 = 'e-chipcontent';\nvar CHIP_CLOSE$1 = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER$1 = 'e-remain';\nvar CLOSEICON_CLASS$1 = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER$1 = 'e-ddl-footer';\nvar HEADER$1 = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS$1 = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER$1 = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\nvar RESIZE_ICON = 'e-resizer-right e-icons';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MultiSelect = /** @__PURE__ @class */ (function (_super) {\n __extends$5(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.previousFilterText = '';\n _this.storedSelectAllHeight = 0;\n _this.isUpdateHeaderHeight = false;\n _this.isUpdateFooterHeight = false;\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.resetMainList = null;\n _this.resetFilteredData = false;\n _this.preventSetCurrentData = false;\n _this.isSelectAllLoop = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem(true);\n if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\n }\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\n if (_this.isReact) {\n setTimeout(function () {\n if (_this.popupHeight && _this.list && _this.popupHeight !== 'auto') {\n var popupHeightValue = typeof _this.popupHeight === 'string' ? parseInt(_this.popupHeight, 10) : _this.popupHeight;\n if (!_this.isUpdateHeaderHeight && _this.headerTemplate && _this.header) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.header.offsetHeight).toString() + 'px';\n _this.isUpdateHeaderHeight = true;\n }\n if (!_this.isUpdateFooterHeight && _this.footerTemplate && _this.footer) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.footer.offsetHeight).toString() + 'px';\n _this.isUpdateFooterHeight = true;\n }\n }\n }, 15);\n }\n attributes(_this.inputElement, {\n 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id\n });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n if (!_this.enableVirtualization) {\n _this.loadTemplate();\n }\n }\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.add(_this.popupObj.element, 'click', _this.clickHandler, _this);\n }\n }\n });\n };\n MultiSelect.prototype.updateVirtualReOrderList = function (isCheckBoxUpdate) {\n var query = this.getForQuery(this.value, true).clone();\n if (this.enableVirtualization && this.dataSource instanceof DataManager) {\n this.resetList(this.selectedListData, this.fields, query);\n }\n else {\n this.resetList(this.dataSource, this.fields, query);\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n if (isCheckBoxUpdate) {\n this.loadTemplate();\n }\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.enableVirtualization && this.list && this.mode === 'CheckBox') {\n var reOrderList = this.list.querySelectorAll('.e-reorder')[0];\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n }\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n this.isPreventScrollAction = true;\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var value = this.allowObjectBinding\n ? getValue((this.fields.value) ? this.fields.value : '', this.value[this.value.length - 1])\n : this.value[this.value.length - 1];\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', value);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle, undefined, false, null, true);\n }\n }\n if (this.enableVirtualization) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n this.isKeyBoardAction = false;\n this.scrollBottom(focusedItem, undefined, false, null, true);\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function (isOpen) {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n if (this.enableVirtualization) {\n if (this.fields.disabled) {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)' + ':not(.' + DISABLED$1 + ')');\n if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {\n var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n element = elements && elements.length > 0 ? elements[2] : element;\n }\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {\n var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n element = elements && elements.length > 0 ? elements[2] : element;\n }\n }\n }\n else {\n if (this.fields.disabled) {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')' + ':not(.' + DISABLED$1 + ')');\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n }\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n var value = this.allowObjectBinding\n ? getValue((this.fields.value) ? this.fields.value : '', this.value[this.value.length - 1])\n : this.value[this.value.length - 1];\n Search(value, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n if (((this.allowCustomValue || this.allowFiltering) && this.isPopupOpen() &&\n this.closePopupOnSelect && !this.enableVirtualization) || this.closePopupOnSelect && !this.enableVirtualization) {\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, {\n 'id': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-hidden': 'false',\n 'aria-label': 'list'\n });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem !== null) {\n this.removeSelectedChip(e);\n return;\n }\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP$1);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n var customValue = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(value)) : this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck, isCheckbox) {\n var predicate;\n var field = this.isPrimitiveData ? '' : this.fields.value;\n if (this.enableVirtualization && valuecheck) {\n if (isCheckbox) {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === 0) {\n predicate = new Predicate(field, 'equal', (value));\n }\n else {\n predicate = predicate.or(field, 'equal', (value));\n }\n }\n return new Query().where(predicate);\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === 0) {\n predicate = new Predicate(field, 'notequal', (value));\n }\n else {\n predicate = predicate.and(field, 'notequal', (value));\n }\n }\n return new Query().where(predicate);\n }\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n }\n if (this.dataSource instanceof DataManager && this.dataSource.adaptor instanceof JsonAdaptor) {\n return new Query().where(predicate);\n }\n else {\n return this.getQuery(this.query).clone().where(predicate);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < (this.itemCount * 2) &&\n ((!(this.dataSource instanceof DataManager)) ||\n ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount))) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue && !this.enableVirtualization &&\n this.listData && this.listData.length > 0) {\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', proxy.value[i]) : proxy.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value)) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null && !this.enableVirtualization) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.allowCustomValue && !this.isCustomRendered &&\n this.inputElement.value && this.inputElement.value !== '') {\n var query = new Query();\n query = this.allowFiltering ? query.where(this.fields.text, 'startswith', this.inputElement.value, this.ignoreCase, this.ignoreAccent) : query;\n this.checkForCustomValue(query, this.fields);\n this.isCustomRendered = true;\n this.remoteCustomValue = this.enableVirtualization ? false : this.remoteCustomValue;\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy) && !isNullOrUndefined(this.fields.disabled)) {\n this.disableGroupHeader();\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n if (this.isCustomRendered) {\n return;\n }\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) &&\n this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (!this.enableVirtualization || (this.enableVirtualization && (!(this.dataSource instanceof DataManager)))) {\n this.initialValueUpdate();\n }\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[index]) :\n this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.' + DISABLED$1 + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = !isNullOrUndefined(this.fields.disabled) ? this.list.querySelectorAll('li.e-list-group-item.e-active:not(.e-disabled)').length : this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.enableVirtualization ? this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)').length : !isNullOrUndefined(this.fields.disabled) ? this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-disabled)').length : this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((!this.enableVirtualization && ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll))) || (this.enableVirtualization && this.mode === 'CheckBox' &&\n this.showSelectAll && this.virtualSelectAll && this.value && this.value.length === this.totalItemCount)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll) &&\n ((!this.enableVirtualization) || (this.enableVirtualization && !this.virtualSelectAll))) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox' && !this.isPopupOpen()) {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey && this.inputElement) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n if ((this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery))) {\n filterQuery = this.customFilterQuery.clone();\n return this.virtualFilterQuery(filterQuery);\n }\n else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.filterAction) {\n if ((this.targetElement() !== null && !this.enableVirtualization) || (this.enableVirtualization &&\n this.targetElement() !== null && this.targetElement().trim() !== '')) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else if ((this.enableVirtualization && this.targetElement() !== '' && !this.isClearAllAction) || !this.enableVirtualization) {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.enableVirtualization && (this.viewPortInfo.endIndex !== 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n if (this.virtualSelectAll) {\n return query ? query.take(this.maximumSelectionLength).requiresCount() : this.query ?\n this.query.take(this.maximumSelectionLength).requiresCount() :\n new Query().take(this.maximumSelectionLength).requiresCount();\n }\n return filterQuery;\n }\n else {\n if (this.enableVirtualization && (this.viewPortInfo.endIndex !== 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n if (this.virtualSelectAll) {\n return query ? query.take(this.maximumSelectionLength).requiresCount() : this.query ?\n this.query.take(this.maximumSelectionLength).requiresCount() :\n new Query().take(this.maximumSelectionLength).requiresCount();\n }\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.virtualFilterQuery = function (filterQuery) {\n var takeValue = this.getTakeValue();\n var isReOrder = true;\n var isSkip = true;\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (this.getModuleName() === 'multiselect' && ((filterQuery.queries[queryElements].e &&\n filterQuery.queries[queryElements].e.condition === 'or') || (filterQuery.queries[queryElements].e &&\n filterQuery.queries[queryElements].e.operator === 'equal'))) {\n isReOrder = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n isSkip = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') ;\n }\n var queryTakeValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ?\n filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ?\n this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ?\n queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if ((this.allowFiltering && isSkip) || !isReOrder || (!this.allowFiltering && isSkip)) {\n if (!isReOrder) {\n filterQuery.skip(this.viewPortInfo.startIndex);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n return filterQuery;\n };\n MultiSelect.prototype.getTakeValue = function () {\n return this.allowFiltering && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.targetElement().trim() === '') {\n var list = this.enableVirtualization ? this.list.cloneNode(true) : this.mainList.cloneNode ?\n this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand || (this.enableVirtualization && this.mode === 'CheckBox' && this.value && this.value.length > 0)) {\n this.remoteCustomValue = false;\n var isReordered = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length === 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n if (this.enableVirtualization) {\n if (this.allowFiltering) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n if (this.value && this.value.length > 0 && this.mode === 'CheckBox') {\n this.notify('setCurrentViewDataAsync', {\n component: this.getModuleName(),\n module: 'VirtualScroll'\n });\n isReordered = true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length :\n this.totalItemCount;\n }\n this.UpdateSkeleton();\n if ((isNoData || this.allowCustomValue) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-multi-select-list-wrapper')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n if (!isReordered) {\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n }\n else {\n if (this.enableVirtualization && this.allowFiltering) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n if (this.list.querySelector('.e-list-parent' + '.e-reorder')) {\n this.list.querySelector('.e-list-parent' + '.e-reorder').remove();\n }\n }\n this.resetList(dataSource, fields, query);\n if (this.enableVirtualization && (isNoData || this.allowCustomValue) &&\n !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-multi-select-list-wrapper')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n this.refreshPopup();\n if (this.allowResize) {\n this.setResize();\n }\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n var field = fields ? fields : this.fields;\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (customData && typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem_1 = {};\n setValue(field.text, value, dataItem_1);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number' && this.fields.value !== this.fields.text) {\n setValue(field.value, Math.random(), dataItem_1);\n }\n else {\n setValue(field.value, value, dataItem_1);\n }\n var emptyObject_1 = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : this.firstItem ?\n Object.keys(this.firstItem) : Object.keys(dataItem_1);\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject_1[key] = ((key === fields.value) || (key === fields.text)) ?\n getValue(fields.value, dataItem_1) : null;\n });\n }\n dataItem_1 = this.allowObjectBinding ? emptyObject_1 : dataItem_1;\n if (this.enableVirtualization) {\n this.virtualCustomData = dataItem_1;\n var tempData = this.dataSource instanceof DataManager ?\n JSON.parse(JSON.stringify(this.listData)) : JSON.parse(JSON.stringify(this.dataSource));\n var totalData = [];\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n totalData = tempData.concat(this.virtualCustomSelectData);\n }\n tempData.splice(0, 0, dataItem_1);\n this.isCustomDataUpdated = true;\n var tempCount = this.totalItemCount;\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.resetList(tempData, field, query);\n this.isCustomDataUpdated = false;\n this.totalItemCount = this.enableVirtualization && this.dataSource instanceof DataManager ?\n tempCount : this.totalItemCount;\n }\n else {\n if (this.dataSource instanceof DataManager && this.allowCustomValue && this.allowFiltering) {\n this.remoteCustomValue = false;\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem_1);\n this.resetList(tempData, field, query);\n }\n }\n else if (this.listData) {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n else if (this.listData && this.mainData && !dataChecks && this.allowCustomValue) {\n if (this.allowFiltering && this.isRemoteSelection && this.remoteCustomValue) {\n this.isRemoteSelection = false;\n if (!this.enableVirtualization) {\n this.resetList(this.listData, field, query);\n }\n }\n else if (!this.allowFiltering && this.list) {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n }\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n this.keyboardEvent = null;\n this.isKeyBoardAction = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE$1) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED$1);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED$1);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] &&\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight, 10));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight, 10);\n elementWidth = this.overAllWrapper.clientWidth -\n (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight, 10)));\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: this.allowObjectBinding ? oldVal : oldVal,\n value: this.allowObjectBinding ? newVal : newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n this.selectedValueInfo = this.viewPortInfo;\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.pageUpSelection = function (steps, isVirtualKeyAction) {\n var collection = this.list.querySelectorAll('li.' + dropDownBaseClasses.li +\n ':not(.' + HIDE_LIST + ')' +\n ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n if (this.fields.disabled && previousItem && !this.enableVirtualization) {\n while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) ||\n previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {\n previousItem = previousItem.previousElementSibling;\n }\n if (!previousItem) {\n return;\n }\n }\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = (this.liCollections.length >= steps && steps >= 0)\n ? this.liCollections[steps]\n : this.liCollections[this.skeletonCount];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && !previousItem.classList.contains('e-item-focus')) {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n else if (this.viewPortInfo.startIndex === 0) {\n this.isKeyBoardAction = true;\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n this.previousFocusItem = previousItem;\n }\n else {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n };\n MultiSelect.prototype.pageDownSelection = function (steps, isVirtualKeyAction) {\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n if (this.fields.disabled && previousItem && !this.enableVirtualization) {\n while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) ||\n previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {\n previousItem = previousItem.nextElementSibling;\n }\n if (!previousItem) {\n return;\n }\n }\n if (this.enableVirtualization && this.skeletonCount > 0) {\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = steps <= list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.previousFocusItem = previousItem;\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), false, this.keyboardEvent.keyCode);\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (this.allowResize) {\n this.setResize();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n var codePoint = this.placeholder.charCodeAt(0);\n var sizeMultiplier = (0xAC00 <= codePoint && codePoint <= 0xD7AF) ? 1.5\n : (0x4E00 <= codePoint && codePoint <= 0x9FFF) ? 2 : 1;\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length * sizeMultiplier;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (filterInput) {\n filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n else if (this.mode === 'CheckBox') {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome, isVirtualKeyAction) {\n this.removeFocus();\n if (this.enableVirtualization) {\n if (isHome) {\n if (this.enableVirtualization && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && ((!this.value && this.viewPortInfo.endIndex !== this.totalItemCount) ||\n (this.value && this.value.length > 0 && this.viewPortInfo.endIndex !== this.totalItemCount + this.value.length))) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n var query = new Query().clone();\n if (this.value && this.value.length > 0) {\n query = this.getForQuery(this.value).clone();\n query = query.skip(this.totalItemCount - this.itemCount);\n }\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n this.UpdateSkeleton();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n if (this.enableVirtualization && isHome) {\n element = scrollEle[this.skeletonCount];\n }\n this.removeFocus();\n element.classList.add(dropDownBaseClasses.focus);\n if (this.enableVirtualization && isHome) {\n this.scrollTop(element, undefined, this.keyboardEvent.keyCode);\n }\n else if (!isVirtualKeyAction) {\n this.scrollBottom(element, undefined, false, this.keyboardEvent.keyCode);\n }\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.updateSelectionList = function () {\n if (!isNullOrUndefined(this.value) && this.value.length) {\n for (var index = 0; index < this.value.length; index++) {\n var value = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n var selectedItem = this.getElementByValue(value);\n if (selectedItem && !selectedItem.classList.contains(dropDownBaseClasses.selected)) {\n selectedItem.classList.add('e-active');\n }\n }\n }\n };\n MultiSelect.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex;\n this.isKeyBoardAction = true;\n switch (e.keyCode) {\n case 40:\n this.arrowDown(e, true);\n break;\n case 38:\n this.arrowUp(e, true);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value')) - 1;\n this.pageUpSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 35:\n case 36:\n this.isMouseScrollAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false, true);\n this.isPreventScrollAction = true;\n break;\n }\n this.keyboardEvent = null;\n this.isScrollChanged = true;\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.preventSetCurrentData = false;\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.isMouseScrollAction = true;\n this.isKeyBoardAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPageCount() - 1);\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPageCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.isKeyBoardAction = true;\n this.arrowUp(e);\n break;\n case 40:\n this.isKeyBoardAction = true;\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n this.isKeyBoardAction = false;\n return;\n case 13:\n e.preventDefault();\n this.isKeyBoardAction = true;\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n this.isKeyBoardAction = false;\n return;\n case 32:\n this.isKeyBoardAction = true;\n this.spaceKeySelection(e);\n this.isKeyBoardAction = false;\n return;\n case 9:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n if (this.allowResize) {\n this.setResize();\n }\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.arrowDown = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.moveByList(1, isVirtualKeyAction);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n this.focusFirstListItem = !isNullOrUndefined(this.liCollections[0]) ? this.liCollections[0].classList.contains('e-item-focus') :\n false;\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1, isVirtualKeyAction);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (!isNullOrUndefined(li) || (selectAllParent && selectAllParent.classList.contains('e-item-focus'))) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n if (this.keyAction) {\n var li_1 = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li_1) && selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li_1.classList.remove('e-item-focus');\n }\n }\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) :\n this.value[this.value.length - 1];\n this.removeValue(this.value[this.value.length - 1], e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.allowObjectBinding) {\n temp = this.tempValues ? this.tempValues.slice() : [];\n }\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex, isInitialSelection, keyCode, isInitial) {\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyCode === void 0) { keyCode = null; }\n if (isInitial === void 0) { isInitial = false; }\n if ((!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list')) ||\n (this.enableVirtualization && isNullOrUndefined(selectedLI))) {\n selectedLI = this.liCollections[this.skeletonCount];\n }\n var selectedListMargin = selectedLI && !isNaN(parseInt(window.getComputedStyle(selectedLI).marginBottom, 10)) ?\n parseInt(window.getComputedStyle(selectedLI).marginBottom, 10) : 0;\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ?\n this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n selectedLI.offsetTop + (this.virtualListInfo.startIndex * (selectedLI.offsetHeight + selectedListMargin))\n : selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * (selectedLI.offsetHeight + selectedListMargin)) +\n (selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var boxRange = selectedLiOffsetTop - (virtualListCount * (selectedLI.offsetHeight + selectedListMargin)) +\n (selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode === 34 ? this.getPageCount() - 1 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue &&\n currentElementValue === lastElementValue && keyCode !== 35 && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n this.list.scrollTop += (selectedLI.offsetHeight + selectedListMargin) * liCount;\n this.isPreventKeyAction = this.isScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode === 35) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyCode === 34 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n isInitial && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight +\n (this.listItemHeight * 2) : this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex, keyCode) {\n if (keyCode === void 0) { keyCode = null; }\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedListMargin = selectedLI && !isNaN(parseInt(window.getComputedStyle(selectedLI).marginBottom, 10)) ?\n parseInt(window.getComputedStyle(selectedLI).marginBottom, 10) : 0;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ?\n selectedLI.offsetTop + (this.virtualListInfo.startIndex * (selectedLI.offsetHeight + selectedListMargin)) :\n selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * (selectedLI.offsetHeight +\n selectedListMargin)) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ?\n this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * (selectedLI.offsetHeight + selectedListMargin)) +\n (selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode === 33 ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue &&\n currentElementValue === firstElementValue && keyCode !== 36 && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTop -= (selectedLI.offsetHeight + selectedListMargin) * liCount;\n this.isPreventKeyAction = this.list.scrollTop !== 0 ? this.isPreventKeyAction : false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode === 36) {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyCode === 33 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.isScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n e.preventDefault();\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n var isFilterData = this.targetElement().trim() !== '' ? true : false;\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent, isFilterData);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n }\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n var selectAllCheckBox = selectAllParent.childNodes[0];\n if (!selectAllCheckBox.classList.contains('e-check')) {\n selectAllCheckBox.classList.add('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(true, e, li);\n }\n else {\n selectAllCheckBox.classList.remove('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(false, e, li);\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data, isFilterData) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.enableVirtualization) {\n if (this.allowCustomValue && this.virtualCustomData && data == null && this.virtualCustomData &&\n this.viewPortInfo && this.viewPortInfo.startIndex === 0 && this.viewPortInfo.endIndex === this.itemCount) {\n this.virtualCustomData = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.renderItems(this.mainData, this.fields);\n }\n else {\n if (this.allowFiltering && isFilterData) {\n this.updateInitialData();\n this.onActionComplete(list, this.mainData);\n this.isVirtualTrackHeight = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n else {\n this.onActionComplete(this.list, this.listData);\n }\n }\n }\n else {\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n var currentChip = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(selectedElem.getAttribute('data-value'))) :\n selectedElem.getAttribute('data-value');\n this.removeValue(currentChip, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n var filterInputClassName = targetElement.className;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if ((filterInputClassName === 'e-input-filter e-input' ||\n filterInputClassName === 'e-input-group e-control-wrapper e-input-focus') &&\n selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n };\n MultiSelect.prototype.moveByList = function (position, isVirtualKeyAction) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (this.enableVirtualization && isVirtualKeyAction && !isNullOrUndefined(this.currentFocuedListElement)) {\n selectedElem = this.getElementByValue(this.getFormattedValue(this.currentFocuedListElement.getAttribute('data-value')));\n }\n var temp = -1;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (this.mode === 'CheckBox' && this.showSelectAll && position === 1 && !isNullOrUndefined(selectAllParent) &&\n !selectAllParent.classList.contains('e-item-focus') && this.list.getElementsByClassName('e-item-focus').length === 0 &&\n this.liCollections.length > 1) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (!selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n else if (elements.length) {\n if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent && position === -1)) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (this.focusFirstListItem && !selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n if (this.enableVirtualization && isVirtualKeyAction) {\n this.addListFocus(elements[temp]);\n }\n else {\n if (this.enableVirtualization && elements[temp + 1].classList.contains('e-virtual-list')) {\n this.addListFocus(elements[this.skeletonCount]);\n }\n else {\n this.addListFocus(elements[++temp]);\n }\n }\n if (temp > -1) {\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n this.currentFocuedListElement = elements[temp];\n }\n }\n }\n else {\n if (temp > 0) {\n if (this.enableVirtualization) {\n var isVirtualElement = elements[temp - 1].classList.contains('e-virtual-list');\n var elementIndex = isVirtualKeyAction ? temp : temp - 1;\n if (isVirtualKeyAction || !isVirtualElement) {\n this.removeFocus();\n }\n if (isVirtualKeyAction || !isVirtualElement) {\n this.addListFocus(elements[elementIndex]);\n this.updateCheck(elements[elementIndex]);\n this.scrollTop(elements[elementIndex], temp);\n this.currentFocuedListElement = elements[elementIndex];\n }\n }\n else {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n }\n var focusedLi = this.list ? this.list.querySelector('.e-item-focus') : null;\n if (this.isDisabledElement(focusedLi)) {\n if (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem):not(.e-disabled)').length === 0 || (this.keyCode === 38 && this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy) && focusedLi === this.list.querySelector('li.e-list-group-item'))) {\n this.removeFocus();\n return;\n }\n var index = this.getIndexByValue(focusedLi.getAttribute('data-value'));\n if (index === 0) {\n position = 1;\n }\n if (index === (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem)').length - 1)) {\n position = -1;\n }\n this.moveByList(position);\n }\n };\n MultiSelect.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP$1);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP$1);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(customVal)) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) &&\n this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) :\n this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ?\n this.fields.value : ''), value) : value;\n this.updateMainList(true, currentValue, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) :\n this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) :\n this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ?\n this.fields.value : ''), value) : value;\n var element_1 = this.virtualSelectAll ? null : this.findListElement(this.list, 'li', 'data-value', currentValue);\n var val_1 = this.allowObjectBinding ? value : this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n _this.isRemoveSelection = _this.enableVirtualization ? true : _this.isRemoveSelection;\n _this.currentRemoveValue = _this.allowObjectBinding ? getValue(((_this.fields.value) ?\n _this.fields.value : ''), value) : value;\n _this.virtualSelectAll = false;\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.selectedListData.splice(index, 1);\n }\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (_this.enableVirtualization) {\n var currentText = index === 0 && _this.text.split(_this.delimiterChar) &&\n _this.text.split(_this.delimiterChar).length === 1 ?\n _this.text.replace(_this.text.split(_this.delimiterChar)[index], '') :\n index === 0 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index] +\n _this.delimiterChar, '') :\n _this.text.replace(_this.delimiterChar + _this.text.split(_this.delimiterChar)[index], '');\n _this.setProperties({ text: currentText.toString() }, true);\n }\n if (element_1 !== null) {\n var currentValue_1 = _this.allowObjectBinding ? getValue(((_this.fields.value) ?\n _this.fields.value : ''), value) : value;\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', currentValue_1);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n var currentValue_2 = _this.allowObjectBinding ? getValue(((_this.fields.value) ?\n _this.fields.value : ''), value) : value;\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(currentValue_2);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, currentValue_2);\n _this.removeChip(currentValue_2, isClearAll);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll && _this.isSelectAllTarget)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n if (_this.isPopupOpen() && element_1 && element_1.parentElement.classList.contains('e-reorder')) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n _this.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value, isClearAll) {\n if (this.chipCollectionWrapper) {\n if (!(this.enableVirtualization && isClearAll)) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.indexOfObjectInArray = function (objectToFind, array) {\n var _loop_1 = function (i) {\n var item = array[i];\n // eslint-disable-next-line no-prototype-builtins\n if (Object.keys(objectToFind).every(function (key) { return item.hasOwnProperty(key) &&\n item[key] === objectToFind[key]; })) {\n return { value: i };\n }\n };\n for (var i = 0; i < array.length; i++) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return -1; // Return -1 if the object is not found\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n var currentValue = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if ((this.allowObjectBinding && !this.isObjectInArray(this.getDataByValue(value), this.value)) || (!this.allowObjectBinding &&\n this.value.indexOf(currentValue) < 0)) {\n this.setProperties({ value: [].concat([], this.value, [currentValue]) }, true);\n if (this.enableVirtualization && !this.isSelectAllLoop) {\n var data = this.viewWrapper.innerHTML;\n var temp = void 0;\n data += (this.value.length === 1) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(this.value.length - 1);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n if (this.enableVirtualization && this.mode === 'CheckBox') {\n var currentText = [];\n var value_1 = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) :\n this.value[this.value.length - 1];\n var temp = text;\n var textValues = this.text != null && this.text !== '' ? this.text + this.delimiterChar + temp : temp;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n }\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var activeItems = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.e-active');\n removeClass(activeItems, 'e-disable');\n var inactiveItems = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(inactiveItems, 'e-disable');\n }\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li);\n removeClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length, dataValue, text) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var val_2 = dataValue ? dataValue : this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n value = _this.allowObjectBinding ? _this.getDataByValue(value) : value;\n if (_this.enableVirtualization) {\n if (isNullOrUndefined(_this.selectedListData)) {\n _this.selectedListData = [(_this.getDataByValue(value))];\n }\n else {\n if (dataValue) {\n if (Array.isArray(_this.selectedListData)) {\n _this.selectedListData.push(dataValue);\n }\n else {\n _this.selectedListData = [_this.selectedListData, dataValue];\n }\n }\n else {\n if (Array.isArray(_this.selectedListData)) {\n _this.selectedListData.push((_this.getDataByValue(value)));\n }\n else {\n _this.selectedListData = [_this.selectedListData, (_this.getDataByValue(value))];\n }\n }\n }\n }\n if ((_this.enableVirtualization && value) || !_this.enableVirtualization) {\n _this.updateListSelectEventCallback(value, element, eve, text);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP$1 + '.' + CHIP_SELECTED);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE$1.split(' ')[0]);\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP$1);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE$1.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (typeof multiselectTemplate !== 'function' && multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.encodeHtmlEntities = function (input) {\n return input.replace(/[\\u00A0-\\u9999<>&]/g, function (match) {\n return \"&#\" + match.charCodeAt(0) + \";\";\n });\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP$1,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT$1 });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE$1 });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, chipContent);\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = this.encodeHtmlEntities(data.toString());\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n this.isUpdateHeaderHeight = this.header.offsetHeight !== 0;\n }\n append([this.list], this.popupWrapper);\n if (!this.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {\n this.listItemHeight = this.getItems()[1].offsetHeight +\n parseInt(window.getComputedStyle(this.getItems()[1]).marginBottom, 10);\n }\n if (this.enableVirtualization && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content') && this.list.querySelector('.e-list-parent')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n else if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemsCount();\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n }\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n this.isUpdateFooterHeight = this.footer.offsetHeight !== 0;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative',\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '') && !_this.enableVirtualization) {\n _this.loadTemplate();\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.UpdateSkeleton();\n }\n }\n _this.isPreventScrollAction = true;\n _this.setScrollPosition();\n if (!_this.list.classList.contains(dropDownBaseClasses.noData) && _this.getItems()[1] &&\n _this.getItems()[1].offsetHeight !== 0) {\n _this.listItemHeight = _this.getItems()[1].offsetHeight +\n parseInt(window.getComputedStyle(_this.getItems()[1]).marginBottom, 10);\n if (_this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n }\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n if (_this.enableVirtualization) {\n _this.notify('bindScrollEvent', {\n module: 'VirtualScroll',\n component: _this.getModuleName(),\n enable: _this.enableVirtualization\n });\n setTimeout(function () {\n if (_this.value) {\n _this.updateSelectionList();\n }\n else if (_this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n }, 5);\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n this.checkCollision(this.popupWrapper);\n this.popupContentElement = this.popupObj.element.querySelector('.e-content');\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering && this.isDeviceFullScreen) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (this.allowResize) {\n this.setResize();\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.checkCollision = function (popupEle) {\n if (!(this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering && this.isDeviceFullScreen)) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER$1);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n append(elements, this.header);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER$1);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n append(elements, this.footer);\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.updateInitialData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n this.previousStartIndex = 0;\n this.previousEndIndex = this.itemCount;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n this.listData = currentData;\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n if (this.enableVirtualization) {\n this.notify('setGeneratedData', {\n module: 'VirtualScroll'\n });\n }\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n this.setDynValue = false;\n this.isClearAllAction = true;\n if (this.value && this.value.length > 0) {\n if (this.allowFiltering) {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox' && this.targetInputElement) {\n this.targetInputElement.value = '';\n }\n }\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n this.checkAndResetCache();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n if (this.enableVirtualization) {\n this.updateInitialData();\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n if (!this.isCustomDataUpdated) {\n this.notify('setGeneratedData', {\n module: 'VirtualScroll'\n });\n }\n }\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = this.itemCount;\n }\n this.isClearAllAction = false;\n }\n this.isClearAllItem = true;\n EventHandler.add(document, 'mouseup', this.preventSelection, this);\n };\n MultiSelect.prototype.preventSelection = function (e) {\n if (this.isClearAllItem) {\n e.stopPropagation();\n }\n this.isClearAllItem = false;\n EventHandler.remove(document, 'mouseup', this.preventSelection);\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (this.allowResize) {\n this.setResize();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n if (!isNullOrUndefined(this.inputElement)) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.resetFilteredData = true;\n this.preventSetCurrentData = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n if (this.allowCustomValue) {\n this.isRemoteSelection = true;\n }\n this.checkAndResetCache();\n this.isRequesting = false;\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.customFilterQuery = query;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n if (_this.dataSource instanceof DataManager && _this.allowCustomValue) {\n _this.isCustomRendered = false;\n }\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = this.allowFiltering && (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n if (this.enableVirtualization) {\n this.dataUpdater(this.dataSource, query, this.fields);\n }\n else {\n this.dataUpdater(this.mainData, query, this.fields);\n }\n this.UpdateSkeleton();\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var type = this.typeOfData(this.listData).typeof;\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (this.enableVirtualization && this.targetElement().trim() !== '' && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) ||\n this.incrementalEndIndex === 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = false;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n while (isNullOrUndefined(activeElement) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount :\n this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n if (!isNullOrUndefined(activeElement)) {\n break;\n }\n if (isNullOrUndefined(activeElement) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeElement.index) {\n if (!(this.viewPortInfo.startIndex >= activeElement.index) ||\n !(activeElement.index >= this.viewPortInfo.endIndex)) {\n var startIndex = activeElement.index - ((this.itemCount / 2) - 2) > 0\n ? activeElement.index - ((this.itemCount / 2) - 2)\n : 0;\n var endIndex = startIndex + this.itemCount > this.totalItemCount\n ? this.totalItemCount\n : startIndex + this.itemCount;\n if (startIndex !== this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeElement.item)) {\n var index1 = this.getIndexByValue(activeElement.item.getAttribute('data-value')) - this.skeletonCount;\n if (index1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount\n ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2)\n : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount\n ? this.totalItemCount\n : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeElement && activeElement.item) {\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n }\n if (activeElement && activeElement.item) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.preventSetCurrentData = false;\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n this.isCustomRendered = false;\n this.isRemoteSelection = false;\n this.isSelectAllTarget = true;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e, isInitialVirtualData) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n if (!this.enableVirtualization) {\n this.listData = this.mainData;\n }\n if (!isNullOrUndefined(this.hiddenElement) && !this.enableVirtualization) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n var valueLength = this.value.length;\n var hiddenElementContent = '';\n var _loop_2 = function (index) {\n var valueItem = this_1.allowObjectBinding ?\n getValue((this_1.fields.value) ? this_1.fields.value : '', this_1.value[index]) : this_1.value[index];\n var listValue = this_1.findListElement((!isNullOrUndefined(this_1.mainList) ? this_1.mainList : this_1.ulElement), 'li', 'data-value', valueItem);\n if (this_1.enableVirtualization) {\n listValue = this_1.findListElement((!isNullOrUndefined(this_1.list) ? this_1.list : this_1.ulElement), 'li', 'data-value', valueItem);\n }\n if (isNullOrUndefined(listValue) && !this_1.allowCustomValue && !this_1.enableVirtualization &&\n this_1.listData && this_1.listData.length > 0) {\n this_1.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this_1.listData) {\n if (this_1.enableVirtualization) {\n if (delim) {\n data = this_1.delimiterWrapper && this_1.delimiterWrapper.innerHTML === '' ? data :\n this_1.delimiterWrapper.innerHTML;\n }\n var value = this_1.allowObjectBinding ?\n getValue(((this_1.fields.value) ? this_1.fields.value : ''), this_1.value[this_1.value.length - 1]) :\n this_1.value[this_1.value.length - 1];\n if (this_1.isRemoveSelection) {\n data = this_1.text.replace(/,/g, delimiterChar + ' ') + delimiterChar + ' ';\n text = this_1.text.split(delimiterChar);\n }\n else {\n temp = isInitialVirtualData && delim ? this_1.text : this_1.getTextByValue(value);\n var textValues = isInitialVirtualData ? this_1.text : (this_1.text && this_1.text !== '' ? this_1.text + this_1.delimiterChar + temp : temp);\n data += temp + delimiterChar + ' ';\n text.push(textValues);\n hiddenElementContent = this_1.hiddenElement.innerHTML;\n }\n if ((e && e.currentTarget && e.currentTarget.classList.contains('e-chips-close')) ||\n (e && (e.key === 'Backspace'))) {\n var item_1 = e.target.parentElement.getAttribute('data-value');\n if (e.key === 'Backspace') {\n var lastChild = this_1.hiddenElement.lastChild;\n if (lastChild) {\n this_1.hiddenElement.removeChild(lastChild);\n }\n }\n else {\n this_1.hiddenElement.childNodes.forEach(function (option) {\n if (option.value === item_1) {\n option.parentNode.removeChild(option);\n }\n });\n }\n hiddenElementContent = this_1.hiddenElement.innerHTML;\n }\n else {\n hiddenElementContent += '';\n }\n return out_index_1 = index, \"break\";\n }\n else {\n temp = this_1.getTextByValue(valueItem);\n }\n }\n else {\n temp = valueItem;\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n hiddenElementContent += \"\";\n out_index_1 = index;\n };\n var this_1 = this, out_index_1;\n for (var index = 0; index < valueLength; index++) {\n var state_2 = _loop_2(index);\n index = out_index_1;\n if (state_2 === \"break\")\n break;\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n if (this.isRemoveSelection) {\n if (this.findListElement(this.hiddenElement, 'option', 'value', this.currentRemoveValue)) {\n this.hiddenElement.removeChild(this.findListElement(this.hiddenElement, 'option', 'value', this.currentRemoveValue));\n }\n this.isRemoveSelection = false;\n }\n else {\n this.hiddenElement.innerHTML = hiddenElementContent;\n }\n }\n }\n var isChipRemove = e && e.target && e.target.classList.contains('e-chips-close');\n if (!this.enableVirtualization || (this.enableVirtualization && this.mode !== 'CheckBox' && !isChipRemove)) {\n this.setProperties({ text: text.toString() }, true);\n }\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n var value = this.allowObjectBinding ? this.getDataByValue(textVal) : textVal;\n this.setProperties({ value: value }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function (listItems, isInitialVirtualData) {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) :\n this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n var isCustomData = false;\n if (this.enableVirtualization) {\n text = null;\n if (listItems != null && listItems.length > 0) {\n for (var i = 0; i < listItems.length; i++) {\n if ((this.isPrimitiveData && listItems[i] === value) || (!this.isPrimitiveData\n && getValue((this.fields.value ? this.fields.value :\n 'value'), listItems[i]) === value)) {\n text = this.isPrimitiveData ? listItems[i] :\n getValue(this.fields.text, listItems[i]);\n if (this.enableVirtualization) {\n if (isNullOrUndefined(this.selectedListData)) {\n this.selectedListData = [listItems[i]];\n }\n else {\n if (Array.isArray(this.selectedListData)) {\n this.selectedListData.push((listItems[i]));\n }\n else {\n this.selectedListData = [this.selectedListData, (listItems[i])];\n }\n }\n }\n break;\n }\n }\n }\n if ((isNullOrUndefined(text) && this.allowCustomValue) &&\n ((!(this.dataSource instanceof DataManager)) ||\n (this.dataSource instanceof DataManager && isInitialVirtualData))) {\n text = this.getTextByValue(value);\n isCustomData = true;\n }\n }\n else {\n text = this.getTextByValue(value);\n }\n if (((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) ||\n (this.enableVirtualization && value != null && text != null && !isCustomData)) {\n var currentText = [];\n var textValues = this.text != null && this.text !== '' ? this.text + this.delimiterChar + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if ((!this.enableVirtualization && value && this.allowCustomValue) ||\n (this.enableVirtualization &&\n value &&\n this.allowCustomValue &&\n ((!(this.dataSource instanceof DataManager)) ||\n (this.dataSource instanceof DataManager && isInitialVirtualData)))) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n if (!this.enableVirtualization) {\n this.addItem(newValue, indexItem);\n }\n if (this.enableVirtualization) {\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length >= 0) {\n this.virtualCustomSelectData.push(newValue);\n }\n else {\n this.virtualCustomSelectData = [newValue];\n }\n }\n element = element ? element : this.findListElement(this.hideSelectedItem ?\n this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n var currentText = [];\n var textValues = this.text != null && this.text !== '' ? this.text + this.delimiterChar + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, null, isInitialVirtualData);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && ((!this.allowObjectBinding && this.value.indexOf(li.getAttribute('data-value')) > -1) ||\n (this.allowObjectBinding && this.isObjectInArray(this.getDataByValue(li.getAttribute('data-value')), this.value)))) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 &&\n this.ulElement.children[0].childElementCount > 0) &&\n (this.mainList.children[0] && (this.mainList.children[0].childElementCount <\n this.ulElement.children[0].childElementCount)));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 &&\n !(this.ulElement.childElementCount < this.mainList.childElementCount) &&\n (this.ulElement.children[0].childElementCount > 0 ||\n (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(customVal)) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || ((!this.allowObjectBinding && this.value.indexOf(value) === -1) ||\n (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) === -1))) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e, currentText) {\n var _this = this;\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var text = currentText ? currentText : this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) &&\n !this.findListElement(this.mainList, 'li', 'data-value', value) &&\n (!this.enableVirtualization || (this.enableVirtualization && this.virtualCustomData))) {\n var temp_1 = li ? li.cloneNode(true) : li;\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.enableVirtualization && _this.virtualCustomData) {\n if (_this.virtualCustomSelectData && _this.virtualCustomSelectData.length >= 0) {\n _this.virtualCustomSelectData.push(data_1);\n }\n else {\n _this.virtualCustomSelectData = [data_1];\n }\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n else {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && (this.isValidLI(element) || (this.fields.disabled && this.isDisabledElement(element)))) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e, isInitialVirtualData) {\n this.updateData(delimChar, e, isInitialVirtualData);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n if (!this.isClearAllItem) {\n this.keyCode = null;\n this.scrollFocusStatus = false;\n this.keyboardEvent = null;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (this.enableVirtualization && li && li.classList.contains('e-virtual-list')) {\n return;\n }\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.allowResize) {\n this.setResize();\n }\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n var isFilterData = this.targetElement().trim() !== '' ? true : false;\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent, isFilterData);\n }\n }\n else {\n e.preventDefault();\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ?\n Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.virtualItemStartIndex);\n this.resetList(this.dataSource, this.fields, query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.'\n + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length :\n this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n }\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (!(this.fields.disabled && this.isDisabledElement(listElement))) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n }\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null || (!isNullOrUndefined(this.fields.disabled) && count === 0)) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.disableGroupHeader = function () {\n var collection = this.list.querySelectorAll('li.e-list-group-item');\n if (collection) {\n for (var index = 0; index < collection.length; index++) {\n var isDisabled = true;\n var target = collection[index].nextElementSibling;\n while (!target.classList.contains('e-list-group-item')) {\n if (!this.isDisabledElement(target)) {\n isDisabled = false;\n break;\n }\n target = target.nextElementSibling;\n if (target == null) {\n break;\n }\n }\n if (isDisabled) {\n this.disableListItem(collection[index]);\n }\n }\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS$1 + ' ' + SPINNER_CLASS$1 });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS$1)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = this.encodeHtmlEntities(wrapperData);\n }\n else {\n wrapperType.innerText = wrapperData;\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER$1);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n if (!this.enableVirtualization) {\n this.updateWrapperText(this.viewWrapper, data);\n }\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER$1\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value) && (this.allowCustomValue || (this.listData && this.listData.length > 0))) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n var items = this.text && this.text.split(this.delimiterChar);\n if (!this.enableVirtualization) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n else if (items) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = items[index];\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER$1) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER$1);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER$1);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n var value = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(value);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(value);\n }\n }\n else {\n temp = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) :\n this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.resizingWireEvent = function () {\n // Mouse events\n EventHandler.add(document, 'mousemove', this.resizePopup, this);\n EventHandler.add(document, 'mouseup', this.stopResizing, this);\n // Touch events\n EventHandler.add(document, 'touchmove', this.resizePopup, this);\n EventHandler.add(document, 'touchend', this.stopResizing, this);\n };\n MultiSelect.prototype.resizingUnWireEvent = function () {\n // Mouse events\n EventHandler.remove(document, 'mousemove', this.resizePopup);\n EventHandler.remove(document, 'mouseup', this.stopResizing);\n // Touch events\n EventHandler.remove(document, 'touchmove', this.resizePopup);\n EventHandler.remove(document, 'touchend', this.stopResizing);\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)');\n }\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ?\n closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (!(this.fields.disabled && this.isDisabledElement(listElement))) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.virtualSelectionAll = function (state, li, event) {\n var _this = this;\n var index = 0;\n var length = li.length;\n var count = this.maximumSelectionLength;\n if (state) {\n this.virtualSelectAll = true;\n length = this.virtualSelectAllData && this.virtualSelectAllData.length !== 0 ? this.virtualSelectAllData.length : length;\n this.listData = this.virtualSelectAllData;\n var ulElement = this.createListItems(this.virtualSelectAllData.slice(0, 30), this.fields);\n var firstItems = ulElement.querySelectorAll('li');\n var fragment_1 = document.createDocumentFragment();\n firstItems.forEach(function (node) {\n fragment_1.appendChild(node.cloneNode(true));\n });\n li.forEach(function (node) {\n fragment_1.appendChild(node.cloneNode(true));\n });\n var concatenatedNodeList = fragment_1.childNodes;\n if (this.virtualSelectAllData instanceof Array) {\n while (index < length && index <= 50 && index < count) {\n this.isSelectAllTarget = (length === index + 1);\n if (concatenatedNodeList[index]) {\n var value = this.allowObjectBinding\n ? this.getDataByValue(concatenatedNodeList[index].getAttribute('data-value'))\n : this.getFormattedValue(concatenatedNodeList[index].getAttribute('data-value'));\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value) >= 0) ||\n (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) >= 0))) {\n index++;\n continue;\n }\n this.updateListSelection(concatenatedNodeList[index], event, length - index);\n }\n else {\n var value = getValue(this.fields.value ? this.fields.value : '', this.virtualSelectAllData[index]);\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value) >= 0) ||\n (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) >= 0))) {\n index++;\n continue;\n }\n if (this.value && value != null && Array.isArray(this.value) &&\n ((!this.allowObjectBinding && this.value.indexOf(value) < 0) ||\n (this.allowObjectBinding && !this.isObjectInArray(value, this.value)))) {\n this.dispatchSelect(value, event, null, false, length);\n }\n }\n index++;\n }\n if (length > 50) {\n setTimeout(function () {\n if (_this.virtualSelectAllData && _this.virtualSelectAllData.length > 0) {\n _this.virtualSelectAllData.map(function (obj) {\n if (_this.value && obj[_this.fields.value] != null && Array.isArray(_this.value) &&\n ((!_this.allowObjectBinding && _this.value.indexOf(obj[_this.fields.value]) < 0) ||\n (_this.allowObjectBinding && !_this.isObjectInArray(obj[_this.fields.value], _this.value)))) {\n var value = obj[_this.fields.value];\n var text = (obj[_this.fields.text]).toString();\n _this.dispatchSelect(value, event, null, false, length, obj, text);\n }\n });\n }\n _this.updatedataValueItems(event);\n _this.isSelectAllLoop = false;\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement(true);\n if (_this.popupWrapper && li[index - 1] && li[index - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index - 1].classList.remove('e-item-focus');\n }\n }\n }, 0);\n }\n }\n }\n else {\n if (this.virtualSelectAllData && this.virtualSelectAllData.length > 0) {\n this.virtualSelectAllData.map(function (obj) {\n _this.virtualSelectAll = true;\n _this.removeValue(_this.value[index], event, _this.value.length - index);\n });\n }\n this.updatedataValueItems(event);\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n this.setProperties({ value: [] }, true);\n this.virtualSelectAll = false;\n if (!isNullOrUndefined(this.viewPortInfo.startIndex) && !isNullOrUndefined(this.viewPortInfo.endIndex)) {\n this.notify('setCurrentViewDataAsync', {\n component: this.getModuleName(),\n module: 'VirtualScroll'\n });\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n virtualTrackElement.style = this.GetVirtualTrackHeight();\n }\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n virtualContentElement.style = this.getTransformValues();\n }\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if ((li && li.length) || (this.enableVirtualization && !state)) {\n var index_1 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n if (this.enableVirtualization) {\n this.virtualSelectAllState = state;\n this.virtualSelectAll = true;\n this.CurrentEvent = event;\n if (!this.virtualSelectAllData) {\n this.resetList(this.dataSource, this.fields, new Query());\n }\n if (this.virtualSelectAllData) {\n this.virtualSelectionAll(state, li, event);\n }\n }\n else {\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.isSelectAllTarget = (length === index_1 + 1);\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.isSelectAllTarget = (length === index_1 + 1);\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n if (_this.popupWrapper && li[index_1 - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index_1 - 1].classList.remove('e-item-focus');\n }\n }\n }, 0);\n }\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if ((!this.allowObjectBinding && this.value.indexOf(value) < 0) ||\n (this.allowObjectBinding && !this.isObjectInArray(value, this.value))) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n if ((this.enableVirtualization && this.value && this.value.length > 0) || !this.enableVirtualization) {\n this.updateHiddenElement();\n }\n }\n };\n MultiSelect.prototype.updateHiddenElement = function (isVirtualSelectAll) {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '';\n if (!isVirtualSelectAll) {\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n }\n });\n this.hiddenElement.innerHTML = hiddenValue;\n if (!isVirtualSelectAll) {\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.setProperties({ text: text.toString() }, true);\n }\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if ((!(isRemoveAll || this.isSelectAll) && this.isSelectAllTarget) || (this.isSelectAll && this.isSelectAllTarget)) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n if (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualSelectAllData)) {\n this.virtualSelectAll = false;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n if (this.fields.disabled) {\n this.text =\n this.text && !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n if (this.fields.disabled) {\n this.removeDisabledItemsValue(this.value);\n }\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (this.isPopupOpen() && this.mode === 'CheckBox' && this.list && this.list.querySelector('.e-active.e-disable')) {\n var activeItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + '.e-active' + '.e-disable');\n removeClass(activeItems, 'e-disable');\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'allowResize':\n this.allowResize = newProp.allowResize;\n if (!this.allowResize && this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.height = formatUnit(this.popupHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) &&\n !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] &&\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n case 'fields':\n if (isNullOrUndefined(this.fields.groupBy)) {\n this.removeScrollEvent();\n }\n break;\n default:\n {\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.totalItemsCount = function () {\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n dataSourceCount = this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode === 'CheckBox') {\n this.totalItemCount = dataSourceCount !== 0 ? dataSourceCount : this.totalItemCount;\n }\n else {\n if (this.hideSelectedItem) {\n this.totalItemCount = dataSourceCount !== 0 && this.value ? dataSourceCount - this.value.length : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n for (var i = 0; i < this.virtualCustomSelectData.length; i++) {\n for (var j = 0; j < this.value.length; j++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', this.value[j]) : this.value[j];\n var customValue = getValue((this.fields.value) ?\n this.fields.value : '', this.virtualCustomSelectData[i]);\n if (value === customValue) {\n this.totalItemCount += 1;\n }\n }\n }\n }\n }\n else {\n this.totalItemCount = dataSourceCount !== 0 ? dataSourceCount : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n this.totalItemCount += this.virtualCustomSelectData.length;\n }\n }\n }\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', this.value[i]) : this.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle) {\n var checkvalue = this.allowObjectBinding ?\n this.getDataByValue(this.value[i]) : this.value[i];\n valuecheck.push(checkvalue);\n }\n }\n return valuecheck;\n };\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop === 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null && !this.enableVirtualization) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n if (!this.enableVirtualization || (this.enableVirtualization && (!(this.dataSource instanceof DataManager)))) {\n this.initialValueUpdate();\n }\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @param {MouseEvent | KeyboardEventArgs} e - Specifies the mouse event or keyboard event.\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay \n };\n this.customFilterQuery = null;\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n var typedValue = _this.mode === 'CheckBox' ? _this.targetElement() : null;\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.remove(_this.popupObj.element, 'click', _this.clickHandler);\n }\n if (_this.list && _this.list.parentElement && _this.allowResize) {\n if (_this.resizer && _this.list.parentElement.contains(_this.resizer)) {\n _this.list.parentElement.removeChild(_this.resizer);\n }\n if (_this.list.parentElement.classList.contains('e-resize')) {\n _this.list.parentElement.classList.remove('e-resize');\n }\n _this.list.parentElement.style.boxSizing = '';\n _this.list.parentElement.style.paddingBottom = '';\n var overAllHeight = parseInt(_this.popupHeight, 10);\n _this.list.style.maxHeight = formatUnit(overAllHeight);\n _this.list.parentElement.style.height = formatUnit(_this.popupHeight);\n _this.list.parentElement.style.maxHeight = formatUnit(_this.popupHeight);\n }\n if (_this.resizer) {\n EventHandler.remove(_this.resizer, 'mousedown', _this.startResizing);\n _this.resizer.remove();\n }\n if (_this.enableVirtualization && _this.mode === 'CheckBox' && _this.value && _this.value.length > 0 &&\n _this.enableSelectionOrder) {\n _this.viewPortInfo.startIndex = _this.virtualItemStartIndex = 0;\n _this.viewPortInfo.endIndex = _this.virtualItemEndIndex = _this.viewPortInfo.startIndex > 0 ?\n _this.viewPortInfo.endIndex : _this.itemCount;\n _this.virtualListInfo = _this.viewPortInfo;\n _this.previousStartIndex = 0;\n _this.previousEndIndex = _this.itemCount;\n }\n var dataSourceCount = void 0;\n if (_this.dataSource instanceof DataManager) {\n if (_this.remoteDataCount >= 0) {\n _this.totalItemCount = _this.dataCount = _this.remoteDataCount;\n }\n else {\n _this.resetList(_this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = _this.dataSource && _this.dataSource.length ? _this.dataSource.length : 0;\n }\n if (_this.enableVirtualization && (_this.allowFiltering || _this.allowCustomValue) &&\n (_this.targetElement() || typedValue) && _this.totalItemCount !== dataSourceCount) {\n _this.checkAndResetCache();\n _this.updateInitialData();\n }\n if (_this.virtualCustomData && _this.viewPortInfo && _this.viewPortInfo.startIndex === 0 &&\n _this.viewPortInfo.endIndex === _this.itemCount) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.renderItems(_this.mainData, _this.fields);\n }\n _this.virtualCustomData = null;\n _this.isVirtualTrackHeight = false;\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @param {MouseEvent | KeyboardEventArgs} e - Specifies the mouse event or keyboard event.\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering && _this.isDeviceFullScreen) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n _super.prototype.render.call(_this, e);\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering && _this.isDeviceFullScreen) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) &&\n !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n if (_this.enableVirtualization && _this.listData && _this.listData.length) {\n if (!isNullOrUndefined(_this.value) && (_this.getModuleName() === 'dropdownlist' ||\n _this.getModuleName() === 'combobox')) {\n _this.removeHover();\n }\n if (!_this.beforePopupOpen) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n if (!_this.preventSetCurrentData && !isNullOrUndefined(_this.viewPortInfo.startIndex) &&\n !isNullOrUndefined(_this.viewPortInfo.endIndex)) {\n _this.notify('setCurrentViewDataAsync', {\n component: _this.getModuleName(),\n module: 'VirtualScroll'\n });\n }\n }\n }\n if (_this.enableVirtualization && !_this.allowFiltering && _this.selectedValueInfo != null &&\n _this.selectedValueInfo.startIndex > 0 && _this.value != null) {\n _this.notify('dataProcessAsync', {\n module: 'VirtualScroll',\n isOpen: true\n });\n }\n if (_this.enableVirtualization) {\n _this.updatevirtualizationList();\n }\n else {\n if (_this.value && _this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n var listItems = _this.getItems();\n for (var _i = 0, _a = _this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = _this.allowObjectBinding ?\n getValue((_this.fields.value) ? _this.fields.value : '', value) : value;\n element = _this.getElementByValue(checkValue);\n if (element) {\n _this.addListSelection(element);\n }\n }\n }\n }\n if (_this.allowResize) {\n _this.setResize();\n }\n _this.preventSetCurrentData = true;\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n if (!isNullOrUndefined(this.value) && this.value.length > 0) {\n // eslint-disable-next-line\n this.value = this.value.slice();\n }\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\n this.searchWrapper = this.createElement('span', {\n className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ?\n BOX_ELEMENT : '')\n });\n this.viewWrapper = this.createElement('span', {\n className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;'\n });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS$1, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER$1,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n if (!this.inputElement.hasAttribute('aria-label')) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) &&\n closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering, this.mode === 'CheckBox');\n }\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ?\n this.viewPortInfo.endIndex : this.itemCount;\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] &&\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.setResize = function () {\n var resizePaddingBottom = 16;\n if (this.list && this.list.parentElement && isNullOrUndefined(this.list.parentElement.querySelector('.e-resizer-right.e-icons'))) {\n this.resizer = this.createElement('div', {\n id: this.element.id + '_resize-popup',\n className: RESIZE_ICON\n });\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && this.selectAllHeight && this.selectAllHeight !== 0) {\n this.storedSelectAllHeight = this.selectAllHeight;\n }\n if (this.list && this.list.parentElement) {\n this.list.parentElement.classList.add('e-resize');\n if (this.popupHeight.toString().toLowerCase() !== 'auto') {\n this.list.parentElement.style.height = '100%';\n }\n this.list.parentElement.style.boxSizing = 'border-box'; // Ensures padding doesn't affect element size\n var paddingBottom = this.mode === 'CheckBox' && this.searchBoxHeight ? this.searchBoxHeight + resizePaddingBottom + (this.showSelectAll ? this.storedSelectAllHeight : 0) : resizePaddingBottom;\n this.list.parentElement.style.paddingBottom = paddingBottom + \"px\";\n this.list.parentElement.appendChild(this.resizer);\n this.list.parentElement.style.width = this.resizeWidth + 'px';\n this.list.parentElement.style.height = this.resizeHeight + 'px';\n this.list.parentElement.style.maxHeight = this.resizeHeight + 'px';\n this.list.style.maxHeight = this.resizeHeight + \"px\";\n }\n if (this.resizer) {\n EventHandler.add(this.resizer, 'mousedown', this.startResizing, this);\n EventHandler.add(this.resizer, 'touchstart', this.startResizing, this);\n }\n };\n MultiSelect.prototype.startResizing = function (event) {\n this.isResizing = true;\n this.trigger('resizeStart', event);\n // Get initial touch or mouse coordinates\n var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;\n var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;\n if (this.list && this.list.parentElement) {\n this.originalWidth = this.list.parentElement.offsetWidth;\n this.originalHeight = this.list.parentElement.offsetHeight;\n this.originalMouseX = clientX;\n this.originalMouseY = clientY;\n }\n this.resizingWireEvent();\n // Prevent default behavior like text selection\n if (event) {\n event.preventDefault();\n }\n };\n MultiSelect.prototype.resizePopup = function (event) {\n if (!this.isResizing) {\n return;\n }\n this.trigger('resizing', event);\n // Get the current touch or mouse position\n var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;\n var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;\n // Calculate the new width and height based on drag\n var dx = clientX - this.originalMouseX;\n var dy = clientY - this.originalMouseY;\n // Set minimum width and height (100px)\n var minWidth = 100;\n var minHeight = 130;\n // Ensure the new width and height are not smaller than the minimum\n this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);\n this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);\n if (this.list && this.list.parentElement) {\n // Set minimum width and height (100px)\n var minWidth_1 = parseInt(window.getComputedStyle(this.list.parentElement).minWidth, 10);\n var minHeight_1 = parseInt(window.getComputedStyle(this.list.parentElement).minHeight, 10);\n minWidth_1 = minWidth_1 || 100;\n minHeight_1 = minHeight_1 || 120;\n // Ensure the new width and height are not smaller than the minimum\n this.resizeWidth = Math.max(this.originalWidth + dx, minWidth_1);\n this.resizeHeight = Math.max(this.originalHeight + dy, minHeight_1);\n this.list.parentElement.style.width = this.resizeWidth + \"px\";\n this.list.parentElement.style.height = this.resizeHeight + \"px\";\n this.list.parentElement.style.maxHeight = this.resizeHeight + \"px\";\n this.list.style.maxHeight = this.resizeHeight + \"px\";\n if (this.fixedHeaderElement && this.ulElement) {\n this.fixedHeaderElement.style.width = this.ulElement.offsetWidth + \"px\";\n }\n }\n if (event) {\n event.preventDefault();\n }\n };\n MultiSelect.prototype.stopResizing = function (event) {\n if (this.isResizing) {\n this.isResizing = false;\n this.trigger('resizeStop', event);\n this.resizingUnWireEvent();\n }\n if (event) {\n event.preventDefault();\n }\n };\n MultiSelect.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height) +\n parseInt(window.getComputedStyle(item).marginBottom, 10);\n listParent.remove();\n return listItemHeight;\n };\n /**\n * Removes disabled values from the given array.\n *\n * @param { number[] | string[] | boolean[] | object[] } value - The array to check.\n * @returns {void}\n */\n MultiSelect.prototype.removeDisabledItemsValue = function (value) {\n if (value) {\n var data = [];\n var dataIndex = 0;\n for (var index = 0; index < value.length; index++) {\n var indexValue = value[index];\n if (typeof (indexValue) === 'object') {\n indexValue = JSON.parse(JSON.stringify(indexValue))[this.fields.value];\n }\n if ((indexValue != null) && !(this.isDisabledItemByIndex(this.getIndexByValue(indexValue)))) {\n data[dataIndex++] = value[index];\n }\n }\n this.value = data.length > 0 ? data : null;\n }\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n if (this.fields.disabled) {\n this.removeDisabledItemsValue(this.value);\n }\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n var value = this.allowObjectBinding ? this.getDataByValue(opt.getAttribute('value')) : opt.getAttribute('value');\n valueCol.push(value);\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (this.fields.disabled) {\n this.text = this.text && !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItems_2;\n if (this.enableVirtualization) {\n var fields = !this.isPrimitiveData ? this.fields.value : '';\n var predicate = void 0;\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ?\n getValue((this.fields.value) ? this.fields.value : '', this.value[i]) :\n this.value[i];\n if (i === 0) {\n predicate = new Predicate(fields, 'equal', value);\n }\n else {\n predicate = predicate.or(fields, 'equal', value);\n }\n }\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query().where(predicate))\n .then(function (e) {\n if (e.result.length > 0) {\n listItems_2 = e.result;\n _this.initStatus = false;\n setTimeout(function () {\n _this.initialValueUpdate(listItems_2, true);\n _this.initialUpdate();\n }, 100);\n _this.initStatus = true;\n }\n });\n }\n else {\n listItems_2 = new DataManager(this.dataSource).executeLocal(new Query().where(predicate));\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate(listItems_2, true);\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n if (!_this.enableVirtualization || (_this.enableVirtualization && (!(_this.dataSource instanceof DataManager)))) {\n _this.initialValueUpdate(listItems_2);\n }\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.updatevirtualizationList = function () {\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n for (var _i = 0, _a = this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', value) : value;\n element = this.getElementByValue(checkValue);\n if (element) {\n this.addListSelection(element);\n }\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.viewPortInfo.startIndex);\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Method to disable specific item in the popup.\n *\n * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n * @returns {void}\n * @deprecated\n */\n MultiSelect.prototype.disableItem = function (item) {\n if (this.fields.disabled) {\n if (!this.list) {\n this.renderList();\n }\n var itemIndex = -1;\n if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n if (typeof (item) === 'string') {\n itemIndex = this.getIndexByValue(item);\n }\n else if (typeof item === 'object') {\n if (item instanceof HTMLLIElement) {\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index] === item) {\n itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n break;\n }\n }\n }\n else {\n var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n for (var index = 0; index < this.listData.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n itemIndex = this.getIndexByValue(value);\n break;\n }\n }\n }\n }\n else {\n itemIndex = item;\n }\n var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n if (isValidIndex && !(JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled])) {\n var li = this.liCollections[itemIndex];\n if (li) {\n this.disableListItem(li);\n var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n parsedData[this.fields.disabled] = true;\n this.listData[itemIndex] = parsedData;\n if (li.classList.contains(dropDownBaseClasses.focus)) {\n this.removeFocus();\n }\n if (li.classList.contains(HIDE_LIST) || li.classList.contains(dropDownBaseClasses.selected)) {\n var oldValue = this.value;\n this.removeDisabledItemsValue(this.value);\n this.updateVal(this.value, oldValue, 'value');\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.disableGroupHeader();\n }\n }\n }\n }\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 MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.hide();\n this.popupObj.destroy();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n var temp = ['readonly', 'aria-disabled', 'placeholder', 'aria-label', 'aria-expanded'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n if (this.popupWrapper && this.popupWrapper.parentElement) {\n this.popupWrapper.parentElement.remove();\n }\n while (this.searchWrapper && this.searchWrapper.firstChild) {\n this.searchWrapper.removeChild(this.searchWrapper.firstChild);\n }\n if (this.searchWrapper && this.searchWrapper.parentElement) {\n this.searchWrapper.parentElement.remove();\n }\n if (this.viewWrapper && this.viewWrapper.parentElement) {\n this.viewWrapper.parentElement.remove();\n }\n if (this.overAllClear && this.overAllClear.parentElement) {\n this.overAllClear.parentElement.remove();\n }\n if (this.delimiterWrapper && this.delimiterWrapper.parentElement) {\n this.delimiterWrapper.parentElement.remove();\n }\n // Remove the select element if it exists\n var selectElement = this.overAllWrapper.querySelector('select.e-multi-hidden');\n if (selectElement && selectElement.parentElement) {\n selectElement.parentElement.remove();\n }\n while (this.componentWrapper && this.componentWrapper.firstChild) {\n this.componentWrapper.removeChild(this.componentWrapper.firstChild);\n }\n if (this.componentWrapper && this.componentWrapper.parentElement) {\n this.componentWrapper.removeAttribute('class');\n this.componentWrapper.parentElement.remove();\n }\n while (this.popupWrapper && this.popupWrapper.firstChild) {\n this.popupWrapper.removeChild(this.popupWrapper.firstChild);\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-label', 'aria-hidden', 'tabindex', 'aria-controls',\n 'aria-describedby', 'size', 'role', 'type', 'class'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n }\n if (this.inputElement) {\n this.inputElement.remove();\n }\n this.list = null;\n this.popupObj = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.liCollections = null;\n this.popupContentElement = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n _super.prototype.destroy.call(this);\n };\n __decorate$5([\n Complex({ text: null, value: null, iconCss: null, groupBy: null, disabled: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate$5([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate$5([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate$5([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"enableVirtualization\", void 0);\n __decorate$5([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate$5([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate$5([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate$5([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate$5([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate$5([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate$5([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate$5([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"isDeviceFullScreen\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate$5([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"allowResize\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"allowObjectBinding\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate$5([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate$5([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate$5([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate$5([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate$5([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"resizeStop\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"resizing\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"resizeStart\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate$5([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\n\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME$1 = 'e-frame';\nvar CHECK$1 = 'e-check';\nvar CHECKBOXWRAP$1 = '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$1 = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @__PURE__ @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$1, 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$1);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME$1, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK$1), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className) ||\n (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$1);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME$1, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK$1), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME$1)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK$1)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK$1);\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK$1) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK$1, INDETERMINATE]);\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$1]);\n frameSpan.classList.add(INDETERMINATE);\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 && this.parent.isDeviceFullScreen) {\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 if (!this.parent.enableVirtualization || (this.parent.enableVirtualization && (isNullOrUndefined(this.parent.value)\n || (this.parent.value && this.parent.value.length === 0)))) {\n this.setReorder(e);\n }\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 var footerHeight = 0;\n var headerHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n if (this.parent.header) {\n headerHeight = this.parent.header.getBoundingClientRect().height;\n }\n if (this.parent.footer) {\n footerHeight = this.parent.footer.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 - headerHeight - footerHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight - headerHeight - footerHeight) + '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$1);\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$1);\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 if (!isNullOrUndefined(this.selectAllSpan)) {\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\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}());\n\nvar __extends$6 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * Defines the Selection settings of List Box.\n */\nvar SelectionSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$6(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$6([\n Property('Multiple')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate$6([\n Property(false)\n ], SelectionSettings.prototype, \"showCheckbox\", void 0);\n __decorate$6([\n Property(false)\n ], SelectionSettings.prototype, \"showSelectAll\", void 0);\n __decorate$6([\n Property('Left')\n ], SelectionSettings.prototype, \"checkboxPosition\", void 0);\n return SelectionSettings;\n}(ChildProperty));\n/**\n * Defines the toolbar settings of List Box.\n */\nvar ToolbarSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$6(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$6([\n Property([])\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate$6([\n Property('Right')\n ], ToolbarSettings.prototype, \"position\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$6(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 if (this.allowFiltering && this.filterInput.value !== '') {\n this.filteringAction(this.jsonData, new Query(), this.fields);\n }\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 && this.element.parentElement) {\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 beforeDragStart: 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 === null ? this.jsonData.length : index, 0, item);\n };\n ListBox.prototype.initToolbar = function () {\n var pos = this.toolbarSettings.position;\n var prevScope = this.element.getAttribute('data-value');\n this.toolbarSettings.items = isNullOrUndefined(this.toolbarSettings.items) ? [] : this.toolbarSettings.items;\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 if (this.element.parentElement) {\n this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\n }\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 if (isNullOrUndefined(filterElem)) {\n return;\n }\n filterElem.selectionStart = txtLength;\n filterElem.selectionEnd = txtLength;\n if (filterElem.value !== '') {\n filterElem.focus();\n }\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 var extendedArgs = extend(this.getDragArgs(args), { dragSelected: true }, { cancel: false });\n if (Browser.isIos) {\n this.list.style.overflow = 'hidden';\n }\n this.trigger('dragStart', extendedArgs, 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 if (dragEventArgs.cancel) {\n args.cancel = true;\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 if (scrollParent) {\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 }\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 (JSON.stringify(args.items) !== JSON.stringify(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) {\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 if (listObj.sortOrder === 'None') {\n listObj.sortedData = extend([], [], sortedData, false);\n }\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 if (this.toolbarSettings.items.length > 0) {\n this.updateToolBarState();\n }\n else if (this.tBListBox && this.tBListBox.toolbarSettings.items.length > 0) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.updateListItems = function (sourceElem, destElem) {\n destElem.innerHTML = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n destElem.append.apply(destElem, sourceElem.childNodes);\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 if (this.allowFiltering && this.filterInput && this.filterInput.value !== '' && this.toolbarSettings.items.length > 0) {\n var canDisable_1 = false;\n this.ulElement.childNodes.forEach(function (li) { if (!li.classList.contains('e-disabled')) {\n canDisable_1 = true;\n } });\n if (!canDisable_1) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var btn = wrap.querySelector('[data-value=\"moveAllTo\"]');\n btn.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 if (this.allowFiltering && this.filterInput.value !== '') {\n this.filteringAction(this.jsonData, new Query(), this.fields);\n }\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 _this = this;\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 = {};\n var dupData = [];\n extend(dupData, [], this.jsonData);\n var removeIdxes = [];\n var removeLiIdxes = [];\n for (var i = 0; i < dupData.length; i++) {\n var value = (dupData[i] instanceof Object) ? dupData[i][fields.value] :\n dupData[i].toString();\n objValue[value] = i;\n }\n for (var j = 0; j < items.length; j++) {\n dataValue = (items[j] instanceof Object) ? items[j][fields.value] :\n items[j].toString();\n if (Object.prototype.hasOwnProperty.call(objValue, dataValue)) {\n var idx = objValue[dataValue];\n liCollections.push(liElement[idx]);\n removeIdxes.push(idx);\n removeLiIdxes.push(idx);\n }\n }\n var validRemoveIdxes = removeIdxes.sort(function (a, b) { return b - a; });\n validRemoveIdxes.forEach(function (idx) {\n _this.listData.splice(idx, 1);\n _this.jsonData.splice(idx, 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 if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\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 this.toolbarAction = 'moveAllTo';\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 window.addEventListener('resize', this.resizeHandler.bind(this));\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 window.removeEventListener('resize', this.resizeHandler.bind(this));\n };\n ListBox.prototype.clickHandler = function (e) {\n var li = closest(e.target, '.' + 'e-list-item');\n if (isNullOrUndefined(li)) {\n return;\n }\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 else if (this.height.toString().indexOf('%') > 0) {\n this.ulElement.style.height = (this.ulElement.offsetHeight - this.filterParent.offsetHeight) + 'px';\n }\n this.inputString = this.filterInput.value;\n this.filterWireEvents();\n this.ulElement.style.setProperty('height', 'calc(100% - ' + (this.filterParent.offsetHeight) + 'px)', 'important');\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 var len = elems.length;\n for (var i = 0; i < len; i++) {\n var elem = elems[i];\n var value = elem.getAttribute('data-value');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var formattedValue = this.getFormattedValue(value);\n data.push(this.getDataByValue(formattedValue));\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ulChildren_1 = Array.prototype.slice.call(fListBox.ulElement.children);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItems_1 = Array.prototype.slice.call(fListBox.ulElement.querySelectorAll('.e-list-item'));\n var lData_1 = fListBox.listData;\n var sData_1 = fListBox.sortedData;\n var jData_1 = fListBox.jsonData;\n var eData_1;\n var listDataMap_1 = {};\n if (elems.length > 199) {\n for (var _i = 0, _a = fListBox.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item)) {\n var key = fListBox.getFormattedValue(getValue((fListBox.fields.value ? fListBox.fields.value : 'value'), item));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listDataMap_1[key] = item;\n }\n }\n }\n elems.forEach(function (ele) {\n if (elems.length < 200) {\n eData_1 = fListBox.getDataByElems([ele])[0];\n }\n else {\n var value_1 = ele.getAttribute('data-value');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var formattedValue = fListBox.getFormattedValue(value_1);\n eData_1 = listDataMap_1[formattedValue];\n }\n idx.push(ulChildren_1.indexOf(ele));\n dataLiIdx.push(listItems_1.indexOf(ele));\n dataIdx.push(lData_1.indexOf(eData_1));\n sortIdx.push(sData_1.indexOf(eData_1));\n jsonIdx.push(jData_1.indexOf(eData_1));\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 if (fListBox.liCollections.length === fListBox.ulElement.querySelectorAll('.e-disabled').length && this.toolbarAction) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var toolbarAction = this.toolbarAction === 'moveFrom' ? 'moveAllFrom' : 'moveAllTo';\n if (wrap) {\n var btn = wrap.querySelector('[data-value=\"' + toolbarAction + '\"]');\n btn.disabled = true;\n }\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 var tempLiColl = [];\n var tempData = [];\n var flistboxarray = [];\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 (fListBox.listData.length > 0) {\n // eslint-disable-next-line prefer-spread\n flistboxarray = Array.apply(null, { length: fListBox.ulElement.childElementCount }).map(Number.call, Number);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childNodes = fListBox.ulElement.childNodes;\n var childElementCount = fListBox.ulElement.childElementCount;\n var newFlistboxArray = [];\n for (var i = 0; i < childElementCount; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childNode = childNodes[i];\n if (childNode.classList.contains('e-disabled')) {\n tempLiColl.push(childNode);\n if (this.sortOrder != null) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tempData.push(fListBox.sortedData[i]);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tempData.push(fListBox.listData[i]);\n }\n }\n else {\n newFlistboxArray.push(i);\n }\n }\n flistboxarray = newFlistboxArray;\n moveTo(fListBox.ulElement, tListBox.ulElement, flistboxarray, index);\n fListBox.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 < flistboxarray.length; i++) {\n if (this.sortOrder != null) {\n listData.splice(index + i, 0, fListBox.sortedData[flistboxarray[i]]);\n }\n else {\n listData.splice(index + i, 0, fListBox.listData[flistboxarray[i]]);\n }\n }\n for (var i = 0; i < flistboxarray.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[flistboxarray[i]]);\n }\n var fliCollections = [];\n if (tempLiColl.length > 0) {\n fListBox.liCollections = tempLiColl;\n fliCollections = [].slice.call(fListBox.liCollections);\n }\n else {\n fliCollections = [].slice.call(fListBox.liCollections);\n fListBox.liCollections = [];\n }\n var tliCollections = [].slice.call(tListBox.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.filter(function (data) { return (data !== undefined); });\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 = tempData;\n }\n else if (fListBox.allowFiltering) {\n var disabledData_1 = [];\n if (tempLiColl.length > 0) {\n for (var i = 0; i < tempLiColl.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n disabledData_1.push(fListBox.getDataByValue(tempLiColl[i].getAttribute('data-value')));\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fListBox.listData = fListBox.listData.filter(function (obj1) {\n return !disabledData_1.some(function (obj2) { return obj1 === obj2; });\n });\n }\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 if (tempLiColl.length > 0) {\n fListBox.listData = disabledData_1;\n fListBox.sortedData = [];\n }\n else {\n fListBox.listData = fListBox.sortedData = [];\n }\n }\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(listData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n }\n else {\n tListBox.sortedData = listData;\n }\n fListBox.updateSelectedOptions();\n if (tempLiColl.length > 0) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var btn = wrap.querySelector('[data-value=\"' + this.toolbarAction + '\"]');\n btn.disabled = true;\n }\n if (fListBox.listData.length === 0 && tempLiColl.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, event: args.event, 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 && this.selectionSettings.mode === 'Multiple') {\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.preventDefActionFilter = eventArgsData_1.preventDefaultAction;\n _this.dataUpdater(dataSource, query, fields);\n _this.preventDefActionFilter = false;\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 _this.preventDefActionFilter = false;\n if (!args.cancel && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.inputString = _this.filterInput.value;\n _this.filteringAction(_this.jsonData, new Query(), _this.fields);\n if (_this.toolbarSettings.items.length > 0) {\n _this.updateToolBarState();\n }\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 isNullOrUndefined(this.targetInputElement) ? null : this.targetInputElement.value;\n };\n ListBox.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n if (this.targetElement() && this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n {\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.resizeHandler = function () {\n if (this.list && !(this.cssClass && this.cssClass.indexOf('e-horizontal-listbox') > -1)) {\n if (this.list.getElementsByClassName('e-filter-parent').length > 0 && this.allowFiltering) {\n this.ulElement.style.setProperty('height', 'calc(100% - ' + (this.filterParent.offsetHeight) + 'px)', 'important');\n }\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 (\n // eslint-disable-next-line max-len\n 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 && !li.classList.contains('e-disabled')) {\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 && !li.classList.contains('e-disabled')) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (canFocus) {\n li.focus();\n }\n }\n else {\n if (isSelect && !li.classList.contains('e-disabled')) {\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 if (isNullOrUndefined(ele)) {\n return;\n }\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 if (isNullOrUndefined(inst.ulElement)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.dataSource) && isNullOrUndefined(this.dataSource.length)) {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n if (inst.ulElement.querySelectorAll('.e-disabled').length > 0) {\n return inst.liCollections.length === inst.ulElement.querySelectorAll('.e-disabled').length;\n }\n return inst.ulElement.querySelectorAll('.' + cssClass.li).length === 0;\n }\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 if (this.ulElement.classList.contains('e-sortable')) {\n getComponent(this.ulElement, 'sortable').destroy();\n }\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 oldProp.toolbarSettings.items = isNullOrUndefined(oldProp.toolbarSettings.items) ? [] : oldProp.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$6([\n Property('')\n ], ListBox.prototype, \"cssClass\", void 0);\n __decorate$6([\n Property([])\n ], ListBox.prototype, \"value\", void 0);\n __decorate$6([\n Property('')\n ], ListBox.prototype, \"height\", void 0);\n __decorate$6([\n Property(true)\n ], ListBox.prototype, \"enabled\", void 0);\n __decorate$6([\n Property(false)\n ], ListBox.prototype, \"enablePersistence\", void 0);\n __decorate$6([\n Property(false)\n ], ListBox.prototype, \"allowDragAndDrop\", void 0);\n __decorate$6([\n Property(1000)\n ], ListBox.prototype, \"maximumSelectionLength\", void 0);\n __decorate$6([\n Property(false)\n ], ListBox.prototype, \"allowFiltering\", void 0);\n __decorate$6([\n Property('')\n ], ListBox.prototype, \"scope\", void 0);\n __decorate$6([\n Property(true)\n ], ListBox.prototype, \"ignoreCase\", void 0);\n __decorate$6([\n Property(null)\n ], ListBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate$6([\n Property('None')\n ], ListBox.prototype, \"sortOrder\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"beforeItemRender\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"filtering\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"select\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"change\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"beforeDrop\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"dragStart\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"drag\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"drop\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"dataBound\", void 0);\n __decorate$6([\n Property(null)\n ], ListBox.prototype, \"groupTemplate\", void 0);\n __decorate$6([\n Property('Request failed')\n ], ListBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate$6([\n Property(1000)\n ], ListBox.prototype, \"zIndex\", void 0);\n __decorate$6([\n Property(false)\n ], ListBox.prototype, \"ignoreAccent\", void 0);\n __decorate$6([\n Complex({}, ToolbarSettings)\n ], ListBox.prototype, \"toolbarSettings\", void 0);\n __decorate$6([\n Complex({}, SelectionSettings)\n ], ListBox.prototype, \"selectionSettings\", void 0);\n ListBox = ListBox_1 = __decorate$6([\n NotifyPropertyChanges\n ], ListBox);\n return ListBox;\n}(DropDownBase));\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\nvar __extends$7 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * The Mention component is used to list someone or something based on user input in textarea, input,\n * or any other editable element from which the user can select.\n */\nvar Mention = /** @__PURE__ @class */ (function (_super) {\n __extends$7(Mention, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {MentionModel} options - Specifies the MentionComponent model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Mention(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {MentionModel} newProp - Returns the dynamic property value of the component.\n * @param {MentionModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n Mention.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 'minLength':\n this.minLength = newProp.minLength;\n break;\n case 'suffixText':\n this.suffixText = newProp.suffixText;\n break;\n case 'allowSpaces':\n this.allowSpaces = newProp.allowSpaces;\n break;\n case 'mentionChar':\n this.mentionChar = newProp.mentionChar;\n break;\n case 'showMentionChar':\n this.showMentionChar = newProp.showMentionChar;\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n }\n }\n };\n Mention.prototype.updateCssClass = 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 this.setCssClass(newClass, [this.inputElement], oldClass);\n if (this.popupObj) {\n this.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n Mention.prototype.setCssClass = function (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 Mention.prototype.initializeData = function () {\n this.isSelected = false;\n this.isFiltered = false;\n this.beforePopupOpen = false;\n this.initRemoteRender = false;\n this.isListResetted = false;\n this.isPopupOpen = false;\n this.isCollided = false;\n this.lineBreak = false;\n this.isRTE = false;\n this.keyEventName = 'mousedown';\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.preRender = function () {\n this.initializeData();\n _super.prototype.preRender.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.render = function () {\n var isSelector = typeof this.target === 'string';\n this.inputElement = !isNullOrUndefined(this.target) ?\n this.checkAndUpdateInternalComponent(isSelector\n ? document.querySelector(this.target)\n : this.target) : this.element;\n if (this.isContentEditable(this.inputElement)) {\n this.inputElement.setAttribute('contenteditable', 'true');\n addClass([this.inputElement], ['e-mention']);\n if (isNullOrUndefined(this.target)) {\n addClass([this.inputElement], ['e-editable-element']);\n }\n }\n this.inputElement.setAttribute('role', 'textbox');\n this.inputElement.setAttribute('aria-label', 'mention');\n this.queryString = this.elementValue();\n this.wireEvent();\n };\n Mention.prototype.wireEvent = function () {\n EventHandler.add(this.inputElement, 'keyup', this.onKeyUp, this);\n this.bindCommonEvent();\n };\n Mention.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputElement, 'keyup', this.onKeyUp);\n this.unBindCommonEvent();\n };\n Mention.prototype.bindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.addEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.hideSpinner = function () {\n this.hideWaitingSpinner();\n };\n Mention.prototype.hideWaitingSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate) && !isNullOrUndefined(this.spinnerTemplateElement)) {\n detach(this.spinnerTemplateElement);\n }\n };\n Mention.prototype.checkAndUpdateInternalComponent = function (targetElement) {\n if (!this.isVue && targetElement.classList.contains('e-richtexteditor')) {\n return targetElement.querySelector('.e-content');\n }\n if (this.isVue && targetElement.nodeName === 'TEXTAREA' && targetElement.classList.contains('e-rte-hidden')) {\n var parentElement = targetElement.parentElement;\n if (parentElement && parentElement.classList.contains('e-richtexteditor')) {\n return parentElement.querySelector('.e-content');\n }\n }\n if (targetElement && targetElement.parentElement && targetElement.parentElement.classList.contains('e-rte-content')) {\n this.isRTE = true;\n this.keyEventName = 'click';\n }\n return targetElement;\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n Mention.prototype.showWaitingSpinner = function () {\n if (!isNullOrUndefined(this.popupObj)) {\n if (isNullOrUndefined(this.spinnerTemplate) && isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = this.popupObj.element;\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate)) {\n this.setSpinnerTemplate();\n }\n }\n };\n Mention.prototype.keyDownHandler = function (e) {\n var isKeyAction = true;\n switch (e.keyCode) {\n case 38:\n e.action = e.altKey ? 'hide' : 'up';\n break;\n case 40:\n e.action = e.altKey ? 'open' : 'down';\n break;\n case 33:\n e.action = 'pageUp';\n break;\n case 34:\n e.action = 'pageDown';\n break;\n case 36:\n e.action = 'home';\n break;\n case 35:\n e.action = 'end';\n break;\n case 9:\n e.action = e.shiftKey ? 'close' : 'tab';\n break;\n case 27:\n e.action = 'escape';\n break;\n case 32:\n e.action = 'space';\n break;\n case 13:\n e.action = 'enter';\n break;\n default:\n isKeyAction = false;\n break;\n }\n if (isKeyAction) {\n this.keyActionHandler(e);\n }\n };\n Mention.prototype.keyActionHandler = function (e) {\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape' && e.action !== 'space' && this.mentionChar.charCodeAt(0) === this.getLastLetter(this.getTextRange()).charCodeAt(0)) {\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n switch (e.action) {\n case 'down':\n case 'up':\n this.isUpDownKey = true;\n this.updateUpDownAction(e);\n break;\n case 'tab':\n if (this.isPopupOpen) {\n e.preventDefault();\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (li) {\n this.isSelected = true;\n this.setSelection(li, e);\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n }\n break;\n case 'enter':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (this.popupObj && this.popupObj.element.contains(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, e, false, true);\n }\n }\n break;\n case 'escape':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n break;\n }\n };\n Mention.prototype.updateUpDownAction = function (e) {\n if (this.fields.disabled && this.list && this.list.querySelectorAll('.e-list-item:not(.e-disabled)').length === 0) {\n return;\n }\n var focusEle = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (!isNullOrUndefined(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n }\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\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 var nextItem = isNullOrUndefined(this.activeIndex) ?\n this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n var itemIndex;\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index].classList.contains(dropDownBaseClasses.focus)\n || this.liCollections[index].classList.contains(dropDownBaseClasses.selected)) {\n itemIndex = index;\n break;\n }\n }\n if (itemIndex != null && this.isDisabledElement(this.liCollections[itemIndex])) {\n this.updateUpDownAction(e);\n }\n if (this.isPopupOpen) {\n e.preventDefault();\n }\n };\n Mention.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n Mention.prototype.unBindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.removeEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n Mention.prototype.onKeyUp = function (e) {\n var rangetextContent;\n if (this.isUpDownKey && this.isPopupOpen && e.keyCode === 229) {\n this.isUpDownKey = false;\n return;\n }\n this.isTyped = e.code !== 'Enter' && e.code !== 'Space' && e.code !== 'ArrowDown' && e.code !== 'ArrowUp' ? true : false;\n var isRteImage = document.activeElement.parentElement && document.activeElement.parentElement.querySelector('.e-rte-image') ? true : false;\n if (document.activeElement !== this.inputElement && !isRteImage) {\n this.inputElement.focus();\n }\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n rangetextContent = this.range.startContainer.textContent.split('');\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n var lastTwoLetters = this.mentionChar.toString() + this.mentionChar.toString();\n // eslint-disable-next-line security/detect-non-literal-regexp\n var Regex = new RegExp(this.mentionChar.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g');\n var charRegex = new RegExp('[a-zA-Z]', 'g');\n if (e.key === 'Shift' || e.keyCode === 37 || e.keyCode === 39) {\n return;\n }\n if (this.beforePopupOpen && this.isPopupOpen && lastWordRange === lastTwoLetters) {\n this.hidePopup();\n return;\n }\n if ((!currentRange || !lastWordRange) || e.code === 'Enter' || e.keyCode === 27 ||\n (lastWordRange.match(Regex) && lastWordRange.match(Regex).length > 1) ||\n (this.isContentEditable(this.inputElement) && this.range.startContainer &&\n this.range.startContainer.previousElementSibling && this.range.startContainer.previousElementSibling.tagName !== 'BR' && this.range.startContainer.textContent.split('').length > 0 &&\n (rangetextContent.length === 1 || rangetextContent[rangetextContent.length - 2].indexOf('') === -1 ||\n this.range.startContainer.nodeType === 1))) {\n if (this.isPopupOpen && this.allowSpaces && currentRange && currentRange.trim() !== '' && charRegex.test(currentRange) && currentRange.indexOf(this.mentionChar) !== -1\n && !this.isMatchedText() && (currentRange.length > 1 && currentRange.replace(/\\u00A0/g, ' ').charAt(currentRange.length - 2) !== ' ') &&\n (this.list && this.list.querySelectorAll('ul').length > 0) && e.code !== 'Enter') {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.isPopupOpen && (!this.allowSpaces || !lastWordRange) && (e.code !== 'ArrowDown' && e.code !== 'ArrowUp')) {\n this.hidePopup();\n this.lineBreak = true;\n }\n else if ((e.key === 'Backspace' || e.key === 'Delete') && this.range && this.range.startOffset !== this.range.endOffset) {\n this.range.deleteContents();\n }\n return;\n }\n if (lastWordRange.includes(this.mentionChar)) {\n this.queryString = lastWordRange.replace(this.mentionChar, '');\n }\n if (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) &&\n this.queryString !== '' && e.keyCode !== 38 && e.keyCode !== 40 && !this.lineBreak) {\n this.searchLists(e);\n if (!this.isPopupOpen && this.queryString.length >= this.minLength) {\n if (!this.isContentEditable(this.inputElement)) {\n this.showPopup();\n }\n else if (this.isContentEditable(this.inputElement) && this.range &&\n this.range.startContainer !== this.inputElement && e.keyCode !== 9) {\n this.showPopup();\n }\n }\n }\n else if (lastWordRange.indexOf(this.mentionChar) === 0 && !this.isPopupOpen && e.keyCode !== 8 && (!this.popupObj ||\n (isNullOrUndefined(this.target) && !document.body.contains(this.popupObj.element) ||\n !isNullOrUndefined(this.target) && document.body.contains(this.popupObj.element)))) {\n if (this.initRemoteRender && this.list && this.list.classList.contains('e-nodata')) {\n this.searchLists(e);\n }\n this.resetList(this.dataSource, this.fields);\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n if (!this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.queryString.length >= this.minLength) {\n this.didPopupOpenByTypingInitialChar = true;\n this.showPopup();\n if (this.initRemoteRender && this.list.querySelectorAll('li').length === 0) {\n this.showWaitingSpinner();\n }\n this.lineBreak = false;\n }\n }\n else if (this.allowSpaces && this.queryString !== '' && currentRange && currentRange.trim() !== '' && currentRange.replace('\\u00a0', ' ').lastIndexOf(' ') < currentRange.length - 1 &&\n e.keyCode !== 38 && e.keyCode !== 40 && e.keyCode !== 8 && (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) ||\n (this.liCollections && this.liCollections.length > 0))) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.queryString === '' && this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.searchLists(e);\n if (!this.isListResetted) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n this.isListResetted = false;\n };\n Mention.prototype.isMatchedText = function () {\n var isMatched = false;\n for (var i = 0; i < (this.liCollections && this.liCollections.length); i++) {\n if (this.getTextRange() &&\n this.getTextRange().substring(this.getTextRange().lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ').trim() === this.liCollections[i].getAttribute('data-value').toLowerCase()) {\n isMatched = true;\n }\n }\n return isMatched;\n };\n Mention.prototype.getCurrentRange = function () {\n this.range = this.inputElement.ownerDocument.getSelection().getRangeAt(0);\n return this.range;\n };\n Mention.prototype.searchLists = function (e) {\n var _this = this;\n this.isDataFetched = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n }\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);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.queryString,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction(_this.dataSource, null, _this.fields);\n }\n });\n };\n Mention.prototype.filterAction = function (dataSource, query, fields) {\n this.beforePopupOpen = true;\n if (this.queryString.length >= this.minLength) {\n this.resetList(dataSource, fields, query);\n this.isListResetted = true;\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.beforePopupOpen = false;\n }\n this.setDataIndex();\n this.renderReactTemplates();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isActive) {\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.inputElement.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n var isRTESlashMenuPopup = this.isRTE && this.cssClass && this.cssClass.indexOf('e-slash-menu') > -1;\n if (isRTESlashMenuPopup) {\n ulElement.id = this.inputElement.id + '_slash_menu_options';\n }\n }\n var focusItem = this.fields.disabled ? ulElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled)') : ulElement.querySelector('.' + dropDownBaseClasses.li);\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.selected);\n this.selectedLI = focusItem;\n var value = this.getFormattedValue(focusItem.getAttribute('data-value'));\n this.selectEventCallback(focusItem, this.getDataByValue(value), value, true);\n }\n if (this.beforePopupOpen && this.isPopupOpen) {\n if (!isNullOrUndefined(this.popupObj.element)) {\n this.popupObj.element.remove();\n }\n this.renderPopup();\n }\n }\n };\n Mention.prototype.setDataIndex = function () {\n for (var i = 0; this.liCollections && i < this.liCollections.length; i++) {\n this.liCollections[i].setAttribute('data-index', i.toString());\n }\n };\n Mention.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n if (_this.inputElement.tagName === _this.getNgDirective() && _this.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n itemCreated_1.apply(_this, [e]);\n };\n }\n return fields;\n };\n Mention.prototype.elementValue = function () {\n if (!this.isContentEditable(this.inputElement)) {\n return this.inputElement.value.replace(this.mentionChar, '');\n }\n else {\n return this.inputElement.textContent.replace(this.mentionChar, '');\n }\n };\n Mention.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ?\n this.elementValue() : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.text) ? this.fields.text : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 25, checked the condition\n if (this.suggestionCount !== 25) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n Mention.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 Mention.prototype.getTextRange = function () {\n var text;\n if (!this.isContentEditable(this.inputElement)) {\n var component = this.inputElement;\n if (!isNullOrUndefined(component)) {\n var startPos = component.selectionStart;\n if (component.value && startPos >= 0) {\n text = component.value.substring(0, startPos);\n }\n }\n }\n else {\n if (this.range) {\n var selectedElem = this.range.startContainer;\n if (!isNullOrUndefined(selectedElem)) {\n var workingNodeContent = selectedElem.textContent;\n var selectStartOffset = this.range.startOffset;\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n }\n return text;\n };\n Mention.prototype.getLastLetter = function (text) {\n if (isNullOrUndefined(text)) {\n return '';\n }\n var textValue = text.indexOf('\\u200B') > -1 ? text.replace(/\\u200B/g, '').replace(/\\u00A0/g, ' ') : text.replace(/\\u00A0/g, ' ');\n var words = textValue.split(/\\s+/);\n var wordCnt = words.length - 1;\n return words[wordCnt].trim();\n };\n Mention.prototype.isContentEditable = function (element) {\n return element && element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA';\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n Mention.prototype.showPopup = function () {\n this.beforePopupOpen = true;\n if (document.activeElement !== this.inputElement) {\n this.inputElement.focus();\n }\n this.queryString = this.didPopupOpenByTypingInitialChar ? this.queryString : '';\n this.didPopupOpenByTypingInitialChar = false;\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n if (!this.isTyped) {\n this.resetList(this.dataSource, this.fields);\n }\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n this.renderPopup();\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElementID });\n if (this.selectedElementID == null) {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\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 Mention.prototype.hidePopup = function (e) {\n this.removeSelection();\n this.closePopup(0, e);\n };\n Mention.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\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('closed', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && _this.popupObj) {\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n Mention.prototype.renderPopup = function () {\n var _this = this;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle_1;\n if (isNullOrUndefined(_this.target)) {\n popupEle_1 = _this.createElement('div', {\n id: _this.inputElement.id + '_popup', className: 'e-mention e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n }\n else {\n popupEle_1 = _this.element;\n if (_this.cssClass != null) {\n addClass([popupEle_1], _this.cssClass.split(' '));\n }\n }\n var isRTESlashMenuPopup = _this.isRTE && _this.cssClass && _this.cssClass.indexOf('e-slash-menu') > -1;\n if (isRTESlashMenuPopup) {\n popupEle_1.id = _this.inputElement.id + '_slash_menu_popup';\n }\n else {\n if (!isNullOrUndefined(_this.target)) {\n popupEle_1.id = _this.inputElement.id + '_popup';\n }\n }\n _this.listHeight = formatUnit(_this.popupHeight);\n if (!isNullOrUndefined(_this.list.querySelector('li')) && !_this.initRemoteRender) {\n var li = _this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n _this.selectedLI = li;\n var value = _this.getFormattedValue(li.getAttribute('data-value'));\n _this.selectEventCallback(li, _this.getDataByValue(value), value, true);\n }\n }\n append([_this.list], popupEle_1);\n if (_this.inputElement.parentElement) {\n var rteRootElement = _this.inputElement.parentElement.closest('.e-richtexteditor');\n if (rteRootElement && popupEle_1.firstElementChild && popupEle_1.firstElementChild.childElementCount > 0) {\n popupEle_1.firstElementChild.setAttribute('aria-owns', rteRootElement.id);\n addClass([popupEle_1], 'e-rte-elements');\n }\n }\n if ((!_this.popupObj || !document.body.contains(_this.popupObj.element)) ||\n !document.contains(popupEle_1) && isNullOrUndefined(_this.target)) {\n document.body.appendChild(popupEle_1);\n }\n var coordinates_1;\n popupEle_1.style.visibility = 'hidden';\n _this.setHeight(popupEle_1);\n var offsetValue = 0;\n var left = 0;\n _this.initializePopup(popupEle_1, offsetValue, left);\n _this.checkCollision(popupEle_1);\n popupEle_1.style.visibility = 'visible';\n var popupLeft_1 = popupEle_1.parentElement.offsetWidth - popupEle_1.offsetWidth;\n var popupHeight_1 = popupEle_1.offsetHeight;\n addClass([popupEle_1], ['e-mention', 'e-popup', 'e-popup-close']);\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options', 'aria-activedescendant': _this.selectedElementID });\n if (_this.selectedElementID == null) {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n _this.trigger('opened', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.inputElement : null);\n }\n if (isNullOrUndefined(_this.getTriggerCharPosition())) {\n return;\n }\n coordinates_1 = _this.getCoordinates(_this.inputElement, _this.getTriggerCharPosition());\n if (!_this.isCollided) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(coordinates_1.left.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else {\n if (_this.collision.length > 0 && _this.collision.indexOf('right') > -1 && _this.collision.indexOf('bottom') === -1) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(popupLeft_1.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') === -1) {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString(), 10));\n }\n else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') > -1) {\n popupEle_1.style.left = formatUnit(popupLeft_1);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString(), 10));\n }\n else {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(_this.popupHeight.toString(), 10));\n }\n _this.isCollided = false;\n _this.collision = [];\n }\n popupEle_1.style.width = _this.popupWidth !== '100%' && !isNullOrUndefined(_this.popupWidth) ? formatUnit(_this.popupWidth) : 'auto';\n _this.setHeight(popupEle_1);\n popupEle_1.style.zIndex = _this.zIndex === 1000 ? getZindexPartial(popupEle_1).toString() : _this.zIndex.toString();\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n Mention.prototype.setHeight = function (popupEle) {\n if (this.popupHeight !== 'auto' && this.list) {\n this.list.style.maxHeight = (parseInt(this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n Mention.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'mention'))) {\n var coordinates = this.getCoordinates(this.inputElement, this.getTriggerCharPosition());\n this.collision = isCollide(popupEle, null, coordinates.left, coordinates.top);\n if (this.collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n this.isCollided = true;\n }\n this.popupObj.resolveCollision();\n }\n };\n Mention.prototype.getTriggerCharPosition = function () {\n var mostRecentTriggerCharPos;\n var currentRange = this.getTextRange();\n if (currentRange !== undefined && currentRange !== null) {\n mostRecentTriggerCharPos = 0;\n var idx = currentRange.lastIndexOf(this.mentionChar);\n if (idx >= mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n }\n }\n return mostRecentTriggerCharPos ? mostRecentTriggerCharPos : 0;\n };\n Mention.prototype.initializePopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputElement, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' }, actionOnScroll: 'hide',\n zIndex: this.zIndex,\n close: function () {\n _this.destroyPopup();\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n _this.setDataIndex();\n }\n });\n };\n Mention.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputElement.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n Mention.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.popupObj.destroy();\n if (isNullOrUndefined(this.target)) {\n detach(this.popupObj.element);\n }\n else {\n this.popupObj.element.innerHTML = '';\n this.popupObj.element.removeAttribute('style');\n this.popupObj.element.removeAttribute('aria-disabled');\n }\n if (this.list.classList.contains('e-nodata')) {\n this.list = null;\n }\n };\n Mention.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '#' + this.popupObj.element.id))) {\n this.hidePopup(e);\n }\n };\n Mention.prototype.getCoordinates = function (element, position) {\n var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n var div;\n var span;\n var range;\n var globalRange;\n var coordinates;\n var computed;\n var rect;\n if (!this.isContentEditable(this.inputElement)) {\n div = this.createElement('div', { className: 'e-form-mirror-div' });\n document.body.appendChild(div);\n computed = getComputedStyle(element);\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n properties.forEach(function (prop) {\n // eslint-disable-next-line security/detect-object-injection\n div.style[prop] = computed[prop];\n });\n div.textContent = element.value.substring(0, position);\n if (this.inputElement.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n span = this.createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n rect = element.getBoundingClientRect();\n }\n else {\n var selectedNodePosition = this.getTriggerCharPosition();\n globalRange = this.range;\n range = document.createRange();\n if (this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, selectedNodePosition);\n range.setEnd(globalRange.startContainer, selectedNodePosition);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n this.isTyped = false;\n range.collapse(false);\n rect = range.getBoundingClientRect().top === 0 ? range.startContainer.getClientRects()[0] :\n range.getBoundingClientRect();\n }\n var rectTop = rect.top;\n var rectLeft = rect.left;\n var iframes = document.querySelectorAll('iframe');\n if (iframes.length > 0) {\n for (var i = 0; i < iframes.length; i++) {\n // eslint-disable-next-line security/detect-object-injection\n var iframe = iframes[i];\n if (iframe.contentDocument && iframe.contentDocument.contains(element)) {\n var iframeRect = iframe.getBoundingClientRect();\n rectTop += iframeRect.top;\n rectLeft += iframeRect.left;\n }\n }\n }\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var width = 0;\n if (!isNullOrUndefined(range) && range.getBoundingClientRect().top === 0) {\n for (var i = 0; i < this.range.startContainer.childNodes.length; i++) {\n if (this.range.startContainer.childNodes[i].nodeType !== Node.TEXT_NODE && this.range.startContainer.childNodes[i].textContent.trim() !== '') {\n width += this.range.startContainer.childNodes[i].getClientRects()[0].width;\n }\n else if (this.range.startContainer.childNodes[i].textContent !== '') {\n var span_1 = document.createElement('span');\n span_1.innerHTML = this.range.startContainer.childNodes[i].nodeValue;\n document.body.appendChild(span_1);\n var textNodeWidth = span_1.offsetWidth;\n document.body.removeChild(span_1);\n width += textNodeWidth;\n }\n }\n }\n if (!this.isContentEditable(this.inputElement)) {\n coordinates = {\n top: rectTop + windowTop + span.offsetTop + parseInt(computed.borderTopWidth, 10) +\n parseInt(computed.fontSize, 10) + 3 - element.scrollTop -\n (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth, 10)\n };\n document.body.removeChild(div);\n }\n else {\n if (this.collision && this.collision.length > 0 && this.collision.indexOf('right') > -1 && this.collision.indexOf('bottom') === -1) {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10),\n left: rectLeft + windowLeft + width\n };\n }\n else {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10) - (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + width\n };\n }\n }\n return coordinates;\n };\n Mention.prototype.initValue = function () {\n this.isDataFetched = false;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n Mention.prototype.updateValues = function () {\n var li = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, null);\n }\n };\n Mention.prototype.renderList = function () {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n Mention.prototype.wireListEvents = function () {\n EventHandler.add(this.list, this.keyEventName, this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n Mention.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, this.keyEventName, this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n Mention.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li) || this.isDisabledElement(li)) {\n return;\n }\n this.isSelected = true;\n this.setSelection(li, e);\n var delay = 100;\n this.closePopup(delay, e);\n this.inputElement.focus();\n if (!this.isRTE) {\n e.preventDefault();\n }\n };\n Mention.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 = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!preventSelect && !isNullOrUndefined(e) && !(e.action === 'down' || e.action === 'up')) {\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 _this.isSelected = false;\n _this.isSelectCancel = true;\n }\n else {\n _this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n Mention.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n Mention.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.isPopupOpen && !isNullOrUndefined(this.selectedLI)) {\n this.setScrollPosition(e);\n }\n if (e && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n if (isNullOrUndefined(e) || this.setValue(e)) {\n return;\n }\n };\n Mention.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n Mention.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n Mention.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = !isNullOrUndefined(this.fields.groupBy) && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.selectedLI.offsetTop - (this.list.scrollTop + this.fixedHeaderElement.offsetHeight) :\n this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop;\n }\n }\n };\n Mention.prototype.selectEventCallback = function (li, selectedData, value, selectLi) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\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 if (selectLi) {\n addClass([li], dropDownBaseClasses.selected);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n Mention.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 Mention.prototype.setValue = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate();\n }\n this.updateMentionValue(e);\n return true;\n }\n else {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate(e);\n }\n else {\n this.updateMentionValue(e);\n }\n return true;\n }\n };\n Mention.prototype.updateMentionValue = function (e) {\n var dataItem = this.getItemData();\n var textSuffix = typeof this.suffixText === 'string' ? this.suffixText : '';\n var value;\n var endPos;\n var range;\n var globalRange;\n var selection = this.inputElement.ownerDocument.getSelection();\n var startPos = this.getTriggerCharPosition();\n if (this.isSelectCancel) {\n this.isSelectCancel = false;\n return;\n }\n if (dataItem.text !== null) {\n value = this.mentionVal(dataItem.text);\n }\n if (!this.isContentEditable(this.inputElement)) {\n var myField = this.inputElement;\n var currentTriggerSnippet = this.getTextRange().substring(startPos + this.mentionChar.length, this.getTextRange().length);\n value += textSuffix;\n endPos = startPos + this.mentionChar.length;\n endPos += currentTriggerSnippet.length;\n myField.value = myField.value.substring(0, startPos) + value + myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + value.length;\n myField.selectionEnd = startPos + value.length;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.onChangeEvent(e);\n }\n else {\n endPos = this.getTriggerCharPosition() + this.mentionChar.length;\n if (this.range && (this.range.startContainer.textContent.trim() !== this.mentionChar)) {\n endPos = this.range.endOffset;\n }\n globalRange = this.range;\n range = document.createRange();\n if (((this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) || this.getTextRange() &&\n this.getTextRange().trim() === this.mentionChar)) {\n range.setStart(globalRange.startContainer, startPos);\n range.setEnd(globalRange.startContainer, endPos);\n }\n else {\n if (globalRange.commonAncestorContainer.textContent.trim() !== '' && !isNullOrUndefined(globalRange.commonAncestorContainer.textContent.trim()) && this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, globalRange.startOffset - 1);\n range.setEnd(globalRange.startContainer, globalRange.endOffset - 1);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n }\n this.isTyped = false;\n range.deleteContents();\n range.startContainer.parentElement.normalize();\n var element = this.createElement('div');\n element.innerHTML = value;\n var frag = document.createDocumentFragment();\n var node = void 0;\n var lastNode = void 0;\n // eslint-disable-next-line no-cond-assign\n while (node = element.firstChild) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n if (lastNode) {\n range = range.cloneRange();\n if (this.isRTE) {\n range.setStart(lastNode, 0);\n range.setEnd(lastNode, lastNode.textContent.length);\n }\n else {\n range.setStartAfter(lastNode);\n }\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n //New event to update the RichTextEditor value, when a mention item is selected using mouse click action.\n if (!isNullOrUndefined(e.pointerType) && e.pointerType === 'mouse') {\n var event_1 = new CustomEvent('content-changed', { detail: { click: true } });\n this.inputElement.dispatchEvent(event_1);\n }\n this.onChangeEvent(e);\n }\n };\n Mention.prototype.mentionVal = function (value) {\n var showChar = this.showMentionChar ? this.mentionChar : '';\n if (!isNullOrUndefined(this.displayTemplate) && !isNullOrUndefined(this.displayTempElement)) {\n value = this.displayTempElement.innerHTML;\n }\n if (this.isContentEditable(this.inputElement)) {\n if (Browser.isAndroid) {\n return '' + showChar + value + ''.concat(typeof this.suffixText === 'string' ? this.suffixText : '​');\n }\n else {\n return '' + showChar + value + ''.concat(typeof this.suffixText === 'string' ? this.suffixText : '​');\n }\n }\n else {\n return showChar + value;\n }\n };\n Mention.prototype.setDisplayTemplate = function (e) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['displayTemplate']);\n if (this.displayTempElement) {\n detach(this.displayTempElement);\n this.displayTempElement = null;\n }\n }\n if (!this.displayTempElement) {\n this.displayTempElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.displayTempElement.innerHTML = '';\n }\n var compiledString = compile(this.displayTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var displayCompTemp = compiledString(this.itemData, this, 'displayTemplate', this.displayTemplateId, this.isStringTemplate, null, this.displayTempElement);\n if (displayCompTemp && displayCompTemp.length > 0) {\n append(displayCompTemp, this.displayTempElement);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n }\n else {\n this.renderTemplates(function () {\n _this.updateMentionValue(e);\n });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Mention.prototype.renderTemplates = function (callBack) {\n this.renderReactTemplates(callBack);\n };\n Mention.prototype.setSpinnerTemplate = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['spinnerTemplate']);\n if (this.spinnerTemplateElement) {\n detach(this.spinnerTemplateElement);\n this.spinnerTemplateElement = null;\n }\n }\n if (!this.spinnerTemplateElement) {\n this.spinnerTemplateElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.spinnerTemplateElement.innerHTML = '';\n }\n var compiledString = compile(this.spinnerTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var spinnerCompTemp = compiledString(null, this, 'spinnerTemplate', this.spinnerTemplateId, this.isStringTemplate, null, this.spinnerTemplateElement);\n if (spinnerCompTemp && spinnerCompTemp.length > 0) {\n for (var i = 0; i < spinnerCompTemp.length; i++) {\n this.spinnerTemplateElement.appendChild(spinnerCompTemp[i]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n this.popupObj.element.appendChild(this.spinnerTemplateElement);\n }\n else {\n this.renderTemplates(function () {\n _this.popupObj.element.appendChild(_this.spinnerTemplateElement);\n });\n }\n };\n Mention.prototype.onChangeEvent = function (eve) {\n this.isSelected = false;\n var items = this.detachMentionChanges(this.itemData);\n var preItems;\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 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.item.innerHTML,\n element: this.inputElement\n };\n this.trigger('change', eventArgs);\n };\n Mention.prototype.detachMentionChanges = 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 Mention.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 Mention.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 Mention.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n Mention.prototype.setHover = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n Mention.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 Mention.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n Mention.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n */\n Mention.prototype.search = function (text, positionX, positionY) {\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n if ((this.ignoreCase && (text === lastWordRange || text === lastWordRange.toLowerCase()))\n || !this.ignoreCase && text === lastWordRange) {\n this.resetList(this.dataSource, this.fields);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n return;\n }\n if (isNullOrUndefined(this.list)) {\n this.renderList();\n this.renderPopup();\n }\n else {\n this.showPopup();\n }\n this.popupObj.element.style.left = formatUnit(positionX);\n this.popupObj.element.style.top = formatUnit(positionY);\n };\n /**\n * Method to disable specific item in the popup.\n *\n * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n * @returns {void}\n * @deprecated\n */\n Mention.prototype.disableItem = function (item) {\n if (this.fields.disabled) {\n if (!this.list) {\n this.renderList();\n }\n var itemIndex = -1;\n if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n if (typeof (item) === 'string') {\n itemIndex = this.getIndexByValue(item);\n }\n else if (typeof item === 'object') {\n if (item instanceof HTMLLIElement) {\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index] === item) {\n itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n break;\n }\n }\n }\n else {\n var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n for (var index = 0; index < this.listData.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n itemIndex = this.getIndexByValue(value);\n break;\n }\n }\n }\n }\n else {\n itemIndex = item;\n }\n var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n if (isValidIndex && !(JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled])) {\n var li = this.liCollections[itemIndex];\n if (li) {\n this.disableListItem(li);\n var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n parsedData[this.fields.disabled] = true;\n this.listData[itemIndex] = parsedData;\n this.dataSource = this.listData;\n }\n }\n }\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 Mention.prototype.destroy = function () {\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.inputElement && !this.inputElement.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n this.previousSelectedLI = null;\n this.item = null;\n this.selectedLI = null;\n this.popupObj = null;\n _super.prototype.destroy.call(this);\n };\n Mention.prototype.getLocaleName = function () {\n return 'mention';\n };\n Mention.prototype.getNgDirective = function () {\n return 'EJS-MENTION';\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 Mention.prototype.getModuleName = function () {\n return 'mention';\n };\n __decorate$7([\n Property(null)\n ], Mention.prototype, \"cssClass\", void 0);\n __decorate$7([\n Property('@')\n ], Mention.prototype, \"mentionChar\", void 0);\n __decorate$7([\n Property(false)\n ], Mention.prototype, \"showMentionChar\", void 0);\n __decorate$7([\n Property(false)\n ], Mention.prototype, \"allowSpaces\", void 0);\n __decorate$7([\n Property(null)\n ], Mention.prototype, \"suffixText\", void 0);\n __decorate$7([\n Property(25)\n ], Mention.prototype, \"suggestionCount\", void 0);\n __decorate$7([\n Property(0)\n ], Mention.prototype, \"minLength\", void 0);\n __decorate$7([\n Property('None')\n ], Mention.prototype, \"sortOrder\", void 0);\n __decorate$7([\n Property(true)\n ], Mention.prototype, \"ignoreCase\", void 0);\n __decorate$7([\n Property(false)\n ], Mention.prototype, \"highlight\", void 0);\n __decorate$7([\n Property()\n ], Mention.prototype, \"locale\", void 0);\n __decorate$7([\n Property('auto')\n ], Mention.prototype, \"popupWidth\", void 0);\n __decorate$7([\n Property('300px')\n ], Mention.prototype, \"popupHeight\", void 0);\n __decorate$7([\n Property(null)\n ], Mention.prototype, \"displayTemplate\", void 0);\n __decorate$7([\n Property(null)\n ], Mention.prototype, \"itemTemplate\", void 0);\n __decorate$7([\n Property('No records found')\n ], Mention.prototype, \"noRecordsTemplate\", void 0);\n __decorate$7([\n Property(null)\n ], Mention.prototype, \"spinnerTemplate\", void 0);\n __decorate$7([\n Property()\n ], Mention.prototype, \"target\", void 0);\n __decorate$7([\n Property([])\n ], Mention.prototype, \"dataSource\", void 0);\n __decorate$7([\n Property(null)\n ], Mention.prototype, \"query\", void 0);\n __decorate$7([\n Property('Contains')\n ], Mention.prototype, \"filterType\", void 0);\n __decorate$7([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], Mention.prototype, \"fields\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"actionBegin\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"actionComplete\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"actionFailure\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"change\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"beforeOpen\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"opened\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"closed\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"select\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"filtering\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"created\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"destroyed\", void 0);\n Mention = __decorate$7([\n NotifyPropertyChanges\n ], Mention);\n return Mention;\n}(DropDownBase));\n\nexport { AutoComplete, CheckBoxSelection, ComboBox, DropDownBase, DropDownList, DropDownTree, FieldSettings, Fields, ListBox, Mention, MultiSelect, Search, SelectionSettings, ToolbarSettings, TreeSettings, VirtualScroll, createFloatLabel, dropDownBaseClasses, dropDownListClasses, encodePlaceholder, escapeCharRegExp, floatLabelBlur, floatLabelFocus, highlightSearch, incrementalSearch, removeFloating, resetIncrementalSearchValues, revertHighlightSearch, setPlaceHolder, updateFloatLabelState };\n","import { Internationalization, isNullOrUndefined, Browser, attributes, closest, addClass, removeClass, rippleEffect, EventHandler, getValue, getDefaultDateObject, cldrData, detach, L10n, extend, KeyboardEvents, getUniqueID, Property, Event, NotifyPropertyChanges, Component, throwError, HijriParser, Touch, formatUnit, Animation, setValue, ChildProperty, merge, isUndefined, createElement, select, remove, prepend, Collection, append, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ListBase } from '@syncfusion/ej2-lists';\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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//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 = /** @__PURE__ @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.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n var tabIndexAttr = { 'tabindex': '0' };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n attributes(this.previousIcon, tabIndexAttr);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n attributes(this.nextIcon, tabIndexAttr);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n attributes(this.headerTitleElement, tabIndexAttr);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { 'class': CONTENTTABLE, 'tabIndex': '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n if (this.getModuleName() !== 'daterangepicker') {\n EventHandler.add(this.table, 'focus', this.addContentFocus, this);\n EventHandler.add(this.table, 'blur', this.removeContentFocus, this);\n }\n };\n CalendarBase.prototype.addContentFocus = function (args) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.add(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.add(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.removeContentFocus = function (args) {\n var focusedDate = !isNullOrUndefined(this.tableBodyElement) ? this.tableBodyElement.querySelector('tr td.e-focused-date') : null;\n var selectedDate = !isNullOrUndefined(this.tableBodyElement) ? this.tableBodyElement.querySelector('tr td.e-selected') : null;\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.remove(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.remove(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = !isNullOrUndefined(this.dayHeaderFormat) ? 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase() : null;\n if ((this.locale === 'en' || this.locale === 'en-US') && !isNullOrUndefined(dayFormat)) {\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 var shortNames = this.getCultureValues().length > 0 &&\n this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 &&\n 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 if (this.calendarElement === null && e.action === 'escape') {\n return;\n }\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)) {\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)) {\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)) {\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)) {\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 && !e.target.className.includes(DISABLED)) {\n this.navigatePrevious(e);\n }\n else if (e.target === this.nextIcon && !e.target.className.includes(DISABLED)) {\n this.navigateNext(e);\n }\n else if (e.target === this.todayElement && !e.target.className.includes(DISABLED)) {\n this.todayButtonClick(e, value);\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n if (this.isAngular) {\n this.inputElement.focus();\n }\n else {\n this.element.focus();\n }\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 if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n if (this.isAngular) {\n this.inputElement.focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (!e.target.className.includes(DISABLED)) {\n this.contentClick(null, --view, (element), value);\n }\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 if (this.isAngular) {\n this.inputElement.focus();\n }\n else {\n this.element.focus();\n }\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 if (this.isAngular) {\n this.inputElement.focus();\n }\n else {\n this.element.focus();\n }\n this.hide();\n }\n break;\n case 'escape':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && (e.target === this.headerTitleElement || e.target === this.previousIcon || e.target === this.nextIcon || e.target === this.todayElement)) {\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 = !isNullOrUndefined(this.islamicModule) ? this.islamicModule.islamicRenderDays(this.currentDate, value) : null;\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else if (!isNullOrUndefined(this.islamicModule)) {\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 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 + '):not(.' + WEEKNUMBER + ')') :\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 + '):not(.' + WEEKNUMBER + ')');\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 * @deprecated\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 };\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 };\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 };\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 = !isNullOrUndefined(this.dayHeaderFormat) ? '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase() : null;\n var islamicFormat = !isNullOrUndefined(this.dayHeaderFormat) ? '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase() : null;\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 && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDCELL))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDCELL)], FOCUSEDCELL);\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));\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 = /** @__PURE__ @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 * @deprecated\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 * @deprecated\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 * @deprecated\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 * @deprecated\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 * @deprecated\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\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));\n\n/**\n *\n */\n//class constant defination.\nvar OTHERMONTH$1 = 'e-other-month';\nvar YEAR$1 = 'e-year';\nvar MONTH$1 = 'e-month';\nvar DECADE$1 = 'e-decade';\nvar DISABLED$1 = 'e-disabled';\nvar OVERLAY$1 = 'e-overlay';\nvar WEEKEND$1 = 'e-weekend';\nvar WEEKNUMBER$1 = 'e-week-number';\nvar SELECTED$1 = 'e-selected';\nvar FOCUSEDDATE$1 = 'e-focused-date';\nvar OTHERMONTHROW$1 = 'e-month-hide';\nvar TODAY$1 = 'e-today';\nvar LINK$1 = 'e-day';\nvar CELL$1 = 'e-cell';\nvar dayMilliSeconds$1 = 86400000;\nvar minDecade = 2060;\nvar maxDecade = 2069;\nvar Islamic = /** @__PURE__ @class */ (function () {\n function Islamic(instance) {\n this.calendarInstance = instance;\n }\n Islamic.prototype.getModuleName = function () {\n return 'islamic';\n };\n Islamic.prototype.islamicTitleUpdate = function (date, view) {\n var globalize = new Internationalization(this.calendarInstance.locale);\n switch (view) {\n case 'days':\n this.calendarInstance.headerTitleElement.textContent = globalize.formatDate(date, { type: 'dateTime', format: 'MMMMyyyy', calendar: 'islamic' });\n break;\n case 'months':\n this.calendarInstance.headerTitleElement.textContent = globalize.formatDate(date, { type: 'dateTime', format: 'yyyy', calendar: 'islamic' });\n }\n };\n Islamic.prototype.islamicRenderDays = function (currentDate, value, multiSelection, values) {\n var tdEles = [];\n var cellsCount = 42;\n var localDate = new Date(this.islamicInValue(currentDate));\n var minMaxDate;\n this.islamicTitleUpdate(currentDate, 'days');\n var islamicDate = this.getIslamicDate(localDate);\n var gregorianObject = this.toGregorian(islamicDate.year, islamicDate.month, 1);\n var currentMonth = islamicDate.month;\n localDate = gregorianObject;\n while (localDate.getDay() !== this.calendarInstance.firstDayOfWeek) {\n this.calendarInstance.setStartDate(localDate, -1 * dayMilliSeconds$1);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.calendarInstance.createElement('td', { className: CELL$1 });\n var weekAnchor = this.calendarInstance.createElement('span');\n if (day % 7 === 0 && this.calendarInstance.weekNumber) {\n weekAnchor.textContent = '' + this.calendarInstance.getWeek(localDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER$1);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.calendarInstance.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: 'islamic' };\n var date = this.calendarInstance.globalize.parseDate(this.calendarInstance.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.islamicDayCell(localDate);\n var title = this.calendarInstance.globalize.formatDate(localDate, { type: 'date', skeleton: 'full', calendar: 'islamic' });\n var dayLink = this.calendarInstance.createElement('span');\n dayLink.textContent = this.calendarInstance.globalize.formatDate(localDate, { type: 'date', skeleton: 'd', calendar: 'islamic' });\n var disabled = (this.calendarInstance.min > localDate) || (this.calendarInstance.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED$1);\n addClass([tdEle], OVERLAY$1);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n var hijriMonthObject = this.getIslamicDate(localDate);\n if (currentMonth !== hijriMonthObject.month) {\n addClass([tdEle], OTHERMONTH$1);\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND$1);\n }\n tdEle.appendChild(dayLink);\n this.calendarInstance.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.calendarInstance.renderDayCellArgs;\n this.calendarInstance.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n if (this.calendarInstance.isMultiSelection) {\n if (!isNullOrUndefined(this.calendarInstance.values) && this.calendarInstance.values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.calendarInstance.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd', calendar: 'islamic' }));\n var tempDateString = +new Date(this.calendarInstance.globalize.formatDate(this.calendarInstance.values[index], { type: 'date', skeleton: 'yMd', calendar: 'islamic' }));\n if (localDateString === tempDateString) {\n this.calendarInstance.values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (value && +value === +argument.date) {\n this.calendarInstance.setProperties({ value: null }, true);\n }\n }\n if (this.calendarInstance.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED$1)) {\n addClass([tdEle], DISABLED$1);\n addClass([tdEle], OVERLAY$1);\n if (+this.calendarInstance.renderDayCellArgs.date === +this.calendarInstance.todayDate) {\n this.calendarInstance.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH$1);\n var disabledCls = tdEle.classList.contains(DISABLED$1);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.calendarInstance.clickHandler, this.calendarInstance);\n }\n if (this.calendarInstance.isMultiSelection && !isNullOrUndefined(this.calendarInstance.values) &&\n !otherMnthBool && !disabledCls) {\n for (var tempValue = 0; tempValue < this.calendarInstance.values.length; tempValue++) {\n var localDateString = this.calendarInstance.globalize.formatDate(localDate, { type: 'date', skeleton: 'short', calendar: 'islamic' });\n var tempDateString = this.calendarInstance.globalize.formatDate(this.calendarInstance.values[tempValue], { type: 'date', skeleton: 'short', calendar: 'islamic' });\n if (localDateString === tempDateString &&\n this.calendarInstance.getDateVal(localDate, this.calendarInstance.values[tempValue])) {\n addClass([tdEle], SELECTED$1);\n }\n else {\n this.calendarInstance.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (this.calendarInstance.values.length <= 0) {\n this.calendarInstance.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!otherMnthBool && !disabledCls && this.calendarInstance.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED$1);\n }\n else {\n this.calendarInstance.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n if (date.getDate() === new Date().getDate() && date.getMonth() === new Date().getMonth()) {\n if (date.getFullYear() === new Date().getFullYear()) {\n addClass([tdEle], TODAY$1);\n }\n }\n localDate = new Date(+minMaxDate);\n tdEles.push(this.calendarInstance.renderDayCellArgs.element);\n this.calendarInstance.addDay(localDate, 1, null, this.calendarInstance.max, this.calendarInstance.min);\n }\n return tdEles;\n };\n Islamic.prototype.islamicIconHandler = function () {\n new Date(this.islamicInValue(this.calendarInstance.currentDate)).setDate(1);\n var date = new Date(this.islamicInValue(this.calendarInstance.currentDate));\n switch (this.calendarInstance.currentView()) {\n case 'Month':\n {\n var prevMonthCompare = this.islamicCompareMonth(date, this.calendarInstance.min) < 1;\n var nextMonthCompare = this.islamicCompareMonth(date, this.calendarInstance.max) > -1;\n this.calendarInstance.previousIconHandler(prevMonthCompare);\n this.calendarInstance.nextIconHandler(nextMonthCompare);\n }\n break;\n case 'Year':\n {\n var prevYearCompare = this.hijriCompareYear(date, this.calendarInstance.min) < 1;\n var nextYearCompare = this.hijriCompareYear(date, this.calendarInstance.max) > -1;\n this.calendarInstance.previousIconHandler(prevYearCompare);\n this.calendarInstance.nextIconHandler(nextYearCompare);\n }\n break;\n case 'Decade': {\n var startIslamicYear = 1361;\n var gregorianValue = HijriParser.toGregorian(startIslamicYear, 1, 1);\n var prevDecadeCompare = this.hijriCompareDecade(date, this.calendarInstance.min) < 1;\n var nextDecadeCompare = this.hijriCompareDecade(date, this.calendarInstance.max) > -1;\n prevDecadeCompare = HijriParser.toGregorian(this.calendarInstance.headerTitleElement.textContent.split('-')[0].trim(), 1, 1).getFullYear() === gregorianValue.getFullYear() ? true : prevDecadeCompare;\n this.calendarInstance.previousIconHandler(prevDecadeCompare);\n this.calendarInstance.nextIconHandler(nextDecadeCompare);\n }\n }\n };\n Islamic.prototype.islamicNext = function () {\n this.calendarInstance.effect = '';\n var view = this.calendarInstance.getViewNumber(this.calendarInstance.currentView());\n var islamicDate = this.getIslamicDate(this.calendarInstance.currentDate);\n switch (this.calendarInstance.currentView()) {\n case 'Year':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year + 1, islamicDate.month, 1);\n this.calendarInstance.switchView(view);\n break;\n case 'Month':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year, islamicDate.month + 1, 1);\n this.calendarInstance.switchView(view);\n break;\n case 'Decade':\n this.calendarInstance.nextIconClicked = true;\n if (islamicDate.year - this.calendarInstance.headerElement.textContent.split('-')[0].trim() === 1) {\n islamicDate.year = islamicDate.year - this.calendarInstance.headerElement.textContent.split('-')[0].trim() === 1 ? islamicDate.year + 1 : islamicDate.year;\n }\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year + 10, islamicDate.month, 1);\n this.calendarInstance.switchView(view);\n break;\n }\n };\n Islamic.prototype.islamicPrevious = function () {\n var currentView = this.calendarInstance.getViewNumber(this.calendarInstance.currentView());\n this.calendarInstance.effect = '';\n var islamicDate = this.getIslamicDate(this.calendarInstance.currentDate);\n switch (this.calendarInstance.currentView()) {\n case 'Month':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year, islamicDate.month - 1, 1);\n this.calendarInstance.switchView(currentView);\n break;\n case 'Year':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year - 1, islamicDate.month, 1);\n this.calendarInstance.switchView(currentView);\n break;\n case 'Decade':\n this.calendarInstance.previousIconClicked = true;\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year - 10, islamicDate.month - 1, 1);\n this.calendarInstance.switchView(currentView);\n break;\n }\n };\n Islamic.prototype.islamicRenderYears = function (e, value) {\n this.calendarInstance.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.islamicInValue(this.calendarInstance.currentDate));\n var localDate = curDate;\n var islamicDate = this.getIslamicDate(localDate);\n var gregorianObject = HijriParser.toGregorian(islamicDate.year, 1, 1);\n localDate = gregorianObject;\n var mon = islamicDate.month;\n var yr = islamicDate.year;\n var curYrs = islamicDate.year;\n var minYr = (this.getIslamicDate(this.calendarInstance.min)).year;\n var minMonth = (this.getIslamicDate(this.calendarInstance.min)).month;\n var maxYr = (this.getIslamicDate(this.calendarInstance.max)).year;\n var maxMonth = (this.getIslamicDate(this.calendarInstance.max)).month;\n this.islamicTitleUpdate(this.calendarInstance.currentDate, 'months');\n for (var month = 1; month <= 12; ++month) {\n var islamicDate_1 = this.getIslamicDate(localDate);\n var gregorianObject_1 = HijriParser.toGregorian(islamicDate_1.year, month, 1);\n localDate = gregorianObject_1;\n var tdEle = this.islamicDayCell(localDate);\n var dayLink = this.calendarInstance.createElement('span');\n var localMonth = (value &&\n (this.getIslamicDate(value)).month === (this.getIslamicDate(localDate)).month);\n var select = (value && (this.getIslamicDate(value)).year === yr && localMonth);\n dayLink.textContent = this.calendarInstance.globalize.formatDate(localDate, { type: 'dateTime', format: 'MMM', calendar: 'islamic' });\n if ((this.calendarInstance.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.calendarInstance.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED$1);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED$1);\n }\n else {\n if ((this.getIslamicDate(localDate)).month === mon &&\n (this.getIslamicDate(this.calendarInstance.currentDate)).month === mon) {\n addClass([tdEle], FOCUSEDDATE$1);\n }\n }\n if (!tdEle.classList.contains(DISABLED$1)) {\n EventHandler.add(tdEle, 'click', this.calendarInstance.clickHandler, this.calendarInstance);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.islamicRenderTemplate(tdEles, numCells, YEAR$1, e, value);\n };\n Islamic.prototype.islamicRenderDecade = function (e, value) {\n this.calendarInstance.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.islamicInValue(this.calendarInstance.currentDate));\n var islamicDate = this.getIslamicDate(localDate);\n var gregorianObject = HijriParser.toGregorian(islamicDate.year, 1, 1);\n localDate = gregorianObject;\n var localYr = localDate.getFullYear();\n var startYr = new Date(this.islamicInValue((localYr - localYr % 10)));\n var endYr = new Date(this.islamicInValue((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.calendarInstance.globalize.formatDate(startYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });\n var endHdrYr = this.calendarInstance.globalize.formatDate(endYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });\n if (this.calendarInstance.locale === 'ar') {\n startHdrYr = Number(startHdrYr.replace(/[٠١٢٣٤٥٦٧٨٩]/g, function (d) { return String.fromCharCode(d.charCodeAt(0) - 1632 + 48); }));\n endHdrYr = Number(endHdrYr.replace(/[٠١٢٣٤٥٦٧٨٩]/g, function (d) { return String.fromCharCode(d.charCodeAt(0) - 1632 + 48); }));\n }\n var splityear = this.calendarInstance.headerElement.textContent.split('-');\n if ((!isNullOrUndefined(e) && (splityear[0] !== startHdrYr) && e.action === 'home') ||\n (!isNullOrUndefined(e) && e.type === 'keydown' && e.action === 'end')) {\n startHdrYr = this.calendarInstance.headerElement.textContent.split('-')[0].trim();\n endHdrYr = this.calendarInstance.headerElement.textContent.split('-')[1].trim();\n }\n if (this.calendarInstance.islamicPreviousHeader) {\n startHdrYr = this.calendarInstance.islamicPreviousHeader.split('-')[0].trim();\n endHdrYr = this.calendarInstance.islamicPreviousHeader.split('-')[1].trim();\n this.calendarInstance.islamicPreviousHeader = null;\n }\n if (this.calendarInstance.previousIconClicked) {\n var i = 0;\n for (i = 0; i <= splityear.length; i++) {\n endHdrYr = endHdrYr - splityear[i] === 2 || splityear[i]\n - endHdrYr === 2 ? (parseInt(endHdrYr, 10) + 1).toString() :\n endHdrYr - splityear[i] === 3 || splityear[i] - endHdrYr === 3 ?\n (parseInt(endHdrYr, 10) + 2).toString() : endHdrYr - splityear[i] === 4 ||\n splityear[i] - endHdrYr === 4 ? (parseInt(endHdrYr, 10) + 3).toString() :\n endHdrYr - splityear[i] === 5 || splityear[i] - endHdrYr === 5 ?\n (parseInt(endHdrYr, 10) + 4).toString() : endHdrYr;\n if (endHdrYr - splityear[i] === 0 || splityear[i] - endHdrYr === 0) {\n endHdrYr = (parseInt(endHdrYr, 10) - 1).toString();\n }\n }\n if (endHdrYr - splityear[i] === 8 || splityear[i] - endHdrYr === 8) {\n endHdrYr = (parseInt(endHdrYr, 10) - 9).toString();\n startHdrYr = (parseInt(endHdrYr, 10) - 9).toString();\n }\n if (endHdrYr - splityear[i] === 7 || splityear[i] - endHdrYr === 7) {\n endHdrYr = (parseInt(endHdrYr, 10) - 8).toString();\n startHdrYr = (parseInt(endHdrYr, 10) - 9).toString();\n }\n startHdrYr = endHdrYr - startHdrYr === 10\n ? (parseInt(startHdrYr, 10) + 1).toString() : endHdrYr - startHdrYr === 11\n ? (parseInt(startHdrYr, 10) + 2).toString() : endHdrYr - startHdrYr === 12\n ? (parseInt(startHdrYr, 10) + 3).toString() : startHdrYr;\n if (endHdrYr - startHdrYr === 8) {\n startHdrYr = (parseInt(startHdrYr, 10) - 1).toString();\n }\n }\n if (this.calendarInstance.nextIconClicked) {\n for (var i = 0; i <= splityear.length; i++) {\n if (startHdrYr - splityear[i] === 0 || splityear[i] - startHdrYr === 0) {\n startHdrYr = (parseInt(startHdrYr, 10) + 1).toString();\n }\n if (startHdrYr - splityear[i] === 2 && startHdrYr > splityear[i].trim()) {\n startHdrYr = (parseInt(startHdrYr, 10) - 1).toString();\n }\n if (splityear[i] - startHdrYr === 1 && startHdrYr < splityear[i].trim()) {\n startHdrYr = (parseInt(startHdrYr, 10) + 2).toString();\n }\n }\n if (startHdrYr - this.calendarInstance.headerTitleElement.textContent.split('-')[1].trim() > 1) {\n startHdrYr = (parseInt(this.calendarInstance.headerTitleElement.textContent.split('-')[1].trim(), 10) + 1).toString();\n endHdrYr = (parseInt(startHdrYr, 10) + 9).toString();\n }\n endHdrYr = endHdrYr - startHdrYr === 10 ? (parseInt(endHdrYr, 10) - 1).toString() : endHdrYr;\n endHdrYr = endHdrYr - startHdrYr === 7\n ? (parseInt(endHdrYr, 10) + 2).toString() : endHdrYr - startHdrYr === 8\n ? (parseInt(endHdrYr, 10) + 1).toString() : endHdrYr;\n }\n if (this.calendarInstance.locale === 'ar') {\n var startHeaderYear = this.calendarInstance.globalize.formatDate(startYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });\n var endHeaderYear = this.calendarInstance.globalize.formatDate(endYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });\n this.calendarInstance.headerTitleElement.textContent = startHeaderYear + ' - ' + (endHeaderYear);\n }\n else {\n this.calendarInstance.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n }\n this.calendarInstance.nextIconClicked = this.calendarInstance.previousIconClicked = false;\n var year = (parseInt(startHdrYr, 10) - 2).toString();\n startFullYr = Math.round(parseInt(startHdrYr, 10) * 0.97 + 622);\n endFullYr = Math.round(parseInt(endHdrYr, 10) * 0.97 + 622);\n var startYear = Math.round(parseInt(year, 10) * 0.97 + 622);\n for (var rowCount = 1; rowCount <= yearCell; ++rowCount) {\n var year_1 = startYear + rowCount;\n localDate.setFullYear(year_1);\n localDate.setDate(1);\n localDate.setMonth(0);\n if ((this.getIslamicDate(localDate).year - islamicDate.year) > 1) {\n localDate.setMonth(1);\n rowCount = rowCount - 1;\n localDate.setFullYear(localDate.getFullYear() - 1);\n }\n islamicDate = this.getIslamicDate(localDate);\n var gregorianObject_2 = HijriParser.toGregorian(islamicDate.year, 1, 1);\n localDate = gregorianObject_2;\n if (islamicDate.year === parseInt(startHdrYr, 10) - 1 || islamicDate.year >= startHdrYr &&\n islamicDate.year <= endFullYr || islamicDate.year === parseInt(endHdrYr, 10) + 1) {\n var tdEle = this.islamicDayCell(localDate);\n attributes(tdEle, { 'role': 'gridcell' });\n var dayLink = this.calendarInstance.createElement('span');\n dayLink.textContent = this.calendarInstance.globalize.formatDate(localDate, { type: 'dateTime', format: 'y', calendar: 'islamic' });\n if (islamicDate.year === parseInt(startHdrYr, 10) - 1 || (year_1 < startFullYr) ||\n (year_1 > endFullYr) && islamicDate.year !== parseInt(endHdrYr, 10)) {\n addClass([tdEle], OTHERMONTH$1);\n }\n else if (year_1 < new Date(this.islamicInValue(this.calendarInstance.min)).getFullYear()\n || year_1 > new Date(this.islamicInValue(this.calendarInstance.max)).getFullYear()) {\n addClass([tdEle], DISABLED$1);\n }\n else if (!isNullOrUndefined(value) &&\n (this.getIslamicDate(localDate)).year ===\n (this.getIslamicDate(value)).year) {\n addClass([tdEle], SELECTED$1);\n }\n else {\n if (localDate.getFullYear() === this.calendarInstance.currentDate.getFullYear() &&\n !tdEle.classList.contains(DISABLED$1)) {\n addClass([tdEle], FOCUSEDDATE$1);\n }\n }\n if (!tdEle.classList.contains(DISABLED$1)) {\n EventHandler.add(tdEle, 'click', this.calendarInstance.clickHandler, this.calendarInstance);\n }\n tdEle.appendChild(dayLink);\n if ((!isNullOrUndefined(e) && e.action === 'home' && islamicDate.year.toString() === startHdrYr) || (!isNullOrUndefined(e) && e.action === 'end' && islamicDate.year.toString() === endHdrYr)) {\n addClass([tdEle], FOCUSEDDATE$1);\n }\n tdEles.push(tdEle);\n }\n }\n this.islamicRenderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n Islamic.prototype.islamicDayCell = function (localDate) {\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: 'islamic' };\n var formatDate = this.calendarInstance.globalize.formatDate(localDate, dateFormatOptions);\n var date = this.calendarInstance.globalize.parseDate(formatDate, dateFormatOptions);\n var value = date.valueOf();\n var attrs = {\n className: CELL$1, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false', 'role': 'gridcell' }\n };\n return this.calendarInstance.createElement('td', attrs);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Islamic.prototype.islamicRenderTemplate = function (elements, count, classNm, e, value) {\n var view = this.calendarInstance.getViewNumber(this.calendarInstance.currentView());\n var trEle;\n this.calendarInstance.tableBodyElement = this.calendarInstance.createElement('tbody');\n this.calendarInstance.table.appendChild(this.calendarInstance.tableBodyElement);\n removeClass([this.calendarInstance.contentElement, this.calendarInstance.headerElement], [MONTH$1, DECADE$1, YEAR$1]);\n addClass([this.calendarInstance.contentElement, this.calendarInstance.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowCount = 0;\n for (var dayCell = 0; dayCell < Math.round(elements.length / count); ++dayCell) {\n trEle = this.calendarInstance.createElement('tr', { attrs: { 'role': 'row' } });\n for (rowCount = 0 + rowCount; rowCount < row; rowCount++) {\n if (!elements[rowCount].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowCount].children[0])) {\n addClass([elements[rowCount].children[0]], [LINK$1]);\n rippleEffect(elements[rowCount].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowCount]);\n if (this.calendarInstance.weekNumber &&\n rowCount === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH$1)) {\n addClass([trEle], OTHERMONTHROW$1);\n }\n if (!this.calendarInstance.weekNumber\n && rowCount === otherMonthCell && elements[otherMonthCell].classList.contains(OTHERMONTH$1)) {\n addClass([trEle], OTHERMONTHROW$1);\n }\n if (this.calendarInstance.weekNumber) {\n if (rowCount === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH$1)) {\n addClass([trEle], OTHERMONTHROW$1);\n }\n }\n else {\n if (rowCount === numberCell && elements[numberCell].classList.contains(OTHERMONTH$1)) {\n addClass([trEle], OTHERMONTHROW$1);\n }\n }\n }\n row = row + count;\n rowCount = rowCount + 0;\n this.calendarInstance.tableBodyElement.appendChild(trEle);\n }\n this.calendarInstance.table.querySelector('tbody').className = this.calendarInstance.effect;\n this.islamicIconHandler();\n if (view !== this.calendarInstance.getViewNumber(this.calendarInstance.currentView())\n || (view === 0 && view !== this.calendarInstance.getViewNumber(this.calendarInstance.currentView()))) {\n this.calendarInstance.navigateHandler(e);\n }\n this.calendarInstance.setAriaActiveDescendant();\n this.calendarInstance.changedArgs = { value: this.calendarInstance.value, values: this.calendarInstance.values };\n this.calendarInstance.changeHandler();\n };\n Islamic.prototype.islamicCompareMonth = function (start, end) {\n var hijriStart = (this.getIslamicDate(start));\n var hijriEnd = (this.getIslamicDate(end));\n var result;\n if (hijriStart.year > hijriEnd.year) {\n result = 1;\n }\n else if (hijriStart.year < hijriEnd.year) {\n result = -1;\n }\n else {\n result = hijriStart.month === hijriEnd.month ? 0 : hijriStart.month > hijriEnd.month ? 1 : -1;\n }\n return result;\n };\n Islamic.prototype.islamicCompare = function (startDate, endDate, modifier) {\n var hijriStart = this.getIslamicDate(startDate);\n var hijriEnd = this.getIslamicDate(endDate);\n var start = hijriEnd.year;\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 (hijriStart.year > end) {\n result = 1;\n }\n else if ((this.calendarInstance.currentView() === 'Decade') && hijriStart.year < start &&\n !((startDate.getFullYear() >= minDecade && startDate.getFullYear() <= maxDecade))) {\n result = -1;\n }\n else if (hijriStart.year < start && (this.calendarInstance.currentView() === 'Year')) {\n result = -1;\n }\n return result;\n };\n Islamic.prototype.getIslamicDate = function (date) {\n return (HijriParser.getHijriDate(date));\n };\n Islamic.prototype.toGregorian = function (year, month, date) {\n return HijriParser.toGregorian(year, month, date);\n };\n Islamic.prototype.hijriCompareYear = function (start, end) {\n return this.islamicCompare(start, end, 0);\n };\n Islamic.prototype.hijriCompareDecade = function (start, end) {\n return this.islamicCompare(start, end, 10);\n };\n Islamic.prototype.destroy = function () {\n this.calendarInstance = null;\n };\n Islamic.prototype.islamicInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n return Islamic;\n}());\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT$1 = '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 ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED$2 = 'e-selected';\nvar FOCUSEDDATE$2 = '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 = /** @__PURE__ @class */ (function (_super) {\n __extends$1(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.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.moduleName = _this.getModuleName();\n _this.isFocused = false;\n _this.isBlur = false;\n _this.isKeyAction = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n this.setTimeZone(this.serverTimezoneOffset);\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n this.checkInvalidValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInput(true);\n this.updateInputValue(this.maskedDateValue);\n }\n else if (!this.enableMask) {\n this.updateInput(true);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',\n 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false'\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.inputElement.hasAttribute('aria-label')) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\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(this.getAmPmValue(val), formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(this.getAmPmValue(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 'Backspace':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete' && e.code !== 'Backspace') {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\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 if (this.enableMask && this.showClearButton && this.inputElement && this.inputElement.value === this.maskedDateValue && this.inputWrapper && this.inputWrapper.clearButton && !this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) {\n this.inputWrapper.clearButton.classList.add('e-clear-icon-hide');\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 (e) {\n this.isPopupClicked = false;\n if (this.enableMask) {\n if (!isNullOrUndefined(e) && !isNullOrUndefined(e.inputType) && e.inputType === 'insertFromPaste') {\n this.notify('maskPasteInputHandler', {\n module: 'MaskedDateTime'\n });\n }\n else {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\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$2).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED$2), [SELECTED$2]);\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.getAmPmValue(this.inputElement.value), dateOptions))) {\n date = this.globalize.parseDate(this.getAmPmValue(this.inputElement.value), 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.getAmPmValue(this.inputElement.value), formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.getAmPmValue(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$1 + ' ' + 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$1 + ' 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.getAmPmValue = function (date) {\n try {\n if (typeof date === 'string' && date.trim() !== '') {\n // Replace am/pm variants with uppercase AM/PM\n return date.replace(/(am|pm|Am|aM|pM|Pm)/g, function (match) { return match.toLocaleUpperCase(); });\n }\n // If date is null, undefined, or an empty string, return a default value or empty string\n return '';\n }\n catch (error) {\n console.error('Error occurred while processing date:', error);\n return ''; // Return a default value in case of an error\n }\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 }\n }\n else {\n switch (e.swipeDirection) {\n case 'Up':\n direction = 1;\n break;\n case 'Down':\n direction = -1;\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 }\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 if (this.enableMask && this.showClearButton && this.inputElement && this.inputElement.value === this.maskedDateValue && this.inputWrapper && this.inputWrapper.clearButton && !this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) {\n this.inputWrapper.clearButton.classList.add('e-clear-icon-hide');\n }\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 * @deprecated\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 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 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$2);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED$2);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n * @deprecated\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) &&\n (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 * @deprecated\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 * @deprecated\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'\n };\n if (this.inputElement.hasAttribute('aria-label')) {\n this.inputElement.removeAttribute('aria-label');\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$1]);\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$1, 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(this.getAmPmValue(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(this.getAmPmValue(min), options), {}), !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(this.getAmPmValue(max), options), {}), !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 !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >=\n new Date(this.min).setMilliseconds(0)\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue &&\n isNullOrUndefined(this.value) || isDisabledDate) || !this.isValidTime(this.value)) {\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 DatePicker.prototype.isValidTime = function (value) {\n return true;\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 var openPopup = ['blur', 'change', 'cleared', 'close', 'created', 'destroyed', 'focus', 'navigated', 'open', 'renderDayCell'];\n if (openPopup.indexOf(prop) > 0 && this.isReact) {\n this.isDynamicValueChanged = true;\n }\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 if (prop === 'min' && isNullOrUndefined(this.min)) {\n this.min = new Date(1900, 0, 1);\n }\n if (prop === 'max' && isNullOrUndefined(this.max)) {\n this.max = new Date(2099, 11, 31);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate$1([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate$1([\n Property(false)\n ], DatePicker.prototype, \"fullScreenMode\", void 0);\n __decorate$1([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate$1([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate$1([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate$1([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate$1([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate$1([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate$1([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate$1([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate$1([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate$1([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate$1([\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$1([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate$1([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate$1([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate$1([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate$1([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate$1([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate$1([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate$1([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar DATERANGEWRAPPER = 'e-date-range-wrapper';\nvar INPUTCONTAINER$1 = 'e-input-group';\nvar DATERANGEICON = 'e-input-group-icon e-range-icon e-icons';\nvar POPUP$1 = 'e-popup';\nvar LEFTCALENDER = 'e-left-calendar';\nvar RIGHTCALENDER = 'e-right-calendar';\nvar LEFTCONTAINER = 'e-left-container';\nvar RIGHTCONTAINER = 'e-right-container';\nvar ROOT$2 = 'e-daterangepicker';\nvar LIBRARY$1 = 'e-lib';\nvar CONTROL$1 = 'e-control';\nvar ERROR$1 = 'e-error';\nvar ACTIVE$1 = 'e-active';\nvar STARTENDCONTAINER = 'e-start-end';\nvar STARTDATE = 'e-start-date';\nvar ENDDATE = 'e-end-date';\nvar STARTBUTTON = 'e-start-btn';\nvar INPUTFOCUS$1 = 'e-input-focus';\nvar ENDBUTTON = 'e-end-btn';\nvar RANGEHOVER = 'e-range-hover';\nvar OTHERMONTH$2 = 'e-other-month';\nvar STARTLABEL = 'e-start-label';\nvar ENDLABEL = 'e-end-label';\nvar DISABLED$2 = 'e-disabled';\nvar SELECTED$3 = 'e-selected';\nvar CALENDAR = 'e-calendar';\nvar NEXTICON$1 = 'e-next';\nvar PREVICON$1 = 'e-prev';\nvar HEADER$1 = 'e-header';\nvar TITLE$1 = 'e-title';\nvar ICONCONTAINER$1 = 'e-icon-container';\nvar RANGECONTAINER = 'e-date-range-container';\nvar RANGEHEADER = 'e-range-header';\nvar PRESETS = 'e-presets';\nvar FOOTER$1 = 'e-footer';\nvar RANGEBORDER = 'e-range-border';\nvar TODAY$2 = 'e-today';\nvar FOCUSDATE = 'e-focused-date';\nvar CONTENT$1 = 'e-content';\nvar DAYSPAN = 'e-day-span';\nvar WEEKNUMBER$2 = 'e-week-number';\nvar DATEDISABLED = 'e-date-disabled';\nvar ICONDISABLED = 'e-icon-disabled';\nvar CALENDARCONTAINER = 'e-calendar-container';\nvar SEPARATOR = 'e-separator';\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar DEVICE$1 = 'e-device';\nvar OVERLAY$2 = 'e-overlay';\nvar CHANGEICON = 'e-change-icon e-icons';\nvar LISTCLASS = 'e-list-item';\nvar RTL$1 = 'e-rtl';\nvar HOVER = 'e-hover';\nvar OVERFLOW$1 = 'e-range-overflow';\nvar OFFSETVALUE$1 = 4;\nvar PRIMARY$1 = 'e-primary';\nvar FLAT$1 = 'e-flat';\nvar CSS$1 = 'e-css';\nvar ZOOMIN$1 = 'e-zoomin';\nvar NONEDITABLE = 'e-non-edit';\nvar DAYHEADERLONG$1 = 'e-daterange-day-header-lg';\nvar HIDDENELEMENT = 'e-daterange-hidden';\nvar wrapperAttr = ['title', 'class', 'style'];\nvar Presets = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Presets, _super);\n function Presets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property()\n ], Presets.prototype, \"label\", void 0);\n __decorate$2([\n Property()\n ], Presets.prototype, \"start\", void 0);\n __decorate$2([\n Property()\n ], Presets.prototype, \"end\", void 0);\n return Presets;\n}(ChildProperty));\n/**\n * Represents the DateRangePicker component that allows user to select the date range from the calendar\n * or entering the range through the input element.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateRangePicker = /** @__PURE__ @class */ (function (_super) {\n __extends$2(DateRangePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateRangePickerModel} options - Specifies the DateRangePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateRangePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isCustomRange = false;\n _this.isCustomWindow = false;\n _this.presetsItem = [];\n _this.liCollections = [];\n _this.previousEleValue = '';\n _this.isKeyPopup = false;\n _this.dateDisabled = false;\n _this.isRangeIconClicked = false;\n _this.isMaxDaysClicked = false;\n _this.disabledDays = [];\n _this.preventBlur = false;\n _this.preventFocus = false;\n _this.invalidValueString = null;\n _this.preventChange = false;\n _this.dateRangeOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.render = function () {\n this.initialize();\n this.setProperties({ startDate: this.startValue }, true);\n this.setProperties({ endDate: this.endValue }, true);\n this.setModelValue();\n this.setDataAttribute(false);\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.preRender = function () {\n this.keyInputConfigs = {\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n tab: 'tab',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n spacebar: 'space'\n };\n this.defaultConstant = {\n placeholder: this.placeholder,\n startLabel: 'Start Date',\n endLabel: 'End Date',\n customRange: 'Custom Range',\n applyText: 'Apply',\n cancelText: 'Cancel',\n selectedDays: 'Selected Days',\n days: 'days'\n };\n /**\n * Mobile View\n */\n this.isMobile = (Browser.isDevice) ? true : window.matchMedia('(max-width:550px)').matches;\n this.inputElement = this.element;\n this.angularTag = null;\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT$2, CONTROL$1, LIBRARY$1]);\n this.updateHtmlAttributeToElement();\n if (this.element.getAttribute('id')) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n this.checkInvalidRange(this.value);\n if (!this.invalidValueString && (typeof (this.value) === 'string')) {\n var rangeArray = this.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n }\n this.initProperty();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n this.navNextFunction = this.navNextMonth.bind(this);\n this.navPrevFunction = this.navPrevMonth.bind(this);\n this.deviceNavNextFunction = this.deviceNavNext.bind(this);\n this.deviceNavPrevFunction = this.deviceNavPrevious.bind(this);\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.formElement = closest(this.element, 'form');\n };\n DateRangePicker.prototype.updateValue = function () {\n if (this.value && this.value.length > 0) {\n if (this.value[0] instanceof Date && !isNaN(+this.value[0])) {\n this.setProperties({ startDate: this.value[0] }, true);\n this.startValue = this.value[0];\n }\n else if (typeof this.value[0] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.startValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ startDate: new Date(this.checkValue(this.value[0])) }, true);\n this.startValue = new Date(this.checkValue(this.value[0]));\n }\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value[1] instanceof Date && !isNaN(+this.value[1])) {\n this.setProperties({ endDate: this.value[1] }, true);\n this.endValue = this.value[1];\n }\n else if (typeof this.value[1] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ endDate: new Date(this.checkValue(this.value[1])) }, true);\n this.endValue = new Date(this.checkValue(this.value[1]));\n this.setValue();\n }\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (this.value && this.value.start) {\n if (this.value.start instanceof Date && !isNaN(+this.value.start)) {\n this.setProperties({ startDate: this.value.start }, true);\n this.startValue = this.value.start;\n }\n else if (typeof this.value.start === 'string') {\n this.setProperties({ startDate: new Date(this.checkValue(this.value.start)) }, true);\n this.startValue = new Date(this.checkValue(this.value.start));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value.end instanceof Date && !isNaN(+this.value.end)) {\n this.setProperties({ endDate: this.value.end }, true);\n this.endValue = this.value.end;\n }\n else if (typeof this.value.end === 'string') {\n this.setProperties({ endDate: new Date(this.checkValue(this.value.end)) }, true);\n this.endValue = new Date(this.checkValue(this.value.end));\n this.setValue();\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (isNullOrUndefined(this.value)) {\n this.endValue = this.checkDateValue(new Date(this.checkValue(this.endDate)));\n this.startValue = this.checkDateValue(new Date(this.checkValue(this.startDate)));\n this.setValue();\n }\n };\n DateRangePicker.prototype.initProperty = function () {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.updateValue();\n };\n DateRangePicker.prototype.checkFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n else {\n this.formatString = null;\n }\n }\n else {\n this.formatString = null;\n }\n };\n DateRangePicker.prototype.initialize = function () {\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.checkHtmlAttributes(false);\n merge(this.defaultKeyConfigs, { shiftTab: 'shift+tab', tab: 'tab' });\n var start = this.checkDateValue(new Date(this.checkValue(this.startValue)));\n this.setProperties({ startDate: start }, true); // persist the value propeerty.\n this.setProperties({ endValue: this.checkDateValue(new Date(this.checkValue(this.endValue))) }, true);\n this.setValue();\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.l10n = new L10n('daterangepicker', this.defaultConstant, this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.processPresets();\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setRangeAllowEdit();\n this.bindEvents();\n };\n DateRangePicker.prototype.setDataAttribute = function (isDynamic) {\n var attributes = {};\n if (!isDynamic) {\n for (var i = 0; i < this.element.attributes.length; i++) {\n attributes[this.element.attributes[i].name] =\n this.element.getAttribute(this.element.attributes[i].name);\n }\n }\n else {\n attributes = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (pro.indexOf('data') === 0) {\n this.firstHiddenChild.setAttribute(pro, attributes[\"\" + pro]);\n this.secondHiddenChild.setAttribute(pro, attributes[\"\" + pro]);\n }\n }\n };\n DateRangePicker.prototype.setRangeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateClearIconState();\n };\n DateRangePicker.prototype.updateClearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n };\n DateRangePicker.prototype.validationAttribute = function (element, input) {\n var name = element.getAttribute('name') ? element.getAttribute('name') : element.getAttribute('id');\n input.setAttribute('name', name);\n element.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(element.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = element.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n element.removeAttribute(attributes[i]);\n }\n };\n DateRangePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (key === 'style') {\n var dateRangeStyle = this.inputWrapper.container.getAttribute(key);\n dateRangeStyle = !isNullOrUndefined(dateRangeStyle) ? (dateRangeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, dateRangeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n DateRangePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DateRangePicker.prototype.updateCssClass = function (cssNewClass, cssOldClass) {\n if (!isNullOrUndefined(cssOldClass)) {\n cssOldClass = (cssOldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssNewClass)) {\n cssNewClass = (cssNewClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssNewClass, [this.inputWrapper.container], cssOldClass);\n if (this.popupWrapper) {\n Input.setCssClass(cssNewClass, [this.popupWrapper], cssOldClass);\n }\n };\n DateRangePicker.prototype.processPresets = function () {\n this.presetsItem = [];\n var i = 0;\n if (!isNullOrUndefined(this.presets[0]) && !isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n for (var _i = 0, _a = this.presets; _i < _a.length; _i++) {\n var range = _a[_i];\n var id = range.label.replace(/\\s+/g, '') + '_' + (++i);\n if (typeof range.end === 'string') {\n this.presetsItem.push({\n id: id, text: range.label, end: new Date(this.checkValue(range.end)), start: new Date(this.checkValue(range.start))\n });\n }\n else {\n this.presetsItem.push({ id: id, text: range.label, start: range.start, end: range.end });\n }\n }\n var startDate = isNullOrUndefined(this.startValue) ? null : new Date(+this.startValue);\n var endDate = isNullOrUndefined(this.endValue) ? null : new Date(+this.endValue);\n this.presetsItem.push({ id: 'custom_range', text: this.l10n.getConstant('customRange'), start: startDate, end: endDate });\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.isCustomRange = true;\n this.activeIndex = this.presetsItem.length - 1;\n }\n }\n };\n DateRangePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n if (!this.isMobile) {\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.inputKeyboardModule = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n };\n DateRangePicker.prototype.unBindEvents = function () {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.inputKeyboardModule)) {\n this.inputKeyboardModule.destroy();\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.inputElement.tabIndex = -1;\n };\n DateRangePicker.prototype.updateHiddenInput = function () {\n if (this.firstHiddenChild && this.secondHiddenChild) {\n var format = { format: this.formatString, type: 'datetime', skeleton: 'yMd' };\n if (typeof this.startDate === 'string') {\n this.startDate = this.globalize.parseDate(this.getAmPmValue(this.startDate), format);\n }\n if (typeof this.endDate === 'string') {\n this.endDate = this.globalize.parseDate(this.getAmPmValue(this.endDate), format);\n }\n this.firstHiddenChild.value = (this.startDate && this.globalize.formatDate(this.startDate, format))\n || (this.inputElement.value);\n this.secondHiddenChild.value = (this.endDate && this.globalize.formatDate(this.endDate, format)) ||\n (this.inputElement.value);\n this.dispatchEvent(this.firstHiddenChild, 'focusout');\n this.dispatchEvent(this.firstHiddenChild, 'change');\n }\n };\n DateRangePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n this.updateHiddenInput();\n };\n DateRangePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DateRangePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.valueType = this.value;\n e.preventDefault();\n this.clear();\n var clearedArgs = {\n event: e\n };\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.trigger('cleared', clearedArgs);\n this.changeTrigger(e);\n this.clearRange();\n this.hide(e);\n if (closest(this.element, 'form')) {\n var element = this.firstHiddenChild;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DateRangePicker.prototype.restoreValue = function () {\n this.previousEleValue = this.inputElement.value;\n this.previousStartValue = this.startValue;\n this.previousEndValue = this.endValue;\n this.valueType = null;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.setValue();\n this.setModelValue();\n };\n DateRangePicker.prototype.formResetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.formElement && (e.target === this.formElement) && !this.inputElement.disabled) {\n var val = this.inputElement.getAttribute('value');\n if (!isNullOrUndefined(this.startCopy)) {\n if (!isNullOrUndefined(this.value) && !isNullOrUndefined(this.value.start)) {\n this.setProperties({ value: { start: this.startCopy, end: this.endCopy } }, true);\n this.startValue = this.value.start;\n this.endValue = this.value.end;\n }\n else {\n this.setProperties({ value: [this.startCopy, this.endCopy] }, true);\n this.startValue = this.value[0];\n this.endValue = this.value[1];\n }\n this.setProperties({ startDate: this.startValue, endDate: this.endValue }, true);\n }\n else {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n this.startValue = this.endValue = null;\n }\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n val = '';\n this.startValue = this.endValue = null;\n this.inputElement.setAttribute('value', '');\n }\n this.restoreValue();\n if (this.inputElement) {\n Input.setValue(val, this.inputElement, this.floatLabelType, this.showClearButton);\n this.errorClass();\n }\n }\n };\n DateRangePicker.prototype.clear = function () {\n if (this.startValue !== null) {\n this.startValue = null;\n }\n if (this.endValue !== null) {\n this.endValue = null;\n }\n if (this.value && this.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n if (this.value !== null && this.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n if (!(isNullOrUndefined(this.applyButton))) {\n this.applyButton.disabled = this.applyButton.element.disabled = true;\n }\n this.removeSelection();\n };\n DateRangePicker.prototype.rangeIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isMobile) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n this.targetElement = null;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n }\n else {\n this.isRangeIconClicked = true;\n this.inputWrapper.container.children[0].focus();\n this.show(null, e);\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.isRangeIconClicked = false;\n this.calendarFocus();\n this.isRangeIconClicked = true;\n }\n }\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n };\n DateRangePicker.prototype.checkHtmlAttributes = function (isDynamic) {\n this.globalize = new Internationalization(this.locale);\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['startDate', 'endDate', 'minDays', 'maxDays', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder',\n 'type', 'value'];\n var format = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['enabled'] === undefined)) || isDynamic) {\n var disabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ enabled: !disabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === 'true' || this.inputElement.getAttribute(prop) === '' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['value'] === undefined)) || isDynamic) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, value, {}), !isDynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'min':\n if ((isNullOrUndefined(this.min) || +this.min === +new Date(1900, 0, 1)) || isDynamic) {\n var dateValue = this.globalize.parseDate(this.getAmPmValue(this.inputElement.getAttribute(prop)), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'max':\n if ((isNullOrUndefined(this.max) || +this.max === +new Date(2099, 11, 31)) || isDynamic) {\n var dateValue = this.globalize.parseDate(this.getAmPmValue(this.inputElement.getAttribute(prop)), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'startDate':\n if (isNullOrUndefined(this.startDate)) {\n var dateValue = this.globalize.parseDate(this.getAmPmValue(this.inputElement.getAttribute(prop)), format);\n this.startValue = dateValue;\n this.setValue();\n }\n break;\n case 'endDate':\n if (isNullOrUndefined(this.endDate)) {\n var dateValue = this.globalize.parseDate(this.getAmPmValue(this.inputElement.getAttribute(prop)), format);\n this.endValue = dateValue;\n this.setValue();\n }\n break;\n case 'minDays':\n if (isNullOrUndefined(this.minDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\n }\n break;\n case 'maxDays':\n if (isNullOrUndefined(this.maxDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n DateRangePicker.prototype.createPopup = function () {\n for (var i = 0; i < this.presetsItem.length; i++) {\n if ((i !== (this.presetsItem.length - 1)) && this.presetsItem[i].id === 'custom_range') {\n this.presetsItem.splice(i, 1);\n }\n }\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n for (var i = 0; i <= this.presetsItem.length - 2; i++) {\n var startDate = this.presetsItem[i].start;\n var endDate = this.presetsItem[i].end;\n if (this.startValue && this.endValue) {\n if (startDate.getDate() === this.startValue.getDate() && startDate.getMonth() === this.startValue.getMonth() &&\n startDate.getFullYear() === this.startValue.getFullYear() && endDate.getDate() === this.endValue.getDate() &&\n endDate.getMonth() === this.endValue.getMonth() && endDate.getFullYear() === this.endValue.getFullYear()) {\n this.activeIndex = i;\n this.isCustomRange = false;\n }\n }\n }\n this.popupWrapper = createElement('div', { id: this.element.id + '_popup', className: ROOT$2 + ' ' + POPUP$1 });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n this.adjustLongHeaderWidth();\n var isPreset = (!this.isCustomRange || this.isMobile);\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && isPreset) {\n this.isCustomWindow = false;\n this.createPresets();\n this.listRippleEffect();\n this.renderPopup();\n }\n else {\n this.isCustomWindow = true;\n this.renderControl();\n }\n };\n DateRangePicker.prototype.renderControl = function () {\n this.createControl();\n this.bindCalendarEvents();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) &&\n !isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n this.updateHeader();\n };\n DateRangePicker.prototype.clearCalendarEvents = function () {\n if (this.leftCalPrevIcon && this.leftCalNextIcon && this.rightCalPrevIcon && this.rightCalNextIcon) {\n EventHandler.clearEvents(this.leftCalPrevIcon);\n EventHandler.clearEvents(this.leftCalNextIcon);\n EventHandler.clearEvents(this.rightCalPrevIcon);\n EventHandler.clearEvents(this.rightCalNextIcon);\n }\n };\n DateRangePicker.prototype.updateNavIcons = function () {\n _super.prototype.iconHandler.call(this);\n };\n DateRangePicker.prototype.calendarIconEvent = function () {\n this.clearCalendarEvents();\n if (this.leftCalPrevIcon && !this.leftCalPrevIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.leftCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.leftCalNextIcon && !this.leftCalNextIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.leftCalNextIcon, 'mousedown', this.navNextFunction);\n }\n if (this.rightCalPrevIcon && !this.rightCalPrevIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.rightCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.rightCalNextIcon && !this.rightCalNextIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.rightCalNextIcon, 'mousedown', this.navNextFunction);\n }\n };\n DateRangePicker.prototype.bindCalendarEvents = function () {\n if (!this.isMobile) {\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.headerTitleElement = this.popupObj.element.querySelector('.' + RIGHTCALENDER + ' .' + HEADER$1 + ' .' + TITLE$1);\n this.headerTitleElement = this.popupObj.element.querySelector('.' + LEFTCALENDER + ' .' + HEADER$1 + ' .' + TITLE$1);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.leftKeyboardModule = new KeyboardEvents(this.leftCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n this.rightKeyboardModule = new KeyboardEvents(this.rightCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.deviceCalendarEvent();\n EventHandler.add(this.startButton.element, 'click', this.deviceHeaderClick, this);\n EventHandler.add(this.endButton.element, 'click', this.deviceHeaderClick, this);\n }\n if (this.start === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.calendarIconRipple = function () {\n rippleEffect(this.leftCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.leftCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n };\n DateRangePicker.prototype.deviceCalendarEvent = function () {\n EventHandler.clearEvents(this.nextIcon);\n EventHandler.clearEvents(this.previousIcon);\n rippleEffect(this.nextIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.previousIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n if (this.nextIcon && !this.nextIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.nextIcon, 'mousedown', this.deviceNavNextFunction);\n }\n if (this.previousIcon && !this.previousIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.previousIcon, 'mousedown', this.deviceNavPrevFunction);\n }\n };\n DateRangePicker.prototype.deviceNavNext = function (e) {\n var calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigateNext(e);\n this.deviceNavigation();\n };\n DateRangePicker.prototype.deviceNavPrevious = function (e) {\n var calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigatePrevious(e);\n this.deviceNavigation();\n };\n DateRangePicker.prototype.updateDeviceCalendar = function (calendar) {\n if (calendar) {\n this.previousIcon = calendar.querySelector('.' + PREVICON$1);\n this.nextIcon = calendar.querySelector('.' + NEXTICON$1);\n this.calendarElement = calendar;\n this.deviceCalendar = calendar;\n this.contentElement = calendar.querySelector('.' + CONTENT$1);\n this.tableBodyElement = select('.' + CONTENT$1 + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT$1).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER$1 + ' .' + TITLE$1);\n this.headerElement = calendar.querySelector('.' + HEADER$1);\n }\n };\n DateRangePicker.prototype.deviceHeaderClick = function (event) {\n var element = event.currentTarget;\n if (element.classList.contains(STARTBUTTON) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.classList.remove(ACTIVE$1);\n this.startButton.element.classList.add(ACTIVE$1);\n var calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + STARTDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.startValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.removeClassDisabled();\n }\n else if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.startButton.element.classList.remove(ACTIVE$1);\n this.endButton.element.classList.add(ACTIVE$1);\n var calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + ENDDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.endValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n this.selectableDates();\n }\n };\n DateRangePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n this.preventBlur = false;\n var focusArguments = {\n model: this\n };\n if (!this.preventFocus) {\n this.trigger('focus', focusArguments);\n }\n this.updateClearIconState();\n if (this.openOnFocus && !this.preventFocus) {\n this.preventFocus = true;\n this.show();\n }\n else {\n this.preventFocus = true;\n }\n };\n DateRangePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (!this.preventBlur) {\n var value = this.inputElement.value;\n if (!isNullOrUndefined(this.presetsItem)) {\n if (this.presetsItem.length > 0 && this.previousEleValue !== this.inputElement.value) {\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n }\n }\n if (!isNullOrUndefined(value) && value.trim() !== '') {\n var range = value.split(' ' + this.separator + ' ');\n if (range.length > 1) {\n this.invalidValueString = null;\n var dateOptions = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n var start = this.globalize.parseDate(this.getAmPmValue(range[0]), dateOptions);\n var end = this.globalize.parseDate(this.getAmPmValue(range[1]), dateOptions);\n var startDate = this.getStartEndDate(start, false, range, dateOptions);\n var endDate = this.getStartEndDate(end, true, range, dateOptions);\n if (!isNullOrUndefined(startDate) && !isNaN(+startDate) && !isNullOrUndefined(endDate) && !isNaN(+endDate)) {\n var prevStartVal = this.startValue;\n this.startValue = startDate;\n var prevEndVal = this.endValue;\n this.endValue = endDate;\n this.setValue();\n this.refreshControl();\n if (value !== this.previousEleValue) {\n this.changeTrigger(e);\n }\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n this.updateHiddenInput();\n // For Mobile mode, when a value is present and choose another range and click on console\n // when popup is open, two startvalues and end values are updated in the popup.\n if (this.isMobile && this.isPopupOpen()) {\n this.startValue = prevStartVal;\n this.endValue = prevEndVal;\n }\n return;\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n if (!this.strictMode) {\n if (isNullOrUndefined(this.popupObj)) {\n this.currentDate = null;\n }\n this.previousStartValue = this.previousEndValue = null;\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(value) && value.trim() === '') {\n this.startValue = null;\n this.endValue = null;\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.updateInput();\n }\n this.errorClass();\n this.changeTrigger(e);\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n }\n this.updateHiddenInput();\n };\n DateRangePicker.prototype.getStartEndDate = function (date, isEnd, range, dateOptions) {\n if (this.depth === 'Month') {\n return this.globalize.parseDate(this.getAmPmValue(range[isEnd ? 1 : 0]).trim(), dateOptions);\n }\n else if (this.depth === 'Year' && !isNullOrUndefined(date)) {\n return new Date(date.getFullYear(), date.getMonth() + (isEnd ? 1 : 0), isEnd ? 0 : 1);\n }\n else if (!isNullOrUndefined(date)) {\n return new Date(date.getFullYear(), isEnd ? 11 : 0, isEnd ? 31 : 1);\n }\n else {\n return null;\n }\n };\n DateRangePicker.prototype.clearRange = function () {\n this.previousStartValue = this.previousEndValue = null;\n this.currentDate = null;\n };\n DateRangePicker.prototype.errorClass = function () {\n var inputStr = !isNullOrUndefined(this.inputElement.value) ? this.inputElement.value.trim() : null;\n if (((isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue) && inputStr !== '') ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max))\n || ((this.startValue && this.isDateDisabled(this.startValue))\n || (this.endValue && this.isDateDisabled(this.endValue)))) && inputStr !== '') {\n addClass([this.inputWrapper.container], ERROR$1);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else {\n if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], ERROR$1);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n }\n };\n DateRangePicker.prototype.keyCalendarUpdate = function (isLeftCalendar, ele, isRemoveFocus) {\n if (isRemoveFocus === void 0) { isRemoveFocus = true; }\n if (isRemoveFocus) {\n this.removeFocusedDate();\n }\n if (isLeftCalendar) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n ele = this.leftCalendar;\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n ele = this.rightCalendar;\n }\n this.updateCalendarElement(ele);\n this.table.focus();\n return ele;\n };\n DateRangePicker.prototype.navInCalendar = function (e, isLeftCalendar, leftLimit, rightLimit, ele) {\n var view = this.getViewNumber(this.currentView());\n var date;\n var min = this.min;\n var max;\n if (!isNullOrUndefined(this.maxDays) && this.isMaxDaysClicked && !isNullOrUndefined(this.startValue)) {\n max = new Date(new Date(+this.startValue).setDate(this.startValue.getDate() + (this.maxDays - 1)));\n }\n else {\n max = this.max;\n }\n switch (e.action) {\n case 'moveRight':\n date = new Date(+this.currentDate);\n this.addDay(date, 1, e, max, min);\n if (isLeftCalendar && +date === +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.keyboardNavigate(1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveLeft':\n date = new Date(+this.currentDate);\n this.addDay(date, -1, e, max, min);\n if (!isLeftCalendar) {\n if (+date === +leftLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n }\n this.keyboardNavigate(-1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveUp':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, -7, e, max, min);\n if (+date <= +leftLimit && !isLeftCalendar) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.keyboardNavigate(-7, view, e, max, min);\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n this.keyNavigation(ele, e);\n break;\n case 'moveDown':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, 7, e, max, min);\n if (isLeftCalendar && +date >= +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.keyboardNavigate(7, view, e, max, min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n this.keyNavigation(ele, e);\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n remove(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n this.keyNavigation(ele, e);\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n remove(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n this.keyNavigation(ele, e);\n break;\n case 'tab':\n if (this.tabKeyValidation(ele, LEFTCALENDER)) {\n ele = this.keyCalendarUpdate(false, ele, false);\n this.currentDate = this.firstCellToFocus(this.rightCalendar);\n view = this.getViewNumber(this.currentView());\n this.keyboardNavigate(0, view, e, max, min);\n this.keyNavigation(ele, e);\n }\n break;\n case 'shiftTab':\n if (this.tabKeyValidation(ele, RIGHTCALENDER)) {\n ele = this.keyCalendarUpdate(true, ele, false);\n this.currentDate = this.firstCellToFocus(this.leftCalendar);\n this.keyboardNavigate(0, view, e, max, min);\n this.keyNavigation(ele, e);\n }\n break;\n }\n };\n DateRangePicker.prototype.firstCellToFocus = function (calendar) {\n var focusAbleEle = this.getViewNumber(this.currentView()) === 2 ? calendar.children[1].firstElementChild.querySelector('td.e-cell:not(.e-week-number):not(.e-disabled):not(.e-other-year)') : calendar.children[1].firstElementChild.querySelector('td.e-cell:not(.e-week-number):not(.e-disabled):not(.e-other-month)');\n var focusEleID = focusAbleEle && focusAbleEle.id ? focusAbleEle.id.split('_')[0] : null;\n var currentFirstDay = new Date(this.currentDate.getFullYear(), this.currentDate.getMonth(), 1);\n var focusDate = focusEleID ? new Date(+focusEleID) : currentFirstDay;\n return focusDate;\n };\n DateRangePicker.prototype.keyInputHandler = function (e, value) {\n var date;\n var view = this.getViewNumber(this.currentView());\n var rightDateLimit = new Date(this.rightCalCurrentDate.getFullYear(), this.rightCalCurrentDate.getMonth(), 1);\n var leftDateLimit = new Date(this.leftCalCurrentDate.getFullYear(), this.leftCalCurrentDate.getMonth() + 1, 0);\n var ele = closest(e.target, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n var isLeftCalendar = ele.classList.contains(LEFTCALENDER);\n this.updateCalendarElement(ele);\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n var focusedDate = ele.querySelector('tr td.' + FOCUSDATE);\n var startDate = ele.querySelector('tr td.' + STARTDATE);\n var endDate = ele.querySelector('tr td.' + ENDDATE);\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n var leftCalendar = closest(e.target, '.' + LEFTCALENDER);\n var rightCalendar = closest(e.target, '.' + RIGHTCALENDER);\n var presetElement = closest(e.target, '.' + PRESETS);\n if (!isNullOrUndefined(focusedDate)) {\n // eslint-disable-next-line no-self-assign\n this.currentDate = this.currentDate;\n }\n else if (!isNullOrUndefined(endDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.endValue);\n }\n else if (!isNullOrUndefined(startDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.startValue);\n }\n else if (!this.dateDisabled) {\n this.currentDate.setDate(1);\n }\n this.effect = '';\n switch (e.action) {\n case 'altUpArrow':\n if (this.isPopupOpen()) {\n this.hide(e);\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n break;\n case 'select':\n if (levelRestrict) {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : startDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED$2)) {\n this.selectRange(null, (element));\n }\n }\n else {\n if (!isNullOrUndefined(selectedDate) && !levelRestrict || !isNullOrUndefined(focusedDate)) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n }\n e.preventDefault();\n break;\n case 'controlHome':\n {\n var yearDate = new Date(this.currentDate.getFullYear(), 0, 1);\n if (!isLeftCalendar && +yearDate < +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n _super.prototype.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 0, 1));\n this.keyNavigation(ele, e);\n }\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else if (!isNullOrUndefined(rightCalendar)) {\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n if (this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(rightCalendar)) {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'controlUp':\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n this.calendarNavigation(e, this.calendarElement);\n }\n else {\n this.calendarNavigation(e, this.calendarElement);\n }\n e.preventDefault();\n break;\n case 'controlDown':\n if ((!isNullOrUndefined(selectedDate) || !isNullOrUndefined(focusedDate)) && !levelRestrict) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (selectedDate || focusedDate), value);\n }\n e.preventDefault();\n break;\n case 'controlEnd':\n {\n var yearDate = new Date(this.currentDate.getFullYear(), 11, 31);\n if (isLeftCalendar && +yearDate > +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n _super.prototype.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 11, 31));\n this.keyNavigation(ele, e);\n }\n break;\n case 'pageUp':\n date = new Date(+this.currentDate);\n this.addMonths(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addMonths(this.currentDate, -1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'pageDown':\n date = new Date(+this.currentDate);\n this.addMonths(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addMonths(this.currentDate, 1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageUp':\n date = new Date(+this.currentDate);\n this.addYears(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addYears(this.currentDate, -1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageDown':\n date = new Date(+this.currentDate);\n this.addYears(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addYears(this.currentDate, 1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftTab':\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.setAttribute('tabindex', '0');\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n if (isLeftCalendar) {\n e.preventDefault();\n }\n if (this.tabKeyValidation(ele, RIGHTCALENDER)) {\n this.currentDate = new Date(+this.leftCalCurrentDate);\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n }\n break;\n case 'spacebar':\n if (this.applyButton && !this.applyButton.disabled) {\n this.applyFunction(e);\n }\n break;\n case 'tab':\n if (this.tabKeyValidation(ele, LEFTCALENDER)) {\n this.currentDate = new Date(+this.rightCalCurrentDate);\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n }\n break;\n default:\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n this.checkMinMaxDays();\n }\n this.presetHeight();\n };\n DateRangePicker.prototype.tabKeyValidation = function (ele, calendarPos) {\n var isLeftCalendar = ele.classList.contains(calendarPos);\n var rightHeader = this.rightCalendar.querySelector('.e-header');\n var leftHeader = this.leftCalendar.querySelector('.e-header');\n var isRightMonth = rightHeader ? rightHeader.classList.contains('e-month') : false;\n var isLeftMonth = leftHeader ? leftHeader.classList.contains('e-month') : false;\n var isRightYear = rightHeader ? rightHeader.classList.contains('e-year') : false;\n var isLeftYear = leftHeader ? leftHeader.classList.contains('e-year') : false;\n var isRightDecade = rightHeader ? rightHeader.classList.contains('e-decade') : false;\n var isLeftDecade = leftHeader ? leftHeader.classList.contains('e-decade') : false;\n return isLeftCalendar && (isLeftMonth || isLeftYear || isLeftDecade) &&\n (isRightMonth || isRightYear || isRightDecade) && !this.isMobile;\n };\n DateRangePicker.prototype.keyNavigation = function (calendar, e) {\n this.bindCalendarCellEvents(calendar);\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n }\n this.updateNavIcons();\n this.calendarIconEvent();\n this.updateRange([calendar]);\n this.dateDisabled = this.isDateDisabled(this.currentDate);\n e.preventDefault();\n };\n DateRangePicker.prototype.inputHandler = function (e) {\n switch (e.action) {\n case 'altDownArrow':\n if (!this.isPopupOpen()) {\n if (this.inputElement.value === '') {\n this.clear();\n this.changeTrigger(e);\n this.clearRange();\n }\n this.show(null, e);\n this.isRangeIconClicked = false;\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.calendarFocus();\n }\n }\n this.isKeyPopup = true;\n }\n break;\n case 'escape':\n if (this.isPopupOpen()) {\n this.hide(e);\n }\n break;\n case 'enter':\n if (document.activeElement === this.inputElement) {\n this.inputBlurHandler(e);\n this.hide(e);\n }\n break;\n case 'tab':\n if (document.activeElement === this.inputElement && this.isPopupOpen()) {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n };\n DateRangePicker.prototype.bindCalendarCellEvents = function (calendar) {\n var tdCells;\n if (calendar) {\n tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n }\n else {\n tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n }\n for (var _i = 0, tdCells_1 = tdCells; _i < tdCells_1.length; _i++) {\n var cell = tdCells_1[_i];\n EventHandler.clearEvents(cell);\n var disabledCell = cell.classList.contains(DISABLED$2) || cell.classList.contains(DATEDISABLED);\n if (!disabledCell && !cell.classList.contains(WEEKNUMBER$2)) {\n if (!this.isMobile) {\n EventHandler.add(cell, 'mouseover', this.hoverSelection, this);\n }\n EventHandler.add(cell, 'mousedown', this.selectRange, this);\n }\n }\n };\n DateRangePicker.prototype.removeFocusedDate = function () {\n var isDate = !isNullOrUndefined(this.startValue) || !isNullOrUndefined(this.endValue);\n var focusedDate = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' .' + FOCUSDATE);\n for (var _i = 0, focusedDate_1 = focusedDate; _i < focusedDate_1.length; _i++) {\n var ele = focusedDate_1[_i];\n var today = new Date();\n var eleDate = this.getIdValue(null, ele);\n if ((this.depth === 'Month' && this.currentView() === 'Month' &&\n (!ele.classList.contains(TODAY$2) || (ele.classList.contains(TODAY$2) && isDate)))\n || (this.depth === 'Year' && this.currentView() === 'Year' &&\n ((!this.isSameMonth(today, eleDate) && !this.isSameYear(today, eleDate)) || isDate))\n || (this.depth === 'Decade' && this.currentView() === 'Decade' &&\n (!this.isSameYear(today, eleDate) || isDate))) {\n ele.classList.remove(FOCUSDATE);\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(ENDDATE)) {\n ele.removeAttribute('aria-label');\n }\n }\n }\n };\n DateRangePicker.prototype.hoverSelection = function (event, element) {\n var currentElement = element || event.currentTarget;\n var currentDate = this.getIdValue(null, currentElement);\n if (!isNullOrUndefined(this.startValue) && +this.startValue >= +this.min && +this.startValue <= +this.max) {\n if ((!this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)\n && isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue))\n || (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue))) {\n var tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n for (var _i = 0, tdCells_2 = tdCells; _i < tdCells_2.length; _i++) {\n var ele = tdCells_2[_i];\n var isDisabledCell = (!ele.classList.contains(DISABLED$2) || ele.classList.contains(DATEDISABLED));\n if (!ele.classList.contains(WEEKNUMBER$2) && isDisabledCell) {\n var eleDate = this.getIdValue(null, ele);\n var startDateValue = new Date(+this.startValue);\n var eleDateValue = new Date(+eleDate);\n if (eleDateValue.setHours(0, 0, 0, 0) >= startDateValue.setHours(0, 0, 0, 0) && +eleDate <= +currentDate) {\n addClass([ele], RANGEHOVER);\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n }\n }\n }\n }\n };\n DateRangePicker.prototype.isSameStartEnd = function (startVal, endVal) {\n var isSame = false;\n if (this.depth === 'Month') {\n if ((startVal).setHours(0, 0, 0, 0) === (endVal).setHours(0, 0, 0, 0)) {\n isSame = true;\n }\n }\n else if (this.depth === 'Year') {\n if ((startVal.getFullYear() === endVal.getFullYear()) &&\n (startVal.getMonth() === endVal.getMonth())) {\n isSame = true;\n }\n }\n else if (this.depth === 'Decade') {\n if (startVal.getFullYear() === endVal.getFullYear()) {\n isSame = true;\n }\n }\n return isSame;\n };\n DateRangePicker.prototype.updateRange = function (elementCollection) {\n if (!isNullOrUndefined(this.startValue)) {\n for (var _i = 0, elementCollection_1 = elementCollection; _i < elementCollection_1.length; _i++) {\n var calendar = elementCollection_1[_i];\n var tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n for (var _a = 0, tdCells_3 = tdCells; _a < tdCells_3.length; _a++) {\n var ele = tdCells_3[_a];\n if (!ele.classList.contains(WEEKNUMBER$2) && !ele.classList.contains(DISABLED$2)) {\n var eleDate = this.getIdValue(null, ele);\n var eleDateValue = this.getIdValue(null, ele);\n if (!isNullOrUndefined(this.endValue)) {\n if (this.currentView() === this.depth &&\n +eleDateValue.setHours(0, 0, 0, 0) >= +new Date(+this.startValue).setHours(0, 0, 0, 0)\n && +eleDateValue.setHours(0, 0, 0, 0) <= +new Date(+this.endValue).setHours(0, 0, 0, 0) &&\n !this.isSameStartEnd(new Date(+this.startValue), new Date(+this.endValue)) &&\n +new Date(+this.startValue).setHours(0, 0, 0, 0) >= +this.min\n && +new Date(+this.endValue).setHours(0, 0, 0, 0) <= +this.max\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], RANGEHOVER);\n }\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n if (ele.classList.contains(SELECTED$3) && ele.classList.contains(ENDDATE) &&\n (+eleDateValue !== +this.endValue)) {\n removeClass([ele], [SELECTED$3]);\n removeClass([ele], [ENDDATE]);\n }\n if (ele.classList.contains(RANGEHOVER) && (+eleDateValue > +this.endValue)) {\n removeClass([ele], [RANGEHOVER]);\n }\n if (!ele.classList.contains(OTHERMONTH$2)) {\n var startDateValue = new Date(+this.startValue);\n var eleDateValue_1 = new Date(+eleDate);\n if (this.currentView() === this.depth &&\n +eleDateValue_1.setHours(0, 0, 0, 0) === +startDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue_1.setHours(0, 0, 0, 0) >= +startDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [STARTDATE, SELECTED$3]);\n this.addSelectedAttributes(ele, this.startValue, true);\n }\n var endDateValue = new Date(+this.endValue);\n if (this.currentView() === 'Year') {\n eleDateValue_1 = new Date(eleDateValue_1.getFullYear(), eleDateValue_1.getMonth() + 1, 0);\n }\n else if (this.currentView() === 'Decade') {\n eleDateValue_1 = new Date(eleDateValue_1.getFullYear(), 11, 31);\n }\n if (this.currentView() === this.depth &&\n !isNullOrUndefined(this.endValue) &&\n +eleDateValue_1.setHours(0, 0, 0, 0) === +endDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue_1.setHours(0, 0, 0, 0) <= +endDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [ENDDATE, SELECTED$3]);\n this.addSelectedAttributes(ele, this.startValue, false);\n }\n if (+eleDate === +this.startValue && !isNullOrUndefined(this.endValue) && +eleDate === +this.endValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n }\n }\n }\n }\n };\n DateRangePicker.prototype.checkMinMaxDays = function () {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n if (!this.isMobile) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + LEFTCALENDER));\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + RIGHTCALENDER));\n }\n else {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n }\n };\n DateRangePicker.prototype.rangeArgs = function (e) {\n var inputValue;\n var range;\n var startDate = !isNullOrUndefined(this.startValue) ?\n this.globalize.formatDate(this.startValue, {\n format: this.formatString, type: 'date', skeleton: 'yMd'\n }) : null;\n var endDate = !isNullOrUndefined(this.endValue) ?\n this.globalize.formatDate(this.endValue, {\n format: this.formatString, type: 'date', skeleton: 'yMd'\n }) : null;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n inputValue = startDate + ' ' + this.separator + ' ' + endDate;\n range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n }\n else {\n inputValue = '';\n range = 0;\n }\n var args = {\n value: this.value,\n startDate: this.startValue,\n endDate: this.endValue,\n daySpan: range,\n event: e || null,\n element: this.element,\n isInteracted: !isNullOrUndefined(e),\n text: inputValue\n };\n return args;\n };\n DateRangePicker.prototype.otherMonthSelect = function (ele, isStartDate, sameDate) {\n var value = +this.getIdValue(null, ele);\n var dateIdString = '*[id^=\"/id\"]:not(.e-other-month)'.replace('/id', '' + value);\n var tdCell = this.popupObj && this.popupObj.element.querySelector(dateIdString);\n if (!isNullOrUndefined(tdCell)) {\n if (isStartDate) {\n addClass([tdCell], [STARTDATE, SELECTED$3]);\n this.addSelectedAttributes(tdCell, this.startValue, true);\n }\n else {\n addClass([tdCell], [ENDDATE, SELECTED$3]);\n this.addSelectedAttributes(tdCell, this.endValue, true);\n }\n if (sameDate) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n };\n DateRangePicker.prototype.selectRange = function (event, element) {\n var leftCalendar;\n var rightCalendar;\n if (event) {\n event.preventDefault();\n }\n var date = isNullOrUndefined(event) ? this.getIdValue(null, element)\n : this.getIdValue(event, null);\n var y = date.getFullYear();\n var m = date.getMonth();\n var firstDay = new Date(y, m, 1);\n var lastDay = new Date(y, m + 1, 0);\n var firstMonth = new Date(y, 0, 1);\n var lastMonth = new Date(y, 11, 31);\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n if (!this.isMobile || this.isMobile && !this.endButton.element.classList.contains(ACTIVE$1)) {\n this.removeSelection();\n }\n }\n else if (this.isMobile && this.startButton.element.classList.contains(ACTIVE$1)) {\n this.removeSelection();\n }\n var ele = element || event.currentTarget;\n if (isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.previousStartValue)) {\n date.setHours(this.previousStartValue.getHours());\n date.setMinutes(this.previousStartValue.getMinutes());\n date.setSeconds(this.previousStartValue.getSeconds());\n }\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.endValue = null;\n this.setValue();\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH$2)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n this.applyButton.disabled = true;\n this.applyButton.element.disabled = true;\n if (this.isMobile) {\n this.endButton.element.classList.add(ACTIVE$1);\n this.startButton.element.classList.remove(ACTIVE$1);\n this.endButton.element.removeAttribute('disabled');\n this.selectableDates();\n }\n this.trigger('select', this.rangeArgs(event));\n }\n else {\n if (+date === +this.startValue || +date > +this.startValue) {\n if (+date === +this.startValue && !isNullOrUndefined(this.minDays) && this.minDays > 1) {\n return;\n }\n this.endValue = null;\n this.setValue();\n if (this.isMobile || element) {\n this.hoverSelection(event, element);\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n date.setHours(this.previousEndValue.getHours());\n date.setMinutes(this.previousEndValue.getMinutes());\n date.setSeconds(this.previousEndValue.getSeconds());\n }\n this.endValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? lastDay : lastMonth;\n this.setValue();\n var endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n if (this.isMobile) {\n this.startButton.element.classList.remove(ACTIVE$1);\n this.endButton.element.classList.add(ACTIVE$1);\n for (var _i = 0, endEle_1 = endEle; _i < endEle_1.length; _i++) {\n var ele_1 = endEle_1[_i];\n ele_1.removeAttribute('aria-label');\n if (!ele_1.classList.contains(STARTDATE)) {\n ele_1.setAttribute('aria-selected', 'false');\n removeClass([ele_1], [ENDDATE, SELECTED$3]);\n }\n else {\n this.addSelectedAttributes(ele_1, this.startValue, true);\n removeClass([ele_1], [ENDDATE]);\n }\n }\n }\n addClass([ele], ENDDATE);\n if (+this.endValue === +this.startValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n else {\n this.addSelectedAttributes(ele, this.endValue, false);\n }\n if (ele.classList.contains(OTHERMONTH$2)) {\n if (+this.endValue === +this.startValue) {\n this.otherMonthSelect(ele, false, true);\n }\n else {\n this.otherMonthSelect(ele, false);\n }\n }\n endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (var _a = 0, endEle_2 = endEle; _a < endEle_2.length; _a++) {\n var ele_2 = endEle_2[_a];\n if (ele_2.classList.contains(STARTDATE)) {\n removeClass([ele_2], [RANGEHOVER]);\n }\n }\n this.applyButton.disabled = false;\n this.applyButton.element.disabled = false;\n if (!this.isMobile) {\n this.removeClassDisabled();\n }\n if (!isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n this.trigger('select', this.rangeArgs(event));\n }\n else if (+date < +this.startValue) {\n this.removeClassDisabled();\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.setValue();\n this.removeSelectedAttributes();\n removeClass(this.popupObj.element.querySelectorAll('.' + STARTDATE), [STARTDATE, SELECTED$3]);\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH$2)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n }\n }\n if (event) {\n leftCalendar = closest(event.target, '.' + LEFTCALENDER);\n }\n if (!isNullOrUndefined(leftCalendar)) {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (event) {\n rightCalendar = event && closest(event.target, '.' + RIGHTCALENDER);\n }\n if (!isNullOrUndefined(rightCalendar)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n }\n addClass([ele], SELECTED$3);\n this.calendarIconEvent();\n this.updateHeader();\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.selectableDates = function () {\n if (!isNullOrUndefined(this.startValue)) {\n var tdCells = this.calendarElement.querySelectorAll('.' + CALENDAR + ' td');\n var isStartDate = false;\n if (this.currentView() === this.depth) {\n for (var _i = 0, tdCells_4 = tdCells; _i < tdCells_4.length; _i++) {\n var ele = tdCells_4[_i];\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER$2)) {\n if (!ele.classList.contains(DISABLED$2)) {\n var eleDate = this.getIdValue(null, ele);\n if (+eleDate < +this.startValue) {\n addClass([ele], [DATEDISABLED, DISABLED$2, OVERLAY$2]);\n EventHandler.clearEvents(ele);\n continue;\n }\n else {\n break;\n }\n }\n }\n if (ele.classList.contains(STARTDATE) && !ele.classList.contains(OTHERMONTH$2)) {\n isStartDate = true;\n break;\n }\n }\n if (isStartDate) {\n if (!this.previousIcon.classList.contains(DISABLED$2)) {\n addClass([this.previousIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n }\n else {\n for (var _a = 0, tdCells_5 = tdCells; _a < tdCells_5.length; _a++) {\n var ele = tdCells_5[_a];\n var startMonth = this.startValue.getMonth();\n var startYear = this.startValue.getFullYear();\n var element = this.getIdValue(null, ele);\n if (!this.startButton.element.classList.contains(ACTIVE$1) && ((this.currentView() === 'Year' &&\n (element.getMonth() < startMonth) && (element.getFullYear() <= startYear))\n || (this.currentView() === 'Decade' && (element.getMonth() <= startMonth) &&\n (element.getFullYear() < startYear)))) {\n addClass([ele], [DISABLED$2]);\n }\n else {\n break;\n }\n }\n if (tdCells[0].classList.contains(DISABLED$2)) {\n this.previousIconHandler(true);\n }\n else if (tdCells[tdCells.length - 1].classList.contains(DISABLED$2)) {\n this.nextIconHandler(true);\n }\n }\n }\n };\n DateRangePicker.prototype.updateMinMaxDays = function (calendar) {\n if ((!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) ||\n (this.isMobile && this.endButton && this.endButton.element.classList.contains(ACTIVE$1))) {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n var startValueSelected = this.removeTimeValueFromDate(this.startValue);\n var minDate = new Date(new Date(+startValueSelected).setDate(startValueSelected.getDate() + (this.minDays - 1)));\n var maxDate = new Date(new Date(+startValueSelected).setDate(startValueSelected.getDate() + (this.maxDays - 1)));\n minDate = (!isNullOrUndefined(this.minDays) && this.minDays > 0) ? minDate : null;\n maxDate = (!isNullOrUndefined(this.maxDays) && this.maxDays > 0) ? maxDate : null;\n if (this.currentView() === 'Year') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear(), minDate.getMonth(), 0);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), maxDate.getMonth(), 1);\n }\n else if (this.currentView() === 'Decade') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear() - 1, 11, 1);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), 0, 1);\n }\n var tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n var maxEle = void 0;\n for (var _i = 0, tdCells_6 = tdCells; _i < tdCells_6.length; _i++) {\n var ele = tdCells_6[_i];\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER$2)) {\n var eleDate = this.getIdValue(null, ele);\n eleDate = this.removeTimeValueFromDate(eleDate);\n if (!isNullOrUndefined(minDate) && +eleDate === +minDate && ele.classList.contains(DISABLED$2)) {\n minDate.setDate(minDate.getDate() + 1);\n }\n if (!ele.classList.contains(DISABLED$2)) {\n if (+eleDate <= +startValueSelected) {\n continue;\n }\n if (!isNullOrUndefined(minDate) && +eleDate < +minDate) {\n addClass([ele], [DATEDISABLED, DISABLED$2, OVERLAY$2]);\n EventHandler.clearEvents(ele);\n }\n if (!isNullOrUndefined(maxDate) && +eleDate > +maxDate) {\n addClass([ele], [DATEDISABLED, DISABLED$2, OVERLAY$2]);\n this.isMaxDaysClicked = true;\n EventHandler.clearEvents(ele);\n if (isNullOrUndefined(maxEle) && !ele.classList.contains(OTHERMONTH$2)) {\n maxEle = ele;\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(maxEle)) {\n if (this.isMobile) {\n if (!this.nextIcon.classList.contains(DISABLED$2)) {\n addClass([this.nextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n else {\n var calendar_1 = closest(maxEle, '.' + RIGHTCALENDER);\n calendar_1 = isNullOrUndefined(calendar_1) ? this.leftCalendar : calendar_1;\n var isLeftCalendar = calendar_1.classList.contains(LEFTCALENDER);\n if (!isLeftCalendar) {\n if (!this.rightCalNextIcon.classList.contains(DISABLED$2)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n else {\n if (!this.rightCalNextIcon.classList.contains(DISABLED$2)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (!this.leftCalNextIcon.classList.contains(DISABLED$2)) {\n addClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (!this.rightCalPrevIcon.classList.contains(DISABLED$2)) {\n addClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n }\n }\n }\n }\n else {\n this.isMaxDaysClicked = false;\n }\n };\n DateRangePicker.prototype.removeTimeValueFromDate = function (value) {\n var dateValue = new Date(value.getFullYear(), value.getMonth(), value.getDate());\n return dateValue;\n };\n DateRangePicker.prototype.removeClassDisabled = function () {\n var tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td' + '.' + DATEDISABLED);\n for (var _i = 0, tdCells_7 = tdCells; _i < tdCells_7.length; _i++) {\n var ele = tdCells_7[_i];\n if (ele.classList.contains(DATEDISABLED)) {\n removeClass([ele], [DATEDISABLED, DISABLED$2, OVERLAY$2]);\n EventHandler.add(ele, 'click', this.selectRange, this);\n if (!this.isMobile) {\n EventHandler.add(ele, 'mouseover', this.hoverSelection, this);\n }\n }\n }\n if (this.isMobile) {\n if (this.nextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.nextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (this.previousIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.previousIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n else {\n if (this.rightCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (this.rightCalPrevIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (this.leftCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n };\n DateRangePicker.prototype.updateHeader = function () {\n var format = { type: 'date', skeleton: 'yMMMd' };\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n var range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = range.toString() + ' ' + this.l10n.getConstant('days');\n }\n else {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n if (!isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n }\n }\n if ((this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue)) ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue))\n && +this.startValue > +this.endValue))) {\n if (!this.isMobile) {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n }\n if (this.popupObj.element.querySelector('#custom_range')) {\n this.popupObj.element.querySelector('#custom_range').textContent =\n this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange') : 'Custom Range';\n }\n };\n DateRangePicker.prototype.removeSelection = function () {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.removeSelectedAttributes();\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED$3).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED$3), [STARTDATE, ENDDATE, SELECTED$3]);\n }\n if (this.popupObj.element.querySelectorAll('.' + FOCUSDATE).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + FOCUSDATE), FOCUSDATE);\n }\n if (this.popupObj.element.querySelectorAll('.' + RANGEHOVER).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + RANGEHOVER), [RANGEHOVER]);\n }\n }\n };\n DateRangePicker.prototype.addSelectedAttributes = function (ele, date, isStartDate, sameDate) {\n if (ele) {\n var title = this.globalize.formatDate(date, { type: 'date', skeleton: 'full' });\n if (!isNullOrUndefined(sameDate) && sameDate) {\n ele.setAttribute('aria-label', 'The current start and end date is ' + '' + title);\n }\n else {\n ele.setAttribute('aria-label', 'The current ' + (isStartDate ? 'start' : 'end') + ' date is ' + '' + title);\n }\n ele.setAttribute('aria-selected', 'true');\n }\n };\n DateRangePicker.prototype.removeSelectedAttributes = function () {\n if (this.popupObj) {\n var start = this.popupObj.element.querySelectorAll('.' + STARTDATE);\n for (var _i = 0, start_1 = start; _i < start_1.length; _i++) {\n var ele = start_1[_i];\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n var end = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (var _a = 0, end_1 = end; _a < end_1.length; _a++) {\n var ele = end_1[_a];\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n }\n };\n DateRangePicker.prototype.updateCalendarElement = function (calendar) {\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.calendarElement = this.leftCalendar;\n this.currentDate = this.leftCalCurrentDate;\n this.previousIcon = this.leftCalPrevIcon;\n this.nextIcon = this.leftCalNextIcon;\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.currentDate = this.rightCalCurrentDate;\n this.previousIcon = this.rightCalPrevIcon;\n this.nextIcon = this.rightCalNextIcon;\n }\n this.contentElement = calendar.querySelector('.' + CONTENT$1);\n this.tableBodyElement = select('.' + CONTENT$1 + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT$1).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER$1 + ' .' + TITLE$1);\n this.headerElement = calendar.querySelector('.' + HEADER$1);\n };\n DateRangePicker.prototype.navPrevMonth = function (e) {\n e.preventDefault();\n var ele = closest(e.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(e.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigatePrevious(e);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.deviceNavigation = function (ele) {\n this.deviceCalendarEvent();\n this.updateRange([this.popupObj.element.querySelector('.' + CALENDAR)]);\n if (this.endButton.element.classList.contains(ACTIVE$1)) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n if (this.endButton.element.classList.contains(ACTIVE$1)) {\n this.selectableDates();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.updateControl = function (calendar, customDate) {\n if (customDate === void 0) { customDate = null; }\n if (calendar.classList.contains(RIGHTCALENDER)) {\n this.rightCalCurrentDate = new Date(+(customDate ? customDate : this.currentDate));\n }\n else {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n this.calendarIconEvent();\n if ((((this.depth === 'Month')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-month')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-month'))\n || ((this.depth === 'Year')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-year')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-year'))\n || ((this.depth === 'Decade')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-decade')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-decade')))\n || this.isMobile) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange([calendar]);\n };\n DateRangePicker.prototype.navNextMonth = function (event) {\n event.preventDefault();\n var ele = closest(event.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(event.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigateNext(event);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n };\n DateRangePicker.prototype.isPopupOpen = function () {\n if (!isNullOrUndefined(this.popupObj) && this.popupObj.element.classList.contains(POPUP$1)) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.createRangeHeader = function () {\n var labelContainer = this.createElement('div', { className: STARTENDCONTAINER });\n if (!this.isMobile) {\n var startLabel = this.createElement('a', { className: STARTLABEL });\n var endLabel = this.createElement('a', { className: ENDLABEL });\n var changeIcon = this.createElement('span', { className: CHANGEICON });\n attributes(startLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'Start Date', 'role': 'button' });\n attributes(endLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'End Date', 'role': 'button' });\n labelContainer.appendChild(startLabel);\n labelContainer.appendChild(changeIcon);\n labelContainer.appendChild(endLabel);\n startLabel.textContent = this.l10n.getConstant('startLabel');\n endLabel.textContent = this.l10n.getConstant('endLabel');\n }\n else {\n var endBtn = this.createElement('button', { className: ENDBUTTON });\n var startBtn = this.createElement('button', { className: STARTBUTTON });\n this.startButton = new Button({ content: this.l10n.getConstant('startLabel') }, startBtn);\n this.endButton = new Button({ content: this.l10n.getConstant('endLabel') }, endBtn);\n labelContainer.appendChild(startBtn);\n labelContainer.appendChild(endBtn);\n }\n return labelContainer;\n };\n DateRangePicker.prototype.disableInput = function () {\n if (this.strictMode) {\n if (!isNullOrUndefined(this.previousStartValue) && !isNullOrUndefined(this.previousEndValue)) {\n this.startValue = this.previousStartValue;\n this.endValue = this.previousEndValue;\n this.setValue();\n this.updateInput();\n }\n }\n else {\n this.updateInput();\n this.clearRange();\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.errorClass();\n }\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n this.bindEvents();\n };\n DateRangePicker.prototype.validateMinMax = function () {\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (!(this.min <= this.max)) {\n this.disableInput();\n return;\n }\n if (!isNullOrUndefined(this.minDays) && !isNullOrUndefined(this.maxDays)) {\n if (this.maxDays > 0 && this.minDays > 0 && (this.minDays > this.maxDays)) {\n this.maxDays = null;\n }\n }\n if (!isNullOrUndefined(this.minDays) && this.minDays < 0) {\n this.minDays = null;\n }\n if (!isNullOrUndefined(this.maxDays) && this.maxDays < 0) {\n this.maxDays = null;\n }\n };\n DateRangePicker.prototype.validateRangeStrict = function () {\n if (!isNullOrUndefined(this.startValue)) {\n if (+this.startValue <= +this.min) {\n this.startValue = this.min;\n this.setValue();\n }\n else if (+this.startValue >= +this.min && +this.startValue >= +this.max) {\n this.startValue = this.max;\n }\n }\n if (!isNullOrUndefined(this.endValue)) {\n if (+this.endValue > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else if (+this.endValue < +this.min) {\n this.endValue = this.min;\n this.setValue();\n }\n }\n this.validateMinMaxDays();\n };\n DateRangePicker.prototype.validateRange = function () {\n this.validateMinMaxDays();\n };\n DateRangePicker.prototype.validateMinMaxDays = function () {\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n var range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) && !(range >= this.minDays)) {\n if (this.strictMode) {\n var date = new Date(+this.startValue);\n date.setDate(date.getDate() + (this.minDays - 1));\n if (+date > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else {\n this.endValue = date;\n this.setValue();\n }\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n if ((!isNullOrUndefined(this.maxDays) && this.maxDays > 0) && !(range <= this.maxDays)) {\n if (this.strictMode) {\n this.endValue = new Date(+this.startValue);\n this.endValue.setDate(this.endValue.getDate() + (this.maxDays - 1));\n this.setValue();\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n };\n DateRangePicker.prototype.renderCalendar = function () {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(CALENDAR);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL$1);\n }\n attributes(this.calendarElement, { 'data-role': 'calendar' });\n _super.prototype.createHeader.call(this);\n _super.prototype.createContent.call(this);\n };\n DateRangePicker.prototype.isSameMonth = function (start, end) {\n if (start.getMonth() === end.getMonth() && start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.isSameYear = function (start, end) {\n if (start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.isSameDecade = function (start, end) {\n var startYear = start.getFullYear();\n var endYear = end.getFullYear();\n if ((startYear - (startYear % 10)) === (endYear - (endYear % 10))) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.startMonthCurrentDate = function () {\n if (this.isSameMonth(this.min, this.max) || +this.currentDate > +this.max || this.isSameMonth(this.currentDate, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (this.currentDate < this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n };\n DateRangePicker.prototype.selectNextMonth = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameMonth(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() + 1);\n return;\n }\n if ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setDate(1);\n var month = this.currentDate.getMonth() + 1;\n this.currentDate.setMonth(month);\n }\n };\n DateRangePicker.prototype.selectNextYear = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameYear(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setMonth(0);\n var yr = this.currentDate.getFullYear() + 1;\n this.currentDate.setFullYear(yr);\n return;\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setMonth(0);\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 1);\n }\n };\n DateRangePicker.prototype.selectNextDecade = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameDecade(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n var decyr = this.currentDate.getFullYear() + 10;\n this.currentDate.setFullYear(decyr);\n return;\n }\n if (((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 10);\n }\n };\n DateRangePicker.prototype.selectStartMonth = function () {\n if (!isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.max) && this.isSameMonth(this.startValue, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (!(this.startValue >= this.min && this.startValue <= this.max)\n || this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n else {\n this.currentDate = new Date(+this.startValue);\n }\n }\n else {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.startMonthCurrentDate();\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.startMonthCurrentDate();\n };\n DateRangePicker.prototype.createCalendar = function () {\n var calendarContainer = this.createElement('div', { className: CALENDARCONTAINER });\n if (!this.isMobile) {\n this.selectStartMonth();\n this.renderCalendar();\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.calendarElement.classList.add(LEFTCALENDER);\n this.leftCalPrevIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + PREVICON$1);\n this.leftCalNextIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + NEXTICON$1);\n this.leftTitle = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + TITLE$1);\n remove(this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + ICONCONTAINER$1));\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER$1).appendChild(this.leftCalNextIcon);\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER$1).appendChild(this.leftCalPrevIcon);\n prepend([this.leftCalPrevIcon], this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER$1));\n this.leftCalendar = this.calendarElement;\n var leftContainer = this.createElement('div', { className: LEFTCONTAINER });\n var rightContainer = this.createElement('div', { className: RIGHTCONTAINER });\n leftContainer.appendChild(this.leftCalendar);\n calendarContainer.appendChild(leftContainer);\n if (!this.isMobile) {\n EventHandler.add(this.leftTitle, 'click', this.leftNavTitle, this);\n }\n if (this.start === 'Month') {\n this.selectNextMonth();\n }\n if (this.start === 'Year') {\n this.selectNextYear();\n }\n if (this.start === 'Decade') {\n this.selectNextDecade();\n }\n this.renderCalendar();\n this.rightCalCurrentDate = new Date(+this.currentDate);\n addClass([this.calendarElement], RIGHTCALENDER);\n this.rightCalendar = this.calendarElement;\n removeClass([this.leftCalendar && this.leftCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n removeClass([this.rightCalendar && this.rightCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n this.rightCalPrevIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + PREVICON$1);\n this.rightCalNextIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + NEXTICON$1);\n this.rightTitle = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + TITLE$1);\n remove(this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + ICONCONTAINER$1));\n this.calendarElement.querySelector('table').setAttribute('tabindex', '0');\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER$1).appendChild(this.rightCalNextIcon);\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER$1).appendChild(this.rightCalPrevIcon);\n prepend([this.rightCalPrevIcon], this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER$1));\n rightContainer.appendChild(this.rightCalendar);\n calendarContainer.appendChild(rightContainer);\n if (!this.isMobile) {\n EventHandler.add(this.rightTitle, 'click', this.rightNavTitle, this);\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.currentDate = new Date(+this.startValue);\n }\n _super.prototype.validateDate.call(this);\n _super.prototype.minMaxUpdate.call(this);\n _super.prototype.render.call(this);\n var prevIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + PREVICON$1);\n var nextIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + NEXTICON$1);\n remove(this.calendarElement.querySelector('.' + CALENDAR + ' .' + ICONCONTAINER$1));\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER$1).appendChild(nextIcon);\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER$1).appendChild(prevIcon);\n prepend([prevIcon], this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER$1));\n this.deviceCalendar = this.calendarElement;\n calendarContainer.appendChild(this.calendarElement);\n this.headerTitleElement = this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER$1 + ' .' + TITLE$1);\n }\n return calendarContainer;\n };\n DateRangePicker.prototype.leftNavTitle = function (e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.leftCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n };\n DateRangePicker.prototype.calendarNavigation = function (e, element) {\n this.table = element.querySelector('table');\n this.headerTitleElement = element.querySelector('.e-title');\n this.tableBodyElement = element.querySelector('tbody');\n this.tableHeadElement = element.querySelector('thead');\n this.contentElement = element.querySelector('.e-content');\n this.updateCalendarElement(element);\n _super.prototype.navigateTitle.call(this, e);\n this.updateNavIcons();\n };\n DateRangePicker.prototype.rightNavTitle = function (e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.rightCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n };\n DateRangePicker.prototype.clickEventEmitter = function (e) {\n if (!this.isMobile) {\n if (closest(e.target, '.e-calendar.e-left-calendar')) {\n this.calendarElement = this.leftCalendar;\n this.updateCalendarElement(this.leftCalendar);\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.updateCalendarElement(this.rightCalendar);\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n * @private\n * @hidden\n */\n DateRangePicker.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n DateRangePicker.prototype.getCalendarView = function (view) {\n if (view === 'Year') {\n return 'Year';\n }\n else if (view === 'Decade') {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n DateRangePicker.prototype.navigatedEvent = function (e) {\n this.trigger('navigated', this.navigatedArgs);\n if (!isNullOrUndefined(this.popupObj)) {\n var element = void 0;\n var view = this.getCalendarView(this.currentView());\n if (this.isMobile) {\n if (view === this.depth) {\n this.bindCalendarCellEvents();\n this.deviceNavigation();\n this.removeFocusedDate();\n this.checkMinMaxDays();\n }\n else {\n this.selectableDates();\n }\n }\n else {\n if (!this.isMobile && view === this.depth) {\n element = this.calendarElement.classList.contains('e-left-calendar') ? this.leftCalendar : this.rightCalendar;\n if (element === this.leftCalendar && ((e && !e.currentTarget.children[0].classList.contains('e-icons'))\n || (!isNullOrUndefined(this.controlDown)))) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.leftCalCurrentDate;\n this.updateCalendarElement(this.leftCalendar);\n this.updateControl(this.leftCalendar);\n this.updateCalendarElement(this.rightCalendar);\n _super.prototype.navigateTo.call(this, view, this.rightCalCurrentDate);\n var customDate = this.rightCalCurrentDate ? this.rightCalCurrentDate : this.currentDate;\n this.updateControl(this.rightCalendar, customDate);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n else if (e && !e.currentTarget.children[0].classList.contains('e-icons')\n || (!isNullOrUndefined(this.controlDown))) {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.rightCalCurrentDate;\n this.updateCalendarElement(this.rightCalendar);\n this.updateControl(this.rightCalendar);\n this.updateCalendarElement(this.leftCalendar);\n if (this.startValue && isNullOrUndefined(this.endValue)) {\n if (view === 'Month' && this.startValue.getMonth() < this.rightCalCurrentDate.getMonth() &&\n this.startValue.getFullYear() <= this.rightCalCurrentDate.getFullYear()) {\n _super.prototype.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else if (view === 'Year' && this.startValue.getFullYear() < this.rightCalCurrentDate.getFullYear()) {\n _super.prototype.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else {\n _super.prototype.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n }\n else {\n _super.prototype.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n this.updateControl(this.leftCalendar);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n this.checkMinMaxDays();\n }\n else {\n this.updateNavIcons();\n this.calendarIconEvent();\n }\n }\n }\n };\n DateRangePicker.prototype.createControl = function () {\n var controlContainer = this.createElement('div', { className: RANGECONTAINER });\n var headerContainer = this.createElement('div', { className: RANGEHEADER });\n if (this.isMobile && this.fullScreenMode) {\n var modelHeaderIconWrapper = this.createElement('div', { className: 'e-model-header-wrapper' });\n var modelCloseIcon = this.createElement('span', { className: 'e-popup-close' });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelRangeCloseHandler, this);\n var modelApplyButton = this.createElement('span', { className: 'e-apply' });\n EventHandler.add(modelApplyButton, 'mousedown touchstart', this.applyFunction, this);\n modelHeaderIconWrapper.appendChild(modelCloseIcon);\n modelHeaderIconWrapper.appendChild(modelApplyButton);\n headerContainer.appendChild(modelHeaderIconWrapper);\n }\n var labelContainer = this.createRangeHeader();\n headerContainer.appendChild(labelContainer);\n var daySpan = this.createElement('div', { className: DAYSPAN });\n attributes(daySpan, { 'aria-label': 'Selected Days' });\n daySpan.textContent = this.l10n.getConstant('selectedDays');\n headerContainer.appendChild(daySpan);\n var separator = this.createElement('div', { className: SEPARATOR });\n var calendarContainer = this.createCalendar();\n controlContainer.appendChild(headerContainer);\n controlContainer.appendChild(separator);\n controlContainer.appendChild(calendarContainer);\n var footerSection = this.createElement('div', { className: FOOTER$1 });\n var cancelBtn = this.createElement('button', { className: CANCEL + ' ' + FLAT$1 + ' ' + CSS$1 });\n var applyBtn = this.createElement('button');\n addClass([applyBtn], [APPLY, FLAT$1, PRIMARY$1, CSS$1]);\n footerSection.appendChild(applyBtn);\n footerSection.appendChild(cancelBtn);\n var enable = !isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue);\n this.cancelButton = new Button({ content: this.l10n.getConstant('cancelText') }, cancelBtn);\n this.applyButton = new Button({ content: this.l10n.getConstant('applyText'), disabled: !enable }, applyBtn);\n EventHandler.add(applyBtn, 'click', this.applyFunction, this);\n EventHandler.add(cancelBtn, 'click', this.cancelFunction, this);\n this.popupWrapper.appendChild(controlContainer);\n if (!this.isMobile) {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.createPresets();\n this.listRippleEffect();\n addClass([controlContainer], RANGEBORDER);\n addClass([this.popupWrapper], 'e-preset-wrapper');\n var presets = this.popupWrapper.querySelector('.' + PRESETS);\n presets.style.height = this.popupWrapper.querySelector('.' + RANGECONTAINER).getBoundingClientRect().height + 'px';\n }\n }\n this.popupWrapper.appendChild(footerSection);\n if (this.isMobile) {\n this.deviceHeaderUpdate();\n }\n this.renderPopup();\n };\n DateRangePicker.prototype.modelRangeCloseHandler = function (e) {\n this.hide();\n };\n DateRangePicker.prototype.cancelFunction = function (eve) {\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n eve.preventDefault();\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.startValue = null;\n this.endValue = null;\n this.removeSelection();\n this.hide(eve);\n };\n DateRangePicker.prototype.deviceHeaderUpdate = function () {\n if (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.endButton.element.setAttribute('disabled', '');\n this.startButton.element.classList.add(ACTIVE$1);\n }\n else if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.classList.add(ACTIVE$1);\n }\n };\n DateRangePicker.prototype.applyFunction = function (eve) {\n var isValueChanged = false;\n if (eve.type !== 'touchstart') {\n eve.preventDefault();\n }\n if (this.closeEventArgs && this.closeEventArgs.cancel) {\n this.startValue = this.popupWrapper.querySelector('.e-start-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-start-date'));\n this.endValue = this.popupWrapper.querySelector('.e-end-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-end-date'));\n this.setValue();\n }\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n if (eve.type !== 'touchstart' &&\n this.closeEventArgs && !this.closeEventArgs.cancel) {\n eve.preventDefault();\n }\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n if (!(this.previousStartValue && this.previousEndValue &&\n this.startValue.getDate() === this.previousStartValue.getDate() &&\n this.startValue.getMonth() === this.previousStartValue.getMonth() &&\n this.startValue.getFullYear() === this.previousStartValue.getFullYear()\n && this.endValue.getDate() === this.previousEndValue.getDate() &&\n this.endValue.getMonth() === this.previousEndValue.getMonth()\n && this.endValue.getFullYear() === this.previousEndValue.getFullYear())) {\n Input.setValue(this.rangeArgs(eve).text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n this.previousEleValue = this.inputElement.value;\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n isValueChanged = true;\n }\n this.changeTrigger(eve);\n this.hide(eve ? eve : null);\n this.errorClass();\n isValueChanged = true;\n }\n else {\n this.hide(eve ? eve : null);\n }\n if (!(closest(eve.target, '.' + INPUTCONTAINER$1))\n && (!isValueChanged)) {\n this.focusOut();\n }\n if (!this.isMobile) {\n this.isKeyPopup = false;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.children[1].focus();\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyConfigs: this.keyInputConfigs,\n keyAction: this.popupKeyActionHandle.bind(this)\n });\n }\n }\n };\n DateRangePicker.prototype.onMouseClick = function (event, item) {\n if (event.type === 'touchstart') {\n return;\n }\n var target = item || event.target;\n var li = closest(target, '.' + LISTCLASS);\n var isClick = li && li.classList.contains(ACTIVE$1);\n if (li && li.classList.contains(LISTCLASS)) {\n this.setListSelection(li, event);\n }\n this.preventFocus = true;\n this.inputElement.focus();\n if (!this.isMobile) {\n this.preventFocus = true;\n if (li && li.classList.contains(LISTCLASS) && li.getAttribute('id') === 'custom_range') {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (!isClick && event.type === 'keydown') {\n this.inputElement.focus();\n }\n }\n }\n };\n DateRangePicker.prototype.onMouseOver = function (event) {\n var li = closest(event.target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS) && !li.classList.contains(HOVER)) {\n addClass([li], HOVER);\n }\n };\n DateRangePicker.prototype.onMouseLeave = function (event) {\n var item = closest(event.target, '.' + HOVER);\n if (!isNullOrUndefined(item)) {\n removeClass([item], HOVER);\n }\n };\n DateRangePicker.prototype.setListSelection = function (li, event) {\n if (li && (!li.classList.contains(ACTIVE$1) || (this.isMobile && li.classList.contains(ACTIVE$1)))) {\n if (this.isMobile && li.classList.contains(ACTIVE$1)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n var values_1 = this.presetsItem[this.activeIndex];\n if (values_1.id === 'custom_range') {\n this.renderCustomPopup();\n return;\n }\n return;\n }\n this.removeListSelection();\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n addClass([li], ACTIVE$1);\n li.setAttribute('aria-selected', 'true');\n var values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.renderCustomPopup();\n }\n else {\n this.applyPresetRange(values, event);\n }\n }\n };\n DateRangePicker.prototype.removeListSelection = function () {\n var item = this.presetElement.querySelector('.' + ACTIVE$1);\n if (!isNullOrUndefined(item)) {\n removeClass([item], ACTIVE$1);\n item.removeAttribute('aria-selected');\n }\n };\n DateRangePicker.prototype.setValue = function () {\n this.modelValue = [this.startValue, this.endValue];\n };\n DateRangePicker.prototype.applyPresetRange = function (values, e) {\n this.hide(null);\n this.presetsItem[this.presetsItem.length - 1].start = null;\n this.presetsItem[this.presetsItem.length - 1].end = null;\n this.startValue = values.start;\n this.endValue = values.end;\n this.setValue();\n this.refreshControl();\n this.trigger('select', this.rangeArgs(e));\n this.changeTrigger(e);\n this.previousEleValue = this.inputElement.value;\n this.isCustomRange = false;\n this.leftCalendar = this.rightCalendar = null;\n if (this.isKeyPopup) {\n this.isRangeIconClicked = false;\n this.inputElement.focus();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.showPopup = function (element, event) {\n this.presetHeight();\n if (this.zIndex === 1000) {\n this.popupObj.show(null, this.element);\n }\n else {\n this.popupObj.show(null, null);\n }\n if (this.isMobile) {\n this.popupObj.refreshPosition();\n }\n };\n DateRangePicker.prototype.renderCustomPopup = function () {\n var _this = this;\n this.isCustomWindow = true;\n this.popupObj.hide();\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: ROOT$2 + ' ' + POPUP$1 });\n this.renderControl();\n this.openEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n date: this.inputElement.value,\n model: this,\n event: event ? event : null,\n appendTo: this.isMobile || Browser.isDevice ? this.mobileRangePopupWrap : document.body\n };\n var eventArgs = this.openEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openEventArgs = eventArgs;\n if (_this.openEventArgs.cancel) {\n return;\n }\n });\n this.openEventArgs.appendTo.appendChild(this.popupWrapper);\n this.showPopup();\n this.isCustomRange = true;\n if (!this.isMobile) {\n this.calendarFocus();\n }\n };\n DateRangePicker.prototype.listRippleEffect = function () {\n for (var _i = 0, _a = this.liCollections; _i < _a.length; _i++) {\n var li = _a[_i];\n rippleEffect(li);\n }\n };\n DateRangePicker.prototype.createPresets = function () {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.presetElement = this.createElement('div', { className: PRESETS, attrs: { 'tabindex': '0' } });\n var listTag = ListBase.createList(this.createElement, this.presetsItem, null, true);\n attributes(listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0', 'aria-label': 'daterangepicker-preset' });\n this.presetElement.appendChild(listTag);\n this.popupWrapper.appendChild(this.presetElement);\n var customElement = this.presetElement.querySelector('#custom_range');\n if (!isNullOrUndefined(customElement)) {\n customElement.textContent = this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange')\n : 'Custom Range';\n }\n this.liCollections = this.presetElement.querySelectorAll('.' + LISTCLASS);\n this.wireListEvents();\n if (this.isMobile) {\n if (this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-range-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement('span', { className: 'e-model-title' });\n modelTitleSpan.textContent = 'Select Preset';\n var modelCloseIcon = this.createElement('span', { className: 'e-popup-close' });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelRangeCloseHandler, this);\n var presetContent = this.presetElement;\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(presetContent);\n this.popupWrapper.insertBefore(modelWrapper, this.popupWrapper.firstElementChild);\n this.presetElement.style.width = '100%';\n }\n else {\n this.presetElement.style.width = this.inputWrapper.container.getBoundingClientRect().width + 'px';\n }\n }\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex > -1) {\n addClass([this.liCollections[this.activeIndex]], ACTIVE$1);\n }\n }\n };\n DateRangePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.presetElement, 'click', this.onMouseClick, this);\n if (!this.isMobile) {\n EventHandler.add(this.presetElement, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.presetElement, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateRangePicker.prototype.unWireListEvents = function () {\n if (!isNullOrUndefined(this.presetElement)) {\n EventHandler.remove(this.presetElement, 'click touchstart', this.onMouseClick);\n if (!this.isMobile) {\n EventHandler.remove(this.presetElement, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.presetElement, 'mouseout', this.onMouseLeave);\n }\n }\n };\n DateRangePicker.prototype.renderPopup = function () {\n var _this = this;\n this.popupWrapper.classList.add('e-control');\n var popupWidth = this.popupWrapper.getBoundingClientRect().width;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass.trim() !== '') {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (this.isMobile && this.isCustomWindow) {\n this.modal = this.createElement('div');\n document.body.appendChild(this.modal);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n relateTo: this.isMobile && this.isCustomWindow ? document.body :\n (!isNullOrUndefined(this.targetElement) ? this.targetElement : this.inputWrapper.container),\n position: (this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'left', Y: 'bottom' } : { X: 'center', Y: 'center' }) :\n this.enableRtl ? { X: 'left', Y: 'bottom' } : { X: 'right', Y: 'bottom' }),\n offsetX: this.isMobile || this.enableRtl ? 0 : -popupWidth,\n offsetY: OFFSETVALUE$1,\n collision: this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'fit' } : { X: 'fit', Y: 'fit' }) : { X: 'fit', Y: 'flip' },\n targetType: this.isMobile && this.isCustomWindow ? 'container' : 'relative',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n open: function () {\n if (_this.isMobile && _this.fullScreenMode) {\n _this.iconRangeRight = _this.calendarElement && window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).cssFloat;\n if (_this.iconRangeRight) {\n _this.touchRangeModule = new Touch(_this.calendarElement.querySelector('.e-content.e-month'), {\n swipe: _this.dateRangeSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector('.e-content.e-month'), 'touchstart', _this.touchStartRangeHandler, _this);\n }\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.element.id, 'aria-controls': _this.inputElement.id });\n if (_this.value) {\n attributes(_this.inputElement, { 'aria-activedescendant': _this.inputElement.id });\n }\n else {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n addClass([_this.inputWrapper.buttons[0]], ACTIVE$1);\n if (!_this.isMobile) {\n if (_this.cancelButton) {\n _this.btnKeyboardModule = new KeyboardEvents(_this.cancelButton.element, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { tab: 'tab', altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n _this.btnKeyboardModule = new KeyboardEvents(_this.applyButton.element, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n }\n if (!isNullOrUndefined(_this.leftCalendar)) {\n if (!_this.isRangeIconClicked) {\n _this.calendarFocus();\n }\n }\n if (!isNullOrUndefined(_this.presetElement)) {\n _this.keyInputConfigs = extend(_this.keyInputConfigs, _this.keyConfigs);\n _this.presetKeyboardModule = new KeyboardEvents(_this.presetElement, {\n eventName: 'keydown',\n keyAction: _this.presetKeyActionHandler.bind(_this),\n keyConfigs: _this.keyInputConfigs\n });\n _this.presetKeyboardModule = new KeyboardEvents(_this.presetElement, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n if (isNullOrUndefined(_this.leftCalendar)) {\n _this.preventBlur = true;\n _this.presetElement.focus();\n }\n else {\n _this.presetElement.setAttribute('tabindex', '-1');\n }\n }\n _this.popupKeyBoardHandler();\n }\n if (_this.isMobile && !Browser.isDevice) {\n EventHandler.add(document, 'keydown', _this.popupCloseHandler, _this);\n }\n },\n close: function () {\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-controls');\n _this.inputElement.removeAttribute('aria-activedescendant');\n removeClass([_this.inputWrapper.buttons[0]], ACTIVE$1);\n if (_this.isRangeIconClicked) {\n _this.inputWrapper.container.children[1].focus();\n }\n if (!isUndefined(_this.presets[0].start && _this.presets[0].end && _this.presets[0].label)) {\n _this.unWireListEvents();\n }\n if (_this.applyButton) {\n _this.applyButton.destroy();\n }\n if (_this.cancelButton) {\n _this.cancelButton.destroy();\n }\n if (_this.isMobile && _this.endButton) {\n _this.endButton.destroy();\n }\n if (_this.isMobile && _this.startButton) {\n _this.startButton.destroy();\n }\n if (!isNullOrUndefined(_this.popupObj)) {\n if (!isNullOrUndefined(_this.popupObj.element.parentElement)) {\n detach(_this.popupObj.element);\n }\n _this.popupObj.destroy();\n _this.popupObj = null;\n }\n if (_this.isMobile && !Browser.isDevice) {\n EventHandler.remove(document, 'keydown', _this.popupCloseHandler);\n }\n }, targetExitViewport: function () {\n var popupEle = _this.popupObj && _this.popupObj.element;\n if (!Browser.isDevice && popupEle && popupEle.getBoundingClientRect().height < window.innerHeight) {\n _this.hide();\n }\n }\n });\n if (this.isMobile) {\n this.popupObj.element.classList.add(DEVICE$1);\n }\n if (this.isMobile && this.isCustomWindow) {\n addClass([this.modal], [DEVICE$1, ROOT$2, 'e-range-modal']);\n document.body.className += ' ' + OVERFLOW$1;\n this.modal.style.display = 'block';\n }\n EventHandler.add(document, 'mousedown touchstart', this.documentHandler, this);\n };\n DateRangePicker.prototype.dateRangeSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRangeRight === 'left') {\n switch (e.swipeDirection) {\n case 'Left':\n direction = 1;\n break;\n case 'Right':\n direction = -1;\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case 'Up':\n direction = 1;\n break;\n case 'Down':\n direction = -1;\n break;\n }\n }\n if (this.touchRangeStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchRangeStart = false;\n }\n };\n DateRangePicker.prototype.touchStartRangeHandler = function (e) {\n this.touchRangeStart = true;\n };\n DateRangePicker.prototype.popupCloseHandler = function (e) {\n switch (e.keyCode) {\n case 27:\n this.hide(e);\n break;\n }\n };\n DateRangePicker.prototype.calendarFocus = function () {\n var startDate = this.popupObj && this.popupObj.element.querySelector('.' + STARTDATE);\n if (startDate) {\n var ele = closest(startDate, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n ele.children[1].firstElementChild.focus();\n }\n addClass([startDate], FOCUSDATE);\n }\n else {\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n };\n DateRangePicker.prototype.presetHeight = function () {\n var presets = this.popupObj && this.popupObj.element.querySelector('.' + PRESETS);\n var rangeContainer = this.popupObj && this.popupObj.element.querySelector('.' + RANGECONTAINER);\n if (!isNullOrUndefined(presets) && !isNullOrUndefined(rangeContainer)) {\n presets.style.height = rangeContainer.getBoundingClientRect().height + 'px';\n }\n };\n DateRangePicker.prototype.presetKeyActionHandler = function (e) {\n switch (e.action) {\n case 'moveDown':\n this.listMoveDown(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'moveUp':\n this.listMoveUp(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'enter':\n {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(this.leftCalendar) && !isNullOrUndefined(actItem)) {\n if (isNullOrUndefined(hvrItem) || (!isNullOrUndefined(actItem) && actItem === hvrItem)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(actItem);\n var values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.calendarFocus();\n actItem.classList.remove(HOVER);\n e.preventDefault();\n return;\n }\n }\n }\n if (!isNullOrUndefined(hvrItem) || !isNullOrUndefined(actItem)) {\n this.onMouseClick(e, hvrItem || actItem);\n }\n e.preventDefault();\n }\n break;\n case 'tab':\n if (this.leftCalendar) {\n var item = this.getHoverLI();\n if (!isNullOrUndefined(item)) {\n item.classList.remove(HOVER);\n }\n }\n else {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.listMoveDown = function (e) {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n var li = hvrItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n var li = actItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n else {\n addClass([this.liCollections[0]], HOVER);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.listMoveUp = function (e) {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n var li = hvrItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n var li = actItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n };\n DateRangePicker.prototype.getHoverLI = function () {\n var item = this.presetElement.querySelector('.' + HOVER);\n return item;\n };\n DateRangePicker.prototype.getActiveLI = function () {\n var item = this.presetElement.querySelector('.' + ACTIVE$1);\n return item;\n };\n DateRangePicker.prototype.popupKeyBoardHandler = function () {\n this.popupKeyboardModule = new KeyboardEvents(this.popupWrapper, {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: { escape: 'escape' }\n });\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n };\n DateRangePicker.prototype.setScrollPosition = function () {\n var listHeight = this.presetElement.getBoundingClientRect().height;\n var hover = this.presetElement.querySelector('.' + HOVER);\n var active = this.presetElement.querySelector('.' + ACTIVE$1);\n var element = !isNullOrUndefined(hover) ? hover : active;\n if (!isNullOrUndefined(element)) {\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.presetElement.scrollTop = nextEle ? (height - (listHeight / 2 + liHeight / 2)) : height;\n }\n else {\n this.presetElement.scrollTop = 0;\n }\n }\n };\n DateRangePicker.prototype.popupKeyActionHandle = function (e) {\n var presetElement = closest(e.target, '.' + PRESETS);\n switch (e.action) {\n case 'escape':\n if (this.isPopupOpen()) {\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[1].blur();\n }\n break;\n case 'enter':\n if (!this.isPopupOpen()) {\n this.show(null, e);\n }\n else {\n this.inputWrapper.container.children[1].focus();\n }\n break;\n case 'tab':\n this.hide(e);\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n else {\n if (document.activeElement === this.cancelButton.element && this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (document.activeElement === this.applyButton.element && this.applyButton.element.disabled !== true) {\n this.cancelButton.element.focus();\n }\n else {\n if (!isNullOrUndefined(this.presetElement) && (document.activeElement === this.cancelButton.element)) {\n this.presetElement.focus();\n }\n else {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n }\n }\n e.preventDefault();\n break;\n }\n };\n DateRangePicker.prototype.documentHandler = function (e) {\n if (isNullOrUndefined(this.popupObj)) {\n return;\n }\n var target = e.target;\n if (!this.inputWrapper.container.contains(target) ||\n (!isNullOrUndefined(this.popupObj) && !closest(target, '[id=\"' + this.popupWrapper.id + '\"]') && e.type !== 'mousedown')) {\n if (e.type !== 'touchstart' && ((e.type === 'mousedown') ||\n this.closeEventArgs && !this.closeEventArgs.cancel)) {\n e.preventDefault();\n }\n }\n if ((isNullOrUndefined(this.targetElement) ||\n (!isNullOrUndefined(this.targetElement) && !(target === this.targetElement))) &&\n !(closest(target, '[id=\"' + this.popupWrapper.id + '\"]'))\n && !(closest(target, '.' + INPUTCONTAINER$1) === this.inputWrapper.container)\n && !(closest(target, '.e-daterangepicker.e-popup') && (!target.classList.contains('e-day'))) && (!target.classList.contains('e-dlg-overlay'))) {\n this.preventBlur = false;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n if (!this.isMobile) {\n this.isRangeIconClicked = false;\n }\n }\n }\n };\n DateRangePicker.prototype.createInput = function () {\n if (this.fullScreenMode && this.isMobile) {\n this.cssClass += ' ' + 'e-popup-expand';\n }\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n floatLabelType: this.floatLabelType,\n element: this.inputElement,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [DATERANGEICON]\n }, this.createElement);\n attributes(this.inputElement, {\n 'tabindex': '0', 'aria-expanded': 'false', 'role': 'combobox',\n 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n });\n Input.addAttributes({ 'aria-label': 'select', 'role': 'button' }, this.inputWrapper.buttons[0]);\n // if (!isNullOrUndefined(this.placeholder) && this.placeholder.trim() !== '') {\n // Input.addAttributes({ 'aria-placeholder': this.placeholder }, this.inputElement);\n // }\n this.setEleWidth(this.width);\n addClass([this.inputWrapper.container], DATERANGEWRAPPER);\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.inputElement.type === 'hidden') {\n this.inputWrapper.container.style.display = 'none';\n }\n this.refreshControl();\n this.previousEleValue = this.inputElement.value;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.startCopy = this.startDate;\n this.endCopy = this.endDate;\n };\n DateRangePicker.prototype.setEleWidth = function (width) {\n if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (this.width);\n }\n else if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n DateRangePicker.prototype.adjustLongHeaderWidth = function () {\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.popupWrapper], DAYHEADERLONG$1);\n }\n };\n DateRangePicker.prototype.refreshControl = function () {\n this.validateMinMax();\n if (this.strictMode) {\n this.validateRangeStrict();\n }\n var isDisabled = this.disabledDates();\n if (this.strictMode && (isDisabled)) {\n this.startValue = this.previousStartValue;\n this.setProperties({ startDate: this.startValue }, true);\n this.endValue = this.previousEndValue;\n this.setProperties({ endDate: this.endValue }, true);\n this.setValue();\n }\n this.updateInput();\n if (!this.strictMode) {\n this.validateRange();\n }\n if (!this.strictMode && (isDisabled)) {\n this.clearRange();\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) &&\n !isDisabled && !isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n this.errorClass();\n this.previousStartValue = isNullOrUndefined(this.startValue) || isNaN(+this.startValue) ? null : new Date(+this.startValue);\n this.previousEndValue = isNullOrUndefined(this.endValue) || isNaN(+this.endValue) ? null : new Date(+this.endValue);\n };\n DateRangePicker.prototype.updateInput = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n var formatOption = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n var startDate = this.globalize.formatDate(this.startValue, formatOption);\n var endDate = this.globalize.formatDate(this.endValue, formatOption);\n Input.setValue(startDate + ' ' + this.separator + ' ' + endDate, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n Input.setValue(this.invalidValueString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n DateRangePicker.prototype.checkInvalidRange = function (value) {\n if (!isNullOrUndefined(value)) {\n var invalid = false;\n var startinvalue = void 0;\n var endinvalue = void 0;\n var startString = null;\n var endString = null;\n var valueString = null;\n var startObject = false;\n var endObject = false;\n var invalidobject = false;\n if (typeof (value) === 'string') {\n var range = value.split(' ' + this.separator + ' ');\n if (range.length === 2) {\n startString = range[0];\n endString = range[1];\n }\n else {\n invalid = true;\n valueString = value;\n }\n }\n else {\n if (value.length > 0) {\n startinvalue = value[0];\n endinvalue = value[1];\n }\n else {\n startinvalue = value.start;\n endinvalue = value.end;\n }\n if (!(startinvalue instanceof Date) && typeof (startinvalue) !== 'object') {\n startString = this.getstringvalue(startinvalue);\n }\n else if (startinvalue instanceof Date) {\n startObject = true;\n }\n else if (!isNullOrUndefined(startinvalue)) {\n invalidobject = true;\n }\n if (!(endinvalue instanceof Date) && typeof (endinvalue) !== 'object') {\n endString = this.getstringvalue(endinvalue);\n }\n else if (endinvalue instanceof Date) {\n endObject = true;\n }\n else if (!isNullOrUndefined(endinvalue)) {\n invalidobject = true;\n }\n }\n if ((isNullOrUndefined(startString) && !startObject && !isNullOrUndefined(endString)) ||\n (!isNullOrUndefined(startString) && !endObject && isNullOrUndefined(endString))) {\n invalid = true;\n }\n if (invalidobject) {\n startString = endString = valueString = null;\n invalid = true;\n }\n if (startString) {\n invalid = invalid || this.checkInvalidValue(startString);\n }\n if (endString) {\n invalid = invalid || this.checkInvalidValue(endString);\n }\n if (invalid) {\n if (startObject && !invalidobject) {\n startString = startinvalue.toLocaleDateString();\n }\n if (endObject && !invalidobject) {\n endString = endinvalue.toLocaleDateString();\n }\n if (!isNullOrUndefined(startString) && !isNullOrUndefined(endString)) {\n valueString = startString + ' ' + this.separator + ' ' + endString;\n }\n else if (!isNullOrUndefined(startString)) {\n valueString = startString;\n }\n else if (!isNullOrUndefined(endString)) {\n valueString = endString;\n }\n this.invalidValueString = valueString;\n this.setProperties({ value: null }, true);\n this.setProperties({ startValue: null }, true);\n this.setProperties({ endValue: null }, true);\n this.startDate = null;\n this.endDate = null;\n }\n }\n };\n DateRangePicker.prototype.getstringvalue = function (value) {\n var stringValue = null;\n if (!isNullOrUndefined(value) && (typeof value === 'number')) {\n stringValue = (value).toString();\n }\n else if (!isNullOrUndefined(value) && (typeof value === 'string')) {\n stringValue = '' + value;\n }\n return stringValue;\n };\n DateRangePicker.prototype.checkInvalidValue = function (value) {\n var valueString = value;\n var invalid = false;\n var formatOpt = null;\n formatOpt = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n if (typeof valueString !== 'string') {\n invalid = true;\n }\n else {\n var globalize = new Internationalization(this.locale);\n if (!this.checkDateValue(globalize.parseDate(valueString, formatOpt))) {\n var extISOStr = null;\n var basISOString = null;\n // eslint-disable-next-line\n extISOStr = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOStr.test(valueString) && !basISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n }\n }\n return invalid;\n };\n DateRangePicker.prototype.isDateDisabled = function (date) {\n if (isNullOrUndefined(date)) {\n return false;\n }\n var value = new Date(+date);\n if (+value < +this.min || +value > +this.max) {\n return true;\n }\n this.virtualRenderCellArgs = {\n date: value,\n isDisabled: false\n };\n var args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.disabledDateRender = function () {\n this.disabledDays = [];\n this.disabledDayCnt = null;\n var localDate = new Date(+this.startValue);\n var count = 0;\n while (+localDate <= +this.endValue && +this.endValue <= +this.max) {\n this.virtualRenderCellArgs = {\n date: localDate,\n isDisabled: false\n };\n var args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n this.disabledDays.push(new Date(+args.date));\n if (+localDate > +this.startValue && +localDate < +this.endValue) {\n count++;\n }\n }\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n this.disabledDayCnt = count;\n };\n DateRangePicker.prototype.virtualRenderCellEvent = function (args) {\n extend(this.virtualRenderCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n DateRangePicker.prototype.disabledDates = function () {\n var isStartDisabled = false;\n var isEndDisabled = false;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n isStartDisabled = this.isDateDisabled(this.startValue);\n isEndDisabled = this.isDateDisabled(this.endValue);\n if (!this.isPopupOpen()) {\n this.currentDate = null;\n }\n this.setValue();\n }\n return (isStartDisabled || isEndDisabled);\n };\n DateRangePicker.prototype.setModelValue = function () {\n if (!this.value && this.startDate === null && this.endDate === null) {\n this.setProperties({ value: null }, true);\n }\n else if (this.value === null || this.value.start === null) {\n if (this.value === null) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n else if (this.value.start === null) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n else {\n if ((this.value && this.value.length > 0) ||\n this.valueType && this.valueType.length > 0) {\n if (+this.startDate !== +this.value[0] || +this.endDate !== +this.value[1]) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n if (this.value && this.value[0] == null && this.value[1] == null) {\n this.setProperties({ value: null }, true);\n }\n }\n else {\n if ((this.value && this.value.start)) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n }\n this.createHiddenInput();\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DateRangePicker.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n this.firstHiddenChild.dispatchEvent(evt);\n };\n DateRangePicker.prototype.changeTrigger = function (e) {\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.setModelValue();\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.rangeArgs(e));\n }\n }\n this.previousEleValue = this.inputElement.value;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n * @hidden\n */\n DateRangePicker.prototype.navigateTo = function (view, date) {\n if (this.isPopupOpen()) {\n if (view.toLowerCase() === 'month') {\n view = 'Month';\n }\n else if (view.toLowerCase() === 'year') {\n view = 'Year';\n }\n else if (view.toLowerCase() === 'decade') {\n view = 'Decade';\n }\n else {\n return;\n }\n if (this.getViewNumber(view) < this.getViewNumber(this.depth)) {\n view = this.depth;\n }\n if (this.isMobile) {\n _super.prototype.navigateTo.call(this, view, date);\n }\n else {\n if (date < this.min) {\n date = new Date(+this.min);\n }\n else if (date >= this.max) {\n date = new Date(+this.max);\n }\n if (view === 'Month' && this.isSameMonth(date, this.max)) {\n date = new Date(this.max.getFullYear(), this.max.getMonth() - 1, this.min.getDate());\n }\n else if (view === 'Year' && this.isSameYear(date, this.max)) {\n date = new Date((this.max.getFullYear() - 1), this.max.getMonth(), this.max.getDate());\n }\n else if (view === 'Decade' && this.isSameDecade(date, this.max)) {\n date = new Date((this.max.getFullYear() - 10), this.max.getMonth(), this.max.getDate());\n }\n this.leftCalCurrentDate = date;\n this.navigate(this.leftCalendar, this.leftCalCurrentDate, view);\n if (view === 'Month') {\n date = new Date(this.currentDate.setMonth(this.currentDate.getMonth() + 1));\n }\n else if (view === 'Year') {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 1));\n }\n else {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 10));\n }\n this.rightCalCurrentDate = date;\n this.navigate(this.rightCalendar, this.rightCalCurrentDate, view);\n this.leftKeyboardModule = this.rightKeyboardModule = null;\n this.updateNavIcons();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n }\n };\n DateRangePicker.prototype.navigate = function (calendar, date, view) {\n this.calendarElement = calendar;\n this.table = calendar.querySelector('table');\n this.tableBodyElement = calendar.querySelector('tbody');\n this.headerTitleElement = calendar.querySelector('.e-title');\n this.tableHeadElement = calendar.querySelector('thead');\n this.contentElement = calendar.querySelector('.e-content');\n this.previousIcon = calendar.querySelector('.e-prev');\n this.nextIcon = calendar.querySelector('.e-next');\n this.effect = ZOOMIN$1;\n _super.prototype.navigateTo.call(this, view, date);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.focusOut = function () {\n var isBlur = this.preventBlur;\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n this.preventBlur = false;\n this.inputElement.blur();\n this.preventBlur = isBlur;\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.destroy = function () {\n this.unBindEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n this.hide(null);\n var ariaAttrs = {\n 'tabindex': '0', 'aria-expanded': 'false', 'role': 'combobox',\n 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'aria-invalid': 'false', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n removeClass([this.inputElement], [ROOT$2]);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.inputElement.classList.remove('e-input');\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n detach(this.inputWrapper.container);\n }\n }\n if (!isNullOrUndefined(this.inputKeyboardModule) && !this.isMobile) {\n this.inputKeyboardModule.destroy();\n }\n if (this.popupObj) {\n if (!this.isMobile) {\n this.clearCalendarEvents();\n }\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n this.inputWrapper = this.popupWrapper = this.popupObj = this.cloneElement = this.presetElement = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n if ((!isNullOrUndefined(this.firstHiddenChild))\n && (!isNullOrUndefined(this.secondHiddenChild))) {\n detach(this.firstHiddenChild);\n detach(this.secondHiddenChild);\n this.firstHiddenChild = this.secondHiddenChild = null;\n this.inputElement.setAttribute('name', this.element.getAttribute('data-name'));\n this.inputElement.removeAttribute('data-name');\n }\n this.closeEventArgs = null;\n this.leftCalendar = null;\n this.rightTitle = null;\n this.leftTitle = null;\n this.openEventArgs = null;\n this.leftCalNextIcon = null;\n this.rightCalendar = null;\n this.closeEventArgs = null;\n this.rightCalPrevIcon = null;\n this.leftCalPrevIcon = null;\n this.popupKeyboardModule = null;\n this.cancelButton = null;\n this.applyButton = null;\n this.calendarElement = null;\n this.leftKeyboardModule = null;\n this.rightCalNextIcon = null;\n this.leftCalNextIcon = null;\n this.btnKeyboardModule = null;\n this.rightKeyboardModule = null;\n this.leftKeyboardModule = null;\n this.presetKeyboardModule = null;\n this.liCollections = null;\n this.popupObj = null;\n this.popupWrapper = null;\n };\n DateRangePicker.prototype.ensureInputAttribute = function () {\n var attr = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n attr[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < attr.length; i++) {\n if (isNullOrUndefined(this.cloneElement.getAttribute(attr[i]))) {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(attr[i]);\n }\n else {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(attr[i]);\n }\n this.inputElement.setAttribute(attr[i], this.cloneElement.getAttribute(attr[i]));\n }\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateRangePicker.prototype.getModuleName = function () {\n return 'daterangepicker';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Return the properties that are maintained upon browser refresh.\n *\n * @returns {string}\n */\n DateRangePicker.prototype.getPersistData = function () {\n var keyEntity = ['startDate', 'endDate', 'value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Return the selected range and day span in the DateRangePicker.\n *\n * @returns {Object}\n */\n DateRangePicker.prototype.getSelectedRange = function () {\n var range;\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if (!isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n }\n else {\n range = 0;\n }\n return { startDate: this.startValue, endDate: this.endValue, daySpan: range };\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * To open the Popup container in the DateRangePicker component.\n *\n * @param {HTMLElement} element - Specifies element.\n * @returns {void}\n */\n DateRangePicker.prototype.show = function (element, event) {\n var _this = this;\n if (this.isMobile && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n if (!this.isPopupOpen()) {\n if (element) {\n this.targetElement = element;\n }\n this.createPopup();\n if (this.isMobile || Browser.isDevice) {\n this.mobileRangePopupWrap = this.createElement('div', { className: 'e-daterangepick-mob-popup-wrap' });\n document.body.appendChild(this.mobileRangePopupWrap);\n }\n this.openEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n date: this.inputElement.value,\n model: this,\n event: event ? event : null,\n appendTo: this.isMobile || Browser.isDevice ? this.mobileRangePopupWrap : document.body\n };\n var eventArgs = this.openEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openEventArgs = eventArgs;\n if (!_this.openEventArgs.cancel) {\n _this.openEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.showPopup(element, event);\n var isPreset = (!_this.isCustomRange || (_this.isMobile && _this.isCustomRange));\n if (!isUndefined(_this.presets[0].start && _this.presets[0].end && _this.presets[0].label) && isPreset) {\n _this.setScrollPosition();\n }\n _this.checkMinMaxDays();\n if ((_this.isMobile) && (!isNullOrUndefined(_this.startDate)) && (isNullOrUndefined(_this.endDate))) {\n _this.endButton.element.classList.add(ACTIVE$1);\n _this.startButton.element.classList.remove(ACTIVE$1);\n _this.endButton.element.removeAttribute('disabled');\n _this.selectableDates();\n }\n _super.prototype.setOverlayIndex.call(_this, _this.mobileRangePopupWrap, _this.popupObj.element, _this.modal, _this.isMobile || Browser.isDevice);\n if (Browser.isDevice) {\n var dlgOverlay = _this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (_this.zIndex - 1).toString();\n _this.mobileRangePopupWrap.appendChild(dlgOverlay);\n }\n }\n });\n }\n }\n };\n /**\n * To close the Popup container in the DateRangePicker component.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.hide = function (event) {\n var _this = this;\n if (this.popupObj) {\n if (isNullOrUndefined(this.previousEndValue) && isNullOrUndefined(this.previousStartValue)) {\n this.clearRange();\n }\n else {\n if (!isNullOrUndefined(this.previousStartValue)) {\n this.startValue = new Date(this.checkValue(this.previousStartValue));\n this.setValue();\n this.currentDate = new Date(this.checkValue(this.startValue));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n this.endValue = new Date(this.checkValue(this.previousEndValue));\n this.setValue();\n }\n else {\n this.endValue = null;\n this.setValue();\n }\n }\n if (this.isPopupOpen()) {\n this.closeEventArgs = {\n cancel: false,\n popup: this.popupObj,\n date: this.inputElement.value,\n model: this,\n event: event ? event : null\n };\n var eventArgs = this.closeEventArgs;\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventArgs = eventArgs;\n if (!_this.closeEventArgs.cancel) {\n if (_this.isMobile) {\n if (!isNullOrUndefined(_this.startButton) && !isNullOrUndefined(_this.endButton)) {\n EventHandler.remove(_this.startButton.element, 'click touchstart', _this.deviceHeaderClick);\n EventHandler.remove(_this.endButton.element, 'click touchstart', _this.deviceHeaderClick);\n }\n }\n if (_this.popupObj) {\n _this.popupObj.hide();\n if (_this.preventBlur) {\n _this.inputElement.focus();\n addClass([_this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n }\n if (!_this.isMobile) {\n if (!isNullOrUndefined(_this.leftKeyboardModule) && !isNullOrUndefined(_this.rightKeyboardModule)) {\n _this.leftKeyboardModule.destroy();\n _this.rightKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(_this.presetElement)) {\n _this.presetKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(_this.cancelButton)) {\n _this.btnKeyboardModule.destroy();\n }\n }\n _this.targetElement = null;\n removeClass([document.body], OVERFLOW$1);\n EventHandler.remove(document, 'mousedown touchstart', _this.documentHandler);\n if (_this.isMobile && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (_this.isMobile || Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileRangePopupWrap)) {\n _this.mobileRangePopupWrap.remove();\n _this.mobileRangePopupWrap = null;\n }\n }\n _this.isKeyPopup = _this.dateDisabled = false;\n }\n else {\n removeClass([_this.inputWrapper.buttons[0]], ACTIVE$1);\n }\n _this.updateClearIconState();\n _this.updateHiddenInput();\n if (_this.isMobile && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n }\n else {\n this.updateClearIconState();\n this.updateHiddenInput();\n if (this.isMobile && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DateRangePicker.prototype.setLocale = function () {\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.dateRangeOptions && this.dateRangeOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n }\n this.updateInput();\n this.updateHiddenInput();\n this.changeTrigger();\n };\n DateRangePicker.prototype.refreshChange = function () {\n this.checkView();\n this.refreshControl();\n this.changeTrigger();\n };\n DateRangePicker.prototype.setDate = function () {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.refreshChange();\n };\n DateRangePicker.prototype.enableInput = function () {\n if (+this.min <= +this.max) {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.element.hasAttribute('disabled')) {\n this.bindEvents();\n }\n }\n };\n DateRangePicker.prototype.clearModelvalue = function (newProp, oldProp) {\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n if (oldProp.value && oldProp.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n else if (oldProp.value && oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n else if (oldProp.value && !oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n this.updateValue();\n this.setDate();\n };\n DateRangePicker.prototype.createHiddenInput = function () {\n if (isNullOrUndefined(this.firstHiddenChild) && isNullOrUndefined(this.secondHiddenChild)) {\n this.firstHiddenChild = this.createElement('input');\n this.secondHiddenChild = this.createElement('input');\n }\n if (!isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n this.inputElement.setAttribute('data-name', this.inputElement.getAttribute('name'));\n this.inputElement.removeAttribute('name');\n }\n attributes(this.firstHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n attributes(this.secondHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n var format = { format: this.formatString, type: 'datetime', skeleton: 'yMd' };\n this.firstHiddenChild.value = this.startDate && this.globalize.formatDate(this.startDate, format);\n this.secondHiddenChild.value = this.endDate && this.globalize.formatDate(this.endDate, format);\n this.inputElement.parentElement.appendChild(this.firstHiddenChild);\n this.inputElement.parentElement.appendChild(this.secondHiddenChild);\n };\n DateRangePicker.prototype.setMinMaxDays = function () {\n if (this.isPopupOpen()) {\n this.removeClassDisabled();\n this.checkMinMaxDays();\n if (this.isMobile) {\n this.selectableDates();\n }\n if (!this.strictMode && (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue))) {\n this.removeSelection();\n }\n else {\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n }\n this.updateHeader();\n }\n };\n DateRangePicker.prototype.getAmPmValue = function (date) {\n try {\n if (typeof date === 'string' && date.trim() !== '') {\n // Replace am/pm variants with uppercase AM/PM\n return date.replace(/(am|pm|Am|aM|pM|Pm)/g, function (match) { return match.toLocaleUpperCase(); });\n }\n // If date is null, undefined, or an empty string, return a default value or empty string\n return '';\n }\n catch (error) {\n console.error('Error occurred while processing date:', error);\n return ''; // Return a default value in case of an error\n }\n };\n DateRangePicker.prototype.getStartEndValue = function (date, isEnd) {\n if (this.depth === 'Month') {\n return this.checkDateValue(new Date(this.checkValue(date)));\n }\n else if (this.depth === 'Year') {\n return new Date(date.getFullYear(), date.getMonth() + (isEnd ? 1 : 0), isEnd ? 0 : 1);\n }\n else {\n return new Date(date.getFullYear(), isEnd ? 11 : 0, isEnd ? 31 : 1);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateRangePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateRangePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var format = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n var isDynamicValueChange = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var openPopup = ['blur', 'change', 'cleared', 'close', 'created', 'destroyed', 'focus', 'navigated', 'open', 'renderDayCell', 'select'];\n if (openPopup.indexOf(prop) > 0 && this.isReact) {\n isDynamicValueChange = true;\n }\n switch (prop) {\n case 'width':\n this.setEleWidth(this.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'separator':\n this.previousEleValue = this.inputElement.value;\n this.setProperties({ separator: newProp.separator }, true);\n this.updateInput();\n this.changeTrigger();\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.setProperties({ placeholder: newProp.placeholder }, true);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n this.setRangeAllowEdit();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'allowEdit':\n this.setRangeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.updateInput();\n this.changeTrigger();\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.dateRangeOptions && this.dateRangeOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n }\n this.setLocale();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.setDataAttribute(true);\n this.checkHtmlAttributes(true);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'startDate':\n if (typeof newProp.startDate === 'string') {\n newProp.startDate = this.globalize.parseDate(this.getAmPmValue(newProp.startDate), format);\n }\n if (+this.initStartDate !== +newProp.startDate) {\n this.startValue = this.getStartEndValue(newProp.startDate, false);\n this.setDate();\n this.setValue();\n }\n break;\n case 'endDate':\n if (typeof newProp.endDate === 'string') {\n newProp.endDate = this.globalize.parseDate(this.getAmPmValue(newProp.endDate), format);\n }\n if (+this.initEndDate !== +newProp.endDate) {\n this.endValue = this.getStartEndValue(newProp.endDate, true);\n this.setDate();\n this.setValue();\n }\n break;\n case 'value':\n isDynamicValueChange = true;\n this.invalidValueString = null;\n this.checkInvalidRange(newProp.value);\n if (typeof (newProp.value) === 'string') {\n if (!this.invalidValueString) {\n var rangeArray = newProp.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n this.updateValue();\n this.setDate();\n }\n else {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else {\n if ((!isNullOrUndefined(newProp.value) && newProp.value.length > 0)\n || !isNullOrUndefined(newProp.value) && newProp.value.start) {\n this.valueType = newProp.value;\n if (newProp.value[0] === null || (newProp.value.start === null)) {\n if (newProp.value.length === 1 || (newProp.value.start)) {\n this.clearModelvalue(newProp, oldProp);\n }\n else if (newProp.value[1] === null ||\n (newProp.value.start === null)) {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else if ((+this.initStartDate !== +newProp.value[0]\n || +this.initEndDate !== +newProp.value[1]) ||\n (+this.initStartDate !== +(newProp.value.start\n || +this.initEndDate !== +newProp.value.start))) {\n if (newProp.value.length === 1) {\n this.modelValue = newProp.value;\n }\n else if (newProp.value.start) {\n this.modelValue = newProp.value;\n }\n this.updateValue();\n this.setDate();\n }\n }\n else {\n if (isNullOrUndefined(this.value)\n || newProp.value.start == null) {\n this.valueType = newProp.value;\n this.startValue = null;\n this.endValue = null;\n this.clearModelvalue(newProp, oldProp);\n }\n }\n }\n if (this.isPopupOpen()) {\n if (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.removeSelection();\n if (this.isMobile) {\n this.deviceHeaderUpdate();\n }\n return;\n }\n if (this.isMobile) {\n this.navigate(this.deviceCalendar, this.startValue, this.currentView());\n this.deviceHeaderUpdate();\n }\n else {\n this.navigate(this.leftCalendar, this.startValue, this.currentView());\n this.updateControl(this.leftCalendar);\n this.navigate(this.rightCalendar, this.endValue, this.currentView());\n this.updateControl(this.rightCalendar);\n }\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n this.updateHeader();\n this.applyButton.disabled = this.applyButton.element.disabled = false;\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'minDays':\n isDynamicValueChange = true;\n this.setProperties({ minDays: newProp.minDays }, true);\n this.refreshChange();\n this.setMinMaxDays();\n break;\n case 'maxDays':\n isDynamicValueChange = true;\n this.setProperties({ maxDays: newProp.maxDays }, true);\n this.refreshChange();\n this.setMinMaxDays();\n break;\n case 'min':\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n this.previousEleValue = this.inputElement.value;\n this.enableInput();\n this.refreshChange();\n break;\n case 'max':\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n this.enableInput();\n this.refreshChange();\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.refreshChange();\n break;\n case 'presets':\n this.setProperties({ presets: newProp.presets }, true);\n this.processPresets();\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'start':\n this.setProperties({ start: newProp.start }, true);\n this.refreshChange();\n break;\n case 'depth':\n this.setProperties({ depth: newProp.depth }, true);\n this.refreshChange();\n break;\n }\n if (!isDynamicValueChange) {\n this.hide(null);\n }\n }\n };\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"value\", void 0);\n __decorate$2([\n Property(false)\n ], DateRangePicker.prototype, \"enablePersistence\", void 0);\n __decorate$2([\n Property(new Date(1900, 0, 1))\n ], DateRangePicker.prototype, \"min\", void 0);\n __decorate$2([\n Property(new Date(2099, 11, 31))\n ], DateRangePicker.prototype, \"max\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"locale\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate$2([\n Property(false)\n ], DateRangePicker.prototype, \"weekNumber\", void 0);\n __decorate$2([\n Property('Gregorian')\n ], DateRangePicker.prototype, \"calendarMode\", void 0);\n __decorate$2([\n Property(false)\n ], DateRangePicker.prototype, \"openOnFocus\", void 0);\n __decorate$2([\n Property(false)\n ], DateRangePicker.prototype, \"fullScreenMode\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"created\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"destroyed\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"change\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"cleared\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"navigated\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"renderDayCell\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"startDate\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"endDate\", void 0);\n __decorate$2([\n Collection([{}], Presets)\n ], DateRangePicker.prototype, \"presets\", void 0);\n __decorate$2([\n Property('')\n ], DateRangePicker.prototype, \"width\", void 0);\n __decorate$2([\n Property(1000)\n ], DateRangePicker.prototype, \"zIndex\", void 0);\n __decorate$2([\n Property(true)\n ], DateRangePicker.prototype, \"showClearButton\", void 0);\n __decorate$2([\n Property(true)\n ], DateRangePicker.prototype, \"showTodayButton\", void 0);\n __decorate$2([\n Property('Month')\n ], DateRangePicker.prototype, \"start\", void 0);\n __decorate$2([\n Property('Month')\n ], DateRangePicker.prototype, \"depth\", void 0);\n __decorate$2([\n Property('')\n ], DateRangePicker.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property('-')\n ], DateRangePicker.prototype, \"separator\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"minDays\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"maxDays\", void 0);\n __decorate$2([\n Property(false)\n ], DateRangePicker.prototype, \"strictMode\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"keyConfigs\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"format\", void 0);\n __decorate$2([\n Property(true)\n ], DateRangePicker.prototype, \"enabled\", void 0);\n __decorate$2([\n Property(false)\n ], DateRangePicker.prototype, \"readonly\", void 0);\n __decorate$2([\n Property(true)\n ], DateRangePicker.prototype, \"allowEdit\", void 0);\n __decorate$2([\n Property('Never')\n ], DateRangePicker.prototype, \"floatLabelType\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"placeholder\", void 0);\n __decorate$2([\n Property({})\n ], DateRangePicker.prototype, \"htmlAttributes\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"open\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"close\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"select\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"focus\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"blur\", void 0);\n DateRangePicker = __decorate$2([\n NotifyPropertyChanges\n ], DateRangePicker);\n return DateRangePicker;\n}(CalendarBase));\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP$2 = 'e-popup';\nvar ERROR$2 = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH$2 = new Date().getMonth();\nvar YEAR$2 = new Date().getFullYear();\nvar ROOT$3 = 'e-timepicker';\nvar LIBRARY$2 = 'e-lib';\nvar CONTROL$2 = 'e-control';\nvar CONTENT$2 = 'e-content';\nvar SELECTED$4 = 'e-active';\nvar HOVER$1 = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED$3 = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS$1 = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW$2 = '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\nvar TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n if (this.calendarMode === 'Gregorian') ;\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$3(TimeMaskPlaceholder, _super);\n function TimeMaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$3([\n Property('day')\n ], TimeMaskPlaceholder.prototype, \"day\", void 0);\n __decorate$3([\n Property('month')\n ], TimeMaskPlaceholder.prototype, \"month\", void 0);\n __decorate$3([\n Property('year')\n ], TimeMaskPlaceholder.prototype, \"year\", void 0);\n __decorate$3([\n Property('day of the week')\n ], TimeMaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n __decorate$3([\n Property('hour')\n ], TimeMaskPlaceholder.prototype, \"hour\", void 0);\n __decorate$3([\n Property('minute')\n ], TimeMaskPlaceholder.prototype, \"minute\", void 0);\n __decorate$3([\n Property('second')\n ], TimeMaskPlaceholder.prototype, \"second\", void 0);\n return TimeMaskPlaceholder;\n}(ChildProperty));\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 = /** @__PURE__ @class */ (function (_super) {\n __extends$3(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.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$3, CONTROL$2, LIBRARY$2]);\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(this.getAmPmValue(valueString), {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(this.getAmPmValue(valueString), {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(this.getAmPmValue(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 TimePicker.prototype.getAmPmValue = function (date) {\n try {\n if (typeof date === 'string' && date.trim() !== '') {\n // Replace am/pm variants with uppercase AM/PM\n return date.replace(/(am|pm|Am|aM|pM|Pm)/g, function (match) { return match.toLocaleUpperCase(); });\n }\n // If date is null, undefined, or an empty string, return a default value or empty string\n return '';\n }\n catch (error) {\n console.error('Error occurred while processing date:', error);\n return ''; // Return a default value in case of an error\n }\n };\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$3 + ' ' + POPUP$2,\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$1 };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS$1);\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$4);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED$4);\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$2;\n var year = value ? this.initValue.getFullYear() : YEAR$2;\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$2);\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$2);\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$3);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED$3);\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$4);\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$1);\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$1);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS$1)) {\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$2);\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$1);\n this.setHover(currentLi, HOVER$1);\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$4);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER$1);\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 (!isNullOrUndefined(this.disableItemCollection) && 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 EventHandler.add(this.inputElement, 'keyup', this.keyupHandler, 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 }\n };\n TimePicker.prototype.keyupHandler = function (e) {\n if ((e.code === 'Backspace' || e.code === 'Delete') && (this.enableMask && this.showClearButton && this.inputElement && this.inputElement.value === this.maskedDateValue && this.inputWrapper && this.inputWrapper.clearButton && !this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide'))) {\n this.inputWrapper.clearButton.classList.add('e-clear-icon-hide');\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.enableMask) {\n EventHandler.remove(this.inputElement, 'keyup', this.keyupHandler);\n }\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$2, MONTH$2, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(val) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(val) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.getValue(date);\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.getDateObject(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time === '') {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(time) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(time) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (+value < this.timeCollections[i]) {\n var index = this.validLiElement(i);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n var index = this.validLiElement(i, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS$1);\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$3)) {\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$3)) {\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$3)) {\n return;\n }\n var count = this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n nextItem = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(new Date(nextItem));\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (this.enableMask) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(this.prevDate);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask && this.value) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER$1);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED$4);\n if (items.length) {\n removeClass(items, SELECTED$4);\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$1);\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$4);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS$1) && !li.classList.contains(DISABLED$3));\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(this.getAmPmValue(today + ' ' + val), {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(this.getAmPmValue(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$2, 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$3);\n }\n if (eventArgs.element.classList.contains(DISABLED$3)) {\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$3);\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$3);\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$3)) {\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 if (this.enableMask && this.showClearButton && this.inputElement && this.inputElement.value === this.maskedDateValue && this.inputWrapper && this.inputWrapper.clearButton && !this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) {\n this.inputWrapper.clearButton.classList.add('e-clear-icon-hide');\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 * @deprecated\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 * @deprecated\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$3 + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW$2;\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$3)) {\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 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 else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n 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$3([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate$3([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate$3([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate$3([\n Property(false)\n ], TimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate$3([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate$3([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate$3([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate$3([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate$3([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate$3([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate$3([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate$3([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate$3([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate$3([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate$3([\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$3([\n Property(null)\n ], TimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate$3([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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//class constant defination\nvar DATEWRAPPER$1 = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY$1 = new Date().getDate();\nvar MONTH$3 = new Date().getMonth();\nvar YEAR$3 = 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$4 = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER$1 = 'e-input-group-icon';\nvar POPUP$3 = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS$2 = 'e-input-focus';\nvar POPUPDIMENSION$1 = '250px';\nvar ICONANIMATION$1 = 'e-icon-anim';\nvar DISABLED$4 = 'e-disabled';\nvar ERROR$3 = 'e-error';\nvar CONTENT$3 = 'e-content';\nvar NAVIGATION$1 = 'e-navigation';\nvar ACTIVE$2 = 'e-active';\nvar HOVER$2 = 'e-hover';\nvar ICONS$1 = 'e-icons';\nvar HALFPOSITION$1 = 2;\nvar LISTCLASS$2 = 'e-list-item';\nvar ANIMATIONDURATION$1 = 100;\nvar OVERFLOW$3 = '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 = /** @__PURE__ @class */ (function (_super) {\n __extends$4(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$2);\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$2]);\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$2);\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$3)) {\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 (typeof (this.minTime) === 'string') {\n this.minTime = this.checkDateValue(new Date(this.minTime));\n }\n if (typeof (this.maxTime) === 'string') {\n this.maxTime = this.checkDateValue(new Date(this.maxTime));\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this, isDynamic);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min)) || !this.isValidTime(value)) {\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$3);\n }\n else {\n addClass([this.inputWrapper.container], ERROR$3);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.isValidTime = function (value) {\n if (value != null && (this.minTime || this.maxTime)) {\n var minTimeValue = void 0;\n var maxTimeValue = void 0;\n var maxValue = void 0;\n var minValue = void 0;\n var valueTime = value.getHours() * 3600000 + value.getMinutes() * 60000 +\n value.getSeconds() * 1000 + value.getMilliseconds();\n if (this.minTime) {\n minTimeValue = this.minTime.getHours() * 3600000 + this.minTime.getMinutes() * 60000 +\n this.minTime.getSeconds() * 1000 + this.minTime.getMilliseconds();\n }\n if (this.maxTime) {\n maxTimeValue = this.maxTime.getHours() * 3600000 + this.maxTime.getMinutes() * 60000 +\n this.maxTime.getSeconds() * 1000 + this.maxTime.getMilliseconds();\n }\n if (this.min && (+value.getDate() === +this.min.getDate() && +value.getMonth() === +this.min.getMonth() &&\n +value.getFullYear() === +this.min.getFullYear())) {\n minValue = this.min.getHours() * 3600000 + this.min.getMinutes() * 60000 +\n this.min.getSeconds() * 1000 + this.min.getMilliseconds();\n minTimeValue = minTimeValue < minValue ? minValue : minTimeValue;\n }\n if (this.max && (+value.getDate() === +this.max.getDate() && +value.getMonth() === +this.max.getMonth() &&\n +this.max.getFullYear() === +this.max.getFullYear())) {\n maxValue = this.max.getHours() * 3600000 + this.max.getMinutes() * 60000 +\n this.max.getSeconds() * 1000 + this.max.getMilliseconds();\n maxTimeValue = maxTimeValue > maxValue ? maxValue : maxTimeValue;\n }\n if (this.strictMode) {\n var newValue = void 0;\n if (minTimeValue && valueTime < minTimeValue) {\n newValue = new Date(value.getFullYear(), value.getMonth(), value.getDate(), this.minTime.getHours(), this.minTime.getMinutes(), this.minTime.getSeconds(), this.minTime.getMilliseconds());\n this.setProperties({ value: newValue }, true);\n this.changedArgs = { value: this.value };\n }\n else if (maxTimeValue && valueTime > maxTimeValue) {\n newValue = new Date(value.getFullYear(), value.getMonth(), value.getDate(), this.maxTime.getHours(), this.maxTime.getMinutes(), this.maxTime.getSeconds(), this.maxTime.getMilliseconds());\n this.setProperties({ value: newValue }, true);\n this.changedArgs = { value: this.value };\n }\n return true;\n }\n else {\n return !((minTimeValue && valueTime < minTimeValue) || (maxTimeValue && valueTime > maxTimeValue));\n }\n }\n return 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$4);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED$4);\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$1);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT$4);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER$1 + ' ' + TIMEICON + ' ' + ICONS$1, 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$2]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n this.cldrDateTimeFormat().replace(this.formatRegex, this.TimePopupFormat());\n if (this.dateFormatString === '') {\n this.dateFormatString = this.cldrDateTimeFormat();\n }\n dateObject = this.globalize.parseDate(this.getAmPmValue(this.inputElement.value), {\n format: this.dateFormatString, type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.getAmPmValue(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$3, 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$2 };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS$2);\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$4 + ' ' + POPUP$3,\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) {\n this.modelWrapper.style.zIndex = (this.popupObject.zIndex - 1).toString();\n if (this.fullScreenMode) {\n this.dateTimeWrapper.style.left = '0px';\n }\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$1\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$1]);\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$4)) ? 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$4 + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW$3;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n if (Browser.isDevice) {\n this.modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\n this.modelWrapper.appendChild(this.dateTimeWrapper);\n var dlgOverlay = createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.modelWrapper.appendChild(dlgOverlay);\n document.body.appendChild(this.modelWrapper);\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$2);\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$2);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n if (_this.modelWrapper) {\n remove(_this.modelWrapper);\n }\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.maxHeight = '100%';\n this.popupObject.element.style.width = '100%';\n }\n else {\n this.popupObject.element.style.maxHeight = POPUPDIMENSION$1;\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.dateTimeCloseHandler, this);\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n this.dateTimeWrapper.insertBefore(modelHeader, 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$2);\n this.setTimeHover(currentLi, HOVER$2);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER$2);\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$1, 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$1 + lineHeight / HALFPOSITION$1)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION$1 + lineHeight / HALFPOSITION$1)) : 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$2);\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$2);\n if (li && li.classList.contains(LISTCLASS$2)) {\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$2)) {\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$2);\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$2);\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$2);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER$2);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE$2);\n if (items.length) {\n removeClass(items, ACTIVE$2);\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$2) && !li.classList.contains(DISABLED$4));\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 tempMax = this.max;\n var value = date === null ? new Date() : date;\n var isModified = false;\n var startValue;\n if (this.minTime) {\n startValue = new Date(value.getFullYear(), value.getMonth(), value.getDate(), this.minTime.getHours(), this.minTime.getMinutes(), this.minTime.getSeconds(), this.minTime.getMilliseconds());\n isModified = true;\n }\n else {\n startValue = value;\n }\n if ((+startValue.getDate() === +tempMin.getDate() && +startValue.getMonth() === +tempMin.getMonth() &&\n +startValue.getFullYear() === +tempMin.getFullYear()) ||\n ((+new Date(startValue.getFullYear(), startValue.getMonth(), startValue.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = tempMin;\n if (isModified && ((+new Date(startValue.getFullYear(), startValue.getMonth(), startValue.getDate(), startValue.getHours(), startValue.getMinutes(), startValue.getSeconds(), startValue.getMilliseconds())) >=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate(), tempMin.getHours(), tempMin.getMinutes(), tempMin.getSeconds(), tempMin.getMilliseconds()))) {\n tempStartValue.setHours(startValue.getHours(), startValue.getMinutes(), startValue.getSeconds(), startValue.getMilliseconds());\n }\n }\n else if (+startValue < +tempMax && +startValue > +tempMin) {\n start = !isModified;\n tempStartValue = startValue;\n }\n else if (+startValue >= +tempMax) {\n start = true;\n tempStartValue = tempMax;\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 /**\n * Formats the value specifier.\n *\n * @param {string} formattext - The format text.\n * @returns {string} The formatted value specifier.\n */\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 var isModified = false;\n var endValue;\n if (this.maxTime) {\n endValue = new Date(value.getFullYear(), value.getMonth(), value.getDate(), this.maxTime.getHours(), this.maxTime.getMinutes(), this.maxTime.getSeconds(), this.maxTime.getMilliseconds());\n isModified = true;\n }\n else {\n endValue = value;\n }\n if ((+endValue.getDate() === +tempMax.getDate() && +endValue.getMonth() === +tempMax.getMonth() &&\n +endValue.getFullYear() === +tempMax.getFullYear()) ||\n (+new Date(endValue.getUTCFullYear(), endValue.getMonth(), endValue.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n if (isModified && (+new Date(endValue.getUTCFullYear(), endValue.getMonth(), endValue.getDate(), endValue.getHours(), endValue.getMinutes(), endValue.getSeconds(), endValue.getMilliseconds()) <=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate(), tempMax.getHours(), tempMax.getMinutes(), tempMax.getSeconds(), tempMax.getMilliseconds()))) {\n tempEndValue.setHours(endValue.getHours(), endValue.getMinutes(), endValue.getSeconds(), endValue.getMilliseconds());\n }\n }\n else if (+endValue < +this.max && +endValue > +this.min) {\n end = !isModified;\n tempEndValue = endValue;\n }\n else if (+endValue <= +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$3);\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$1,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION$1);\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$4]);\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$2);\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$1;\n var month = status_1 ? value.getMonth() : MONTH$3;\n var year = status_1 ? value.getFullYear() : YEAR$3;\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$1);\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$2);\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 * @deprecated\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 var openPopup = ['blur', 'change', 'cleared', 'close', 'created', 'destroyed', 'focus', 'navigated', 'open', 'renderDayCell'];\n if (openPopup.indexOf(prop) > 0 && this.isReact) {\n this.isDynamicValueChanged = true;\n }\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$4([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate$4([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate$4([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate$4([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate$4([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate$4([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate$4([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate$4([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate$4([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate$4([\n Property(false)\n ], DateTimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate$4([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate$4([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"minTime\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"maxTime\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate$4([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate$4([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate$4([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate$4([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate$4([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate$4([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate$4([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate$4([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate$4([\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$4([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate$4([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate$4([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate$4([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate$4([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate$4([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate$4([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate$4([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\n\nvar ARROWLEFT = 'ArrowLeft';\nvar ARROWRIGHT = 'ArrowRight';\nvar ARROWUP = 'ArrowUp';\nvar ARROWDOWN = 'ArrowDown';\nvar TAB = 'Tab';\nvar SHIFTTAB = 'shiftTab';\nvar END = 'End';\nvar HOME = 'Home';\nvar MaskedDateTime = /** @__PURE__ @class */ (function () {\n function MaskedDateTime(parent) {\n this.mask = '';\n this.defaultConstant = {\n day: 'day',\n month: 'month',\n year: 'year',\n hour: 'hour',\n minute: 'minute',\n second: 'second',\n dayOfTheWeek: 'day of the week'\n };\n this.hiddenMask = '';\n this.validCharacters = 'dMyhmHfasz';\n this.isDayPart = false;\n this.isMonthPart = false;\n this.isYearPart = false;\n this.isHourPart = false;\n this.isMinutePart = false;\n this.isSecondsPart = false;\n this.isMilliSecondsPart = false;\n this.monthCharacter = '';\n this.periodCharacter = '';\n this.isHiddenMask = false;\n this.isComplete = false;\n this.isNavigate = false;\n this.navigated = false;\n this.isBlur = false;\n this.formatRegex = /EEEEE|EEEE|EEE|EE|E|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|HH|H|hh|h|mm|m|fff|ff|f|aa|a|ss|s|zzzz|zzz|zz|z|'[^']*'|'[^']*'/g;\n this.isDeletion = false;\n this.isShortYear = false;\n this.isDeleteKey = false;\n this.isDateZero = false;\n this.isMonthZero = false;\n this.isYearZero = false;\n this.isLeadingZero = false;\n this.dayTypeCount = 0;\n this.monthTypeCount = 0;\n this.hourTypeCount = 0;\n this.minuteTypeCount = 0;\n this.secondTypeCount = 0;\n this.parent = parent;\n this.dateformat = this.getCulturedFormat();\n this.maskDateValue = this.parent.value != null ? new Date(+this.parent.value) : new Date();\n this.maskDateValue.setMonth(0);\n this.maskDateValue.setHours(0);\n this.maskDateValue.setMinutes(0);\n this.maskDateValue.setSeconds(0);\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.removeEventListener();\n this.addEventListener();\n }\n MaskedDateTime.prototype.getModuleName = function () {\n return 'MaskedDateTime';\n };\n MaskedDateTime.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('createMask', this.createMask, this);\n this.parent.on('setMaskSelection', this.validCharacterCheck, this);\n this.parent.on('inputHandler', this.maskInputHandler, this);\n this.parent.on('keyDownHandler', this.maskKeydownHandler, this);\n this.parent.on('clearHandler', this.clearHandler, this);\n this.parent.on('maskPasteInputHandler', this.maskPasteInputHandler, this);\n };\n MaskedDateTime.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('createMask', this.createMask);\n this.parent.off('setMaskSelection', this.validCharacterCheck);\n this.parent.off('inputHandler', this.maskInputHandler);\n this.parent.off('keyDownHandler', this.maskKeydownHandler);\n this.parent.off('clearHandler', this.clearHandler);\n this.parent.off('maskPasteInputHandler', this.maskPasteInputHandler);\n };\n MaskedDateTime.prototype.createMask = function (mask) {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.dateformat = this.getCulturedFormat();\n if (this.parent.maskPlaceholder.day) {\n this.defaultConstant['day'] = this.parent.maskPlaceholder.day;\n }\n if (this.parent.maskPlaceholder.month) {\n this.defaultConstant['month'] = this.parent.maskPlaceholder.month;\n }\n if (this.parent.maskPlaceholder.year) {\n this.defaultConstant['year'] = this.parent.maskPlaceholder.year;\n }\n if (this.parent.maskPlaceholder.hour) {\n this.defaultConstant['hour'] = this.parent.maskPlaceholder.hour;\n }\n if (this.parent.maskPlaceholder.minute) {\n this.defaultConstant['minute'] = this.parent.maskPlaceholder.minute;\n }\n if (this.parent.maskPlaceholder.second) {\n this.defaultConstant['second'] = this.parent.maskPlaceholder.second;\n }\n if (this.parent.maskPlaceholder.dayOfTheWeek) {\n this.defaultConstant['dayOfTheWeek'] = this.parent.maskPlaceholder.dayOfTheWeek.toString();\n }\n this.getCUltureMaskFormat();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.mask = this.previousValue = inputValue;\n this.parent.maskedDateValue = this.mask;\n if (this.parent.value) {\n this.navigated = true;\n this.isBlur = mask.isBlur;\n this.setDynamicValue();\n }\n };\n MaskedDateTime.prototype.getCUltureMaskFormat = function () {\n this.l10n = new L10n(this.parent.moduleName, this.defaultConstant, this.parent.locale);\n this.objectString = Object.keys(this.defaultConstant);\n for (var i = 0; i < this.objectString.length; i++) {\n this.defaultConstant[this.objectString[i].toString()] =\n this.l10n.getConstant(this.objectString[i].toString());\n }\n };\n MaskedDateTime.prototype.validCharacterCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n if (this.parent.moduleName !== 'timepicker') {\n if (start === this.hiddenMask.length && this.mask === this.parent.inputElement.value) {\n start = 0;\n }\n }\n for (var i = start, j = start - 1; i < this.hiddenMask.length || j >= 0; i++, j--) {\n if (i < this.hiddenMask.length && this.validCharacters.indexOf(this.hiddenMask[i]) !== -1) {\n this.setSelection(this.hiddenMask[i]);\n return;\n }\n if (j >= 0 && this.validCharacters.indexOf(this.hiddenMask[j]) !== -1) {\n this.setSelection(this.hiddenMask[j]);\n return;\n }\n }\n };\n MaskedDateTime.prototype.setDynamicValue = function () {\n this.maskDateValue = new Date(+this.parent.value);\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = true;\n this.updateValue();\n if (!this.isBlur) {\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.setSelection = function (validChar) {\n var start = -1;\n var end = 0;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === validChar) {\n end = i + 1;\n if (start === -1) {\n start = i;\n }\n }\n }\n if (start < 0) {\n start = 0;\n }\n this.parent.inputElement.setSelectionRange(start, end);\n };\n MaskedDateTime.prototype.maskKeydownHandler = function (args) {\n if (args.e.key === 'Backspace') {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n switch (formatText) {\n case 'd':\n this.dayTypeCount = Math.max(this.dayTypeCount - 1, 0);\n break;\n case 'M':\n this.monthTypeCount = Math.max(this.monthTypeCount - 1, 0);\n break;\n case 'H':\n case 'h':\n this.hourTypeCount = Math.max(this.hourTypeCount - 1, 0);\n break;\n case 'm':\n this.minuteTypeCount = Math.max(this.minuteTypeCount - 1, 0);\n break;\n case 's':\n this.secondTypeCount = Math.max(this.secondTypeCount - 1, 0);\n break;\n }\n return;\n }\n this.dayTypeCount = this.monthTypeCount = this.hourTypeCount = this.minuteTypeCount = this.secondTypeCount = 0;\n if (args.e.key === 'Delete') {\n this.isDeleteKey = true;\n return;\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWLEFT || args.e.key === ARROWRIGHT\n || args.e.key === SHIFTTAB || args.e.key === TAB || args.e.action === SHIFTTAB ||\n args.e.key === END || args.e.key === HOME)) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var length_1 = this.parent.inputElement.value.length;\n if ((start === 0 && end === length_1) && (args.e.key === TAB || args.e.action === SHIFTTAB)) {\n var index = args.e.action === SHIFTTAB ? end : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = index;\n }\n if (args.e.key === END || args.e.key === HOME) {\n var range = args.e.key === END ? length_1 : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = range;\n }\n this.navigateSelection(args.e.key === ARROWLEFT || args.e.action === SHIFTTAB || args.e.key === END ? true : false);\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWUP || args.e.key === ARROWDOWN)) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.dateAlteration(args.e.key === ARROWDOWN ? true : false);\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.isPersist = function () {\n var isPersist = this.parent.isFocused || this.navigated;\n return isPersist;\n };\n MaskedDateTime.prototype.differenceCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n var inputValue = this.parent.inputElement.value;\n var previousVal = this.previousValue.substring(0, start + this.previousValue.length - inputValue.length);\n var newVal = inputValue.substring(0, start);\n var newDateValue = new Date(+this.maskDateValue);\n var maxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (previousVal.indexOf(newVal) === 0 && (newVal.length === 0 ||\n this.previousHiddenMask[newVal.length - 1] !== this.previousHiddenMask[newVal.length])) {\n for (var i = newVal.length; i < previousVal.length; i++) {\n if (this.previousHiddenMask[i] !== '' && this.validCharacters.indexOf(this.previousHiddenMask[i]) >= 0) {\n this.isDeletion = this.handleDeletion(this.previousHiddenMask[i], false);\n }\n }\n if (this.isDeletion) {\n return;\n }\n }\n switch (this.previousHiddenMask[start - 1]) {\n case 'd':\n {\n var date = (this.isDayPart && newDateValue.getDate().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getDate() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.isDateZero = (newVal[start - 1] === '0');\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(date)) {\n return;\n }\n for (var i = 0; date > maxDate; i++) {\n date = parseInt(date.toString().slice(1), 10);\n }\n if (date >= 1) {\n newDateValue.setDate(date);\n this.isNavigate = date.toString().length === 2;\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n if (newDateValue.getMonth() !== this.maskDateValue.getMonth()) {\n return;\n }\n this.isDayPart = true;\n this.dayTypeCount = this.dayTypeCount + 1;\n }\n else {\n this.isDayPart = false;\n this.dayTypeCount = this.isDateZero ? this.dayTypeCount + 1 : this.dayTypeCount;\n }\n break;\n }\n case 'M':\n {\n var month = void 0;\n if (newDateValue.getMonth().toString().length < 2 && !this.isPersist()) {\n month = (this.isMonthPart ? (newDateValue.getMonth() + 1) * 10 : 0) + parseInt(newVal[start - 1], 10);\n }\n else {\n month = parseInt(newVal[start - 1], 10);\n }\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n this.isMonthZero = (newVal[start - 1] === '0');\n if (!isNaN(month)) {\n while (month > 12) {\n month = parseInt(month.toString().slice(1), 10);\n }\n if (month >= 1) {\n newDateValue.setMonth(month - 1);\n if (month >= 10 || month === 1) {\n if (this.isLeadingZero && month === 1) {\n this.isNavigate = month.toString().length === 1;\n this.isLeadingZero = false;\n }\n else {\n this.isNavigate = month.toString().length === 2;\n }\n }\n else {\n this.isNavigate = month.toString().length === 1;\n }\n if (newDateValue.getMonth() !== month - 1) {\n newDateValue.setDate(1);\n newDateValue.setMonth(month - 1);\n }\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() === previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isMonthPart = true;\n this.monthTypeCount = this.monthTypeCount + 1;\n this.isLeadingZero = false;\n }\n else {\n newDateValue.setMonth(0);\n this.isLeadingZero = true;\n this.isMonthPart = false;\n this.monthTypeCount = this.isMonthZero ? this.monthTypeCount + 1 : this.monthTypeCount;\n }\n }\n else {\n var monthString = (this.getCulturedValue('months[stand-alone].wide'));\n var monthValue = Object.keys(monthString);\n this.monthCharacter += newVal[start - 1].toLowerCase();\n while (this.monthCharacter.length > 0) {\n var i = 1;\n for (var _i = 0, monthValue_1 = monthValue; _i < monthValue_1.length; _i++) {\n var months = monthValue_1[_i];\n if (monthString[i].toLowerCase().indexOf(this.monthCharacter) === 0) {\n newDateValue.setMonth(i - 1);\n this.isMonthPart = true;\n this.maskDateValue = newDateValue;\n return;\n }\n i++;\n }\n this.monthCharacter = this.monthCharacter.substring(1, this.monthCharacter.length);\n }\n }\n break;\n }\n case 'y':\n {\n var year = (this.isYearPart && (newDateValue.getFullYear().toString().length < 4\n && !this.isShortYear) ? newDateValue.getFullYear() * 10 : 0) + parseInt(newVal[start - 1], 10);\n var yearValue = (this.dateformat.match(/y/g) || []).length;\n yearValue = yearValue !== 2 ? 4 : yearValue;\n this.isShortYear = false;\n this.isYearZero = (newVal[start - 1] === '0');\n if (isNaN(year)) {\n return;\n }\n while (year > 9999) {\n year = parseInt(year.toString().slice(1), 10);\n }\n if (year < 1) {\n this.isYearPart = false;\n }\n else {\n newDateValue.setFullYear(year);\n if (year.toString().length === yearValue) {\n this.isNavigate = true;\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isYearPart = true;\n }\n break;\n }\n case 'h':\n this.hour = (this.isHourPart && (newDateValue.getHours() % 12 || 12).toString().length < 2\n && !this.isPersist() ? (newDateValue.getHours() % 12 || 12) * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n while (this.hour > 12) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(Math.floor(newDateValue.getHours() / 12) * 12 + (this.hour % 12));\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'H':\n this.hour = (this.isHourPart && newDateValue.getHours().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getHours() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n for (var i = 0; this.hour > 23; i++) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(this.hour);\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'm':\n {\n var minutes = (this.isMinutePart && newDateValue.getMinutes().toString().length < 2\n && !this.isPersist() ? newDateValue.getMinutes() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(minutes)) {\n return;\n }\n for (var i = 0; minutes > 59; i++) {\n minutes = parseInt(minutes.toString().slice(1), 10);\n }\n newDateValue.setMinutes(minutes);\n this.isNavigate = minutes.toString().length === 2;\n this.isMinutePart = true;\n this.minuteTypeCount = this.minuteTypeCount + 1;\n break;\n }\n case 's':\n {\n var seconds = (this.isSecondsPart && newDateValue.getSeconds().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getSeconds() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(seconds)) {\n return;\n }\n for (var i = 0; seconds > 59; i++) {\n seconds = parseInt(seconds.toString().slice(1), 10);\n }\n newDateValue.setSeconds(seconds);\n this.isNavigate = seconds.toString().length === 2;\n this.isSecondsPart = true;\n this.secondTypeCount = this.secondTypeCount + 1;\n break;\n }\n case 'a':\n {\n this.periodCharacter += newVal[start - 1].toLowerCase();\n var periodString = (this.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n for (var i = 0; this.periodCharacter.length > 0; i++) {\n if ((periodString[periodkeys[0]].toLowerCase().indexOf(this.periodCharacter) === 0\n && newDateValue.getHours() >= 12) || (periodString[periodkeys[1]].toLowerCase().\n indexOf(this.periodCharacter) === 0 && newDateValue.getHours() < 12)) {\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n this.maskDateValue = newDateValue;\n }\n this.periodCharacter = this.periodCharacter.substring(1, this.periodCharacter.length);\n }\n break;\n }\n }\n this.maskDateValue = newDateValue;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MaskedDateTime.prototype.formatCheck = function () {\n var proxy = this;\n function formatValueSpecifier(formattext) {\n var result;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysAbbreviated = proxy.getCulturedValue('days[stand-alone].abbreviated');\n var dayKeyAbbreviated = Object.keys(daysAbbreviated);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysWide = (proxy.getCulturedValue('days[stand-alone].wide'));\n var dayKeyWide = Object.keys(daysWide);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysNarrow = (proxy.getCulturedValue('days[stand-alone].narrow'));\n var dayKeyNarrow = Object.keys(daysNarrow);\n var monthAbbreviated = (proxy.getCulturedValue('months[stand-alone].abbreviated'));\n var monthWide = (proxy.getCulturedValue('months[stand-alone].wide'));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var periodString = (proxy.getCulturedValue('dayPeriods.format.wide'));\n var milliseconds;\n var dateOptions;\n switch (formattext) {\n case 'ddd':\n case 'dddd':\n case 'd':\n result = proxy.isDayPart ? proxy.maskDateValue.getDate().toString() : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'dd':\n result = proxy.isDayPart ? proxy.roundOff(proxy.maskDateValue.getDate(), 2) : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'E':\n case 'EE':\n case 'EEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysAbbreviated[dayKeyAbbreviated[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysWide[dayKeyWide[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysNarrow[dayKeyNarrow[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'M':\n result = proxy.isMonthPart ? (proxy.maskDateValue.getMonth() + 1).toString() : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MM':\n result = proxy.isMonthPart ? proxy.roundOff(proxy.maskDateValue.getMonth() + 1, 2) : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MMM':\n result = proxy.isMonthPart ? monthAbbreviated[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'MMMM':\n result = proxy.isMonthPart ? monthWide[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'yy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear() % 100, 2) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'y':\n case 'yyy':\n case 'yyyy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear(), 4) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'h':\n result = proxy.isHourPart ? (proxy.maskDateValue.getHours() % 12 || 12).toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'hh':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours() % 12 || 12, 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'H':\n result = proxy.isHourPart ? proxy.maskDateValue.getHours().toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'HH':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours(), 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'm':\n result = proxy.isMinutePart ? proxy.maskDateValue.getMinutes().toString() : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 'mm':\n result = proxy.isMinutePart ? proxy.roundOff(proxy.maskDateValue.getMinutes(), 2) : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 's':\n result = proxy.isSecondsPart ? proxy.maskDateValue.getSeconds().toString() : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'ss':\n result = proxy.isSecondsPart ? proxy.roundOff(proxy.maskDateValue.getSeconds(), 2) : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'f':\n result = Math.floor(proxy.maskDateValue.getMilliseconds() / 100).toString();\n break;\n case 'ff':\n milliseconds = proxy.maskDateValue.getMilliseconds();\n if (proxy.maskDateValue.getMilliseconds() > 99) {\n milliseconds = Math.floor(proxy.maskDateValue.getMilliseconds() / 10);\n }\n result = proxy.roundOff(milliseconds, 2);\n break;\n case 'fff':\n result = proxy.roundOff(proxy.maskDateValue.getMilliseconds(), 3);\n break;\n case 'a':\n case 'aa':\n result = proxy.maskDateValue.getHours() < 12 ? periodString['am'] : periodString['pm'];\n break;\n case 'z':\n case 'zz':\n case 'zzz':\n case 'zzzz':\n dateOptions = {\n format: formattext,\n type: 'dateTime', skeleton: 'yMd', calendar: proxy.parent.calendarMode\n };\n result = proxy.parent.globalize.formatDate(proxy.maskDateValue, dateOptions);\n break;\n }\n result = result !== undefined ? result : formattext.slice(1, formattext.length - 1);\n if (proxy.isHiddenMask) {\n var hiddenChar = '';\n for (var i = 0; i < result.length; i++) {\n hiddenChar += formattext[0];\n }\n return hiddenChar;\n }\n else {\n return result;\n }\n }\n return formatValueSpecifier;\n };\n MaskedDateTime.prototype.isValidDate = function (dateString) {\n var date = new Date(dateString);\n // Return true if the date is valid, false otherwise\n return !isNaN(date.getTime());\n };\n MaskedDateTime.prototype.maskPasteInputHandler = function () {\n if (this.isValidDate(this.parent.inputElement.value)) {\n this.maskDateValue = new Date(this.parent.inputElement.value);\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = true;\n this.updateValue();\n if (!this.isBlur) {\n this.validCharacterCheck();\n }\n return;\n }\n else {\n this.maskInputHandler();\n }\n };\n MaskedDateTime.prototype.maskInputHandler = function () {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.differenceCheck();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isDateZero = this.isMonthZero = this.isYearZero = false;\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n var scrollPositionY;\n if (Browser.isDevice && (Browser.isIos || Browser.isIos7)) {\n var scrollableParent = this.findScrollableParent(this.parent.inputElement);\n scrollPositionY = scrollableParent ? scrollableParent.getBoundingClientRect().top : window.scrollY;\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n if ((this.isNavigate || this.isDeletion) && !this.isDeleteKey) {\n var isbackward = this.isNavigate ? false : true;\n this.isNavigate = this.isDeletion = false;\n this.navigateSelection(isbackward);\n if (Browser.isDevice && (Browser.isIos || Browser.isIos7)) {\n setTimeout(function () {\n window.scrollTo(0, scrollPositionY);\n }, 0);\n }\n }\n if (this.isDeleteKey) {\n this.isDeletion = false;\n }\n this.isDeleteKey = false;\n };\n MaskedDateTime.prototype.findScrollableParent = function (element) {\n while (element) {\n if (this.isScrollable(element)) {\n return element;\n }\n element = element.parentElement;\n }\n return null;\n };\n MaskedDateTime.prototype.isScrollable = function (element) {\n var overflowY = window.getComputedStyle(element).overflowY;\n return element.scrollHeight > element.clientHeight && (overflowY === 'auto' || overflowY === 'scroll');\n };\n MaskedDateTime.prototype.navigateSelection = function (isbackward) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var formatIndex = isbackward ? start - 1 : end;\n this.navigated = true;\n while (formatIndex < this.hiddenMask.length && formatIndex >= 0) {\n if (this.validCharacters.indexOf(this.hiddenMask[formatIndex]) >= 0) {\n this.setSelection(this.hiddenMask[formatIndex]);\n break;\n }\n formatIndex = formatIndex + (isbackward ? -1 : 1);\n }\n };\n MaskedDateTime.prototype.roundOff = function (val, count) {\n var valueText = val.toString();\n var length = count - valueText.length;\n var result = '';\n for (var i = 0; i < length; i++) {\n result += '0';\n }\n return result + valueText;\n };\n MaskedDateTime.prototype.zeroCheck = function (isZero, isDayPart, resultValue) {\n var result = resultValue;\n if (isZero && !isDayPart) {\n result = '0';\n }\n return result;\n };\n MaskedDateTime.prototype.handleDeletion = function (format, isSegment) {\n switch (format) {\n case 'd':\n this.isDayPart = isSegment;\n break;\n case 'M':\n this.isMonthPart = isSegment;\n if (!isSegment) {\n this.maskDateValue.setMonth(0);\n this.monthCharacter = '';\n }\n break;\n case 'y':\n this.isYearPart = isSegment;\n break;\n case 'H':\n case 'h':\n this.isHourPart = isSegment;\n if (!isSegment) {\n this.periodCharacter = '';\n }\n break;\n case 'm':\n this.isMinutePart = isSegment;\n break;\n case 's':\n this.isSecondsPart = isSegment;\n break;\n default:\n return false;\n }\n return true;\n };\n MaskedDateTime.prototype.dateAlteration = function (isDecrement) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n else {\n return;\n }\n var newDateValue = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n var incrementValue = isDecrement ? -1 : 1;\n switch (formatText) {\n case 'd':\n newDateValue.setDate(newDateValue.getDate() + incrementValue);\n break;\n case 'M':\n {\n var newMonth = newDateValue.getMonth() + incrementValue;\n newDateValue.setDate(1);\n newDateValue.setMonth(newMonth);\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() === previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n break;\n }\n case 'y':\n newDateValue.setFullYear(newDateValue.getFullYear() + incrementValue);\n break;\n case 'H':\n case 'h':\n newDateValue.setHours(newDateValue.getHours() + incrementValue);\n break;\n case 'm':\n newDateValue.setMinutes(newDateValue.getMinutes() + incrementValue);\n break;\n case 's':\n newDateValue.setSeconds(newDateValue.getSeconds() + incrementValue);\n break;\n case 'a':\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n break;\n }\n this.maskDateValue = newDateValue.getFullYear() > 0 ? newDateValue : this.maskDateValue;\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n this.handleDeletion(this.hiddenMask[start], true);\n }\n };\n MaskedDateTime.prototype.getCulturedValue = function (format) {\n var locale = this.parent.locale;\n var result;\n if (locale === 'en' || locale === 'en-US') {\n result = getValue(format, getDefaultDateObject());\n }\n else {\n result = getValue('main.' + '' + locale + ('.dates.calendars.gregorian.' + format), cldrData);\n }\n return result;\n };\n MaskedDateTime.prototype.getCulturedFormat = function () {\n var formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.moduleName === 'datepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.format && this.parent.formatString) {\n formatString = this.parent.formatString;\n }\n }\n if (this.parent.moduleName === 'datetimepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.dateTimeFormat) {\n formatString = this.parent.dateTimeFormat;\n }\n }\n if (this.parent.moduleName === 'timepicker') {\n formatString = this.parent.cldrTimeFormat();\n }\n return formatString;\n };\n MaskedDateTime.prototype.clearHandler = function () {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.updateValue();\n if (this.parent.inputElement && this.parent.inputElement.value === this.parent.maskedDateValue && this.parent.inputWrapper && this.parent.inputWrapper.clearButton && !this.parent.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) {\n this.parent.inputWrapper.clearButton.classList.add('e-clear-icon-hide');\n }\n };\n MaskedDateTime.prototype.updateValue = function () {\n this.monthCharacter = this.periodCharacter = '';\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.updateInputValue(inputValue);\n };\n MaskedDateTime.prototype.destroy = function () {\n this.removeEventListener();\n };\n return MaskedDateTime;\n}());\n\nexport { Calendar, CalendarBase, DatePicker, DateRangePicker, DateTimePicker, Islamic, MaskedDateTime, Presets, TimeMaskPlaceholder, TimePicker, TimePickerBase };\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 = /** @__PURE__ @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}());\n\n/**\n * XmlWriter class provide method to create XML data\n */\nvar XmlWriter = /** @__PURE__ @class */ (function () {\n /**\n * Initialize new instance of {XmlWriter}\n */\n function XmlWriter() {\n this.contentPos = 0;\n this.bufferText = '';\n this.bufferBlob = new Blob([''], { type: 'text/plain' });\n this.currentState = 'Initial';\n this.namespaceStack = [];\n this.namespaceStack.push(new Namespace());\n this.namespaceStack[0].set('xmlns', 'http://www.w3.org/2000/xmlns/', 'Special');\n this.namespaceStack.push(new Namespace());\n this.namespaceStack[1].set('xml', 'http://www.w3.org/XML/1998/namespace', 'Special');\n this.namespaceStack.push(new Namespace());\n this.namespaceStack[2].set('', '', 'Implied');\n this.elementStack = [];\n this.elementStack.push(new XmlElement());\n this.elementStack[0].set('', '', '', this.namespaceStack.length - 1);\n this.attributeStack = [];\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(XmlWriter.prototype, \"buffer\", {\n /**\n * Gets the content written to the {XmlWriter} 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 /**\n * Writes processing instruction with a space between the name and text\n * @param {string} name - name of the processing instruction\n * @param {string} text - text to write in the processing instruction\n * @throws ArgumentException\n * @throws InvalidArgumentException\n * @throws InvalidOperationException\n */\n XmlWriter.prototype.writeProcessingInstruction = function (name, text) {\n if (name === undefined || name === null || name.length === 0) {\n throw new Error('ArgumentException: name should not be undefined, null or empty');\n }\n this.checkName(name);\n if (text === undefined || text === null) {\n text = '';\n }\n if (name.length === 3 && name === 'xml') {\n if (this.currentState !== 'Initial') {\n // tslint:disable-next-line:max-line-length\n throw new Error('InvalidArgumentException: Cannot write XML declaration.WriteStartDocument method has already written it');\n }\n }\n if (this.currentState !== 'Initial' || this.bufferBlob === undefined) {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n else {\n this.writeStartDocument();\n this.writeProcessingInstructionInternal(name, text);\n }\n };\n /**\n * Writes Xml declaration with version and standalone attribute\n * @param {boolean} standalone - if true it write standalone=yes else standalone=no\n * @throws InvalidOperation\n */\n XmlWriter.prototype.writeStartDocument = function (standalone) {\n if (this.currentState !== 'Initial' || this.bufferBlob === undefined) {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n this.currentState = 'StartDocument';\n this.rawText('');\n };\n /**\n * Closes any open tag or attribute and write the state back to start\n */\n XmlWriter.prototype.writeEndDocument = function () {\n while (this.elementStack.length - 1 > 0) {\n this.writeEndElement();\n }\n this.currentState = 'EndDocument';\n this.flush();\n };\n /**\n * Writes the specified start tag and associates it with the given namespace and prefix.\n * @param {string} prefix - namespace prefix of element\n * @param {string} localName -localName of element\n * @param {string} namespace - namespace URI associate with element\n * @throws ArgumentException\n * @throws InvalidOperationException\n */\n XmlWriter.prototype.writeStartElement = function (prefix, localName, namespace) {\n if (this.bufferBlob === undefined) {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n if (localName === undefined || localName === null || localName.length === 0) {\n throw new Error('ArgumentException: localName cannot be undefined, null or empty');\n }\n this.checkName(localName);\n if (this.currentState === 'Initial') {\n this.writeStartDocument();\n }\n if (this.currentState === 'StartElement') {\n this.startElementContent();\n }\n this.currentState = 'StartElement';\n if (prefix === undefined || prefix === null) {\n if (namespace !== undefined && namespace !== null) {\n prefix = this.lookupPrefix(namespace);\n }\n if (prefix === undefined || prefix === null) {\n prefix = '';\n }\n }\n else if (prefix.length > 0) {\n if (namespace === undefined || namespace === null) {\n namespace = this.lookupNamespace(prefix);\n }\n if (namespace === undefined || namespace === null || (namespace !== undefined && namespace.length === 0)) {\n throw new Error('ArgumentException: Cannot use a prefix with an empty namespace');\n }\n }\n if (namespace === undefined || namespace === null) {\n namespace = this.lookupNamespace(prefix);\n }\n this.writeStartElementInternal(prefix, localName, namespace);\n };\n /**\n * Closes one element and pop corresponding namespace scope\n */\n XmlWriter.prototype.writeEndElement = function () {\n if (this.currentState === 'StartElement') {\n this.startElementContent();\n this.currentState = 'ElementContent';\n }\n else if (this.currentState === 'ElementContent') {\n this.currentState = 'ElementContent';\n }\n this.currentState = 'EndElement';\n var top = this.elementStack.length - 1;\n this.writeEndElementInternal(this.elementStack[top].prefix, this.elementStack[top].localName);\n this.namespaceStack.splice(this.elementStack[top].previousTop + 1);\n this.elementStack.splice(top);\n if (this.bufferText.length > 10240) {\n this.flush();\n }\n };\n /**\n * Writes an element with the specified prefix, local name, namespace URI, and value.\n * @param {string} prefix - namespace prefix of element\n * @param {string} localName - localName of element\n * @param {string} namespace - namespace URI associate with element\n * @param {string} value - value of element\n */\n XmlWriter.prototype.writeElementString = function (prefix, localName, namespace, value) {\n this.writeStartElement(prefix, localName, namespace);\n if (value !== undefined && value !== null && value.length !== 0) {\n this.writeString(value);\n }\n this.writeEndElement();\n };\n /**\n * Writes out the attribute with the specified prefix, local name, namespace URI, and value\n * @param {string} prefix - namespace prefix of element\n * @param {string} localName - localName of element\n * @param {string} namespace - namespace URI associate with element\n * @param {string} value - value of element\n */\n XmlWriter.prototype.writeAttributeString = function (prefix, localName, namespace, value) {\n this.writeStartAttribute(prefix, localName, namespace, value);\n this.writeStringInternal(value, true);\n this.writeEndAttribute();\n };\n /**\n * Writes the given text content\n * @param {string} text - text to write\n * @throws InvalidOperationException\n */\n XmlWriter.prototype.writeString = function (text) {\n this.writeInternal(text, false);\n };\n /**\n * Write given text as raw data\n * @param {string} text - text to write\n * @throws InvalidOperationException\n */\n XmlWriter.prototype.writeRaw = function (text) {\n this.writeInternal(text, true);\n };\n XmlWriter.prototype.writeInternal = function (text, isRawString) {\n if (text === undefined || text === null) {\n return;\n }\n else {\n if (this.currentState !== 'StartElement' && this.currentState !== 'ElementContent') {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n if (this.currentState === 'StartElement') {\n this.startElementContent();\n }\n this.currentState = 'ElementContent';\n if (isRawString) {\n this.rawText(text);\n }\n else {\n this.writeStringInternal(text, false);\n }\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName - file name\n */\n XmlWriter.prototype.save = function (fileName) {\n while (this.elementStack.length - 1 > 0) {\n this.writeEndElement();\n }\n if (this.bufferText !== '') {\n this.flush();\n }\n Save.save(fileName, this.buffer);\n };\n /**\n * Releases the resources used by XmlWriter.\n */\n XmlWriter.prototype.destroy = function () {\n this.bufferBlob = undefined;\n for (var i = 0; i < this.namespaceStack.length; i++) {\n this.namespaceStack[i].destroy();\n }\n this.namespaceStack = [];\n for (var i = 0; i < this.elementStack.length; i++) {\n this.elementStack[i].destroy();\n }\n this.elementStack = [];\n this.bufferText = '';\n this.contentPos = 0;\n };\n XmlWriter.prototype.flush = function () {\n if (this.bufferBlob === undefined) {\n return;\n }\n this.bufferBlob = new Blob([this.bufferBlob, this.bufferText], { type: 'text/plain' });\n this.bufferText = '';\n };\n XmlWriter.prototype.writeProcessingInstructionInternal = function (name, text) {\n this.bufferText += ' 0) {\n this.bufferText += ' ';\n text = text.replace(/\\?\\>/g, '? >');\n this.bufferText += text;\n }\n this.bufferText += '?';\n this.bufferText += '>';\n };\n XmlWriter.prototype.writeStartAttribute = function (prefix, localName, namespace, value) {\n if (localName === undefined || localName === null || localName.length === 0) {\n if (prefix === 'xmlns') {\n localName = 'xmlns';\n prefix = '';\n }\n else {\n throw new Error('ArgumentException: localName cannot be undefined, null or empty');\n }\n }\n if (this.currentState !== 'StartElement') {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n this.checkName(localName);\n this.writeStartAttributePrefixAndNameSpace(prefix, localName, namespace, value);\n };\n XmlWriter.prototype.writeStartAttributePrefixAndNameSpace = function (prefix, localName, namespace, value) {\n if (prefix === undefined || prefix === null) {\n if (namespace !== undefined && namespace !== null) {\n if (!(localName === 'xmlns' && namespace === 'http://www.w3.org/2000/xmlns/')) {\n prefix = this.lookupPrefix(namespace);\n }\n }\n if (prefix === undefined || prefix === null) {\n prefix = '';\n }\n }\n if (namespace === undefined || namespace === null) {\n if (prefix !== undefined && prefix !== null && prefix.length > 0) {\n namespace = this.lookupNamespace(prefix);\n }\n if (namespace === undefined || namespace === null) {\n namespace = '';\n }\n }\n this.writeStartAttributeSpecialAttribute(prefix, localName, namespace, value);\n };\n XmlWriter.prototype.writeStartAttributeSpecialAttribute = function (prefix, localName, namespace, value) {\n if (prefix.length === 0) {\n if (localName[0] === 'x' && localName === 'xmlns') {\n this.skipPushAndWrite(prefix, localName, namespace);\n this.pushNamespaceExplicit('', value);\n return;\n }\n else if (namespace.length > 0) {\n prefix = this.lookupPrefix(namespace);\n }\n }\n else {\n if (prefix[0] === 'x') {\n if (prefix === 'xmlns') {\n this.skipPushAndWrite(prefix, localName, namespace);\n this.pushNamespaceExplicit(localName, value);\n return;\n }\n else if (prefix === 'xml') {\n if (localName === 'space' || localName === 'lang') {\n this.skipPushAndWrite(prefix, localName, namespace);\n return;\n }\n }\n }\n if (namespace.length === 0) {\n prefix = '';\n }\n }\n if (prefix !== undefined && prefix !== null && prefix.length !== 0) {\n this.pushNamespaceImplicit(prefix, namespace);\n }\n this.skipPushAndWrite(prefix, localName, namespace);\n };\n XmlWriter.prototype.writeEndAttribute = function () {\n this.currentState = 'StartElement';\n this.bufferText += '\"';\n };\n XmlWriter.prototype.writeStartElementInternal = function (prefix, localName, namespace) {\n this.bufferText += '<';\n if (prefix.length > 0) {\n this.rawText(prefix);\n this.bufferText += ':';\n }\n this.rawText(localName);\n var top = this.elementStack.length;\n this.elementStack.push(new XmlElement());\n this.elementStack[top].set(prefix, localName, namespace, this.namespaceStack.length - 1);\n this.pushNamespaceImplicit(prefix, namespace);\n for (var i = 0; i < this.attributeStack.length; i++) {\n this.attributeStack[i].destroy();\n }\n this.attributeStack = [];\n };\n XmlWriter.prototype.writeEndElementInternal = function (prefix, localName) {\n if (this.contentPos !== this.bufferText.length + 1) {\n this.bufferText += '';\n }\n else {\n this.bufferText = this.bufferText.substring(0, this.bufferText.length - 1);\n this.bufferText += ' />';\n }\n };\n XmlWriter.prototype.writeStartAttributeInternal = function (prefix, localName, namespaceName) {\n this.bufferText += ' ';\n if (prefix !== undefined && prefix !== null && prefix.length > 0) {\n this.rawText(prefix);\n this.bufferText += ':';\n }\n this.rawText(localName);\n this.bufferText += '=';\n this.bufferText += '\"';\n };\n XmlWriter.prototype.writeNamespaceDeclaration = function (prefix, namespaceUri) {\n this.writeStartNamespaceDeclaration(prefix);\n this.writeStringInternal(namespaceUri, true);\n this.bufferText += '\"';\n };\n XmlWriter.prototype.writeStartNamespaceDeclaration = function (prefix) {\n if (prefix === undefined || prefix === null || prefix.length === 0) {\n this.rawText(' xmlns=\\\"');\n }\n else {\n this.rawText(' xmlns:');\n this.rawText(prefix);\n this.bufferText += '=';\n this.bufferText += '\"';\n }\n };\n XmlWriter.prototype.writeStringInternal = function (text, inAttributeValue) {\n if (text === null || text === undefined) {\n text = '';\n }\n text = text.replace(/\\&/g, '&');\n text = text.replace(/\\/g, '>');\n if (inAttributeValue) {\n text = text.replace(/\\\"/g, '"');\n }\n this.bufferText += text;\n if (!inAttributeValue) {\n this.contentPos = 0;\n }\n };\n XmlWriter.prototype.startElementContent = function () {\n var start = this.elementStack[this.elementStack.length - 1].previousTop;\n for (var i = this.namespaceStack.length - 1; i > start; i--) {\n if (this.namespaceStack[i].kind === 'NeedToWrite') {\n this.writeNamespaceDeclaration(this.namespaceStack[i].prefix, this.namespaceStack[i].namespaceUri);\n }\n }\n this.bufferText += '>';\n this.contentPos = this.bufferText.length + 1;\n };\n XmlWriter.prototype.rawText = function (text) {\n this.bufferText += text;\n };\n XmlWriter.prototype.addNamespace = function (prefix, ns, kind) {\n var top = this.namespaceStack.length;\n this.namespaceStack.push(new Namespace());\n this.namespaceStack[top].set(prefix, ns, kind);\n };\n XmlWriter.prototype.lookupPrefix = function (namespace) {\n for (var i = this.namespaceStack.length - 1; i >= 0; i--) {\n if (this.namespaceStack[i].namespaceUri === namespace) {\n return this.namespaceStack[i].prefix;\n }\n }\n return undefined;\n };\n XmlWriter.prototype.lookupNamespace = function (prefix) {\n for (var i = this.namespaceStack.length - 1; i >= 0; i--) {\n if (this.namespaceStack[i].prefix === prefix) {\n return this.namespaceStack[i].namespaceUri;\n }\n }\n return undefined;\n };\n XmlWriter.prototype.lookupNamespaceIndex = function (prefix) {\n for (var i = this.namespaceStack.length - 1; i >= 0; i--) {\n if (this.namespaceStack[i].prefix === prefix) {\n return i;\n }\n }\n return -1;\n };\n XmlWriter.prototype.pushNamespaceImplicit = function (prefix, ns) {\n var kind;\n var existingNsIndex = this.lookupNamespaceIndex(prefix);\n if (existingNsIndex !== -1) {\n if (existingNsIndex > this.elementStack[this.elementStack.length - 1].previousTop) {\n if (this.namespaceStack[existingNsIndex].namespaceUri !== ns) {\n throw new Error('XmlException namespace Uri needs to be the same as the one that is already declared');\n }\n return;\n }\n else {\n if (this.namespaceStack[existingNsIndex].kind === 'Special') {\n if (prefix === 'xml') {\n if (ns !== this.namespaceStack[existingNsIndex].namespaceUri) {\n throw new Error('InvalidArgumentException: Xml String');\n }\n else {\n kind = 'Implied';\n }\n }\n else {\n throw new Error('InvalidArgumentException: Prefix \"xmlns\" is reserved for use by XML.');\n }\n }\n else {\n kind = (this.namespaceStack[existingNsIndex].namespaceUri === ns) ? 'Implied' : 'NeedToWrite';\n }\n }\n }\n else {\n if ((ns === 'http://www.w3.org/XML/1998/namespace' && prefix !== 'xml') ||\n (ns === 'http://www.w3.org/2000/xmlns/' && prefix !== 'xmlns')) {\n throw new Error('InvalidArgumentException');\n }\n kind = 'NeedToWrite';\n }\n this.addNamespace(prefix, ns, kind);\n };\n XmlWriter.prototype.pushNamespaceExplicit = function (prefix, ns) {\n var existingNsIndex = this.lookupNamespaceIndex(prefix);\n if (existingNsIndex !== -1) {\n if (existingNsIndex > this.elementStack[this.elementStack.length - 1].previousTop) {\n this.namespaceStack[existingNsIndex].kind = 'Written';\n return;\n }\n }\n this.addNamespace(prefix, ns, 'Written');\n return;\n };\n XmlWriter.prototype.addAttribute = function (prefix, localName, namespaceName) {\n var top = this.attributeStack.length;\n this.attributeStack.push(new XmlAttribute());\n this.attributeStack[top].set(prefix, localName, namespaceName);\n for (var i = 0; i < top; i++) {\n if (this.attributeStack[i].isDuplicate(prefix, localName, namespaceName)) {\n throw new Error('XmlException: duplicate attribute name');\n }\n }\n };\n XmlWriter.prototype.skipPushAndWrite = function (prefix, localName, namespace) {\n this.addAttribute(prefix, localName, namespace);\n this.writeStartAttributeInternal(prefix, localName, namespace);\n };\n XmlWriter.prototype.checkName = function (text) {\n var format = /[ !@#$%^&*()+\\=\\[\\]{};':\"\\\\|,<>\\/?]/;\n if (format.test(text)) {\n throw new Error('InvalidArgumentException: invalid name character');\n }\n };\n return XmlWriter;\n}());\n/**\n * class for managing namespace collection\n */\nvar Namespace = /** @__PURE__ @class */ (function () {\n function Namespace() {\n }\n /**\n * set value for current namespace instance\n * @param {string} prefix namespace's prefix\n * @param {string} namespaceUri namespace URI\n * @param {string} kind namespace kind\n */\n Namespace.prototype.set = function (prefix, namespaceUri, kind) {\n this.prefix = prefix;\n this.namespaceUri = namespaceUri;\n this.kind = kind;\n };\n /**\n * Releases the resources used by Namespace\n */\n Namespace.prototype.destroy = function () {\n this.prefix = undefined;\n this.namespaceUri = undefined;\n this.kind = undefined;\n };\n return Namespace;\n}());\n/**\n * class for managing element collection\n */\nvar XmlElement = /** @__PURE__ @class */ (function () {\n function XmlElement() {\n }\n /**\n * set value of current element\n * @param {string} prefix - element prefix\n * @param {string} localName - element local name\n * @param {string} namespaceUri -namespace URI\n * @param {string} previousTop - previous namespace top\n */\n XmlElement.prototype.set = function (prefix, localName, namespaceUri, previousTop) {\n this.previousTop = previousTop;\n this.prefix = prefix;\n this.namespaceUri = namespaceUri;\n this.localName = localName;\n };\n /**\n * Releases the resources used by XmlElement\n */\n XmlElement.prototype.destroy = function () {\n this.previousTop = undefined;\n this.prefix = undefined;\n this.localName = undefined;\n this.namespaceUri = undefined;\n };\n return XmlElement;\n}());\n/**\n * class for managing attribute collection\n */\nvar XmlAttribute = /** @__PURE__ @class */ (function () {\n function XmlAttribute() {\n }\n /**\n * set value of current attribute\n * @param {string} prefix - namespace's prefix\n * @param {string} namespaceUri - namespace URI\n * @param {string} localName - attribute localName\n */\n XmlAttribute.prototype.set = function (prefix, localName, namespaceUri) {\n this.prefix = prefix;\n this.namespaceUri = namespaceUri;\n this.localName = localName;\n };\n /**\n * get whether the attribute is duplicate or not\n * @param {string} prefix - namespace's prefix\n * @param {string} namespaceUri - namespace URI\n * @param {string} localName - attribute localName\n */\n XmlAttribute.prototype.isDuplicate = function (prefix, localName, namespaceUri) {\n return ((this.localName === localName) && ((this.prefix === prefix) || (this.namespaceUri === namespaceUri)));\n };\n /**\n * Releases the resources used by XmlAttribute\n */\n XmlAttribute.prototype.destroy = function () {\n this.prefix = undefined;\n this.namespaceUri = undefined;\n this.localName = undefined;\n };\n return XmlAttribute;\n}());\n\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 = /** @__PURE__ @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 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}());\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 */\nfunction validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n\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 = /** @__PURE__ @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}());\n\nexport { Encoding, Namespace, Save, StreamWriter, XmlAttribute, XmlElement, XmlWriter, validateNullOrUndefined };\n","import { Save, Encoding } from '@syncfusion/ej2-file-utils';\n\n/* eslint-disable */\nvar Utils = /** @__PURE__ @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}());\n/* eslint-enable */\n\n/* eslint-disable */\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 = /** @__PURE__ @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 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 // 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}());\nvar ZipArchiveItemHelper = /** @__PURE__ @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 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 //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 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 else if (this.compressedSize == 0) ;\n };\n return ZipArchiveItemHelper;\n}());\n/**\n * Class represent unique ZipArchive item\n * ```typescript\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * ```\n */\nvar ZipArchiveItem = /** @__PURE__ @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}());\n/* eslint-enable */\n\n/* eslint-disable */\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 = /** @__PURE__ @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}());\n/**\n * represent the Huffman Tree\n */\nvar CompressorHuffmanTree = /** @__PURE__ @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}());\n/**\n * Checksum calculator, based on Adler32 algorithm.\n */\nvar ChecksumCalculator = /** @__PURE__ @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}());\n/* eslint-enable */\n\n/* eslint-disable */\nvar DecompressorHuffmanTree = /** @__PURE__ @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}());\n/* eslint-enable */\n\n/* eslint-disable */\n/// \n/// Checksum calculator, based on Adler32 algorithm.\n/// \nvar ChecksumCalculator$1 = /** @__PURE__ @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}());\n/* eslint-enable */\n\n/* eslint-disable */\nvar CompressedStreamReader = /** @__PURE__ @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$1.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}());\nvar Stream = /** @__PURE__ @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}());\n/* eslint-enable */\n\nexport { ChecksumCalculator, CompressedStreamReader, CompressedStreamWriter, CompressorHuffmanTree, DecompressorHuffmanTree, Stream, Utils, ZipArchive, ZipArchiveItem, ZipArchiveItemHelper };\n","import { ZipArchiveItem, ZipArchive } from '@syncfusion/ej2-compression';\nimport { isNullOrUndefined, Internationalization } from '@syncfusion/ej2-base';\nimport { Encoding } from '@syncfusion/ej2-file-utils';\n\n/**\n * CellStyle class\n * @private\n */\n/* eslint-disable */\nvar CellStyle = /** @__PURE__ @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}());\n/**\n * Font Class\n * @private\n */\nvar Font = /** @__PURE__ @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}());\n/**\n * CellXfs class\n * @private\n */\nvar CellXfs = /** @__PURE__ @class */ (function () {\n function CellXfs() {\n }\n return CellXfs;\n}());\n/**\n * Alignment class\n * @private\n */\nvar Alignment = /** @__PURE__ @class */ (function () {\n function Alignment() {\n }\n return Alignment;\n}());\n/**\n * CellStyleXfs class\n * @private\n */\nvar CellStyleXfs = /** @__PURE__ @class */ (function () {\n function CellStyleXfs() {\n }\n return CellStyleXfs;\n}());\n/**\n * CellStyles class\n * @private\n */\nvar CellStyles = /** @__PURE__ @class */ (function () {\n function CellStyles() {\n this.name = 'Normal';\n this.xfId = 0;\n }\n return CellStyles;\n}());\n/**\n * NumFmt class\n * @private\n */\nvar NumFmt = /** @__PURE__ @class */ (function () {\n function NumFmt(id, code) {\n this.numFmtId = id;\n this.formatCode = code;\n }\n return NumFmt;\n}());\n/**\n * Border class\n * @private\n */\nvar Border = /** @__PURE__ @class */ (function () {\n function Border(mLine, mColor) {\n this.lineStyle = mLine;\n this.color = mColor;\n }\n return Border;\n}());\n/**\n * Borders class\n * @private\n */\nvar Borders = /** @__PURE__ @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}());\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 */\n/* eslint-disable */\nvar Cell = /** @__PURE__ @class */ (function () {\n function Cell() {\n }\n return Cell;\n}());\n/**\n * Cells class\n * @private\n */\nvar Cells = /** @__PURE__ @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));\n\n/**\n * Column class\n * @private\n */\n/* eslint-disable */\nvar Column = /** @__PURE__ @class */ (function () {\n function Column() {\n }\n return Column;\n}());\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 */\n/* eslint-disable */\nvar Row = /** @__PURE__ @class */ (function () {\n function Row() {\n }\n return Row;\n}());\n/**\n * Rows class\n * @private\n */\nvar Rows = /** @__PURE__ @class */ (function (_super) {\n __extends$1(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));\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 */\n/* eslint-disable */\nvar Worksheets = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Worksheets, _super);\n function Worksheets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Worksheets;\n}(Array));\n\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 */\n/* eslint-disable */\nvar Worksheet = /** @__PURE__ @class */ (function () {\n function Worksheet() {\n this.isSummaryRowBelow = true;\n this.showGridLines = true;\n this.enableRtl = false;\n }\n return Worksheet;\n}());\n/**\n * Hyperlink class\n * @private\n */\nvar HyperLink = /** @__PURE__ @class */ (function () {\n function HyperLink() {\n }\n return HyperLink;\n}());\n/**\n * Grouping class\n * @private\n */\nvar Grouping = /** @__PURE__ @class */ (function () {\n function Grouping() {\n }\n return Grouping;\n}());\n/**\n * FreezePane class\n * @private\n */\nvar FreezePane = /** @__PURE__ @class */ (function () {\n function FreezePane() {\n }\n return FreezePane;\n}());\n/**\n * MergeCell\n * @private\n */\nvar MergeCell = /** @__PURE__ @class */ (function () {\n function MergeCell() {\n }\n return MergeCell;\n}());\n/**\n * MergeCells class\n * @private\n */\nvar MergeCells = /** @__PURE__ @class */ (function (_super) {\n __extends$3(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));\n\n/**\n * Image class\n * @private\n */\n/* eslint-disable */\nvar Image = /** @__PURE__ @class */ (function () {\n function Image() {\n }\n return Image;\n}());\n\n// import { IValueFormatter } from '../base/interface';\n/**\n * ValueFormatter class to globalize the value.\n * @private\n */\n/* eslint-disable */\nvar ValueFormatter = /** @__PURE__ @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}());\n\n/**\n * CsvHelper class\n * @private\n */\n/* eslint-disable */\nvar CsvHelper = /** @__PURE__ @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, ignoreCurrency: true }, 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), ignoreCurrency: true }, 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}());\n\n/**\n * BlobHelper class\n * @private\n */\n/* eslint-disable */\nvar BlobHelper = /** @__PURE__ @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}());\n\n/**\n * AutoFilters class\n * @private\n */\n/* eslint-disable */\nvar AutoFilters = /** @__PURE__ @class */ (function () {\n function AutoFilters() {\n }\n return AutoFilters;\n}());\n\n/**\n * Workbook class\n */\n/* eslint-disable */\nvar Workbook = /** @__PURE__ @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 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 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 }\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 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 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}());\n/**\n * BuiltInProperties Class\n * @private\n */\nvar BuiltInProperties = /** @__PURE__ @class */ (function () {\n function BuiltInProperties() {\n }\n return BuiltInProperties;\n}());\n\nexport { Alignment, BlobHelper, Border, Borders, BuiltInProperties, Cell, CellStyle, CellStyleXfs, CellStyles, CellXfs, Cells, Column, CsvHelper, Font, FreezePane, Grouping, HyperLink, MergeCell, MergeCells, NumFmt, Row, Rows, ValueFormatter, Workbook, Worksheet, Worksheets };\n","import { CompressedStreamWriter } from '@syncfusion/ej2-compression';\nimport { Encoding, StreamWriter } from '@syncfusion/ej2-file-utils';\n\n/**\n * @private\n * @hidden\n */\nfunction 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/**\n * Dictionary.ts class for EJ2-PDF\n * @private\n * @hidden\n */\n/**\n * @private\n * @hidden\n */\nvar Dictionary = /** @__PURE__ @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\n\n/**\n * `PdfName` class is used to perform name (element names) related primitive operations.\n * @private\n */\nvar PdfName = /** @__PURE__ @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 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 //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}());\n\n/**\n * PdfOperators.ts class for EJ2-PDF\n * Class of string PDF common operators.\n * @private\n */\nvar Operators = /** @__PURE__ @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}());\n\n/**\n * dictionaryProperties.ts class for EJ2-PDF\n * PDF dictionary properties.\n * @private\n */\nvar DictionaryProperties = /** @__PURE__ @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}());\n\n/**\n * `PdfDictionary` class is used to perform primitive operations.\n * @private\n */\nvar PdfDictionary = /** @__PURE__ @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}());\nvar SaveSectionCollectionEventHandler = /** @__PURE__ @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}());\nvar SaveDescendantFontEventHandler = /** @__PURE__ @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}());\nvar SaveFontDictionaryEventHandler = /** @__PURE__ @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}());\nvar SaveAnnotationEventHandler = /** @__PURE__ @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}());\nvar SaveSectionEventHandler = /** @__PURE__ @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}());\n/**\n * SaveTemplateEventHandler class used to store information about template elements.\n * @private\n * @hidden\n */\nvar SaveTemplateEventHandler = /** @__PURE__ @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}());\n\n/**\n * `PdfNumber` class is used to perform number related primitive operations.\n * @private\n */\nvar PdfNumber = /** @__PURE__ @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}());\n\n/**\n * `PdfArray` class is used to perform array related primitive operations.\n * @private\n */\nvar PdfArray = /** @__PURE__ @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}());\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `PdfStream` class is used to perform stream related primitive operations.\n * @private\n */\nvar PdfStream = /** @__PURE__ @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));\nvar SaveCmapEventHandler = /** @__PURE__ @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}());\nvar SaveFontProgramEventHandler = /** @__PURE__ @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}());\n\n/**\n * `PdfString` class is used to perform string related primitive operations.\n * @private\n */\nvar 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 = /** @__PURE__ @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 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}());\n\n/**\n * `PdfReference` class is used to perform reference related primitive operations.\n * @private\n */\nvar PdfReference = /** @__PURE__ @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}());\n/**\n * `PdfReferenceHolder` class is used to perform reference holder related primitive operations.\n * @private\n */\nvar PdfReferenceHolder = /** @__PURE__ @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 // 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}());\n\n/**\n * `PdfAction` class represents base class for all action types.\n * @private\n */\nvar PdfAction = /** @__PURE__ @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}());\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `PdfUriAction` class for initialize the uri related internals.\n * @private\n */\nvar PdfUriAction = /** @__PURE__ @class */ (function (_super) {\n __extends$1(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));\n\n/**\n * public Enum for `PdfHorizontalAlignment`.\n * @private\n */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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/**\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 = /** @__PURE__ @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}());\n\n/**\n * Coordinates of Position for `PointF`.\n * @private\n */\nvar PointF = /** @__PURE__ @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}());\n/**\n * Width and Height as `Size`.\n * @private\n */\nvar SizeF = /** @__PURE__ @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}());\n/**\n * `RectangleF` with Position and size.\n * @private\n */\nvar RectangleF = /** @__PURE__ @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}());\n/**\n * `Rectangle` with left, right, top and bottom.\n * @private\n */\nvar Rectangle = /** @__PURE__ @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}());\n\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 = /** @__PURE__ @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}());\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * 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 = /** @__PURE__ @class */ (function (_super) {\n __extends$2(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 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));\n\n/**\n * public Enum for `PdfFontStyle`.\n * @private\n */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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/**\n * PdfStringFormat.ts class for EJ2-PDF\n */\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 = /** @__PURE__ @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}());\n\n/**\n * StringTokenizer.ts class for EJ2-PDF\n * Utility class for working with strings.\n * @private\n */\nvar StringTokenizer = /** @__PURE__ @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}());\n\n/**\n * Class `lay outing the text`.\n */\nvar PdfStringLayouter = /** @__PURE__ @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 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 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}());\n//Internal declaration\nvar PdfStringLayoutResult = /** @__PURE__ @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}());\nvar LineInfo = /** @__PURE__ @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}());\n/**\n* Break type of the `line`.\n* @private\n*/\nvar 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\n/**\n * PdfFont.ts class for EJ2-PDF\n */\n/**\n * Defines a particular format for text, including font face, size, and style attributes.\n * @private\n */\nvar PdfFont = /** @__PURE__ @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}());\n\n/**\n * Used to `write a string` into output file.\n * @private\n */\nvar PdfWriter = /** @__PURE__ @class */ (function () {\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 return this.streamWriter;\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 tempOverload = overload;\n this.streamWriter.write(tempOverload);\n };\n return PdfWriter;\n}());\n/**\n * Helper class for PDF writer.\n * @private\n */\nvar PdfWriterHelper = /** @__PURE__ @class */ (function () {\n /**\n * Initialize an instance of `PdfWriterHelper` class.\n * @private\n */\n function PdfWriterHelper() {\n this.buffer = new PdfArrayBuffer();\n }\n /**\n * Writes the specified data.\n * @private\n */\n PdfWriterHelper.prototype.write = function (data) {\n this.buffer.write(data);\n };\n /**\n * Destroy the array buffer.\n * @private\n */\n PdfWriterHelper.prototype.destroy = function () {\n if (this.buffer) {\n this.buffer.destroy();\n this.buffer = undefined;\n }\n };\n return PdfWriterHelper;\n}());\n/**\n * Helper class for PDF writer.\n * @private\n */\nvar PdfArrayBuffer = /** @__PURE__ @class */ (function () {\n /**\n * Initialize an instance of `PdfArrayBuffer` class.\n * @private\n */\n function PdfArrayBuffer() {\n this.buffer = [];\n }\n Object.defineProperty(PdfArrayBuffer.prototype, \"size\", {\n /**\n * Gets the `size`.\n * @private\n */\n get: function () {\n return this.buffer.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Writes the specified data.\n * @private\n */\n PdfArrayBuffer.prototype.write = function (value) {\n for (var i = 0; i < value.length; i++) {\n this.buffer.push(value.charCodeAt(i) & 0xff);\n }\n };\n /**\n * Destroy the array buffer.\n * @private\n */\n PdfArrayBuffer.prototype.destroy = function () {\n if (this.buffer) {\n this.buffer = [];\n this.buffer = undefined;\n }\n };\n return PdfArrayBuffer;\n}());\n\n/**\n * public Enum for `CompositeFontType`.\n * @private\n */\nvar 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/**\n * PdfMainObjectCollection.ts class for EJ2-PDF\n */\n/**\n * The collection of all `objects` within a PDF document.\n * @private\n */\nvar PdfMainObjectCollection = /** @__PURE__ @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 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}());\nvar ObjectInfo = /** @__PURE__ @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}());\n\n/**\n * `PdfDocumentBase` class represent common properties of PdfDocument classes.\n * @private\n */\nvar PdfDocumentBase = /** @__PURE__ @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 /**\n * Save PDF document.\n * @private\n */\n PdfDocumentBase.prototype._save = function () {\n return this.document._docSave();\n };\n return PdfDocumentBase;\n}());\n\n/**\n * public Enum for `ObjectType`.\n * @private\n */\nvar 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\n/**\n * `PdfBoolean` class is used to perform boolean related primitive operations.\n * @private\n */\nvar PdfBoolean = /** @__PURE__ @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}());\n\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 = /** @__PURE__ @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}());\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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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` class represents internal catalog of the Pdf document.\n * @private\n */\nvar PdfCatalog = /** @__PURE__ @class */ (function (_super) {\n __extends$3(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));\n\n/**\n * `PdfCrossTable` is responsible for intermediate level parsing\n * and savingof a PDF document.\n * @private\n */\nvar PdfCrossTable = /** @__PURE__ @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._saveProcess(writer);\n if (typeof filename === 'undefined') {\n return writer.stream.buffer;\n }\n else {\n writer.stream.save(filename);\n }\n };\n /**\n * Saves the cross-reference table into the stream.\n * @private\n */\n PdfCrossTable.prototype._saveProcess = function (writer) {\n this.saveHead(writer);\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 };\n /**\n * Saves the cross-reference table into the stream.\n * @private\n */\n PdfCrossTable.prototype._save = function (writer) {\n this._saveProcess(writer);\n return new Uint8Array(writer.stream.buffer.buffer);\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 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 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 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 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 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}());\nvar RegisteredObject = /** @__PURE__ @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}());\n\n/**\n * PdfPageSize.ts class for EJ2-PDF\n */\n/**\n * Represents information about various predefined `page sizes`.\n */\nvar PdfPageSize = /** @__PURE__ @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}());\n\n/**\n * public Enum for `PdfPageOrientation`.\n * @private\n */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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\n/**\n * PdfMargins.ts class for EJ2-PDF\n * A class representing PDF page margins.\n */\nvar PdfMargins = /** @__PURE__ @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}());\n\n/**\n * PdfPageSettings.ts class for EJ2-PDF\n */\n/**\n * The class provides various `setting` related with PDF pages.\n */\nvar PdfPageSettings = /** @__PURE__ @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}());\n\n/**\n * Helper class to `write PDF graphic streams` easily.\n * @private\n */\nvar PdfStreamWriter = /** @__PURE__ @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}());\n\n/**\n * PdfPen.ts class for EJ2-PDF\n */\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 = /** @__PURE__ @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}());\n\n/**\n * PdfTransformationMatrix.ts class for EJ2-PDF\n */\n/**\n * Class for representing Root `transformation matrix`.\n */\nvar PdfTransformationMatrix = /** @__PURE__ @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}());\nvar Matrix = /** @__PURE__ @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}());\n\n/**\n * `constants.ts` class for EJ2-PDF\n * @private\n */\nvar ProcedureSets = /** @__PURE__ @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}());\n\n/**\n * Dictionary class\n * @private\n * @hidden\n */\nvar TemporaryDictionary = /** @__PURE__ @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}());\n\n/**\n * Represents a simple `transparency`.\n * @private\n */\nvar PdfTransparency = /** @__PURE__ @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}());\n\n/**\n * Represent a `collection of automatic fields information`.\n * @private\n */\nvar PdfAutomaticFieldInfoCollection = /** @__PURE__ @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}());\n\n/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfGraphicsElement = /** @__PURE__ @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}());\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Represents a fields which is calculated before the document saves.\n */\nvar PdfAutomaticField = /** @__PURE__ @class */ (function (_super) {\n __extends$4(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));\n\n/**\n * PdfAutomaticFieldInfo.ts class for EJ2-PDF\n * @private\n */\n/**\n * Represents information about the automatic field.\n * @private\n */\nvar PdfAutomaticFieldInfo = /** @__PURE__ @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}());\n\n/**\n * ByteArray class\n * Used to keep information about image stream as byte array.\n * @private\n */\nvar ByteArray = /** @__PURE__ @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 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}());\n\n/**\n * ImageDecoder class\n */\n/**\n * Specifies the image `format`.\n * @private\n */\nvar 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 = /** @__PURE__ @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 marker = 32;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n while (marker !== 255) {\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}());\n\n/**\n * Used to perform `convertion between pixels and points`.\n * @private\n */\nvar PdfUnitConverter = /** @__PURE__ @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}());\n\n/**\n * `PdfImage` class represents the base class for images and provides functionality for the 'PdfBitmap' class.\n * @private\n */\nvar PdfImage = /** @__PURE__ @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}());\n\nvar __extends$5 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * 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 = /** @__PURE__ @class */ (function (_super) {\n __extends$5(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));\n\n/**\n * TtfTableInfo.ts class for EJ2-PDF\n */\nvar TtfTableInfo = /** @__PURE__ @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}());\n\nvar TtfNameTable = /** @__PURE__ @class */ (function () {\n function TtfNameTable() {\n }\n return TtfNameTable;\n}());\n\n/**\n * TtfNameRecord.ts class for EJ2-PDF\n */\nvar TtfNameRecord = /** @__PURE__ @class */ (function () {\n function TtfNameRecord() {\n }\n return TtfNameRecord;\n}());\n\n/**\n * TtfHeadTable.ts class for EJ2-PDF\n */\nvar TtfHeadTable = /** @__PURE__ @class */ (function () {\n function TtfHeadTable() {\n }\n return TtfHeadTable;\n}());\n\nvar TtfMetrics = /** @__PURE__ @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}());\n\n/**\n * TtfHorizontalHeaderTable.ts class for EJ2-PDF\n */\nvar TtfHorizontalHeaderTable = /** @__PURE__ @class */ (function () {\n function TtfHorizontalHeaderTable() {\n }\n return TtfHorizontalHeaderTable;\n}());\n\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 = /** @__PURE__ @class */ (function () {\n function TtfOS2Table() {\n }\n return TtfOS2Table;\n}());\n\n/**\n * TtfPostTable.ts class for EJ2-PDF\n */\nvar TtfPostTable = /** @__PURE__ @class */ (function () {\n function TtfPostTable() {\n }\n return TtfPostTable;\n}());\n\n/**\n * TtfLongHorMetric.ts class for EJ2-PDF\n */\nvar TtfLongHorMetric = /** @__PURE__ @class */ (function () {\n function TtfLongHorMetric() {\n }\n return TtfLongHorMetric;\n}());\n\n/**\n * TtfCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfCmapSubTable = /** @__PURE__ @class */ (function () {\n function TtfCmapSubTable() {\n }\n return TtfCmapSubTable;\n}());\n\n/**\n * TtfCmapTable.ts class for EJ2-PDF\n */\nvar TtfCmapTable = /** @__PURE__ @class */ (function () {\n function TtfCmapTable() {\n }\n return TtfCmapTable;\n}());\n\n/**\n * TtfGlyphInfo.ts class for EJ2-PDF\n */\nvar TtfGlyphInfo = /** @__PURE__ @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}());\n\n/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfLocaTable = /** @__PURE__ @class */ (function () {\n function TtfLocaTable() {\n }\n return TtfLocaTable;\n}());\n\n/**\n * TtfAppleCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfAppleCmapSubTable = /** @__PURE__ @class */ (function () {\n function TtfAppleCmapSubTable() {\n }\n return TtfAppleCmapSubTable;\n}());\n\n/**\n * TtfMicrosoftCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfMicrosoftCmapSubTable = /** @__PURE__ @class */ (function () {\n function TtfMicrosoftCmapSubTable() {\n }\n return TtfMicrosoftCmapSubTable;\n}());\n\n/**\n * TtfTrimmedCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfTrimmedCmapSubTable = /** @__PURE__ @class */ (function () {\n function TtfTrimmedCmapSubTable() {\n }\n return TtfTrimmedCmapSubTable;\n}());\n\n/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfGlyphHeader = /** @__PURE__ @class */ (function () {\n function TtfGlyphHeader() {\n }\n return TtfGlyphHeader;\n}());\n\n/**\n * Writes data in BigEndian order.\n */\nvar BigEndianWriter = /** @__PURE__ @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 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}());\n\n/**\n * TtfReader.ts class for EJ2-PDF\n */\nvar TtfReader = /** @__PURE__ @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 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 }\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}());\n\nvar __extends$6 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `Metrics` of the font.\n * @private\n */\nvar PdfFontMetrics = /** @__PURE__ @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 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}());\nvar WidthTable = /** @__PURE__ @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}());\nvar StandardWidthTable = /** @__PURE__ @class */ (function (_super) {\n __extends$6(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));\n\n/**\n * TrueTypeFont.ts class for EJ2-PDF\n */\nvar UnicodeTrueTypeFont = /** @__PURE__ @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}());\n\n/**\n * ArabicShapeRenderer.ts class for EJ2-PDF\n */\nvar ArabicShapeRenderer = /** @__PURE__ @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}());\n//#endregion\n//#region Internals\nvar ArabicShape = /** @__PURE__ @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}());\n//#endregion\n\n/**\n * Bidi.ts class for EJ2-PDF\n */\n/**\n * `Metrics` of the font.\n * @private\n */\nvar Bidi = /** @__PURE__ @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}());\nvar RtlCharacters = /** @__PURE__ @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}());\n\n/**\n * `Metrics` of the font.\n * @private\n */\nvar RtlRenderer = /** @__PURE__ @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 {\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}());\n\n/**\n * public Enum for `PdfLayoutType`.\n * @private\n */\nvar 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 */\nvar 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 = {}));\nvar 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\nvar __extends$7 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `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 = /** @__PURE__ @class */ (function (_super) {\n __extends$7(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));\n\n/**\n * PdfTemplate.ts class for EJ2-PDF\n */\n/**\n * Represents `Pdf Template` object.\n * @private\n */\nvar PdfTemplate = /** @__PURE__ @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 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}());\n\nvar __extends$8 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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` class used to set resource contents like font, image.\n * @private\n */\nvar PdfResources = /** @__PURE__ @class */ (function (_super) {\n __extends$8(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 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));\n/* tslint:disable */\n/**\n * Used to create new guid for resources.\n * @private\n */\nvar Guid = /** @__PURE__ @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}());\n/* tslint:enable */\n\nvar __extends$9 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `PdfTilingBrush` Implements a colored tiling brush.\n */\nvar PdfTilingBrush = /** @__PURE__ @class */ (function (_super) {\n __extends$9(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));\n\n/**\n * PdfGraphics.ts class for EJ2-PDF\n */\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 = /** @__PURE__ @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 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 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 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 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 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 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 ++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}());\n/**\n * `GetResourceEventHandler` class is alternate for event handlers and delegates.\n * @private\n * @hidden\n */\nvar GetResourceEventHandler = /** @__PURE__ @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}());\nvar PdfGraphicsState = /** @__PURE__ @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}());\nvar TransparencyData = /** @__PURE__ @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\n/**\n * The `PdfPageLayer` used to create layers in PDF document.\n * @private\n */\nvar PdfPageLayer = /** @__PURE__ @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 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 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}());\n\n/**\n * PdfCollection.ts class for EJ2-PDF\n * The class used to handle the collection of PdF objects.\n */\nvar PdfCollection = /** @__PURE__ @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}());\n\nvar __extends$a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * The class provides methods and properties to handle the collections of `PdfPageLayer`.\n */\nvar PdfPageLayerCollection = /** @__PURE__ @class */ (function (_super) {\n __extends$a(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 // 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 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));\n\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 = /** @__PURE__ @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 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}());\n\n/**\n * `PdfAnnotationCollection` class represents the collection of 'PdfAnnotation' objects.\n * @private\n */\nvar PdfAnnotationCollection = /** @__PURE__ @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}());\n\nvar __extends$b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * 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 = /** @__PURE__ @class */ (function (_super) {\n __extends$b(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));\n\n/**\n * Provides data for `PageAddedEventHandler` event.\n * This event raises when adding the new PDF page to the PDF document.\n */\nvar PageAddedEventArgs = /** @__PURE__ @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}());\n\n/**\n * Represents the `collection of pages in a section`.\n * @private\n */\nvar PdfSectionPageCollection = /** @__PURE__ @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}());\n\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 = /** @__PURE__ @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}());\n\nvar __extends$c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Represents a `page template` for all the pages in the section.\n */\nvar PdfSectionTemplate = /** @__PURE__ @class */ (function (_super) {\n __extends$c(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));\n\n/**\n * Represents a `section` entity. A section it's a set of the pages with similar page settings.\n */\nvar PdfSection = /** @__PURE__ @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}());\nvar PageSettingsState = /** @__PURE__ @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}());\n\n/**\n * Represents the `collection of the sections`.\n * @private\n */\nvar PdfSectionCollection = /** @__PURE__ @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}());\n\n/**\n * Represents a virtual collection of all the pages in the document.\n * @private\n */\nvar PdfDocumentPageCollection = /** @__PURE__ @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 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}());\n\n/**\n * PdfCacheCollection.ts class for EJ2-PDF\n */\n/**\n * `Collection of the cached objects`.\n * @private\n */\nvar PdfCacheCollection = /** @__PURE__ @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}());\n\nvar __extends$d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * 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 = /** @__PURE__ @class */ (function (_super) {\n __extends$d(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 * Saves the document to the specified output stream and return the stream as byte array.\n * @private\n */\n PdfDocument.prototype._docSave = function () {\n var stream = new PdfWriterHelper();\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 return this.crossTable._save(writer);\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 if (this.streamWriter) {\n this.streamWriter.destroy();\n }\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));\n\n/**\n * PdfStandardFontMetricsFactory.ts class for EJ2-PDF\n */\n/**\n * @private\n * `Factory of the standard fonts metrics`.\n */\nvar PdfStandardFontMetricsFactory = /** @__PURE__ @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}());\n\nvar __extends$e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * 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 = /** @__PURE__ @class */ (function (_super) {\n __extends$e(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));\n\n/**\n * `PdfAnnotation` class represents the base class for annotation objects.\n * @private\n */\nvar PdfAnnotation = /** @__PURE__ @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}());\n\nvar __extends$f = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `PdfLinkAnnotation` class represents the ink annotation class.\n * @private\n */\nvar PdfLinkAnnotation = /** @__PURE__ @class */ (function (_super) {\n __extends$f(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));\n\nvar __extends$g = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Represents base class for `link annotations` with associated action.\n * @private\n */\nvar PdfActionLinkAnnotation = /** @__PURE__ @class */ (function (_super) {\n __extends$g(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));\n\nvar __extends$h = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `PdfDocumentLinkAnnotation` class represents an annotation object with holds link on another location within a document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create new pages\n * let page1 : PdfPage = document.pages.add();\n * let page2 : PdfPage = document.pages.add();\n * // create a new rectangle\n * let bounds : RectangleF = new RectangleF({x : 10, y : 200}, {width : 300, height : 25});\n * //\n * // create a new document link annotation\n * let documentLinkAnnotation : PdfDocumentLinkAnnotation = new PdfDocumentLinkAnnotation(bounds);\n * // set the annotation text\n * documentLinkAnnotation.text = 'Document link annotation';\n * // set the destination\n * documentLinkAnnotation.destination = new PdfDestination(page2);\n * // set the documentlink annotation location\n * documentLinkAnnotation.destination.location = new PointF(10, 0);\n * // add this annotation to a new page\n * page1.annotations.add(documentLinkAnnotation);\n * //\n * // save the document to disk\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocumentLinkAnnotation = /** @__PURE__ @class */ (function (_super) {\n __extends$h(PdfDocumentLinkAnnotation, _super);\n function PdfDocumentLinkAnnotation(rectangle, destination) {\n var _this = _super.call(this, rectangle) || this;\n // Fields\n /**\n * `Destination` of the annotation.\n * @default null\n * @private\n */\n _this.pdfDestination = null;\n if (typeof destination !== 'undefined') {\n _this.destination = destination;\n }\n return _this;\n }\n Object.defineProperty(PdfDocumentLinkAnnotation.prototype, \"destination\", {\n // Properties\n /**\n * Gets or sets the `destination` of the annotation.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create new pages\n * let page1 : PdfPage = document.pages.add();\n * let page2 : PdfPage = document.pages.add();\n * // create a new rectangle\n * let bounds : RectangleF = new RectangleF({x : 10, y : 200}, {width : 300, height : 25});\n * //\n * // create a new document link annotation\n * let documentLinkAnnotation : PdfDocumentLinkAnnotation = new PdfDocumentLinkAnnotation(bounds);\n * // set the annotation text\n * documentLinkAnnotation.text = 'Document link annotation';\n * // set the destination\n * documentLinkAnnotation.destination = new PdfDestination(page2);\n * // set the documentlink annotation location\n * documentLinkAnnotation.destination.location = new PointF(10, 0);\n * // add this annotation to a new page\n * page1.annotations.add(documentLinkAnnotation);\n * //\n * // save the document to disk\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default null\n */\n get: function () {\n return this.pdfDestination;\n },\n set: function (value) {\n // if (this.pdfDestination !== value) {\n this.pdfDestination = value;\n // }\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Saves` annotation object.\n * @private\n */\n PdfDocumentLinkAnnotation.prototype.save = function () {\n _super.prototype.save.call(this);\n if (this.pdfDestination != null) {\n this.dictionary.items.setValue(this.dictionaryProperties.dest, this.pdfDestination.element);\n }\n };\n /**\n * `Clone` the document link annotation.\n * @private\n */\n PdfDocumentLinkAnnotation.prototype.clone = function () {\n var annot = new PdfDocumentLinkAnnotation(this.bounds, this.destination);\n annot.color = this.color;\n annot.brush = this.brush;\n annot.destination = this.destination;\n annot.font = this.font;\n return annot;\n };\n return PdfDocumentLinkAnnotation;\n}(PdfLinkAnnotation));\n\n/**\n * ElementLayouter.ts class for EJ2-PDF\n */\n/**\n * Base class for `elements lay outing`.\n * @private\n */\nvar ElementLayouter = /** @__PURE__ @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}());\nvar PdfLayoutFormat = /** @__PURE__ @class */ (function () {\n function PdfLayoutFormat(baseFormat) {\n if (typeof baseFormat === 'undefined') ;\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}());\nvar PdfLayoutParams = /** @__PURE__ @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}());\nvar PdfLayoutResult = /** @__PURE__ @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}());\n\n/**\n * PdfBorders.ts class for EJ2-PDF\n */\n/**\n * `PdfBorders` class used represents the cell border of the PDF grid.\n */\nvar PdfBorders = /** @__PURE__ @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}());\nvar PdfPaddings = /** @__PURE__ @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 //0.5 is set for top and bottom by default.\n this.bottomPad = this.topPad = this.leftPad = this.rightPad = 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}());\n\n/**\n * `PdfLayoutElement` class represents the base class for all elements that can be layout on the pages.\n * @private\n */\nvar PdfLayoutElement = /** @__PURE__ @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}());\n\nvar __extends$i = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Class that `layouts the text`.\n * @private\n */\nvar TextLayouter = /** @__PURE__ @class */ (function (_super) {\n __extends$i(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));\nvar TextPageLayoutResult = /** @__PURE__ @class */ (function () {\n function TextPageLayoutResult() {\n }\n return TextPageLayoutResult;\n}());\nvar PdfTextLayoutResult = /** @__PURE__ @class */ (function (_super) {\n __extends$i(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));\n\nvar __extends$j = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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` class represents the text area with the ability to span several pages\n * and inherited from the 'PdfLayoutElement' class.\n * @private\n */\nvar PdfTextElement = /** @__PURE__ @class */ (function (_super) {\n __extends$j(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 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 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 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 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 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 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 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));\n\nvar __extends$k = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `PdfUriAnnotation` class represents the Uri annotation.\n * @private\n */\nvar PdfUriAnnotation = /** @__PURE__ @class */ (function (_super) {\n __extends$k(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));\n\nvar __extends$l = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `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 = /** @__PURE__ @class */ (function (_super) {\n __extends$l(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 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));\n\n/**\n * PdfNumbersConvertor.ts class for EJ2-PDF\n * @private\n */\n/**\n * `PdfNumbersConvertor` for convert page number into numbers, roman letters, etc.,\n * @private\n */\nvar PdfNumbersConvertor = /** @__PURE__ @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}());\n\n/**\n * Represent class to store information about `template and value pairs`.\n * @private\n */\nvar PdfTemplateValuePair = /** @__PURE__ @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 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}());\n\nvar __extends$m = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Represents automatic field which has the same value within the `PdfGraphics`.\n */\nvar PdfMultipleValueField = /** @__PURE__ @class */ (function (_super) {\n __extends$m(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 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));\n\nvar __extends$n = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Represents PDF document `page number field`.\n * @public\n */\nvar PdfPageNumberField = /** @__PURE__ @class */ (function (_super) {\n __extends$n(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));\n\nvar __extends$o = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Represents class which can concatenate multiple automatic fields into single string.\n */\nvar PdfCompositeField = /** @__PURE__ @class */ (function (_super) {\n __extends$o(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 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));\n\nvar __extends$p = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Represents automatic field which has the same value in the whole document.\n */\nvar PdfSingleValueField = /** @__PURE__ @class */ (function (_super) {\n __extends$p(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));\n\nvar __extends$q = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Represents total PDF document page count automatic field.\n */\nvar PdfPageCountField = /** @__PURE__ @class */ (function (_super) {\n __extends$q(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));\n\n/**\n * public Enum for `PdfDestinationMode`.\n * @private\n */\nvar PdfDestinationMode;\n(function (PdfDestinationMode) {\n /**\n * Specifies the type of `Location`.\n * @private\n */\n PdfDestinationMode[PdfDestinationMode[\"Location\"] = 0] = \"Location\";\n /**\n * Specifies the type of `FitToPage`.\n * @private\n */\n PdfDestinationMode[PdfDestinationMode[\"FitToPage\"] = 1] = \"FitToPage\";\n /**\n * Specifies the type of `FitR`.\n * @private\n */\n PdfDestinationMode[PdfDestinationMode[\"FitR\"] = 2] = \"FitR\";\n})(PdfDestinationMode || (PdfDestinationMode = {}));\n\n/**\n * `PdfDestination` class represents an anchor in the document\n * where bookmarks or annotations can direct when clicked.\n */\nvar PdfDestination = /** @__PURE__ @class */ (function () {\n function PdfDestination(arg1, arg2) {\n // Fields\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Type of the `destination`.\n * @private\n */\n this.destinationMode = PdfDestinationMode.Location;\n /**\n * `Zoom` factor.\n * @private\n * @default 0\n */\n this.zoomFactor = 0;\n /**\n * `Location` of the destination.\n * @default new PointF() with 0 ,0 as co-ordinates\n * @private\n */\n this.destinationLocation = new PointF(0, 0);\n /**\n * `Bounds` of the destination as RectangleF.\n * @default RectangleF.Empty\n * @private\n */\n this.bounds = new RectangleF();\n /**\n * Pdf primitive representing `this` object.\n * @private\n */\n this.array = new PdfArray();\n var angle = PdfPageRotateAngle.RotateAngle0;\n this.destinationLocation = new PointF(0, this.destinationLocation.y);\n this.pdfPage = arg1;\n if (arg2 instanceof PointF) {\n this.destinationLocation = arg2;\n }\n else {\n this.bounds = arg2;\n }\n }\n Object.defineProperty(PdfDestination.prototype, \"zoom\", {\n // Properties\n /**\n * Gets and Sets the `zoom` factor.\n * @private\n */\n get: function () {\n return this.zoomFactor;\n },\n set: function (value) {\n this.zoomFactor = value;\n this.initializePrimitive();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"page\", {\n /**\n * Gets and Sets the `page` object.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n set: function (value) {\n this.pdfPage = value;\n this.initializePrimitive();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"mode\", {\n /**\n * Gets and Sets the destination `mode`.\n * @private\n */\n get: function () {\n return this.destinationMode;\n },\n set: function (value) {\n this.destinationMode = value;\n this.initializePrimitive();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"location\", {\n /**\n * Gets and Sets the `location`.\n * @private\n */\n get: function () {\n return this.destinationLocation;\n },\n set: function (value) {\n this.destinationLocation = value;\n this.initializePrimitive();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Translates` co-ordinates to PDF co-ordinate system (lower/left).\n * @private\n */\n PdfDestination.prototype.pointToNativePdf = function (page, point) {\n var section = page.section;\n return section.pointToNativePdf(page, point);\n };\n /**\n * `In fills` array by correct values.\n * @private\n */\n PdfDestination.prototype.initializePrimitive = function () {\n this.array.clear();\n this.array.add(new PdfReferenceHolder(this.pdfPage));\n switch (this.destinationMode) {\n case PdfDestinationMode.Location:\n var simplePage = this.pdfPage;\n var point = new PointF();\n point = this.pointToNativePdf(simplePage, this.destinationLocation);\n this.array.add(new PdfName(this.dictionaryProperties.xyz));\n this.array.add(new PdfNumber(point.x));\n this.array.add(new PdfNumber(point.y));\n this.array.add(new PdfNumber(this.zoomFactor));\n break;\n case PdfDestinationMode.FitToPage:\n this.array.add(new PdfName(this.dictionaryProperties.fit));\n break;\n }\n };\n Object.defineProperty(PdfDestination.prototype, \"element\", {\n /**\n * Gets the `element` representing this object.\n * @private\n */\n get: function () {\n this.initializePrimitive();\n return this.array;\n },\n enumerable: true,\n configurable: true\n });\n return PdfDestination;\n}());\n\nvar PdfFunction = /** @__PURE__ @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfFunction` class.\n * @public\n */\n function PdfFunction(dictionary) {\n //Field\n /**\n * Internal variable to store dictionary.\n * @private\n */\n this.mDictionary = null;\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n this.mDictionaryProperties = new DictionaryProperties();\n this.mDictionary = dictionary;\n }\n Object.defineProperty(PdfFunction.prototype, \"domain\", {\n //Properties\n /**\n * Gets or sets the domain of the function.\n * @public\n */\n get: function () {\n var domain = this.mDictionary.items.getValue(this.mDictionaryProperties.domain);\n return domain;\n },\n set: function (value) {\n this.mDictionary.items.setValue(this.mDictionaryProperties.domain, value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFunction.prototype, \"range\", {\n /**\n * Gets or sets the range.\n * @public\n */\n get: function () {\n var range = (this.mDictionary.items.getValue(this.mDictionaryProperties.range));\n return range;\n },\n set: function (value) {\n this.mDictionary.items.setValue(this.mDictionaryProperties.range, value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFunction.prototype, \"dictionary\", {\n /**\n * Gets the dictionary.\n */\n get: function () {\n return this.mDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFunction.prototype, \"element\", {\n //IPdfWrapper Members\n /**\n * Gets the element.\n */\n get: function () {\n return this.mDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFunction;\n}());\n\nvar __extends$r = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar PdfSampledFunction = /** @__PURE__ @class */ (function (_super) {\n __extends$r(PdfSampledFunction, _super);\n /**\n * Initializes a new instance of the `PdfSampledFunction` class.\n * @public\n */\n function PdfSampledFunction(domain, range, sizes, samples) {\n var _this = _super.call(this, new PdfStream()) || this;\n if (typeof domain === 'undefined') {\n _this.dictionary.items.setValue(_this.mDictionaryProperties.functionType, new PdfNumber(0));\n }\n else {\n _this.dictionary.items.setValue(_this.mDictionaryProperties.functionType, new PdfNumber(0));\n _this.checkParams(domain, range, sizes, samples);\n _this.setDomainAndRange(domain, range);\n _this.setSizeAndValues(sizes, samples);\n }\n return _this;\n }\n // Helper methods\n /**\n * Checks the input parameters.\n */\n PdfSampledFunction.prototype.checkParams = function (domain, range, sizes, samples) {\n var rLength = range.length;\n var dLength = domain.length;\n var sLength = samples.length;\n };\n /**\n * Sets the domain and range.\n */\n PdfSampledFunction.prototype.setDomainAndRange = function (domain, range) {\n this.domain = new PdfArray(domain);\n this.range = new PdfArray(range);\n };\n /**\n * Sets the size and values.\n */\n PdfSampledFunction.prototype.setSizeAndValues = function (sizes, samples) {\n var s = (this.dictionary);\n s.isResource = true;\n this.dictionary.items.setValue(this.mDictionaryProperties.size, new PdfArray(sizes));\n this.dictionary.items.setValue(this.mDictionaryProperties.bitsPerSample, new PdfNumber(8));\n s.writeBytes(samples);\n };\n return PdfSampledFunction;\n}(PdfFunction));\n\n/**\n * Specifies the constant values specifying whether to extend the shading\n * beyond the starting and ending points of the axis.\n */\nvar PdfExtend;\n(function (PdfExtend) {\n /**\n * Do not extend any point.\n */\n PdfExtend[PdfExtend[\"None\"] = 0] = \"None\";\n /**\n * Extend start point.\n */\n PdfExtend[PdfExtend[\"Start\"] = 1] = \"Start\";\n /**\n * Extend end point.\n */\n PdfExtend[PdfExtend[\"End\"] = 2] = \"End\";\n /**\n * Extend both start and end points.\n */\n PdfExtend[PdfExtend[\"Both\"] = 3] = \"Both\";\n})(PdfExtend || (PdfExtend = {}));\n/**\n * Specifies the gradient direction of the linear gradient brush.\n */\nvar PdfLinearGradientMode;\n(function (PdfLinearGradientMode) {\n /**\n * Specifies a gradient from upper right to lower left.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"BackwardDiagonal\"] = 0] = \"BackwardDiagonal\";\n /**\n * Specifies a gradient from upper left to lower right.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"ForwardDiagonal\"] = 1] = \"ForwardDiagonal\";\n /**\n * Specifies a gradient from left to right.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"Horizontal\"] = 2] = \"Horizontal\";\n /**\n * Specifies a gradient from top to bottom.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"Vertical\"] = 3] = \"Vertical\";\n})(PdfLinearGradientMode || (PdfLinearGradientMode = {}));\n/**\n * Shading type constants.\n */\nvar ShadingType;\n(function (ShadingType) {\n /**\n * Function-based shading.\n */\n ShadingType[ShadingType[\"Function\"] = 1] = \"Function\";\n /**\n * Axial shading.\n */\n ShadingType[ShadingType[\"Axial\"] = 2] = \"Axial\";\n /**\n * Radial shading.\n */\n ShadingType[ShadingType[\"Radial\"] = 3] = \"Radial\";\n})(ShadingType || (ShadingType = {}));\nvar KnownColor;\n(function (KnownColor) {\n KnownColor[KnownColor[\"ActiveBorder\"] = 1] = \"ActiveBorder\";\n KnownColor[KnownColor[\"ActiveCaption\"] = 2] = \"ActiveCaption\";\n KnownColor[KnownColor[\"ActiveCaptionText\"] = 3] = \"ActiveCaptionText\";\n KnownColor[KnownColor[\"AppWorkspace\"] = 4] = \"AppWorkspace\";\n KnownColor[KnownColor[\"Control\"] = 5] = \"Control\";\n KnownColor[KnownColor[\"ControlDark\"] = 6] = \"ControlDark\";\n KnownColor[KnownColor[\"ControlDarkDark\"] = 7] = \"ControlDarkDark\";\n KnownColor[KnownColor[\"ControlLight\"] = 8] = \"ControlLight\";\n KnownColor[KnownColor[\"ControlLightLight\"] = 9] = \"ControlLightLight\";\n KnownColor[KnownColor[\"ControlText\"] = 10] = \"ControlText\";\n KnownColor[KnownColor[\"Desktop\"] = 11] = \"Desktop\";\n KnownColor[KnownColor[\"GrayText\"] = 12] = \"GrayText\";\n KnownColor[KnownColor[\"Highlight\"] = 13] = \"Highlight\";\n KnownColor[KnownColor[\"HighlightText\"] = 14] = \"HighlightText\";\n KnownColor[KnownColor[\"HotTrack\"] = 15] = \"HotTrack\";\n KnownColor[KnownColor[\"InactiveBorder\"] = 16] = \"InactiveBorder\";\n KnownColor[KnownColor[\"InactiveCaption\"] = 17] = \"InactiveCaption\";\n KnownColor[KnownColor[\"InactiveCaptionText\"] = 18] = \"InactiveCaptionText\";\n KnownColor[KnownColor[\"Info\"] = 19] = \"Info\";\n KnownColor[KnownColor[\"InfoText\"] = 20] = \"InfoText\";\n KnownColor[KnownColor[\"Menu\"] = 21] = \"Menu\";\n KnownColor[KnownColor[\"MenuText\"] = 22] = \"MenuText\";\n KnownColor[KnownColor[\"ScrollBar\"] = 23] = \"ScrollBar\";\n KnownColor[KnownColor[\"Window\"] = 24] = \"Window\";\n KnownColor[KnownColor[\"WindowFrame\"] = 25] = \"WindowFrame\";\n KnownColor[KnownColor[\"WindowText\"] = 26] = \"WindowText\";\n KnownColor[KnownColor[\"Transparent\"] = 27] = \"Transparent\";\n KnownColor[KnownColor[\"AliceBlue\"] = 28] = \"AliceBlue\";\n KnownColor[KnownColor[\"AntiqueWhite\"] = 29] = \"AntiqueWhite\";\n KnownColor[KnownColor[\"Aqua\"] = 30] = \"Aqua\";\n KnownColor[KnownColor[\"Aquamarine\"] = 31] = \"Aquamarine\";\n KnownColor[KnownColor[\"Azure\"] = 32] = \"Azure\";\n KnownColor[KnownColor[\"Beige\"] = 33] = \"Beige\";\n KnownColor[KnownColor[\"Bisque\"] = 34] = \"Bisque\";\n KnownColor[KnownColor[\"Black\"] = 35] = \"Black\";\n KnownColor[KnownColor[\"BlanchedAlmond\"] = 36] = \"BlanchedAlmond\";\n KnownColor[KnownColor[\"Blue\"] = 37] = \"Blue\";\n KnownColor[KnownColor[\"BlueViolet\"] = 38] = \"BlueViolet\";\n KnownColor[KnownColor[\"Brown\"] = 39] = \"Brown\";\n KnownColor[KnownColor[\"BurlyWood\"] = 40] = \"BurlyWood\";\n KnownColor[KnownColor[\"CadetBlue\"] = 41] = \"CadetBlue\";\n KnownColor[KnownColor[\"Chartreuse\"] = 42] = \"Chartreuse\";\n KnownColor[KnownColor[\"Chocolate\"] = 43] = \"Chocolate\";\n KnownColor[KnownColor[\"Coral\"] = 44] = \"Coral\";\n KnownColor[KnownColor[\"CornflowerBlue\"] = 45] = \"CornflowerBlue\";\n KnownColor[KnownColor[\"Cornsilk\"] = 46] = \"Cornsilk\";\n KnownColor[KnownColor[\"Crimson\"] = 47] = \"Crimson\";\n KnownColor[KnownColor[\"Cyan\"] = 48] = \"Cyan\";\n KnownColor[KnownColor[\"DarkBlue\"] = 49] = \"DarkBlue\";\n KnownColor[KnownColor[\"DarkCyan\"] = 50] = \"DarkCyan\";\n KnownColor[KnownColor[\"DarkGoldenrod\"] = 51] = \"DarkGoldenrod\";\n KnownColor[KnownColor[\"DarkGray\"] = 52] = \"DarkGray\";\n KnownColor[KnownColor[\"DarkGreen\"] = 53] = \"DarkGreen\";\n KnownColor[KnownColor[\"DarkKhaki\"] = 54] = \"DarkKhaki\";\n KnownColor[KnownColor[\"DarkMagenta\"] = 55] = \"DarkMagenta\";\n KnownColor[KnownColor[\"DarkOliveGreen\"] = 56] = \"DarkOliveGreen\";\n KnownColor[KnownColor[\"DarkOrange\"] = 57] = \"DarkOrange\";\n KnownColor[KnownColor[\"DarkOrchid\"] = 58] = \"DarkOrchid\";\n KnownColor[KnownColor[\"DarkRed\"] = 59] = \"DarkRed\";\n KnownColor[KnownColor[\"DarkSalmon\"] = 60] = \"DarkSalmon\";\n KnownColor[KnownColor[\"DarkSeaGreen\"] = 61] = \"DarkSeaGreen\";\n KnownColor[KnownColor[\"DarkSlateBlue\"] = 62] = \"DarkSlateBlue\";\n KnownColor[KnownColor[\"DarkSlateGray\"] = 63] = \"DarkSlateGray\";\n KnownColor[KnownColor[\"DarkTurquoise\"] = 64] = \"DarkTurquoise\";\n KnownColor[KnownColor[\"DarkViolet\"] = 65] = \"DarkViolet\";\n KnownColor[KnownColor[\"DeepPink\"] = 66] = \"DeepPink\";\n KnownColor[KnownColor[\"DeepSkyBlue\"] = 67] = \"DeepSkyBlue\";\n KnownColor[KnownColor[\"DimGray\"] = 68] = \"DimGray\";\n KnownColor[KnownColor[\"DodgerBlue\"] = 69] = \"DodgerBlue\";\n KnownColor[KnownColor[\"Firebrick\"] = 70] = \"Firebrick\";\n KnownColor[KnownColor[\"FloralWhite\"] = 71] = \"FloralWhite\";\n KnownColor[KnownColor[\"ForestGreen\"] = 72] = \"ForestGreen\";\n KnownColor[KnownColor[\"Fuchsia\"] = 73] = \"Fuchsia\";\n KnownColor[KnownColor[\"Gainsboro\"] = 74] = \"Gainsboro\";\n KnownColor[KnownColor[\"GhostWhite\"] = 75] = \"GhostWhite\";\n KnownColor[KnownColor[\"Gold\"] = 76] = \"Gold\";\n KnownColor[KnownColor[\"Goldenrod\"] = 77] = \"Goldenrod\";\n KnownColor[KnownColor[\"Gray\"] = 78] = \"Gray\";\n KnownColor[KnownColor[\"Green\"] = 79] = \"Green\";\n KnownColor[KnownColor[\"GreenYellow\"] = 80] = \"GreenYellow\";\n KnownColor[KnownColor[\"Honeydew\"] = 81] = \"Honeydew\";\n KnownColor[KnownColor[\"HotPink\"] = 82] = \"HotPink\";\n KnownColor[KnownColor[\"IndianRed\"] = 83] = \"IndianRed\";\n KnownColor[KnownColor[\"Indigo\"] = 84] = \"Indigo\";\n KnownColor[KnownColor[\"Ivory\"] = 85] = \"Ivory\";\n KnownColor[KnownColor[\"Khaki\"] = 86] = \"Khaki\";\n KnownColor[KnownColor[\"Lavender\"] = 87] = \"Lavender\";\n KnownColor[KnownColor[\"LavenderBlush\"] = 88] = \"LavenderBlush\";\n KnownColor[KnownColor[\"LawnGreen\"] = 89] = \"LawnGreen\";\n KnownColor[KnownColor[\"LemonChiffon\"] = 90] = \"LemonChiffon\";\n KnownColor[KnownColor[\"LightBlue\"] = 91] = \"LightBlue\";\n KnownColor[KnownColor[\"LightCoral\"] = 92] = \"LightCoral\";\n KnownColor[KnownColor[\"LightCyan\"] = 93] = \"LightCyan\";\n KnownColor[KnownColor[\"LightGoldenrodYellow\"] = 94] = \"LightGoldenrodYellow\";\n KnownColor[KnownColor[\"LightGray\"] = 95] = \"LightGray\";\n KnownColor[KnownColor[\"LightGreen\"] = 96] = \"LightGreen\";\n KnownColor[KnownColor[\"LightPink\"] = 97] = \"LightPink\";\n KnownColor[KnownColor[\"LightSalmon\"] = 98] = \"LightSalmon\";\n KnownColor[KnownColor[\"LightSeaGreen\"] = 99] = \"LightSeaGreen\";\n KnownColor[KnownColor[\"LightSkyBlue\"] = 100] = \"LightSkyBlue\";\n KnownColor[KnownColor[\"LightSlateGray\"] = 101] = \"LightSlateGray\";\n KnownColor[KnownColor[\"LightSteelBlue\"] = 102] = \"LightSteelBlue\";\n KnownColor[KnownColor[\"LightYellow\"] = 103] = \"LightYellow\";\n KnownColor[KnownColor[\"Lime\"] = 104] = \"Lime\";\n KnownColor[KnownColor[\"LimeGreen\"] = 105] = \"LimeGreen\";\n KnownColor[KnownColor[\"Linen\"] = 106] = \"Linen\";\n KnownColor[KnownColor[\"Magenta\"] = 107] = \"Magenta\";\n KnownColor[KnownColor[\"Maroon\"] = 108] = \"Maroon\";\n KnownColor[KnownColor[\"MediumAquamarine\"] = 109] = \"MediumAquamarine\";\n KnownColor[KnownColor[\"MediumBlue\"] = 110] = \"MediumBlue\";\n KnownColor[KnownColor[\"MediumOrchid\"] = 111] = \"MediumOrchid\";\n KnownColor[KnownColor[\"MediumPurple\"] = 112] = \"MediumPurple\";\n KnownColor[KnownColor[\"MediumSeaGreen\"] = 113] = \"MediumSeaGreen\";\n KnownColor[KnownColor[\"MediumSlateBlue\"] = 114] = \"MediumSlateBlue\";\n KnownColor[KnownColor[\"MediumSpringGreen\"] = 115] = \"MediumSpringGreen\";\n KnownColor[KnownColor[\"MediumTurquoise\"] = 116] = \"MediumTurquoise\";\n KnownColor[KnownColor[\"MediumVioletRed\"] = 117] = \"MediumVioletRed\";\n KnownColor[KnownColor[\"MidnightBlue\"] = 118] = \"MidnightBlue\";\n KnownColor[KnownColor[\"MintCream\"] = 119] = \"MintCream\";\n KnownColor[KnownColor[\"MistyRose\"] = 120] = \"MistyRose\";\n KnownColor[KnownColor[\"Moccasin\"] = 121] = \"Moccasin\";\n KnownColor[KnownColor[\"NavajoWhite\"] = 122] = \"NavajoWhite\";\n KnownColor[KnownColor[\"Navy\"] = 123] = \"Navy\";\n KnownColor[KnownColor[\"OldLace\"] = 124] = \"OldLace\";\n KnownColor[KnownColor[\"Olive\"] = 125] = \"Olive\";\n KnownColor[KnownColor[\"OliveDrab\"] = 126] = \"OliveDrab\";\n KnownColor[KnownColor[\"Orange\"] = 127] = \"Orange\";\n KnownColor[KnownColor[\"OrangeRed\"] = 128] = \"OrangeRed\";\n KnownColor[KnownColor[\"Orchid\"] = 129] = \"Orchid\";\n KnownColor[KnownColor[\"PaleGoldenrod\"] = 130] = \"PaleGoldenrod\";\n KnownColor[KnownColor[\"PaleGreen\"] = 131] = \"PaleGreen\";\n KnownColor[KnownColor[\"PaleTurquoise\"] = 132] = \"PaleTurquoise\";\n KnownColor[KnownColor[\"PaleVioletRed\"] = 133] = \"PaleVioletRed\";\n KnownColor[KnownColor[\"PapayaWhip\"] = 134] = \"PapayaWhip\";\n KnownColor[KnownColor[\"PeachPuff\"] = 135] = \"PeachPuff\";\n KnownColor[KnownColor[\"Peru\"] = 136] = \"Peru\";\n KnownColor[KnownColor[\"Pink\"] = 137] = \"Pink\";\n KnownColor[KnownColor[\"Plum\"] = 138] = \"Plum\";\n KnownColor[KnownColor[\"PowderBlue\"] = 139] = \"PowderBlue\";\n KnownColor[KnownColor[\"Purple\"] = 140] = \"Purple\";\n KnownColor[KnownColor[\"Red\"] = 141] = \"Red\";\n KnownColor[KnownColor[\"RosyBrown\"] = 142] = \"RosyBrown\";\n KnownColor[KnownColor[\"RoyalBlue\"] = 143] = \"RoyalBlue\";\n KnownColor[KnownColor[\"SaddleBrown\"] = 144] = \"SaddleBrown\";\n KnownColor[KnownColor[\"Salmon\"] = 145] = \"Salmon\";\n KnownColor[KnownColor[\"SandyBrown\"] = 146] = \"SandyBrown\";\n KnownColor[KnownColor[\"SeaGreen\"] = 147] = \"SeaGreen\";\n KnownColor[KnownColor[\"SeaShell\"] = 148] = \"SeaShell\";\n KnownColor[KnownColor[\"Sienna\"] = 149] = \"Sienna\";\n KnownColor[KnownColor[\"Silver\"] = 150] = \"Silver\";\n KnownColor[KnownColor[\"SkyBlue\"] = 151] = \"SkyBlue\";\n KnownColor[KnownColor[\"SlateBlue\"] = 152] = \"SlateBlue\";\n KnownColor[KnownColor[\"SlateGray\"] = 153] = \"SlateGray\";\n KnownColor[KnownColor[\"Snow\"] = 154] = \"Snow\";\n KnownColor[KnownColor[\"SpringGreen\"] = 155] = \"SpringGreen\";\n KnownColor[KnownColor[\"SteelBlue\"] = 156] = \"SteelBlue\";\n KnownColor[KnownColor[\"Tan\"] = 157] = \"Tan\";\n KnownColor[KnownColor[\"Teal\"] = 158] = \"Teal\";\n KnownColor[KnownColor[\"Thistle\"] = 159] = \"Thistle\";\n KnownColor[KnownColor[\"Tomato\"] = 160] = \"Tomato\";\n KnownColor[KnownColor[\"Turquoise\"] = 161] = \"Turquoise\";\n KnownColor[KnownColor[\"Violet\"] = 162] = \"Violet\";\n KnownColor[KnownColor[\"Wheat\"] = 163] = \"Wheat\";\n KnownColor[KnownColor[\"White\"] = 164] = \"White\";\n KnownColor[KnownColor[\"WhiteSmoke\"] = 165] = \"WhiteSmoke\";\n KnownColor[KnownColor[\"Yellow\"] = 166] = \"Yellow\";\n KnownColor[KnownColor[\"YellowGreen\"] = 167] = \"YellowGreen\";\n KnownColor[KnownColor[\"ButtonFace\"] = 168] = \"ButtonFace\";\n KnownColor[KnownColor[\"ButtonHighlight\"] = 169] = \"ButtonHighlight\";\n KnownColor[KnownColor[\"ButtonShadow\"] = 170] = \"ButtonShadow\";\n KnownColor[KnownColor[\"GradientActiveCaption\"] = 171] = \"GradientActiveCaption\";\n KnownColor[KnownColor[\"GradientInactiveCaption\"] = 172] = \"GradientInactiveCaption\";\n KnownColor[KnownColor[\"MenuBar\"] = 173] = \"MenuBar\";\n KnownColor[KnownColor[\"MenuHighlight\"] = 174] = \"MenuHighlight\";\n})(KnownColor || (KnownColor = {}));\n\n/**\n * PdfBrushes.ts class for EJ2-PDF\n */\n/**\n * `PdfBrushes` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfBrushes = /** @__PURE__ @class */ (function () {\n function PdfBrushes() {\n }\n Object.defineProperty(PdfBrushes, \"AliceBlue\", {\n //Static Properties\n /**\n * Gets the AliceBlue brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.AliceBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.AliceBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.AliceBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"AntiqueWhite\", {\n /**\n * Gets the antique white brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.AntiqueWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.AntiqueWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.AntiqueWhite);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Aqua\", {\n /**\n * Gets the Aqua default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Aqua)) {\n brush = (this.sBrushes.getValue(KnownColor.Aqua));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Aqua);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Aquamarine\", {\n /**\n * Gets the Aquamarine default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Aquamarine)) {\n brush = (this.sBrushes.getValue(KnownColor.Aquamarine));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Aquamarine);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Azure\", {\n /**\n * Gets the Azure default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Azure)) {\n brush = (this.sBrushes.getValue(KnownColor.Azure));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Azure);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Beige\", {\n /**\n * Gets the Beige default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Beige)) {\n brush = (this.sBrushes.getValue(KnownColor.Beige));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Beige);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Bisque\", {\n /**\n * Gets the Bisque default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Bisque)) {\n brush = (this.sBrushes.getValue(KnownColor.Bisque));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Bisque);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Black\", {\n /**\n * Gets the Black default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Black)) {\n brush = (this.sBrushes.getValue(KnownColor.Black));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Black);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"BlanchedAlmond\", {\n /**\n * Gets the BlanchedAlmond default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.BlanchedAlmond)) {\n brush = (this.sBrushes.getValue(KnownColor.BlanchedAlmond));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.BlanchedAlmond);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Blue\", {\n /**\n * Gets the Blue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Blue)) {\n brush = (this.sBrushes.getValue(KnownColor.Blue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Blue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"BlueViolet\", {\n /**\n * Gets the BlueViolet default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.BlueViolet)) {\n brush = (this.sBrushes.getValue(KnownColor.BlueViolet));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.BlueViolet);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Brown\", {\n /**\n * Gets the Brown default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Brown)) {\n brush = (this.sBrushes.getValue(KnownColor.Brown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Brown);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"BurlyWood\", {\n /**\n * Gets the BurlyWood default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.BurlyWood)) {\n brush = (this.sBrushes.getValue(KnownColor.BurlyWood));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.BurlyWood);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"CadetBlue\", {\n /**\n * Gets the CadetBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.CadetBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.CadetBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.CadetBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Chartreuse\", {\n /**\n * Gets the Chartreuse default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Chartreuse)) {\n brush = (this.sBrushes.getValue(KnownColor.Chartreuse));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Chartreuse);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Chocolate\", {\n /**\n * Gets the Chocolate default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Chocolate)) {\n brush = (this.sBrushes.getValue(KnownColor.Chocolate));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Chocolate);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Coral\", {\n /**\n * Gets the Coral default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Coral)) {\n brush = (this.sBrushes.getValue(KnownColor.Coral));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Coral);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"CornflowerBlue\", {\n /**\n * Gets the CornflowerBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.CornflowerBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.CornflowerBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.CornflowerBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Cornsilk\", {\n /**\n * Gets the Corn silk default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Cornsilk)) {\n brush = (this.sBrushes.getValue(KnownColor.Cornsilk));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Cornsilk);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Crimson\", {\n /**\n * Gets the Crimson default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Crimson)) {\n brush = (this.sBrushes.getValue(KnownColor.Crimson));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Crimson);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Cyan\", {\n /**\n * Gets the Cyan default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Cyan)) {\n brush = (this.sBrushes.getValue(KnownColor.Cyan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Cyan);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkBlue\", {\n /**\n * Gets the DarkBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkCyan\", {\n /**\n * Gets the DarkCyan default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkCyan)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkCyan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkCyan);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkGoldenrod\", {\n /**\n * Gets the DarkGoldenrod default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkGoldenrod)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkGoldenrod));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkGoldenrod);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkGray\", {\n /**\n * Gets the DarkGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkGray)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkGreen\", {\n /**\n * Gets the DarkGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkKhaki\", {\n /**\n * Gets the DarkKhaki default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkKhaki)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkKhaki));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkKhaki);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkMagenta\", {\n /**\n * Gets the DarkMagenta default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkMagenta)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkMagenta));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkMagenta);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkOliveGreen\", {\n /**\n * Gets the DarkOliveGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkOliveGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkOliveGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkOliveGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkOrange\", {\n /**\n * Gets the DarkOrange default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkOrange)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkOrange));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkOrange);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkOrchid\", {\n /**\n * Gets the DarkOrchid default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkOrchid)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkOrchid));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkOrchid);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkRed\", {\n /**\n * Gets the DarkRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkRed)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkSalmon\", {\n /**\n * Gets the DarkSalmon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSalmon)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSalmon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSalmon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkSeaGreen\", {\n /**\n * Gets the DarkSeaGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSeaGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkSlateBlue\", {\n /**\n * Gets the DarkSlateBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSlateBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSlateBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSlateBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkSlateGray\", {\n /**\n * Gets the DarkSlateGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSlateGray)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSlateGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSlateGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkTurquoise\", {\n /**\n * Gets the DarkTurquoise default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkTurquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkTurquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkTurquoise);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkViolet\", {\n /**\n * Gets the DarkViolet default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkViolet)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkViolet));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkViolet);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DeepPink\", {\n /**\n * Gets the DeepPink default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DeepPink)) {\n brush = (this.sBrushes.getValue(KnownColor.DeepPink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DeepPink);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DeepSkyBlue\", {\n /**\n * Gets the DeepSkyBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DeepSkyBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DeepSkyBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DeepSkyBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DimGray\", {\n /**\n * Gets the DimGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DimGray)) {\n brush = (this.sBrushes.getValue(KnownColor.DimGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DimGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DodgerBlue\", {\n /**\n * Gets the DodgerBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DodgerBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DodgerBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DodgerBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Firebrick\", {\n /**\n * Gets the Firebrick default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Firebrick)) {\n brush = (this.sBrushes.getValue(KnownColor.Firebrick));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Firebrick);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"FloralWhite\", {\n /**\n * Gets the FloralWhite default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.FloralWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.FloralWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.FloralWhite);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"ForestGreen\", {\n /**\n * Gets the ForestGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.ForestGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.ForestGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.ForestGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Fuchsia\", {\n /**\n * Gets the Fuchsia default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Fuchsia)) {\n brush = (this.sBrushes.getValue(KnownColor.Fuchsia));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Fuchsia);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Gainsboro\", {\n /**\n * Gets the Gainsborough default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Gainsboro)) {\n brush = (this.sBrushes.getValue(KnownColor.Gainsboro));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Gainsboro);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"GhostWhite\", {\n /**\n * Gets the GhostWhite default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.GhostWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.GhostWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.GhostWhite);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Gold\", {\n /**\n * Gets the Gold default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Gold)) {\n brush = (this.sBrushes.getValue(KnownColor.Gold));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Gold);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Goldenrod\", {\n /**\n * Gets the Goldenrod default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Goldenrod)) {\n brush = (this.sBrushes.getValue(KnownColor.Goldenrod));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Goldenrod);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Gray\", {\n /**\n * Gets the Gray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Gray)) {\n brush = (this.sBrushes.getValue(KnownColor.Gray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Gray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Green\", {\n /**\n * Gets the Green default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Green)) {\n brush = (this.sBrushes.getValue(KnownColor.Green));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Green);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"GreenYellow\", {\n /**\n * Gets the GreenYellow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.GreenYellow)) {\n brush = (this.sBrushes.getValue(KnownColor.GreenYellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.GreenYellow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Honeydew\", {\n /**\n * Gets the Honeydew default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Honeydew)) {\n brush = (this.sBrushes.getValue(KnownColor.Honeydew));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Honeydew);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"HotPink\", {\n /**\n * Gets the HotPink default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.HotPink)) {\n brush = (this.sBrushes.getValue(KnownColor.HotPink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.HotPink);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"IndianRed\", {\n /**\n * Gets the IndianRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.IndianRed)) {\n brush = (this.sBrushes.getValue(KnownColor.IndianRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.IndianRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Indigo\", {\n /**\n * Gets the Indigo default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Indigo)) {\n brush = (this.sBrushes.getValue(KnownColor.Indigo));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Indigo);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Ivory\", {\n /**\n * Gets the Ivory default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Ivory)) {\n brush = (this.sBrushes.getValue(KnownColor.Ivory));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Ivory);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Khaki\", {\n /**\n * Gets the Khaki default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Khaki)) {\n brush = (this.sBrushes.getValue(KnownColor.Khaki));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Khaki);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Lavender\", {\n /**\n * Gets the Lavender default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Lavender)) {\n brush = (this.sBrushes.getValue(KnownColor.Lavender));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Lavender);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LavenderBlush\", {\n /**\n * Gets the LavenderBlush default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LavenderBlush)) {\n brush = (this.sBrushes.getValue(KnownColor.LavenderBlush));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LavenderBlush);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LawnGreen\", {\n /**\n * Gets the LawnGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LawnGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LawnGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LawnGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LemonChiffon\", {\n /**\n * Gets the LemonChiffon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LemonChiffon)) {\n brush = (this.sBrushes.getValue(KnownColor.LemonChiffon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LemonChiffon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightBlue\", {\n /**\n * Gets the LightBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.LightBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightCoral\", {\n /**\n * Gets the LightCoral default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightCoral)) {\n brush = (this.sBrushes.getValue(KnownColor.LightCoral));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightCoral);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightCyan\", {\n /**\n * Gets the LightCyan default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightCyan)) {\n brush = (this.sBrushes.getValue(KnownColor.LightCyan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightCyan);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightGoldenrodYellow\", {\n /**\n * Gets the LightGoldenrodYellow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightGoldenrodYellow)) {\n brush = (this.sBrushes.getValue(KnownColor.LightGoldenrodYellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightGoldenrodYellow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightGray\", {\n /**\n * Gets the LightGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightGray)) {\n brush = (this.sBrushes.getValue(KnownColor.LightGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightGreen\", {\n /**\n * Gets the LightGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LightGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightPink\", {\n /**\n * Gets the LightPink default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightPink)) {\n brush = (this.sBrushes.getValue(KnownColor.LightPink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightPink);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSalmon\", {\n /**\n * Gets the LightSalmon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSalmon)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSalmon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSalmon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSeaGreen\", {\n /**\n * Gets the LightSeaGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSeaGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSkyBlue\", {\n /**\n * Gets the LightSkyBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSkyBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSkyBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSkyBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSlateGray\", {\n /**\n * Gets the LightSlateGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSlateGray)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSlateGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSlateGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSteelBlue\", {\n /**\n * Gets the LightSteelBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSteelBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSteelBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSteelBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightYellow\", {\n /**\n * Gets the LightYellow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightYellow)) {\n brush = (this.sBrushes.getValue(KnownColor.LightYellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightYellow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Lime\", {\n /**\n * Gets the Lime default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Lime)) {\n brush = (this.sBrushes.getValue(KnownColor.Lime));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Lime);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LimeGreen\", {\n /**\n * Gets the LimeGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LimeGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LimeGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LimeGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Linen\", {\n /**\n * Gets the Linen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Linen)) {\n brush = (this.sBrushes.getValue(KnownColor.Linen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Linen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Magenta\", {\n /**\n * Gets the Magenta default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Magenta)) {\n brush = (this.sBrushes.getValue(KnownColor.Magenta));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Magenta);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Maroon\", {\n /**\n * Gets the Maroon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Maroon)) {\n brush = (this.sBrushes.getValue(KnownColor.Maroon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Maroon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumAquamarine\", {\n /**\n * Gets the MediumAquamarine default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumAquamarine)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumAquamarine));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumAquamarine);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumBlue\", {\n /**\n * Gets the MediumBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumOrchid\", {\n /**\n * Gets the MediumOrchid default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumOrchid)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumOrchid));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumOrchid);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumPurple\", {\n /**\n * Gets the MediumPurple default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumPurple)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumPurple));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumPurple);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumSeaGreen\", {\n /**\n * Gets the MediumSeaGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumSeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumSeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumSeaGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumSlateBlue\", {\n /**\n * Gets the MediumSlateBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumSlateBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumSlateBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumSlateBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumSpringGreen\", {\n /**\n * Gets the MediumSpringGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumSpringGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumSpringGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumSpringGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumTurquoise\", {\n /**\n * Gets the MediumTurquoise default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumTurquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumTurquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumTurquoise);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumVioletRed\", {\n /**\n * Gets the MediumVioletRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumVioletRed)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumVioletRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumVioletRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MidnightBlue\", {\n /**\n * Gets the MidnightBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MidnightBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.MidnightBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MidnightBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MintCream\", {\n /**\n * Gets the MintCream default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MintCream)) {\n brush = (this.sBrushes.getValue(KnownColor.MintCream));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MintCream);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MistyRose\", {\n /**\n * Gets the MistyRose default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MistyRose)) {\n brush = (this.sBrushes.getValue(KnownColor.MistyRose));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MistyRose);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Moccasin\", {\n /**\n * Gets the Moccasin default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Moccasin)) {\n brush = (this.sBrushes.getValue(KnownColor.Moccasin));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Moccasin);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"NavajoWhite\", {\n /**\n * Gets the NavajoWhite default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.NavajoWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.NavajoWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.NavajoWhite);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Navy\", {\n /**\n * Gets the Navy default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Navy)) {\n brush = (this.sBrushes.getValue(KnownColor.Navy));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Navy);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"OldLace\", {\n /**\n * Gets the OldLace default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.OldLace)) {\n brush = (this.sBrushes.getValue(KnownColor.OldLace));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.OldLace);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Olive\", {\n /**\n * Gets the Olive default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Olive)) {\n brush = (this.sBrushes.getValue(KnownColor.Olive));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Olive);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"OliveDrab\", {\n /**\n * Gets the OliveDrab default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.OliveDrab)) {\n brush = (this.sBrushes.getValue(KnownColor.OliveDrab));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.OliveDrab);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Orange\", {\n /**\n * Gets the Orange default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Orange)) {\n brush = (this.sBrushes.getValue(KnownColor.Orange));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Orange);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"OrangeRed\", {\n /**\n * Gets the OrangeRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.OrangeRed)) {\n brush = (this.sBrushes.getValue(KnownColor.OrangeRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.OrangeRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Orchid\", {\n /**\n * Gets the Orchid default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Orchid)) {\n brush = (this.sBrushes.getValue(KnownColor.Orchid));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Orchid);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PaleGoldenrod\", {\n /**\n * Gets the PaleGoldenrod default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleGoldenrod)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleGoldenrod));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleGoldenrod);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PaleGreen\", {\n /**\n * Gets the PaleGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PaleTurquoise\", {\n /**\n * Gets the PaleTurquoise default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleTurquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleTurquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleTurquoise);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PaleVioletRed\", {\n /**\n * Gets the PaleVioletRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleVioletRed)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleVioletRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleVioletRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PapayaWhip\", {\n /**\n * Gets the PapayaWhip default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PapayaWhip)) {\n brush = (this.sBrushes.getValue(KnownColor.PapayaWhip));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PapayaWhip);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PeachPuff\", {\n /**\n * Gets the PeachPuff default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PeachPuff)) {\n brush = (this.sBrushes.getValue(KnownColor.PeachPuff));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PeachPuff);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Peru\", {\n /**\n * Gets the Peru default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Peru)) {\n brush = (this.sBrushes.getValue(KnownColor.Peru));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Peru);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Pink\", {\n /**\n * Gets the Pink default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Pink)) {\n brush = (this.sBrushes.getValue(KnownColor.Pink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Pink);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Plum\", {\n /**\n * Gets the Plum default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Plum)) {\n brush = (this.sBrushes.getValue(KnownColor.Plum));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Plum);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PowderBlue\", {\n /**\n * Gets the PowderBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PowderBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.PowderBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PowderBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Purple\", {\n /**\n * Gets the Purple default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Purple)) {\n brush = (this.sBrushes.getValue(KnownColor.Purple));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Purple);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Red\", {\n /**\n * Gets the Red default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Red)) {\n brush = (this.sBrushes.getValue(KnownColor.Red));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Red);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"RosyBrown\", {\n /**\n * Gets the RosyBrown default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.RosyBrown)) {\n brush = (this.sBrushes.getValue(KnownColor.RosyBrown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.RosyBrown);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"RoyalBlue\", {\n /**\n * Gets the RoyalBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.RoyalBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.RoyalBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.RoyalBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SaddleBrown\", {\n /**\n * Gets the SaddleBrown default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SaddleBrown)) {\n brush = (this.sBrushes.getValue(KnownColor.SaddleBrown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SaddleBrown);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Salmon\", {\n /**\n * Gets the Salmon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Salmon)) {\n brush = (this.sBrushes.getValue(KnownColor.Salmon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Salmon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SandyBrown\", {\n /**\n * Gets the SandyBrown default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SandyBrown)) {\n brush = (this.sBrushes.getValue(KnownColor.SandyBrown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SandyBrown);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SeaGreen\", {\n /**\n * Gets the SeaGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.SeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SeaGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SeaShell\", {\n /**\n * Gets the SeaShell default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SeaShell)) {\n brush = (this.sBrushes.getValue(KnownColor.SeaShell));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SeaShell);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Sienna\", {\n /**\n * Gets the Sienna default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Sienna)) {\n brush = (this.sBrushes.getValue(KnownColor.Sienna));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Sienna);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Silver\", {\n /**\n * Gets the Silver default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Silver)) {\n brush = (this.sBrushes.getValue(KnownColor.Silver));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Silver);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SkyBlue\", {\n /**\n * Gets the SkyBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SkyBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.SkyBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SkyBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SlateBlue\", {\n /**\n * Gets the SlateBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SlateBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.SlateBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SlateBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SlateGray\", {\n /**\n * Gets the SlateGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SlateGray)) {\n brush = (this.sBrushes.getValue(KnownColor.SlateGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SlateGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Snow\", {\n /**\n * Gets the Snow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Snow)) {\n brush = (this.sBrushes.getValue(KnownColor.Snow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Snow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SpringGreen\", {\n /**\n * Gets the SpringGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SpringGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.SpringGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SpringGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SteelBlue\", {\n /**\n * Gets the SteelBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SteelBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.SteelBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SteelBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Tan\", {\n /**\n * Gets the Tan default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Tan)) {\n brush = (this.sBrushes.getValue(KnownColor.Tan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Tan);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Teal\", {\n /**\n * Gets the Teal default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Teal)) {\n brush = (this.sBrushes.getValue(KnownColor.Teal));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Teal);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Thistle\", {\n /**\n * Gets the Thistle default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Thistle)) {\n brush = (this.sBrushes.getValue(KnownColor.Thistle));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Thistle);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Tomato\", {\n /**\n * Gets the Tomato default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Tomato)) {\n brush = (this.sBrushes.getValue(KnownColor.Tomato));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Tomato);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Transparent\", {\n /**\n * Gets the Transparent default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Transparent)) {\n brush = (this.sBrushes.getValue(KnownColor.Transparent));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Transparent);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Turquoise\", {\n /**\n * Gets the Turquoise default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Turquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.Turquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Turquoise);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Violet\", {\n /**\n * Gets the Violet default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Violet)) {\n brush = (this.sBrushes.getValue(KnownColor.Violet));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Violet);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Wheat\", {\n /**\n * Gets the Wheat default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Wheat)) {\n brush = (this.sBrushes.getValue(KnownColor.Wheat));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Wheat);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"White\", {\n /**\n * Gets the White default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.White)) {\n brush = (this.sBrushes.getValue(KnownColor.White));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.White);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"WhiteSmoke\", {\n /**\n * Gets the WhiteSmoke default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.WhiteSmoke)) {\n brush = (this.sBrushes.getValue(KnownColor.WhiteSmoke));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.WhiteSmoke);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Yellow\", {\n /**\n * Gets the Yellow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Yellow)) {\n brush = (this.sBrushes.getValue(KnownColor.Yellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Yellow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"YellowGreen\", {\n /**\n * Gets the YellowGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.YellowGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.YellowGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.YellowGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get the brush.\n */\n PdfBrushes.getBrush = function (colorName) {\n var pdfColor = this.getColorValue(colorName);\n var brush = new PdfSolidBrush(pdfColor);\n this.sBrushes.setValue(colorName, brush);\n return brush;\n };\n /**\n * Get the color value.\n * @param colorName The KnownColor name.\n */\n /* tslint:disable */\n PdfBrushes.getColorValue = function (colorName) {\n var color = new PdfColor();\n switch (colorName) {\n case KnownColor.Transparent:\n color = new PdfColor(0, 255, 255, 255);\n break;\n case KnownColor.AliceBlue:\n color = new PdfColor(255, 240, 248, 255);\n break;\n case KnownColor.AntiqueWhite:\n color = new PdfColor(255, 250, 235, 215);\n break;\n case KnownColor.Aqua:\n color = new PdfColor(255, 0, 255, 255);\n break;\n case KnownColor.Aquamarine:\n color = new PdfColor(255, 127, 255, 212);\n break;\n case KnownColor.Azure:\n color = new PdfColor(255, 240, 255, 255);\n break;\n case KnownColor.Beige:\n color = new PdfColor(255, 245, 245, 220);\n break;\n case KnownColor.Bisque:\n color = new PdfColor(255, 255, 228, 196);\n break;\n case KnownColor.Black:\n color = new PdfColor(255, 0, 0, 0);\n break;\n case KnownColor.BlanchedAlmond:\n color = new PdfColor(255, 255, 235, 205);\n break;\n case KnownColor.Blue:\n color = new PdfColor(255, 0, 0, 255);\n break;\n case KnownColor.BlueViolet:\n color = new PdfColor(255, 138, 43, 226);\n break;\n case KnownColor.Brown:\n color = new PdfColor(255, 165, 42, 42);\n break;\n case KnownColor.BurlyWood:\n color = new PdfColor(255, 222, 184, 135);\n break;\n case KnownColor.CadetBlue:\n color = new PdfColor(255, 95, 158, 160);\n break;\n case KnownColor.Chartreuse:\n color = new PdfColor(255, 127, 255, 0);\n break;\n case KnownColor.Chocolate:\n color = new PdfColor(255, 210, 105, 30);\n break;\n case KnownColor.Coral:\n color = new PdfColor(255, 255, 127, 80);\n break;\n case KnownColor.CornflowerBlue:\n color = new PdfColor(255, 100, 149, 237);\n break;\n case KnownColor.Cornsilk:\n color = new PdfColor(255, 255, 248, 220);\n break;\n case KnownColor.Crimson:\n color = new PdfColor(255, 220, 20, 60);\n break;\n case KnownColor.Cyan:\n color = new PdfColor(255, 0, 255, 255);\n break;\n case KnownColor.DarkBlue:\n color = new PdfColor(255, 0, 0, 139);\n break;\n case KnownColor.DarkCyan:\n color = new PdfColor(255, 0, 139, 139);\n break;\n case KnownColor.DarkGoldenrod:\n color = new PdfColor(255, 184, 134, 11);\n break;\n case KnownColor.DarkGray:\n color = new PdfColor(255, 169, 169, 169);\n break;\n case KnownColor.DarkGreen:\n color = new PdfColor(255, 0, 100, 0);\n break;\n case KnownColor.DarkKhaki:\n color = new PdfColor(255, 189, 183, 107);\n break;\n case KnownColor.DarkMagenta:\n color = new PdfColor(255, 139, 0, 139);\n break;\n case KnownColor.DarkOliveGreen:\n color = new PdfColor(255, 85, 107, 47);\n break;\n case KnownColor.DarkOrange:\n color = new PdfColor(255, 255, 140, 0);\n break;\n case KnownColor.DarkOrchid:\n color = new PdfColor(255, 153, 50, 204);\n break;\n case KnownColor.DarkRed:\n color = new PdfColor(255, 139, 0, 0);\n break;\n case KnownColor.DarkSalmon:\n color = new PdfColor(255, 233, 150, 122);\n break;\n case KnownColor.DarkSeaGreen:\n color = new PdfColor(255, 143, 188, 139);\n break;\n case KnownColor.DarkSlateBlue:\n color = new PdfColor(255, 72, 61, 139);\n break;\n case KnownColor.DarkSlateGray:\n color = new PdfColor(255, 47, 79, 79);\n break;\n case KnownColor.DarkTurquoise:\n color = new PdfColor(255, 0, 206, 209);\n break;\n case KnownColor.DarkViolet:\n color = new PdfColor(255, 148, 0, 211);\n break;\n case KnownColor.DeepPink:\n color = new PdfColor(255, 255, 20, 147);\n break;\n case KnownColor.DeepSkyBlue:\n color = new PdfColor(255, 0, 191, 255);\n break;\n case KnownColor.DimGray:\n color = new PdfColor(255, 105, 105, 105);\n break;\n case KnownColor.DodgerBlue:\n color = new PdfColor(255, 30, 144, 255);\n break;\n case KnownColor.Firebrick:\n color = new PdfColor(255, 178, 34, 34);\n break;\n case KnownColor.FloralWhite:\n color = new PdfColor(255, 255, 250, 240);\n break;\n case KnownColor.ForestGreen:\n color = new PdfColor(255, 34, 139, 34);\n break;\n case KnownColor.Fuchsia:\n color = new PdfColor(255, 255, 0, 255);\n break;\n case KnownColor.Gainsboro:\n color = new PdfColor(255, 220, 220, 220);\n break;\n case KnownColor.GhostWhite:\n color = new PdfColor(255, 248, 248, 255);\n break;\n case KnownColor.Gold:\n color = new PdfColor(255, 255, 215, 0);\n break;\n case KnownColor.Goldenrod:\n color = new PdfColor(255, 218, 165, 32);\n break;\n case KnownColor.Gray:\n color = new PdfColor(255, 128, 128, 128);\n break;\n case KnownColor.Green:\n color = new PdfColor(255, 0, 128, 0);\n break;\n case KnownColor.GreenYellow:\n color = new PdfColor(255, 173, 255, 47);\n break;\n case KnownColor.Honeydew:\n color = new PdfColor(255, 240, 255, 240);\n break;\n case KnownColor.HotPink:\n color = new PdfColor(255, 255, 105, 180);\n break;\n case KnownColor.IndianRed:\n color = new PdfColor(255, 205, 92, 92);\n break;\n case KnownColor.Indigo:\n color = new PdfColor(255, 75, 0, 130);\n break;\n case KnownColor.Ivory:\n color = new PdfColor(255, 255, 255, 240);\n break;\n case KnownColor.Khaki:\n color = new PdfColor(255, 240, 230, 140);\n break;\n case KnownColor.Lavender:\n color = new PdfColor(255, 230, 230, 250);\n break;\n case KnownColor.LavenderBlush:\n color = new PdfColor(255, 255, 240, 245);\n break;\n case KnownColor.LawnGreen:\n color = new PdfColor(255, 124, 252, 0);\n break;\n case KnownColor.LemonChiffon:\n color = new PdfColor(255, 255, 250, 205);\n break;\n case KnownColor.LightBlue:\n color = new PdfColor(255, 173, 216, 230);\n break;\n case KnownColor.LightCoral:\n color = new PdfColor(255, 240, 128, 128);\n break;\n case KnownColor.LightCyan:\n color = new PdfColor(255, 224, 255, 255);\n break;\n case KnownColor.LightGoldenrodYellow:\n color = new PdfColor(255, 250, 250, 210);\n break;\n case KnownColor.LightGreen:\n color = new PdfColor(255, 144, 238, 144);\n break;\n case KnownColor.LightGray:\n color = new PdfColor(255, 211, 211, 211);\n break;\n case KnownColor.LightPink:\n color = new PdfColor(255, 255, 182, 193);\n break;\n case KnownColor.LightSalmon:\n color = new PdfColor(255, 255, 160, 122);\n break;\n case KnownColor.LightSeaGreen:\n color = new PdfColor(255, 32, 178, 170);\n break;\n case KnownColor.LightSkyBlue:\n color = new PdfColor(255, 135, 206, 250);\n break;\n case KnownColor.LightSlateGray:\n color = new PdfColor(255, 119, 136, 153);\n break;\n case KnownColor.LightSteelBlue:\n color = new PdfColor(255, 176, 196, 222);\n break;\n case KnownColor.LightYellow:\n color = new PdfColor(255, 255, 255, 224);\n break;\n case KnownColor.Lime:\n color = new PdfColor(255, 0, 255, 0);\n break;\n case KnownColor.LimeGreen:\n color = new PdfColor(255, 50, 205, 50);\n break;\n case KnownColor.Linen:\n color = new PdfColor(255, 250, 240, 230);\n break;\n case KnownColor.Magenta:\n color = new PdfColor(255, 255, 0, 255);\n break;\n case KnownColor.Maroon:\n color = new PdfColor(255, 128, 0, 0);\n break;\n case KnownColor.MediumAquamarine:\n color = new PdfColor(255, 102, 205, 170);\n break;\n case KnownColor.MediumBlue:\n color = new PdfColor(255, 0, 0, 205);\n break;\n case KnownColor.MediumOrchid:\n color = new PdfColor(255, 186, 85, 211);\n break;\n case KnownColor.MediumPurple:\n color = new PdfColor(255, 147, 112, 219);\n break;\n case KnownColor.MediumSeaGreen:\n color = new PdfColor(255, 60, 179, 113);\n break;\n case KnownColor.MediumSlateBlue:\n color = new PdfColor(255, 123, 104, 238);\n break;\n case KnownColor.MediumSpringGreen:\n color = new PdfColor(255, 0, 250, 154);\n break;\n case KnownColor.MediumTurquoise:\n color = new PdfColor(255, 72, 209, 204);\n break;\n case KnownColor.MediumVioletRed:\n color = new PdfColor(255, 199, 21, 133);\n break;\n case KnownColor.MidnightBlue:\n color = new PdfColor(255, 25, 25, 112);\n break;\n case KnownColor.MintCream:\n color = new PdfColor(255, 245, 255, 250);\n break;\n case KnownColor.MistyRose:\n color = new PdfColor(255, 255, 228, 225);\n break;\n case KnownColor.Moccasin:\n color = new PdfColor(255, 255, 228, 181);\n break;\n case KnownColor.NavajoWhite:\n color = new PdfColor(255, 255, 222, 173);\n break;\n case KnownColor.Navy:\n color = new PdfColor(255, 0, 0, 128);\n break;\n case KnownColor.OldLace:\n color = new PdfColor(255, 253, 245, 230);\n break;\n case KnownColor.Olive:\n color = new PdfColor(255, 128, 128, 0);\n break;\n case KnownColor.OliveDrab:\n color = new PdfColor(255, 107, 142, 35);\n break;\n case KnownColor.Orange:\n color = new PdfColor(255, 255, 165, 0);\n break;\n case KnownColor.OrangeRed:\n color = new PdfColor(255, 255, 69, 0);\n break;\n case KnownColor.Orchid:\n color = new PdfColor(255, 218, 112, 214);\n break;\n case KnownColor.PaleGoldenrod:\n color = new PdfColor(255, 238, 232, 170);\n break;\n case KnownColor.PaleGreen:\n color = new PdfColor(255, 152, 251, 152);\n break;\n case KnownColor.PaleTurquoise:\n color = new PdfColor(255, 175, 238, 238);\n break;\n case KnownColor.PaleVioletRed:\n color = new PdfColor(255, 219, 112, 147);\n break;\n case KnownColor.PapayaWhip:\n color = new PdfColor(255, 255, 239, 213);\n break;\n case KnownColor.PeachPuff:\n color = new PdfColor(255, 255, 218, 185);\n break;\n case KnownColor.Peru:\n color = new PdfColor(255, 205, 133, 63);\n break;\n case KnownColor.Pink:\n color = new PdfColor(255, 255, 192, 203);\n break;\n case KnownColor.Plum:\n color = new PdfColor(255, 221, 160, 221);\n break;\n case KnownColor.PowderBlue:\n color = new PdfColor(255, 176, 224, 230);\n break;\n case KnownColor.Purple:\n color = new PdfColor(255, 128, 0, 128);\n break;\n case KnownColor.Red:\n color = new PdfColor(255, 255, 0, 0);\n break;\n case KnownColor.RosyBrown:\n color = new PdfColor(255, 188, 143, 143);\n break;\n case KnownColor.RoyalBlue:\n color = new PdfColor(255, 65, 105, 225);\n break;\n case KnownColor.SaddleBrown:\n color = new PdfColor(255, 139, 69, 19);\n break;\n case KnownColor.Salmon:\n color = new PdfColor(255, 250, 128, 114);\n break;\n case KnownColor.SandyBrown:\n color = new PdfColor(255, 244, 164, 96);\n break;\n case KnownColor.SeaGreen:\n color = new PdfColor(255, 46, 139, 87);\n break;\n case KnownColor.SeaShell:\n color = new PdfColor(255, 255, 245, 238);\n break;\n case KnownColor.Sienna:\n color = new PdfColor(255, 160, 82, 45);\n break;\n case KnownColor.Silver:\n color = new PdfColor(255, 192, 192, 192);\n break;\n case KnownColor.SkyBlue:\n color = new PdfColor(255, 135, 206, 235);\n break;\n case KnownColor.SlateBlue:\n color = new PdfColor(255, 106, 90, 205);\n break;\n case KnownColor.SlateGray:\n color = new PdfColor(255, 112, 128, 144);\n break;\n case KnownColor.Snow:\n color = new PdfColor(255, 255, 250, 250);\n break;\n case KnownColor.SpringGreen:\n color = new PdfColor(255, 0, 255, 127);\n break;\n case KnownColor.SteelBlue:\n color = new PdfColor(255, 70, 130, 180);\n break;\n case KnownColor.Tan:\n color = new PdfColor(255, 210, 180, 140);\n break;\n case KnownColor.Teal:\n color = new PdfColor(255, 0, 128, 128);\n break;\n case KnownColor.Thistle:\n color = new PdfColor(255, 216, 191, 216);\n break;\n case KnownColor.Tomato:\n color = new PdfColor(255, 255, 99, 71);\n break;\n case KnownColor.Turquoise:\n color = new PdfColor(255, 64, 224, 208);\n break;\n case KnownColor.Violet:\n color = new PdfColor(255, 238, 130, 238);\n break;\n case KnownColor.Wheat:\n color = new PdfColor(255, 245, 222, 179);\n break;\n case KnownColor.White:\n color = new PdfColor(255, 255, 255, 255);\n break;\n case KnownColor.WhiteSmoke:\n color = new PdfColor(255, 245, 245, 245);\n break;\n case KnownColor.Yellow:\n color = new PdfColor(255, 255, 255, 0);\n break;\n case KnownColor.YellowGreen:\n color = new PdfColor(255, 154, 205, 50);\n break;\n }\n return color;\n };\n //Static Fields\n /**\n * Local variable to store the brushes.\n */\n PdfBrushes.sBrushes = new Dictionary();\n return PdfBrushes;\n}());\n\n/**\n * PdfBlend.ts class for EJ2-PDF\n */\n/**\n * `PdfBlend` Represents the blend color space\n * @private\n */\nvar PdfBlend = /** @__PURE__ @class */ (function () {\n function PdfBlend(count) {\n //Constants\n /**\n * precision of the GCD calculations.\n * @private\n */\n this.precision = 1000;\n //\n }\n Object.defineProperty(PdfBlend.prototype, \"factors\", {\n //Properties\n /**\n * Gets or sets the array of factor to the blend.\n * @public\n */\n get: function () {\n return this.mFactors;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Factors');\n }\n this.mFactors = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBlend.prototype, \"positions\", {\n /**\n * 'positions' Gets or sets the array of positions\n * @public\n */\n get: function () {\n return this.mPositions;\n },\n set: function (value) {\n var positionarray = value;\n for (var i = 0; i < positionarray.length; i++) {\n if (((positionarray[i] < 0) || (positionarray[i] > 1))) {\n positionarray[i] = 0;\n }\n }\n this.mPositions = positionarray;\n this.mPositions = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBlend.prototype, \"count\", {\n /**\n * Gets the number of elements that specify the blend.\n * @protected\n */\n get: function () {\n return this.mCount;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * Generates a correct color blend.\n * @param colours The colours.\n * @param colorSpace The color space.\n */\n PdfBlend.prototype.generateColorBlend = function (colours, colorSpace) {\n if ((colours == null)) {\n throw new Error('ArgumentNullException : colours');\n }\n if ((this.positions == null)) {\n this.positions = [0];\n }\n var cBlend = new PdfColorBlend(this.count);\n var positions = this.positions;\n var clrs = null;\n if ((positions.length === 1)) {\n positions = [3];\n positions[0] = 0;\n positions[1] = this.positions[0];\n positions[2] = 1;\n /* tslint:disable */\n clrs = new Array(3);\n clrs[0] = colours[0];\n clrs[1] = colours[0];\n clrs[2] = colours[1];\n }\n else {\n var c1 = colours[0];\n var c2 = colours[1];\n /* tslint:disable */\n clrs = new Array(this.count);\n var i = 0;\n var count = this.count;\n for (i = 0; i < count; ++i) {\n clrs[i] = this.interpolate(this.mFactors[i], c1, c2, colorSpace);\n }\n }\n cBlend.positions = positions;\n cBlend.colors = clrs;\n return cBlend;\n };\n /**\n * 'clonePdfBlend' Clones this instance.\n * @public\n */\n PdfBlend.prototype.clonePdfBlend = function () {\n var blend = this;\n if ((this.mFactors != null)) {\n blend.factors = (this.mFactors);\n }\n if ((this.positions != null)) {\n blend.positions = (this.positions);\n }\n return blend;\n };\n PdfBlend.prototype.gcd = function (u, v) {\n if (typeof u === 'number' && typeof v === 'number' && typeof v !== 'undefined') {\n if (((u < 0) || (u > 1))) {\n throw new Error('ArgumentOutOfRangeException : u');\n }\n if (((v < 0) || (v > 1))) {\n throw new Error('ArgumentOutOfRangeException : v');\n }\n var iU = (Math.max(1, (u * this.precision)));\n var iV = (Math.max(1, (v * this.precision)));\n var iResult = this.gcdInt(iU, iV);\n var result = ((iResult) / this.precision);\n return result;\n }\n else {\n var values = u;\n if ((values == null)) {\n throw new Error('ArgumentNullException : values');\n }\n if ((values.length < 1)) {\n throw new Error('ArgumentException : Not enough values in the array. - values');\n }\n var gcd = values[0];\n if ((values.length > 1)) {\n var count = values.length;\n for (var i = 1; i < count; ++i) {\n gcd = this.gcd(values[i], gcd);\n if ((gcd === (1 / this.precision))) {\n break;\n }\n }\n }\n return gcd;\n }\n };\n /**\n * Calculate the GCD int of the specified values.\n * @param u The u.\n * @param v The v.\n */\n PdfBlend.prototype.gcdInt = function (u, v) {\n if ((u <= 0)) {\n throw new Error('ArgumentOutOfRangeException' + u + 'The arguments cannot be less or equal to zero.');\n }\n if ((v <= 0)) {\n throw new Error('ArgumentOutOfRangeException' + v + 'The arguments cannot be less or equal to zero.');\n }\n if (((u === 1) || (v === 1))) {\n return 1;\n }\n var shift = 0;\n while (this.isEven(u, v)) {\n ++shift;\n u >>= 1;\n v >>= 1;\n }\n while (((u & 1) <= 0)) {\n u >>= 1;\n }\n do {\n while ((v & 1) <= 0) {\n v >>= 1;\n }\n if (u > v) {\n var t = v;\n v = u;\n u = t;\n }\n v = v - u;\n } while (v !== 0);\n return (u << shift);\n };\n PdfBlend.prototype.isEven = function (arg1, arg2) {\n if (typeof arg2 === 'number' && typeof arg2 !== 'undefined') {\n var result = true;\n result = (result && ((arg1 & 1) <= 0)); // Is u even?\n result = (result && ((arg2 & 1) <= 0)); // Is v even?\n return result;\n }\n else {\n return ((arg1 & 1) <= 0);\n }\n };\n PdfBlend.prototype.interpolate = function (t, color1, color2, colorSpace) {\n if (color1 instanceof PdfColor) {\n var color = new PdfColor();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n var red = (this.interpolate(t, color1.red, color2.red));\n var green = (this.interpolate(t, color1.green, color2.green));\n var blue = (this.interpolate(t, color1.blue, color2.blue));\n color = new PdfColor(red, green, blue);\n break;\n case PdfColorSpace.GrayScale:\n var gray = (this.interpolate(t, color1.gray, color2.gray));\n color = new PdfColor(gray);\n break;\n case PdfColorSpace.Cmyk:\n var cyan = (this.interpolate(t, color1.c, color2.c));\n var magenta = (this.interpolate(t, color1.m, color2.m));\n var yellow = (this.interpolate(t, color1.y, color2.y));\n var black = (this.interpolate(t, color1.k, color2.k));\n color = new PdfColor(cyan, magenta, yellow, black);\n break;\n }\n return color;\n }\n else {\n var t0 = 0;\n var t1 = 1;\n var result = 0;\n if ((t === t0)) {\n result = color1;\n }\n else if ((t === t1)) {\n result = color2;\n }\n else {\n result = (color1 + ((t - t0) * ((color2 - color1) / (t1 - t0))));\n }\n return result;\n }\n };\n return PdfBlend;\n}());\n\nvar __extends$s = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `PdfColorBlend` Represents the arrays of colors and positions used for\n * interpolating color blending in a multicolor gradient.\n * @private\n */\nvar PdfColorBlend = /** @__PURE__ @class */ (function (_super) {\n __extends$s(PdfColorBlend, _super);\n function PdfColorBlend(count) {\n var _this = _super.call(this) || this;\n if (typeof count === 'number') {\n _this = _super.call(this, count) || this;\n }\n return _this;\n }\n Object.defineProperty(PdfColorBlend.prototype, \"colors\", {\n //Properties\n /**\n * Gets or sets the array of colors.\n * @public\n */\n get: function () {\n return this.mcolors;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Colors');\n }\n this.mcolors = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * Gets the function.\n * @param colorSpace The color space.\n * @public\n */\n PdfColorBlend.prototype.getFunction = function (colorSpace) {\n var domain = [0, 1];\n var colourComponents = this.getColorComponentsCount(colorSpace);\n var maxComponentValue = this.getMaxComponentValue(colorSpace);\n var range = this.setRange(colourComponents, maxComponentValue);\n var func = null;\n if ((this.mbrush == null && typeof this.mbrush === 'undefined')) {\n var sizes = [1];\n var samplesCount = void 0;\n var step = 1;\n if (this.positions.length === 2) {\n samplesCount = 2;\n }\n else {\n var positions = this.positions;\n var intervals = this.getIntervals(positions);\n var gcd = this.gcd(intervals);\n step = gcd;\n samplesCount = (((1 / gcd)) + 1);\n }\n sizes[0] = samplesCount;\n var samples = this.getSamplesValues(colorSpace, samplesCount, maxComponentValue, step);\n func = new PdfSampledFunction(domain, range, sizes, samples);\n return func;\n }\n return func;\n };\n /**\n * 'cloneColorBlend' Clones this instance.\n * @public\n */\n PdfColorBlend.prototype.cloneColorBlend = function () {\n var cBlend = this;\n if ((this.mcolors != null && typeof this.mcolors !== 'undefined')) {\n cBlend.colors = (this.mcolors);\n }\n if ((this.positions != null && typeof this.positions !== 'undefined')) {\n cBlend.positions = (this.positions);\n }\n return cBlend;\n };\n /**\n * Sets the range.\n * @param colourComponents The colour components.\n * @param maxValue The max value.\n */\n PdfColorBlend.prototype.setRange = function (colourComponents, maxValue) {\n var range = [(colourComponents * 2)];\n for (var i = 0; (i < colourComponents); ++i) {\n range[(i * 2)] = 0;\n range[((i * 2) + 1)] = 1;\n }\n return range;\n };\n /**\n * Calculates the color components count according to colour space.\n * @param colorSpace The color space.\n */\n PdfColorBlend.prototype.getColorComponentsCount = function (colorSpace) {\n var count = 0;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n count = 3;\n break;\n case PdfColorSpace.Cmyk:\n count = 4;\n break;\n case PdfColorSpace.GrayScale:\n count = 1;\n break;\n default:\n throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + ' colorSpace');\n }\n return count;\n };\n /**\n * Gets samples values for specified colour space.\n * @param colorSpace The color space.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n PdfColorBlend.prototype.getSamplesValues = function (colorSpace, sampleCount, maxComponentValue, step) {\n var values;\n switch (colorSpace) {\n case PdfColorSpace.GrayScale:\n values = this.getGrayscaleSamples(sampleCount, maxComponentValue, step);\n break;\n case PdfColorSpace.Cmyk:\n values = this.getCmykSamples(sampleCount, maxComponentValue, step);\n break;\n case PdfColorSpace.Rgb:\n values = this.getRgbSamples(sampleCount, maxComponentValue, step);\n break;\n default:\n throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + ' colorSpace');\n }\n return values;\n };\n /**\n * Gets the grayscale samples.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n PdfColorBlend.prototype.getGrayscaleSamples = function (sampleCount, maxComponentValue, step) {\n var values = [(sampleCount * 2)];\n for (var i = 0; (i < sampleCount); ++i) {\n var color = this.getNextColor(i, step, PdfColorSpace.GrayScale);\n }\n return values;\n };\n /**\n * Gets the RGB samples.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n PdfColorBlend.prototype.getRgbSamples = function (sampleCount, maxComponentValue, step) {\n var values = [(sampleCount * 3)];\n for (var i = 0; (i < sampleCount); ++i) {\n var color = this.getNextColor(i, step, PdfColorSpace.Rgb);\n var index = (i * 3);\n values[index] = color.r;\n values[(index + 1)] = color.g;\n values[(index + 2)] = color.b;\n }\n return values;\n };\n /**\n * Gets the CMYK samples.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n PdfColorBlend.prototype.getCmykSamples = function (sampleCount, maxComponentValue, step) {\n var values = [(sampleCount * 4)];\n for (var i = 0; (i < sampleCount); i++) {\n var color = this.getNextColor(i, step, PdfColorSpace.Cmyk);\n var index = (i * 4);\n values[index] = ((color.c * maxComponentValue));\n values[(index + 1)] = ((color.m * maxComponentValue));\n values[(index + 2)] = ((color.y * maxComponentValue));\n values[(index + 3)] = ((color.k * maxComponentValue));\n }\n return values;\n };\n /**\n * Calculates the color that should be at the specified index.\n * @param index The index.\n * @param step The step.\n * @param colorSpace The color space.\n */\n PdfColorBlend.prototype.getNextColor = function (index, step, colorSpace) {\n var position = (step * index);\n var indexHi;\n var indexLow;\n var result = this.getIndices(position, indexLow, indexHi);\n indexLow = result.indexLow;\n indexHi = result.indexHi;\n var color;\n if (indexLow === indexHi) {\n color = this.mcolors[indexLow];\n }\n else {\n var positionLow = this.positions[indexLow];\n var positionHi = this.positions[indexHi];\n var colorLow = this.mcolors[indexLow];\n var colorHi = this.mcolors[indexHi];\n var t = ((position - positionLow) / (positionHi - positionLow));\n color = this.interpolate(t, colorLow, colorHi, colorSpace);\n }\n return color;\n };\n /**\n * Gets the indices.\n * @param position The position.\n * @param indexLow The index low.\n * @param indexHi The index hi.\n */\n PdfColorBlend.prototype.getIndices = function (position, indexLow, indexHi) {\n var positions = this.positions;\n indexLow = 0;\n indexHi = 0;\n for (var i = 0; (i < this.mcolors.length); ++i) {\n var currPos = positions[i];\n if ((currPos === position)) {\n indexHi = i;\n indexLow = i;\n break;\n }\n else if ((currPos > position)) {\n indexHi = i;\n break;\n }\n indexLow = i;\n indexHi = i;\n }\n return { indexLow: indexLow, indexHi: indexHi };\n };\n /**\n * Calculates the max component value.\n * @param colorSpace The color space.\n */\n PdfColorBlend.prototype.getMaxComponentValue = function (colorSpace) {\n var result = 0;\n switch (colorSpace) {\n case PdfColorSpace.Cmyk:\n case PdfColorSpace.Rgb:\n result = 255;\n break;\n case PdfColorSpace.GrayScale:\n result = 65535;\n break;\n default:\n throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + 'colorSpace');\n }\n return result;\n };\n /**\n * Gets an intervals array from the positions array.\n * @param positions The positions array.\n */\n PdfColorBlend.prototype.getIntervals = function (positions) {\n var count = positions.length;\n var intervals = [(count - 1)];\n var prev = positions[0];\n for (var i = 1; (i < count); ++i) {\n var v = positions[i];\n intervals[(i - 1)] = (v - prev);\n prev = v;\n }\n return intervals;\n };\n return PdfColorBlend;\n}(PdfBlend));\n\nvar __extends$t = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `PdfLinearGradientBrush` Implements linear gradient brush by using PDF axial shading pattern.\n * @private\n */\nvar PdfLinearGradientBrush = /** @__PURE__ @class */ (function (_super) {\n __extends$t(PdfLinearGradientBrush, _super);\n /**\n * Initializes a new instance of the `PdfLinearGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfLinearGradientBrush(arg1, arg2, arg3, arg4) {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PdfColor && arg4 instanceof PdfColor) {\n _this.initialize(arg3, arg4);\n _this.mPointStart = arg1;\n _this.mPointEnd = arg2;\n _this.setPoints(_this.mPointStart, _this.mPointEnd);\n }\n else if (arg1 instanceof Rectangle) {\n _this.initialize(arg2, arg3);\n /* tslint:disable-next-line:max-line-length */\n if ((arg4 === PdfLinearGradientMode.BackwardDiagonal || arg4 === PdfLinearGradientMode.ForwardDiagonal || arg4 === PdfLinearGradientMode.Horizontal || arg4 === PdfLinearGradientMode.Vertical)) {\n _this.mBoundaries = arg1;\n switch (arg4) {\n case PdfLinearGradientMode.BackwardDiagonal:\n _this.mPointStart = new PointF(arg1.right, arg1.top);\n _this.mPointEnd = new PointF(arg1.left, arg1.bottom);\n break;\n case PdfLinearGradientMode.ForwardDiagonal:\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.right, arg1.bottom);\n break;\n case PdfLinearGradientMode.Horizontal:\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.right, arg1.top);\n break;\n case PdfLinearGradientMode.Vertical:\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.left, arg1.bottom);\n break;\n default:\n throw new Error('ArgumentException -- Unsupported linear gradient mode: ' + arg4 + ' mode');\n }\n _this.setPoints(_this.mPointStart, _this.mPointEnd);\n }\n else if (typeof arg4 === 'number' && typeof arg4 !== 'undefined') {\n _this.mBoundaries = arg1;\n arg4 = arg4 % 360;\n if ((arg4 === 0)) {\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.right, arg1.top);\n }\n else if ((arg4 === 90)) {\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.left, arg1.bottom);\n }\n else if ((arg4 === 180)) {\n _this.mPointEnd = new PointF(arg1.left, arg1.top);\n _this.mPointStart = new PointF(arg1.right, arg1.top);\n }\n else if ((arg4 === 270)) {\n _this.mPointEnd = new PointF(arg1.left, arg1.top);\n _this.mPointStart = new PointF(arg1.left, arg1.bottom);\n }\n else {\n var d2r = (Math.PI / 180);\n var radAngle = (arg4 * d2r);\n var k = Math.tan(radAngle);\n var x = (_this.mBoundaries.left\n + ((_this.mBoundaries.right - _this.mBoundaries.left) / 2));\n var y = (_this.mBoundaries.top\n + ((_this.mBoundaries.bottom - _this.mBoundaries.top) / 2));\n var centre = new PointF(x, y);\n x = (_this.mBoundaries.width / (2 * (Math.cos(radAngle))));\n y = ((k * x));\n x = (x + centre.x);\n y = (y + centre.y);\n var p1 = new PointF(x, y);\n var cp1 = _this.subPoints(p1, centre);\n // P1 - P0\n var p = _this.choosePoint(arg4);\n var coef = (_this.mulPoints(_this.subPoints(p, centre), cp1)\n / _this.mulPoints(cp1, cp1));\n _this.mPointEnd = _this.addPoints(centre, _this.mulPoint(cp1, coef));\n // Parametric line equation.\n _this.mPointStart = _this.addPoints(centre, _this.mulPoint(cp1, (coef * -1)));\n }\n _this.setPoints(_this.mPointEnd, _this.mPointStart);\n }\n }\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfLinearGradientBrush` class.\n * @param color1 The starting color of the gradient.\n * @param color2 The end color of the gradient.\n */\n PdfLinearGradientBrush.prototype.initialize = function (color1, color2) {\n this.mColours = [color1, color2];\n this.mColourBlend = new PdfColorBlend(2);\n this.mColourBlend.positions = [0, 1];\n this.mColourBlend.colors = this.mColours;\n this.initShading();\n };\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"blend\", {\n //Properties\n /**\n * Gets or sets a PdfBlend that specifies positions\n * and factors that define a custom falloff for the gradient.\n * @public\n */\n get: function () {\n return this.mBlend;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Blend');\n }\n if ((this.mColours == null)) {\n throw new Error('NotSupportedException : There is no starting and ending colours specified.');\n }\n this.mBlend = value;\n // TODO: generate correct colour blend.\n this.mColourBlend = this.mBlend.generateColorBlend(this.mColours, this.colorSpace);\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"interpolationColors\", {\n /**\n * Gets or sets a ColorBlend that defines a multicolor linear gradient.\n * @public\n */\n get: function () {\n return this.mColourBlend;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : InterpolationColors');\n }\n this.mBlend = null;\n this.mColours = null;\n this.mColourBlend = value;\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"linearColors\", {\n /**\n * Gets or sets the starting and ending colors of the gradient.\n * @public\n */\n get: function () {\n return this.mColours;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : LinearColors');\n }\n if ((value.length < 2)) {\n throw new Error('ArgumentException : The array is too small - LinearColors');\n }\n if ((this.mColours == null && typeof this.mColours === 'undefined')) {\n this.mColours = [value[0], value[1]];\n }\n else {\n this.mColours[0] = value[0];\n this.mColours[1] = value[1];\n }\n if ((this.mBlend == null && typeof this.mBlend === 'undefined')) {\n // Set correct colour blend.\n this.mColourBlend = new PdfColorBlend(2);\n this.mColourBlend.colors = this.mColours;\n this.mColourBlend.positions = [0, 1];\n }\n else {\n this.mColourBlend = this.mBlend.generateColorBlend(this.mColours, this.colorSpace);\n }\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"rectangle\", {\n /**\n * Gets a rectangular region that defines the boundaries of the gradient.\n * @public\n */\n get: function () {\n return this.mBoundaries;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"extend\", {\n /**\n * Gets or sets the value indicating whether the gradient should extend starting and ending points.\n * @public\n */\n get: function () {\n var result = PdfExtend.None;\n var extend = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n if ((extend != null)) {\n var extStart = (extend.items(0));\n var extEnd = (extend.items(1));\n if (extStart.value) {\n result = (result | PdfExtend.Start);\n }\n if (extEnd.value) {\n result = (result | PdfExtend.End);\n }\n }\n return result;\n },\n set: function (value) {\n var extend = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n var extStart;\n var extEnd;\n if ((extend == null)) {\n extStart = new PdfBoolean(false);\n extEnd = new PdfBoolean(false);\n extend = new PdfArray();\n extend.add(extStart);\n extend.add(extEnd);\n this.shading.items.setValue(this.mDictionaryProperties.extend, extend);\n }\n else {\n extStart = (extend.items(0));\n extEnd = (extend.items(1));\n }\n // extStart.value = ((value && PdfExtend.Start) > 0);\n // extEnd.value = ((value && PdfExtend.End) > 0);\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * Adds two points to each other.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n PdfLinearGradientBrush.prototype.addPoints = function (point1, point2) {\n var x = (point1.x + point2.x);\n var y = (point1.y + point2.y);\n var result = new PointF(x, y);\n return result;\n };\n /**\n * Subs the second point from the first one.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n PdfLinearGradientBrush.prototype.subPoints = function (point1, point2) {\n var x = (point1.x - point2.x);\n var y = (point1.y - point2.y);\n var result = new PointF(x, y);\n return result;\n };\n /**\n * Makes scalar multiplication of two points.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n PdfLinearGradientBrush.prototype.mulPoints = function (point1, point2) {\n var result = ((point1.x * point2.x) + (point1.y * point2.y));\n return result;\n };\n /**\n * Multiplies the point by the value specified.\n * @param point The point1.\n * @param value The value.\n */\n PdfLinearGradientBrush.prototype.mulPoint = function (point, value) {\n point.x = (point.x * value);\n point.y = (point.y * value);\n return point;\n };\n /**\n * Choose the point according to the angle.\n * @param angle The angle.\n */\n PdfLinearGradientBrush.prototype.choosePoint = function (angle) {\n var point = new PointF(0, 0);\n // Choose the correct point.\n if ((angle < 90) && (angle > 0)) {\n point = new PointF(this.mBoundaries.right, this.mBoundaries.bottom);\n }\n else if ((angle < 180) && (angle > 90)) {\n point = new PointF(this.mBoundaries.left, this.mBoundaries.bottom);\n }\n else if ((angle < 270) && (angle > 180)) {\n point = new PointF(this.mBoundaries.left, this.mBoundaries.top);\n }\n else if (angle > 270) {\n point = new PointF(this.mBoundaries.right, this.mBoundaries.top);\n }\n else {\n throw new Error('PdfException - Internal error.');\n }\n return point;\n };\n /**\n * Sets the start and end points.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n PdfLinearGradientBrush.prototype.setPoints = function (point1, point2) {\n var points = new PdfArray();\n points.add(new PdfNumber(point1.x));\n points.add(new PdfNumber(this.updateY(point1.y)));\n points.add(new PdfNumber(point2.x));\n points.add(new PdfNumber(this.updateY(point2.y)));\n this.shading.items.setValue(this.mDictionaryProperties.coords, points);\n };\n /**\n * Updates y co-ordinate.\n * @param y Y co-ordinate..\n */\n PdfLinearGradientBrush.prototype.updateY = function (y) {\n if (y !== 0) {\n return -y;\n }\n else {\n return y;\n }\n };\n //Overrides\n /**\n * Initializes the shading dictionary.\n * @private\n */\n PdfLinearGradientBrush.prototype.initShading = function () {\n this.colorSpace = PdfColorSpace.Rgb;\n this.function = this.mColourBlend.getFunction(this.colorSpace);\n this.shading.items.setValue(this.mDictionaryProperties.shadingType, new PdfNumber((ShadingType.Axial)));\n };\n //Overrides\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfLinearGradientBrush.prototype.clone = function () {\n var brush = this;\n brush.resetPatternDictionary(new PdfDictionary(this.patternDictionary));\n brush.shading = new PdfDictionary();\n brush.initShading();\n brush.setPoints(brush.mPointStart, brush.mPointEnd);\n if (brush !== null && brush instanceof PdfLinearGradientBrush) {\n if ((this.matrix != null && typeof this.matrix !== 'undefined')) {\n brush.matrix = this.matrix.clone();\n }\n }\n if ((this.mColours != null && typeof this.mColours !== 'undefined')) {\n brush.mColours = (this.mColours);\n }\n if ((this.blend != null && typeof this.blend !== 'undefined')) {\n brush.blend = this.blend.clonePdfBlend();\n }\n else if ((this.interpolationColors != null && typeof this.interpolationColors !== 'undefined')) {\n brush.interpolationColors = this.interpolationColors.cloneColorBlend();\n }\n brush.extend = this.extend;\n this.cloneBackgroundValue(brush);\n this.cloneAntiAliasingValue(brush);\n return brush;\n };\n /**\n * Resets the function.\n * @public\n */\n PdfLinearGradientBrush.prototype.resetFunction = function () {\n this.function = this.mColourBlend.getFunction(this.colorSpace);\n };\n return PdfLinearGradientBrush;\n}(PdfGradientBrush));\n\nvar __extends$u = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `PdfRadialGradientBrush` Represent radial gradient brush.\n * @private\n */\nvar PdfRadialGradientBrush = /** @__PURE__ @class */ (function (_super) {\n __extends$u(PdfRadialGradientBrush, _super);\n //Constructor\n /**\n * Initializes a new instance of the `PdfRadialGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfRadialGradientBrush(centerStart, radiusStart, centerEnd, radiusEnd, colorStart, colorEnd) {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Local varaible to store the dictionary properties.\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n _this.initialize(colorStart, colorEnd);\n if (radiusStart < 0) {\n throw new Error('ArgumentOutOfRangeException : radiusStart - The radius cannot be less then zero.');\n }\n if (radiusEnd < 0) {\n throw new Error('ArgumentOutOfRangeException : radiusEnd - The radius cannpt be less then zero.');\n }\n _this.mPointEnd = centerEnd;\n _this.mPointStart = centerStart;\n _this.mRadiusStart = radiusStart;\n _this.mRadiusEnd = radiusEnd;\n _this.setPoints(_this.mPointStart, _this.mPointEnd, _this.mRadiusStart, _this.mRadiusEnd);\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfRadialGradientBrush` class.\n * @param color1 The color1.\n * @param color2 The color2.\n */\n PdfRadialGradientBrush.prototype.initialize = function (color1, color2) {\n this.mColour = [color1, color2];\n this.mColourBlends = new PdfColorBlend(2);\n this.mColourBlends.positions = [0, 1];\n this.mColourBlends.colors = this.mColour;\n this.initShading();\n };\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"blend\", {\n //Properties\n /**\n * Gets or sets a PdfBlend that specifies positions and factors that define a custom falloff for the gradient.\n * @public\n */\n get: function () {\n return this.mBlend;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Blend');\n }\n if ((this.mColour == null && typeof this.mColour === 'undefined')) {\n throw new Error('NotSupportedException : There is no starting and ending colours specified.');\n }\n this.mBlend = value;\n this.mColourBlends = this.mBlend.generateColorBlend(this.mColour, this.colorSpace);\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"interpolationColors\", {\n /**\n * Gets or sets a ColorBlend that defines a multicolor radial gradient.\n * @public\n */\n get: function () {\n return this.mColourBlends;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : InterpolationColors');\n }\n this.mBlend = null;\n this.mColour = null;\n this.mColourBlends = value;\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"linearColors\", {\n /**\n * Gets or sets the starting and ending colors of the radial gradient.\n * @public\n */\n get: function () {\n return this.mColour;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : radial LinearColors');\n }\n if ((value.length < 2)) {\n throw new Error('ArgumentException : The array is too small LinearColors');\n }\n if ((this.mColour == null && typeof this.mColour === 'undefined')) {\n this.mColour = [value[0], value[1]];\n }\n else {\n this.mColour[0] = value[0];\n this.mColour[1] = value[1];\n }\n if ((this.mBlend == null && typeof this.mBlend === 'undefined')) {\n // Set correct colour blend.\n this.mColourBlends = new PdfColorBlend(2);\n this.mColourBlends.colors = this.mColour;\n this.mColourBlends.positions = [0, 1];\n }\n else {\n this.mColourBlends = this.mBlend.generateColorBlend(this.mColour, this.colorSpace);\n }\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"rectangle\", {\n /**\n * Gets or sets the rectangle.\n * @public\n */\n get: function () {\n return this.mBoundaries;\n },\n set: function (value) {\n this.mBoundaries = value;\n this.bBox = PdfArray.fromRectangle(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"extend\", {\n /**\n * Gets or sets the value indicating whether the gradient\n * should extend starting and ending points.\n * @public\n */\n get: function () {\n var result1 = PdfExtend.None;\n var extend1 = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n if (extend1 !== null && typeof extend1 !== 'undefined') {\n var extStart = (extend1.items(0));\n var extEnd = (extend1.items(1));\n if (extStart.value) {\n result1 = (result1 | PdfExtend.Start);\n }\n if (extEnd.value) {\n result1 = (result1 | PdfExtend.End);\n }\n }\n return result1;\n },\n set: function (value) {\n var extend = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n var extStart;\n var extEnd1;\n if (extend == null && typeof extend === 'undefined') {\n extStart = new PdfBoolean(false);\n extEnd1 = new PdfBoolean(false);\n extend = new PdfArray();\n extend.add(extStart);\n extend.add(extEnd1);\n this.shading.items.setValue(this.mDictionaryProperties.extend, extend);\n }\n else {\n extStart = (extend.items(0));\n extEnd1 = (extend.items(1));\n }\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * Sets the points.\n * @param pointStart The point start.\n * @param pointEnd The point end.\n * @param radiusStart The radius start.\n * @param radiusEnd The radius end.\n */\n PdfRadialGradientBrush.prototype.setPoints = function (pointStart, pointEnd, radiusStart, radiusEnd) {\n var points = new PdfArray();\n points.add(new PdfNumber(pointStart.x));\n points.add(new PdfNumber(this.updateY(pointStart.y)));\n points.add(new PdfNumber(radiusStart));\n points.add(new PdfNumber(pointEnd.x));\n points.add(new PdfNumber(this.updateY(pointEnd.y)));\n if ((radiusStart !== radiusEnd)) {\n points.add(new PdfNumber(radiusEnd));\n }\n else {\n points.add(new PdfNumber(0));\n }\n this.shading.items.setValue(this.mDictionaryProperties.coords, points);\n };\n /**\n * Update y co-ordinate.\n * @param y Y co-ordinate.\n */\n PdfRadialGradientBrush.prototype.updateY = function (y) {\n if (y !== 0) {\n return -y;\n }\n else {\n return y;\n }\n };\n /**\n * Initializess the shading dictionary.\n * @private\n */\n PdfRadialGradientBrush.prototype.initShading = function () {\n this.colorSpace = PdfColorSpace.Rgb;\n this.function = this.mColourBlends.getFunction(this.colorSpace);\n this.shading.items.setValue(this.mDictionaryProperties.shadingType, new PdfNumber((ShadingType.Radial)));\n };\n //Overrides\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfRadialGradientBrush.prototype.clone = function () {\n var rBrush = this;\n rBrush.resetPatternDictionary(new PdfDictionary(this.patternDictionary));\n rBrush.shading = new PdfDictionary();\n rBrush.initShading();\n rBrush.setPoints(this.mPointStart, this.mPointEnd, this.mRadiusStart, this.mRadiusEnd);\n if (rBrush instanceof PdfRadialGradientBrush) {\n if ((this.matrix !== null && typeof this.matrix !== 'undefined')) {\n rBrush.matrix = this.matrix.clone();\n }\n }\n if ((this.mColour !== null && typeof this.mColour !== 'undefined')) {\n rBrush.mColour = (this.mColour);\n }\n if ((this.blend !== null && typeof this.blend !== 'undefined')) {\n rBrush.blend = this.blend.clonePdfBlend();\n }\n else if ((this.interpolationColors !== null && typeof this.interpolationColors !== 'undefined')) {\n rBrush.interpolationColors = this.interpolationColors.cloneColorBlend();\n }\n rBrush.extend = this.extend;\n this.cloneBackgroundValue(rBrush);\n this.cloneAntiAliasingValue(rBrush);\n return rBrush;\n };\n /**\n * Resets the function.\n * @public\n */\n PdfRadialGradientBrush.prototype.resetFunction = function () {\n this.function = this.mColourBlends.getFunction(this.colorSpace);\n };\n return PdfRadialGradientBrush;\n}(PdfGradientBrush));\n\n/**\n * public Enum for `PdfBorderOverlapStyle`.\n * @private\n */\nvar 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\nvar __extends$v = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Base class for the `grid style`,\n */\nvar PdfGridStyleBase = /** @__PURE__ @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}());\n/**\n * `PdfGridStyle` class provides customization of the appearance for the 'PdfGrid'.\n */\nvar PdfGridStyle = /** @__PURE__ @class */ (function (_super) {\n __extends$v(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));\n/**\n * `PdfGridCellStyle` class provides customization of the appearance for the 'PdfGridCell'.\n */\nvar PdfGridCellStyle = /** @__PURE__ @class */ (function (_super) {\n __extends$v(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));\n/**\n * `PdfGridRowStyle` class provides customization of the appearance for the `PdfGridRow`.\n */\nvar PdfGridRowStyle = /** @__PURE__ @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}());\n/**\n * public Enum for `PdfHorizontalOverflowType`.\n * @private\n */\nvar 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/**\n * `PdfGridCell` class represents the schema of a cell in a 'PdfGrid'.\n */\nvar PdfGridCell = /** @__PURE__ @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;\n returnBounds.y += this.gridRow.grid.style.cellPadding.top;\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 }\n else {\n returnBounds.x += this.style.cellPadding.left;\n returnBounds.y += this.style.cellPadding.top;\n returnBounds.width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n returnBounds.height -= (this.style.cellPadding.bottom + this.style.cellPadding.top);\n if (this.rowSpan === 1) {\n returnBounds.width -= (this.style.borders.left.width);\n }\n }\n if (typeof this.style.borders === 'undefined' || this.style.borders == null) {\n returnBounds.x += this.gridRow.style.border.left.width;\n returnBounds.y += this.gridRow.style.border.top.width;\n returnBounds.width -= (this.gridRow.style.border.left.width + this.gridRow.style.border.right.width);\n returnBounds.height -= (this.gridRow.style.border.top.width + this.gridRow.style.border.bottom.width);\n }\n else {\n returnBounds.x += this.style.borders.left.width;\n returnBounds.y += this.style.borders.top.width;\n returnBounds.width -= (this.style.borders.left.width + this.style.borders.right.width);\n returnBounds.height -= (this.style.borders.top.width + this.style.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 (this.gridRow.grid.style.cellPadding !== null && typeof this.gridRow.grid.style.cellPadding !== 'undefined') {\n var hasLeftPad = this.gridRow.grid.style.cellPadding.hasLeftPad;\n var hasTopPad = this.gridRow.grid.style.cellPadding.hasTopPad;\n var hasRightPad = this.gridRow.grid.style.cellPadding.hasRightPad;\n var hasBottomPad = this.gridRow.grid.style.cellPadding.hasBottomPad;\n if (hasLeftPad || hasTopPad || hasRightPad || hasBottomPad) {\n if (typeof this.gridRow.grid.style.cellPadding.left !== 'undefined' && 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' && 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' && hasRightPad) {\n returnBounds.width -= this.gridRow.grid.style.cellPadding.right;\n }\n if (typeof this.gridRow.grid.style.cellPadding.bottom !== 'undefined' && hasBottomPad) {\n returnBounds.height -= this.gridRow.grid.style.cellPadding.bottom;\n }\n }\n else {\n var format = this.getStringFormat();\n if (format.alignment === null || typeof format.alignment === 'undefined') {\n returnBounds.x += this.row.grid.style.cellPadding.left;\n returnBounds.y += this.row.grid.style.cellPadding.top;\n }\n }\n }\n else {\n var format = this.getStringFormat();\n if (format.alignment === null || typeof format.alignment === 'undefined') {\n returnBounds.x += this.row.grid.style.cellPadding.left;\n returnBounds.y += this.row.grid.style.cellPadding.top;\n }\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 /*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 = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, innerLayoutArea.height);\n var image = this.objectValue;\n if (image.width <= innerLayoutArea.width) {\n imageBounds.width = image.width;\n }\n if (image.height <= innerLayoutArea.height) {\n imageBounds.height = image.height;\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 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}());\n/**\n * `PdfGridCellCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridCell' objects.\n * @private\n */\nvar PdfGridCellCollection = /** @__PURE__ @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}());\n\n/**\n * `PdfGridColumn` class represents the schema of a column in a 'PdfGrid'.\n */\nvar PdfGridColumn = /** @__PURE__ @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}());\n/**\n * `PdfGridColumnCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridColumn' objects.\n * @private\n */\nvar PdfGridColumnCollection = /** @__PURE__ @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 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}());\n\n/**\n * `PdfGridRow` class provides customization of the settings for the particular row.\n */\nvar PdfGridRow = /** @__PURE__ @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}());\n/**\n * `PdfGridRowCollection` class provides access to an ordered, strongly typed collection of 'PdfGridRow' objects.\n * @private\n */\nvar PdfGridRowCollection = /** @__PURE__ @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}());\n/**\n * `PdfGridHeaderCollection` class provides customization of the settings for the header.\n * @private\n */\nvar PdfGridHeaderCollection = /** @__PURE__ @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}());\n\nvar __extends$w = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar PdfGrid = /** @__PURE__ @class */ (function (_super) {\n __extends$w(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 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));\n\nvar __extends$x = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Class `lay outing the text`.\n *\n */\nvar PdfGridLayouter = /** @__PURE__ @class */ (function (_super) {\n __extends$x(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 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 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 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 var childGridCell = void 0;\n if (cell.value instanceof PdfGrid) {\n if (!childGridCell) {\n childGridCell = cell;\n }\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 var bottomPadding = void 0;\n if (childGridCell && childGridCell.style && childGridCell.style.cellPadding) {\n bottomPadding = childGridCell.style.cellPadding.bottom;\n }\n else {\n bottomPadding = this.Grid.style.cellPadding.bottom;\n }\n if (typeof bottomPadding === 'number' && (height + bottomPadding) < pageGraphics.clientSize.height) {\n height += bottomPadding;\n this.currentBounds.y += bottomPadding;\n }\n cell.drawCellBorders(pageGraphics, new RectangleF(location_2, new SizeF(cellWidth, height)));\n var rowWidth = this.Grid.rows.getRow(this.Grid.rows.count - 1).width;\n if (cellWidth !== rowWidth) {\n cell.drawCellBorders(pageGraphics, new RectangleF(location_2, new SizeF(rowWidth, height)));\n }\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 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 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));\n// recalculateBounds : boolean, clientSize : SizeF\n//Implementation\n/**\n * `Initializes` internal data.\n * @private\n */\n//Internal declaration\nvar PdfGridLayoutResult = /** @__PURE__ @class */ (function (_super) {\n __extends$x(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));\n/**\n * `PdfGridLayoutFormat` class represents a flexible grid that consists of columns and rows.\n */\nvar PdfGridLayoutFormat = /** @__PURE__ @class */ (function (_super) {\n __extends$x(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));\nvar GridCellEventArgs = /** @__PURE__ @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}());\nvar PdfGridBeginCellDrawEventArgs = /** @__PURE__ @class */ (function (_super) {\n __extends$x(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));\nvar PdfGridEndCellDrawEventArgs = /** @__PURE__ @class */ (function (_super) {\n __extends$x(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));\nvar PdfCancelEventArgs = /** @__PURE__ @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}());\nvar BeginPageLayoutEventArgs = /** @__PURE__ @class */ (function (_super) {\n __extends$x(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));\n/**\n * `EndPageLayoutEventArgs` class is alternate for end page layout events.\n */\nvar EndPageLayoutEventArgs = /** @__PURE__ @class */ (function (_super) {\n __extends$x(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));\n/**\n * `PdfGridBeginPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridBeginPageLayoutEventArgs = /** @__PURE__ @class */ (function (_super) {\n __extends$x(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));\n/**\n * `PdfGridEndPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridEndPageLayoutEventArgs = /** @__PURE__ @class */ (function (_super) {\n __extends$x(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));\nvar RowLayoutResult = /** @__PURE__ @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}());\n\nvar __extends$y = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * ShapeLayouter class.\n * @private\n */\nvar ShapeLayouter = /** @__PURE__ @class */ (function (_super) {\n __extends$y(ShapeLayouter, _super);\n // Constructors\n /**\n * Initializes a new instance of the `ShapeLayouter` class.\n * @private\n */\n function ShapeLayouter(element) {\n var _this = _super.call(this, element) || this;\n // Fields\n /**\n * Initializes the object to store `older form elements` of previous page.\n * @default 0\n * @private\n */\n _this.olderPdfForm = 0;\n /**\n * The `bounds` of the shape element.\n * * @default new RectangleF()\n * @private\n */\n _this.shapeBounds = new RectangleF();\n /**\n * Total Page size of the web page.\n * * @default 0\n * @private\n */\n _this.totalPageSize = 0;\n return _this;\n }\n Object.defineProperty(ShapeLayouter.prototype, \"element\", {\n // Properties\n /**\n * Gets shape element.\n * @private\n */\n get: function () {\n return this.elements;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Layouts the element.\n * @private\n */\n ShapeLayouter.prototype.layoutInternal = function (param) {\n var currentPage = param.page;\n var currentBounds = param.bounds;\n var shapeLayoutBounds = this.element.getBounds();\n shapeLayoutBounds.x = 0;\n shapeLayoutBounds.y = 0;\n /* tslint:disable */\n var isEmpty = (this.shapeBounds.x === this.shapeBounds.y && this.shapeBounds.y === this.shapeBounds.width && this.shapeBounds.width === this.shapeBounds.height && this.shapeBounds.height === 0) ? true : false;\n /* tslint:enable */\n if ((this.isPdfGrid) && (!(isEmpty))) {\n shapeLayoutBounds = this.shapeBounds;\n }\n var result = null;\n var pageResult = new ShapeLayoutResult();\n pageResult.page = currentPage;\n /*tslint:disable:no-constant-condition */\n while (true) {\n // Raise event.\n var result1 = this.raiseBeforePageLayout(currentPage, currentBounds);\n currentBounds = result1.currentBounds;\n var endArgs = null;\n if (!result1.cancel) {\n pageResult = this.layoutOnPage(currentPage, currentBounds, shapeLayoutBounds, param);\n // Raise event.\n endArgs = this.raiseEndPageLayout(pageResult);\n result1.cancel = (endArgs === null) ? false : endArgs.cancel;\n }\n if (!pageResult.end && !result1.cancel) {\n currentBounds = this.getPaginateBounds(param);\n shapeLayoutBounds = this.getNextShapeBounds(shapeLayoutBounds, pageResult);\n currentPage = (endArgs === null || endArgs.nextPage === null) ?\n this.getNextPage(currentPage) : endArgs.nextPage;\n if (this.isPdfGrid) {\n result = this.getLayoutResult(pageResult);\n break;\n }\n }\n else {\n result = this.getLayoutResult(pageResult);\n break;\n }\n }\n return result;\n };\n /**\n * Raises BeforePageLayout event.\n * @private\n */\n ShapeLayouter.prototype.raiseBeforePageLayout = function (currentPage, currentBounds) {\n var cancel = false;\n if (this.element.raiseBeginPageLayout) {\n var args = new BeginPageLayoutEventArgs(currentBounds, currentPage);\n this.element.onBeginPageLayout(args);\n cancel = args.cancel;\n currentBounds = args.bounds;\n }\n return { currentBounds: currentBounds, cancel: cancel };\n };\n /**\n * Raises PageLayout event if needed.\n * @private\n */\n ShapeLayouter.prototype.raiseEndPageLayout = function (pageResult) {\n var args = null;\n if (this.element.raiseEndPageLayout) {\n var res = this.getLayoutResult(pageResult);\n args = new EndPageLayoutEventArgs(res);\n this.element.onEndPageLayout(args);\n }\n return args;\n };\n /**\n * Creates layout result.\n * @private\n */\n ShapeLayouter.prototype.getLayoutResult = function (pageResult) {\n var result = new PdfLayoutResult(pageResult.page, pageResult.bounds);\n return result;\n };\n /**\n * Calculates the next active shape bounds.\n * @private\n */\n ShapeLayouter.prototype.getNextShapeBounds = function (shapeLayoutBounds, pageResult) {\n var layoutedBounds = pageResult.bounds;\n shapeLayoutBounds.y = (shapeLayoutBounds.y + layoutedBounds.height);\n shapeLayoutBounds.height = (shapeLayoutBounds.height - layoutedBounds.height);\n return shapeLayoutBounds;\n };\n /**\n * Layouts the element on the current page.\n * @private\n */\n ShapeLayouter.prototype.layoutOnPage = function (currentPage, curBounds, sBounds, param) {\n var result = new ShapeLayoutResult();\n curBounds = this.checkCorrectCurrentBounds(currentPage, curBounds, param);\n var fitToPage = this.fitsToBounds(curBounds, sBounds);\n var canDraw = !((param.format.break === PdfLayoutBreakType.FitElement)\n && (!fitToPage && (currentPage === param.page)));\n var shapeFinished = false;\n if (canDraw) {\n var drawRectangle = this.getDrawBounds(curBounds, sBounds);\n this.drawShape(currentPage.graphics, curBounds, drawRectangle);\n result.bounds = this.getPageResultBounds(curBounds, sBounds);\n shapeFinished = ((curBounds.height) >= (sBounds.height));\n }\n result.end = (shapeFinished || (param.format.layout === PdfLayoutType.OnePage));\n result.page = currentPage;\n return result;\n };\n /**\n * Returns Rectangle for element drawing on the page.\n * @private\n */\n ShapeLayouter.prototype.getDrawBounds = function (currentBounds, shapeLayoutBounds) {\n var result = currentBounds;\n result.y = (result.y - shapeLayoutBounds.y);\n result.height = (result.height + shapeLayoutBounds.y);\n return result;\n };\n /**\n * Draws the shape.\n * @private\n */\n ShapeLayouter.prototype.drawShape = function (g, currentBounds, drawRectangle) {\n var gState = g.save();\n try {\n g.setClip(currentBounds);\n this.element.drawGraphicsHelper(g, new PointF(drawRectangle.x, drawRectangle.y));\n }\n finally {\n g.restore(gState);\n }\n };\n /**\n * Corrects current bounds on the page.\n * @protected\n */\n ShapeLayouter.prototype.checkCorrectCurrentBounds = function (currentPage, curBounds, param) {\n var pageSize = currentPage.graphics.clientSize;\n curBounds.width = (curBounds.width > 0) ? curBounds.width : (pageSize.width - curBounds.x);\n curBounds.height = (curBounds.height > 0) ? curBounds.height : (pageSize.height - curBounds.y);\n if (this.isPdfGrid) {\n curBounds.height = (curBounds.height - this.bottomCellPadding);\n }\n return curBounds;\n };\n /**\n * Calculates bounds where the shape was layout on the page.\n * @private\n */\n ShapeLayouter.prototype.getPageResultBounds = function (currentBounds, shapeLayoutBounds) {\n var result = currentBounds;\n result.height = Math.min(result.height, shapeLayoutBounds.height);\n return result;\n };\n /**\n * Checks whether shape rectangle fits to the lay outing bounds.\n * @private\n */\n ShapeLayouter.prototype.fitsToBounds = function (currentBounds, shapeLayoutBounds) {\n var fits = (shapeLayoutBounds.height <= currentBounds.height);\n return fits;\n };\n /**\n * Initializes the offset `index`.\n * * @default 0\n * @private\n */\n ShapeLayouter.index = 0;\n /**\n * Initializes the `difference in page height`.\n * * @default 0\n * @private\n */\n ShapeLayouter.splitDiff = 0;\n /**\n * Determines the `end of Vertical offset` values.\n * * @default false\n * @private\n */\n ShapeLayouter.last = false;\n /**\n * Determines the document link annotation `border width`.\n * * @default 0\n * @private\n */\n ShapeLayouter.borderWidth = 0;\n return ShapeLayouter;\n}(ElementLayouter));\n/**\n * Contains lay outing result settings.\n * @private\n */\nvar ShapeLayoutResult = /** @__PURE__ @class */ (function () {\n function ShapeLayoutResult() {\n }\n return ShapeLayoutResult;\n}());\n\nvar __extends$z = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Base class for the main shapes.\n * @private\n */\nvar PdfShapeElement = /** @__PURE__ @class */ (function (_super) {\n __extends$z(PdfShapeElement, _super);\n function PdfShapeElement() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // methods\n /**\n * Gets the bounds.\n * @private\n */\n PdfShapeElement.prototype.getBounds = function () {\n var rect = this.getBoundsInternal();\n return rect;\n };\n /**\n * `drawGraphicsHelper` the graphics.\n * @public\n */\n PdfShapeElement.prototype.drawGraphicsHelper = function (graphics, location) {\n if ((graphics == null)) {\n throw new Error('ArgumentNullException :graphics');\n }\n this.drawShapeHelper(graphics, location.x, location.y);\n };\n /**\n * `drawShapeHelper` the graphics.\n * @private\n */\n PdfShapeElement.prototype.drawShapeHelper = function (graphics, x, y) {\n var bNeedSave = (x !== 0.5 || y !== 0.5);\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 /**\n * Layouts the element.\n * @private\n */\n PdfShapeElement.prototype.layout = function (param) {\n var layouter = new ShapeLayouter(this);\n var result = layouter.layout(param);\n return result;\n };\n return PdfShapeElement;\n}(PdfLayoutElement));\n\nvar __extends$A = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Represents a base class for all page graphics elements.\n */\nvar PdfDrawElement = /** @__PURE__ @class */ (function (_super) {\n __extends$A(PdfDrawElement, _super);\n /**\n * Initializes a new instance of the `PdfDrawElement` class.\n * @protected\n */\n function PdfDrawElement(pen) {\n var _this = _super.call(this) || this;\n if (typeof pen !== 'undefined') {\n _this.mpen = pen;\n }\n return _this;\n }\n Object.defineProperty(PdfDrawElement.prototype, \"pen\", {\n // Properties\n /**\n * Gets or sets a pen that will be used to draw the element.\n * @public\n */\n get: function () {\n return this.mpen;\n },\n set: function (value) {\n this.mpen = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfDrawElement;\n}(PdfShapeElement));\n\nvar __extends$B = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Represents a base class for all page graphics elements.\n */\nvar PdfFillElement = /** @__PURE__ @class */ (function (_super) {\n __extends$B(PdfFillElement, _super);\n /**\n * Initializes a new instance of the `PdfFillElement` class.\n * @protected\n */\n function PdfFillElement(arg1, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Internal variable to store pen.\n * @private\n */\n _this.mbrush = null;\n if (typeof arg1 === 'undefined') ;\n else if (arg1 instanceof PdfPen) {\n _this = _super.call(this, arg1) || this;\n }\n else {\n _this.mbrush = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfFillElement.prototype, \"brush\", {\n // Properties\n /**\n * Gets or sets a brush of the element.\n * @public\n */\n get: function () {\n return this.mbrush;\n },\n set: function (value) {\n this.mbrush = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Gets the pen. If both pen and brush are not explicitly defined, default pen will be used.\n * @protected\n */\n PdfFillElement.prototype.obtainPen = function () {\n return ((this.mbrush == null) && (this.pen == null)) ? new PdfPen(new PdfColor(0, 0, 0)) : this.pen;\n };\n return PdfFillElement;\n}(PdfDrawElement));\n\nvar __extends$C = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `PdfPath` class Implements graphics path, which is a sequence of primitive graphics elements.\n * @private\n */\nvar PdfPath = /** @__PURE__ @class */ (function (_super) {\n __extends$C(PdfPath, _super);\n /**\n * Initializes a new instance of the `PdfPath` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfPath(arg1, arg2, arg3, arg4) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Local variable to store the points.\n * @private\n */\n _this.mpoints = null;\n /**\n * Local variable to store the path Types.\n * @private\n */\n _this.mpathTypes = null;\n /**\n * Local variable to store the Start Figure.\n * @private\n */\n _this.mStartFigure = true;\n /**\n * Local variable to store the fill Mode.\n * @private\n */\n _this.mfillMode = PdfFillMode.Alternate;\n /**\n * Local variable to store the Beziers.\n * @private\n */\n _this.isBeziers3 = false;\n /**\n * Local variable to store the xps.\n * @private\n */\n _this.isXps = false;\n if (typeof arg1 === 'undefined') ;\n else if (arg1 instanceof PdfPen) {\n _this = _super.call(this, arg1) || this;\n if (arg2 instanceof PdfBrush) {\n _this = _super.call(this, arg1, arg2) || this;\n _this.fillMode = arg3;\n }\n else if (arg2 !== null && typeof arg2 !== 'undefined' && arg3 !== null && typeof arg3 !== 'undefined') {\n _this.addPath(arg2, arg3);\n }\n }\n else if (arg1 instanceof PdfBrush) {\n _this = _super.call(this, arg1) || this;\n if (arg2 !== null && typeof arg2 !== 'undefined') {\n _this.fillMode = arg2;\n }\n if (arg3 !== null && typeof arg3 !== 'undefined' && arg4 !== null && typeof arg4 !== 'undefined') {\n _this.addPath(arg3, arg4);\n }\n }\n else {\n _this.addPath(arg1, arg2);\n }\n return _this;\n }\n Object.defineProperty(PdfPath.prototype, \"fillMode\", {\n // Properties\n /**\n * Gets or sets the fill mode.\n * @public\n */\n get: function () {\n return this.mfillMode;\n },\n set: function (value) {\n this.mfillMode = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"pathPoints\", {\n /**\n * Gets the path points.\n * @public\n */\n get: function () {\n return this.points;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"pathTypes\", {\n /**\n * Gets the path point types.\n * @public\n */\n get: function () {\n return this.types;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"pointCount\", {\n /**\n * Gets the point count.\n * @public\n */\n get: function () {\n var count = 0;\n if ((this.mpoints != null)) {\n count = this.mpoints.length;\n }\n return count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"lastPoint\", {\n /**\n * Gets the last points.\n * @public\n */\n get: function () {\n return this.getLastPoint();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"points\", {\n /**\n * Gets the points list.\n * @private\n */\n get: function () {\n if ((this.mpoints == null)) {\n this.mpoints = [];\n }\n return this.mpoints;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"types\", {\n /**\n * Gets the types.\n * @private\n */\n get: function () {\n if ((this.mpathTypes == null)) {\n this.mpathTypes = [];\n }\n return this.mpathTypes;\n },\n enumerable: true,\n configurable: true\n });\n PdfPath.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 (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2, null);\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 PointF && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null) && typeof arg3 === 'number') {\n var widthValue = (arg1.graphics.clientSize.width - arg2);\n var layoutRect = new RectangleF(arg2, arg3, widthValue, 0);\n return this.drawHelper(arg1, layoutRect, arg4);\n }\n else if (arg2 instanceof RectangleF && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2, arg3);\n }\n else {\n return this.drawHelper(arg1, arg2, arg3);\n }\n };\n PdfPath.prototype.addArc = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof RectangleF) {\n this.addArc(arg1.x, arg1.y, arg1.width, arg1.height, arg2, arg3);\n }\n else {\n var points = this.getBezierArcPoints(arg1, arg2, (arg2 + arg3), (arg2 + arg4), arg5, arg6);\n for (var i = 0; i < points.length; i = i + 8) {\n /* tslint:disable-next-line:max-line-length */\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 this.addPoints(point, PathPointType.Bezier3);\n }\n }\n };\n /* tslint:disable-next-line:max-line-length */\n PdfPath.prototype.addBezier = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF && arg4 instanceof PointF) {\n this.addBezier(arg1.x, arg1.y, arg2.x, arg2.y, arg3.x, arg3.y, arg4.x, arg4.y);\n }\n else {\n var points = [];\n points.push(arg1);\n points.push(arg2);\n points.push(arg3);\n points.push(arg4);\n points.push(arg5);\n points.push(arg6);\n points.push(arg7);\n points.push(arg8);\n this.addPoints(points, PathPointType.Bezier3);\n }\n };\n PdfPath.prototype.addEllipse = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.addEllipse(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.startFigure();\n this.addArc(arg1, arg2, arg3, arg4, 0, 360);\n this.closeFigure();\n }\n };\n PdfPath.prototype.addLine = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof PointF && arg2 instanceof PointF) {\n this.addLine(arg1.x, arg1.y, arg2.x, arg2.y);\n }\n else {\n var points = [];\n points.push(arg1);\n points.push(arg2);\n points.push(arg3);\n points.push(arg4);\n this.addPoints(points, PathPointType.Line);\n }\n };\n PdfPath.prototype.addPath = function (arg1, arg2) {\n if (arg1 instanceof PdfPath) {\n this.addPath(arg1.pathPoints, arg1.pathTypes);\n }\n else {\n if ((arg1 == null)) {\n throw new Error('ArgumentNullException:pathPoints');\n }\n if ((arg2 == null)) {\n throw new Error('ArgumentNullException:pathTypes');\n }\n var count = arg1.length;\n if ((count !== arg2.length)) {\n throw new Error('The argument arrays should be of equal length.');\n }\n }\n };\n PdfPath.prototype.addPie = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof RectangleF) {\n this.addPie(arg1.x, arg1.y, arg1.width, arg1.height, arg2, arg3);\n }\n else {\n this.startFigure();\n this.addArc(arg1, arg2, arg3, arg4, arg5, arg6);\n this.addPoint(new PointF((arg1 + (arg3 / 2)), (arg2 + (arg4 / 2))), PathPointType.Line);\n this.closeFigure();\n }\n };\n /**\n * `add a polygon` specified by points.\n * @param points The points of the polygon\n */\n PdfPath.prototype.addPolygon = function (points) {\n var count = (points.length * 2);\n var p = [];\n this.startFigure();\n for (var i = 0; i < points.length; i++) {\n p.push(points[i].x);\n p.push(points[i].y);\n }\n this.addPoints(p, PathPointType.Line);\n this.closeFigure();\n };\n PdfPath.prototype.addRectangle = function (arg1, y, width, height) {\n if (arg1 instanceof RectangleF) {\n this.addRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n var points = [];\n this.startFigure();\n points.push(arg1);\n points.push(y);\n points.push((arg1 + width));\n points.push(y);\n points.push((arg1 + width));\n points.push((y + height));\n points.push(arg1);\n points.push((y + height));\n this.addPoints(points, PathPointType.Line);\n this.closeFigure();\n }\n };\n /**\n * Starts a new figure.\n * @public\n */\n PdfPath.prototype.startFigure = function () {\n this.mStartFigure = true;\n };\n /**\n * Closed all non-closed figures.\n * @public\n */\n PdfPath.prototype.closeAllFigures = function () {\n var startPath = this.pathPoints[0];\n for (var i = 0; i < this.mpathTypes.length; i++) {\n var pt = ((this.types[i]));\n var flag = false;\n if (((i !== 0) && (pt === PathPointType.Start))) {\n this.closeFigure((i - 1));\n flag = true;\n }\n else if (((i === (this.mpathTypes.length - 1)) && (!flag && this.isXps))) {\n if ((startPath.x === this.pathPoints[i].y)) {\n this.closeFigure(i);\n }\n }\n }\n };\n /**\n * Gets the last point.\n * @public\n */\n PdfPath.prototype.getLastPoint = function () {\n var lastPoint = new PointF(0, 0);\n var count = this.pointCount;\n if (((count > 0) && (this.mpoints != null))) {\n lastPoint.x = this.mpoints[(count - 1)].x;\n lastPoint.y = this.mpoints[(count - 1)].y;\n }\n return lastPoint;\n };\n /**\n * Gets the bezier points for arc constructing.\n * @public\n */\n PdfPath.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 /* tslint:disable-next-line:max-line-length */\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 /* tslint:disable-next-line:max-line-length */\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 /**\n * `getBoundsInternal` Returns a rectangle that bounds this element.\n * @public\n */\n PdfPath.prototype.getBoundsInternal = function () {\n var points = this.pathPoints;\n var bounds = new RectangleF(0, 0, 0, 0);\n if ((points.length > 0)) {\n var xmin = points[0].x;\n var xmax = points[0].x;\n var ymin = points[0].y;\n var ymax = points[0].y;\n for (var i = 1; i < points.length; i++) {\n var point = points[i];\n xmin = Math.min(point.x, xmin);\n xmax = Math.max(point.x, xmax);\n ymin = Math.min(point.y, ymin);\n ymax = Math.max(point.y, ymax);\n }\n bounds = new RectangleF(xmin, ymin, (xmax - xmin), (ymax - ymin));\n }\n return bounds;\n };\n /**\n * `drawInternal` Draws an element on the Graphics.\n * @param graphics Graphics context where the element should be printed.\n * @public\n */\n PdfPath.prototype.drawInternal = function (graphics) {\n if ((graphics == null)) {\n throw new Error('ArgumentNullException :graphics');\n }\n graphics.drawPath(this.obtainPen(), this.brush, this);\n };\n PdfPath.prototype.addPoints = function (points, pointType, startIndex, endIndex) {\n if (typeof startIndex === 'undefined' && typeof endIndex === 'undefined') {\n this.addPoints(points, pointType, 0, points.length);\n }\n else {\n for (var i = startIndex; i < endIndex; i++) {\n var point = new PointF(points[i], points[(i + 1)]);\n if ((i === startIndex)) {\n if (((this.pointCount <= 0) || this.mStartFigure)) {\n this.addPoint(point, PathPointType.Start);\n this.mStartFigure = false;\n }\n else if (((point.x !== this.lastPoint.x) && (point.y !== this.lastPoint.y) && !this.isBeziers3)) {\n this.addPoint(point, PathPointType.Line);\n }\n else if ((point.x !== this.lastPoint.x) && (point.y !== this.lastPoint.y)) {\n this.addPoint(point, PathPointType.Bezier3);\n }\n }\n else {\n this.addPoint(point, pointType);\n }\n i++;\n }\n }\n };\n /**\n * `add a point` Adds the point and its type\n * @param points The points.\n * @param pointType Type of the points.\n * @private\n */\n PdfPath.prototype.addPoint = function (point, pointType) {\n this.points.push(point);\n this.types.push((pointType));\n };\n PdfPath.prototype.closeFigure = function (index) {\n if (typeof index === 'undefined') {\n if ((this.pointCount > 0)) {\n this.closeFigure(this.pointCount - 1);\n }\n this.startFigure();\n }\n else {\n if ((index < 0)) {\n throw new Error('IndexOutOfRangeException()');\n }\n var pt = ((this.types[index]));\n pt = (pt | PathPointType.CloseSubpath);\n this.types[index] = (pt);\n }\n };\n return PdfPath;\n}(PdfFillElement));\n\nvar __extends$D = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `PdfRectangleArea` class Implements graphics rectangle area, which is a sequence of primitive graphics elements.\n * @private\n */\nvar PdfRectangleArea = /** @__PURE__ @class */ (function (_super) {\n __extends$D(PdfRectangleArea, _super);\n /* tslint:disable-next-line:max-line-length */\n function PdfRectangleArea(arg1, arg2, arg3, arg4, arg5, arg6) {\n var _this = _super.call(this) || this;\n //Fields\n /**\n * public variable to store the rectangle.\n * @public\n */\n _this.bounds = new RectangleF(0, 0, 0, 0);\n if (typeof arg1 === 'undefined') ;\n else if (arg1 instanceof PdfPen) {\n _this = _super.call(this, arg1, arg2) || this;\n if (arg3 instanceof RectangleF) {\n _this.bounds = arg3;\n }\n else {\n _this.bounds = new RectangleF(arg3, arg4, arg5, arg6);\n }\n }\n else if (arg1 instanceof RectangleF) {\n _this.bounds = arg1;\n }\n else {\n _this.bounds = new RectangleF(arg1, arg2, arg3, arg4);\n }\n return _this;\n }\n Object.defineProperty(PdfRectangleArea.prototype, \"x\", {\n //Properties\n /**\n * Gets or sets the X co-ordinate of the upper-left corner of this the element.\n * @public\n */\n get: function () {\n return this.bounds.x;\n },\n set: function (value) {\n this.bounds.x = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRectangleArea.prototype, \"y\", {\n /**\n * Gets or sets the Y co-ordinate of the upper-left corner of this the element.\n * @public\n */\n get: function () {\n return this.bounds.y;\n },\n set: function (value) {\n this.bounds.y = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRectangleArea.prototype, \"width\", {\n /**\n * Gets or sets the width of this element.\n * @public\n */\n get: function () {\n return this.bounds.width;\n },\n set: function (value) {\n this.bounds.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRectangleArea.prototype, \"height\", {\n /**\n * Gets or sets the height of this element.\n * @public\n */\n get: function () {\n return this.bounds.height;\n },\n set: function (value) {\n this.bounds.height = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n PdfRectangleArea.prototype.getBoundsInternal = function () {\n return this.bounds;\n };\n return PdfRectangleArea;\n}(PdfFillElement));\n\nvar __extends$E = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `PdfEllipsePart` class Implements graphics ellipse part, which is a sequence of primitive graphics elements.\n * @private\n */\nvar PdfEllipsePart = /** @__PURE__ @class */ (function (_super) {\n __extends$E(PdfEllipsePart, _super);\n /* tslint:disable-next-line:max-line-length */\n function PdfEllipsePart(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * public variable to store the start angle.\n * @public\n */\n _this.startAngle = 0;\n /**\n * public variable to store the sweep angle.\n * @public\n */\n _this.sweepAngle = 0;\n if (typeof arg1 === 'undefined') ;\n else if (arg1 instanceof RectangleF && typeof arg2 !== 'undefined' && typeof arg3 !== 'undefined') {\n _this = _super.call(this, arg1) || this;\n _this.startAngle = arg2;\n _this.sweepAngle = arg3;\n }\n else if (arg1 instanceof PdfPen) {\n if (arg3 instanceof RectangleF) {\n _this = _super.call(this, arg1, arg2, arg3) || this;\n _this.startAngle = arg4;\n _this.sweepAngle = arg5;\n }\n else {\n _this = _super.call(this, arg1, arg2, arg3, arg4, arg5, arg6) || this;\n _this.startAngle = arg7;\n _this.sweepAngle = arg8;\n }\n }\n else {\n _this = _super.call(this, arg1, arg2, arg3, arg4) || this;\n _this.startAngle = arg5;\n _this.sweepAngle = arg6;\n }\n return _this;\n }\n return PdfEllipsePart;\n}(PdfRectangleArea));\n\nvar __extends$F = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * `PdfArc` class Implements graphics arc, which is a sequence of primitive graphics elements.\n * @private\n */\nvar PdfArc = /** @__PURE__ @class */ (function (_super) {\n __extends$F(PdfArc, _super);\n /* tslint:disable-next-line:max-line-length */\n function PdfArc(arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n var _this = this;\n if (typeof arg1 === 'undefined') {\n _this = _super.call(this) || this;\n }\n else if (arg1 instanceof RectangleF) {\n _this = _super.call(this, arg1, arg2, arg3) || this;\n }\n else if (arg1 instanceof PdfPen) {\n if (arg2 instanceof RectangleF) {\n _this = _super.call(this, arg1, null, arg2, arg3, arg4) || this;\n }\n else if (typeof arg6 === 'undefined' && typeof arg7 === 'undefined') {\n _this = _super.call(this, arg1, null, 0, 0, arg2, arg3, arg4, arg5) || this;\n }\n else if (typeof arg6 !== 'undefined' && typeof arg7 !== 'undefined') {\n _this = _super.call(this, arg1, null, arg2, arg3, arg4, arg5, arg6, arg7) || this;\n }\n }\n else if (typeof arg1 !== 'undefined' && typeof arg5 === 'undefined' && typeof arg6 === 'undefined') {\n _this = _super.call(this, 0, 0, arg1, arg2, arg3, arg4) || this;\n }\n else if (typeof arg1 !== 'undefined' && typeof arg5 !== 'undefined' && typeof arg6 !== 'undefined') {\n _this = _super.call(this, arg1, arg2, arg3, arg4, arg5, arg6) || this;\n }\n return _this;\n }\n PdfArc.prototype.draw = function (argu1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(argu1, arg2.x, arg2.y);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(argu1, arg2, null);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(argu1, arg2, arg3, null);\n }\n else if (arg2 instanceof PointF && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(argu1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null) && typeof arg3 === 'number') {\n var widthValue = (argu1.graphics.clientSize.width - arg2);\n var layoutRect = new RectangleF(arg2, arg3, widthValue, 0);\n return this.drawHelper(argu1, layoutRect, arg4);\n }\n else {\n return this.drawHelper(argu1, arg2, arg3);\n }\n };\n // Implementation\n /**\n * `drawInternal` Draws an element on the Graphics.\n * @param graphics Graphics context where the element should be printed.\n *\n */\n PdfArc.prototype.drawInternal = function (graphics) {\n if ((graphics == null)) {\n throw new Error('ArgumentNullException : graphics');\n }\n graphics.drawArc(this.obtainPen(), this.bounds, this.startAngle, this.sweepAngle);\n };\n return PdfArc;\n}(PdfEllipsePart));\n\nvar __extends$G = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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//https://www.giftofspeed.com/base64-encoder/\nvar PdfTrueTypeFont = /** @__PURE__ @class */ (function (_super) {\n __extends$G(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));\n\n/**\n * PdfPageTemplateElement.ts class for EJ2-Pdf\n */\n/**\n * Describes a `page template` object that can be used as header/footer, watermark or stamp.\n */\nvar PdfPageTemplateElement = /** @__PURE__ @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 },\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 },\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 },\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}());\n\nexport { ArabicShape, ArabicShapeRenderer, BeginPageLayoutEventArgs, Bidi, ByteArray, Dictionary, DictionaryProperties, DuplexMode, ElementLayouter, EndPageLayoutEventArgs, FontDescriptorFlags, FontEncoding, GetResourceEventHandler, GridCellEventArgs, Guid, ImageDecoder, ImageFormat, InternalEnum, LineInfo, LineType, Matrix, ObjectInfo, ObjectStatus, ObjectType, Operators, PageAddedEventArgs, PageScalingMode, PageSettingsState, PathPointType, PdfAction, PdfActionLinkAnnotation, PdfAlignmentStyle, PdfAnnotation, PdfAnnotationCollection, PdfArc, PdfArray, PdfArrayBuffer, PdfBitmap, PdfBlend, PdfBlendMode, PdfBorderOverlapStyle, PdfBorders, PdfBrush, PdfBrushes, PdfCacheCollection, PdfCancelEventArgs, PdfCatalog, PdfCollection, PdfColor, PdfColorBlend, PdfColorSpace, PdfCompositeField, PdfCrossTable, PdfDashStyle, PdfDestination, PdfDestinationMode, PdfDictionary, PdfDockStyle, PdfDocument, PdfDocumentBase, PdfDocumentLinkAnnotation, PdfDocumentPageCollection, PdfDocumentTemplate, PdfFillMode, PdfFont, PdfFontFamily, PdfFontMetrics, PdfFontStyle, PdfFontType, PdfFunction, PdfGradientBrush, PdfGraphics, PdfGraphicsState, PdfGraphicsUnit, PdfGrid, PdfGridBeginCellDrawEventArgs, PdfGridBeginPageLayoutEventArgs, PdfGridCell, PdfGridCellCollection, PdfGridCellStyle, PdfGridColumn, PdfGridColumnCollection, PdfGridEndCellDrawEventArgs, PdfGridEndPageLayoutEventArgs, PdfGridHeaderCollection, PdfGridImagePosition, PdfGridLayoutFormat, PdfGridLayoutResult, PdfGridLayouter, PdfGridRow, PdfGridRowCollection, PdfGridRowStyle, PdfGridStyle, PdfGridStyleBase, PdfHorizontalAlignment, PdfHorizontalOverflowType, PdfImage, PdfLayoutBreakType, PdfLayoutElement, PdfLayoutFormat, PdfLayoutParams, PdfLayoutResult, PdfLayoutType, PdfLineCap, PdfLineJoin, PdfLinearGradientBrush, PdfLinkAnnotation, PdfMainObjectCollection, PdfMargins, PdfName, PdfNumber, PdfNumberStyle, PdfPaddings, PdfPage, PdfPageBase, PdfPageCountField, PdfPageLayer, PdfPageLayerCollection, PdfPageLayout, PdfPageMode, PdfPageNumberField, PdfPageOrientation, PdfPageRotateAngle, PdfPageSettings, PdfPageSize, PdfPageTemplateElement, PdfPath, PdfPen, PdfRadialGradientBrush, PdfReference, PdfReferenceHolder, PdfResources, PdfSampledFunction, PdfSection, PdfSectionCollection, PdfSectionPageCollection, PdfSectionTemplate, PdfSolidBrush, PdfStandardFont, PdfStandardFontMetricsFactory, PdfStream, PdfStreamWriter, PdfString, PdfStringFormat, PdfStringLayoutResult, PdfStringLayouter, PdfSubSuperScript, PdfTemplate, PdfTextAlignment, PdfTextDirection, PdfTextElement, PdfTextLayoutResult, PdfTextWebLink, PdfTilingBrush, PdfTransformationMatrix, PdfTransparency, PdfTrueTypeFont, PdfUriAction, PdfUriAnnotation, PdfVerticalAlignment, PdfViewerPreferences, PdfWordWrapType, PdfWriter, PdfWriterHelper, PointF, ProcedureSets, Rectangle, RectangleF, RegisteredObject, RowLayoutResult, RtlCharacters, RtlRenderer, SaveAnnotationEventHandler, SaveCmapEventHandler, SaveDescendantFontEventHandler, SaveFontDictionaryEventHandler, SaveFontProgramEventHandler, SaveSectionCollectionEventHandler, SaveSectionEventHandler, SaveTemplateEventHandler, SizeF, StandardWidthTable, StringTokenizer, TemplateType, TextLayouter, TextPageLayoutResult, TextRenderingMode, TtfCmapEncoding, TtfCmapFormat, TtfCompositeGlyphFlags, TtfMacintoshEncodingID, TtfMicrosoftEncodingID, TtfPlatformID, WidthTable, defaultToString };\n","import { isNullOrUndefined, setCulture, Internationalization, Property, merge, extend as extend$1, attributes, removeClass, addClass, setValue, getValue, remove, updateBlazorTemplate, setStyleAttribute, Droppable, Draggable, closest, classList, createElement, blazorTemplates, resetBlazorTemplate, getEnumValue, EventHandler, Browser, formatUnit, ChildProperty, isUndefined, select, compile, Collection, L10n, Component, append, KeyboardEvents, SanitizeHtmlHelper, Complex, Event as Event$1, NotifyPropertyChanges, defaultCurrencyCode, detach, print, selectAll, isObject, debounce, matches, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { Query, DataUtil, DataManager, RemoteSaveAdaptor, Predicate as Predicate$1, Deferred, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { Dialog, createSpinner, showSpinner, hideSpinner, Tooltip, calculateRelativeBasedPosition, calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button, createCheckBox, RadioButton, CheckBox, Switch } from '@syncfusion/ej2-buttons';\nimport { Input, NumericTextBox, TextBox, FormValidator, MaskedTextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownList, AutoComplete, ComboBox, MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { DatePicker, DateTimePicker, MaskedDateTime, TimePicker } from '@syncfusion/ej2-calendars';\nimport { ContextMenu as ContextMenu$1, Toolbar as Toolbar$1 } from '@syncfusion/ej2-navigations';\nimport { Workbook } from '@syncfusion/ej2-excel-export';\nimport { PdfPageSettings, PdfDocument, PdfGridLayoutFormat, PdfLayoutType, PdfLayoutBreakType, RectangleF, PdfPageOrientation, PdfGrid, PdfFontFamily, PdfColor, PdfStandardFont, PdfSolidBrush, PdfFontStyle, PdfTrueTypeFont, PdfBorders, PdfPen, PdfPaddings, PointF, SizeF, PdfPageTemplateElement, PdfStringFormat, PdfPageNumberField, PdfPageCountField, PdfCompositeField, PdfBitmap, PdfTextWebLink, PdfTextAlignment, PdfVerticalAlignment } from '@syncfusion/ej2-pdf-export';\n\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @__PURE__ @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 (!isNullOrUndefined(format) && (format.type === 'dateTime' || format.type === 'datetime' || format.type === 'date' || format.type === 'time')) {\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}());\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @__PURE__ @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$1({}, 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$1({\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}());\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @__PURE__ @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}());\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @__PURE__ @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));\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @__PURE__ @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));\n\n/** @hidden */\nvar created = 'create';\n/** @hidden */\nvar destroyed = 'destroy';\n/** @hidden */\nvar load = 'load';\n/** @hidden */\nvar rowDataBound = 'rowDataBound';\n/** @hidden */\nvar queryCellInfo = 'queryCellInfo';\n/** @hidden */\nvar headerCellInfo = 'headerCellInfo';\n/** @hidden */\nvar actionBegin = 'actionBegin';\n/** @hidden */\nvar actionComplete = 'actionComplete';\n/** @hidden */\nvar actionFailure = 'actionFailure';\n/** @hidden */\nvar dataBound = 'dataBound';\n/** @hidden */\nvar rowSelecting = 'rowSelecting';\n/** @hidden */\nvar rowSelected = 'rowSelected';\n/** @hidden */\nvar rowDeselecting = 'rowDeselecting';\n/** @hidden */\nvar rowDeselected = 'rowDeselected';\n/** @hidden */\nvar cellSelecting = 'cellSelecting';\n/** @hidden */\nvar cellSelected = 'cellSelected';\n/** @hidden */\nvar cellDeselecting = 'cellDeselecting';\n/** @hidden */\nvar cellDeselected = 'cellDeselected';\n/** @hidden */\nvar columnSelecting = 'columnSelecting';\n/** @hidden */\nvar columnSelected = 'columnSelected';\n/** @hidden */\nvar columnDeselecting = 'columnDeselecting';\n/** @hidden */\nvar columnDeselected = 'columnDeselected';\n/** @hidden */\nvar columnDragStart = 'columnDragStart';\n/** @hidden */\nvar columnDrag = 'columnDrag';\n/** @hidden */\nvar columnDrop = 'columnDrop';\n/** @hidden */\nvar rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nvar rowDragStart = 'rowDragStart';\n/** @hidden */\nvar rowDrag = 'rowDrag';\n/** @hidden */\nvar rowDrop = 'rowDrop';\n/** @hidden */\nvar beforePrint = 'beforePrint';\n/** @hidden */\nvar printComplete = 'printComplete';\n/** @hidden */\nvar detailDataBound = 'detailDataBound';\n/** @hidden */\nvar toolbarClick = 'toolbarClick';\n/** @hidden */\nvar batchAdd = 'batchAdd';\n/** @hidden */\nvar batchCancel = 'batchCancel';\n/** @hidden */\nvar batchDelete = 'batchDelete';\n/** @hidden */\nvar beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nvar beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nvar beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nvar beginEdit = 'beginEdit';\n/** @hidden */\nvar cellEdit = 'cellEdit';\n/** @hidden */\nvar cellSave = 'cellSave';\n/** @hidden */\nvar cellSaved = 'cellSaved';\n/** @hidden */\nvar endAdd = 'endAdd';\n/** @hidden */\nvar endDelete = 'endDelete';\n/** @hidden */\nvar endEdit = 'endEdit';\n/** @hidden */\nvar recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nvar recordClick = 'recordClick';\n/** @hidden */\nvar beforeDataBound = 'beforeDataBound';\n/** @hidden */\nvar beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nvar beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nvar resizeStart = 'resizeStart';\n/** @hidden */\nvar onResize = 'resizing';\n/** @hidden */\nvar resizeStop = 'resizeStop';\n/** @hidden */\nvar checkBoxChange = 'checkBoxChange';\n/** @hidden */\nvar beforeCopy = 'beforeCopy';\n/** @hidden */\nvar beforePaste = 'beforePaste';\n/** @hidden */\nvar beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nvar filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nvar filterAfterOpen = 'filterAfterOpen';\n/** @hidden */\nvar filterBeforeOpen = 'filterBeforeOpen';\n/** @hidden */\nvar filterSearchBegin = 'filterSearchBegin';\n/** @hidden */\nvar commandClick = 'commandClick';\n/** @hidden */\nvar exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nvar lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nvar lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nvar initialLoad = 'initial-load';\n/** @hidden */\nvar initialEnd = 'initial-end';\n/** @hidden */\nvar dataReady = 'data-ready';\n/** @hidden */\nvar contentReady = 'content-ready';\n/** @hidden */\nvar uiUpdate = 'ui-update';\n/** @hidden */\nvar onEmpty = 'on-empty';\n/** @hidden */\nvar inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nvar modelChanged = 'model-changed';\n/** @hidden */\nvar colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nvar headerRefreshed = 'header-refreshed';\n/** @hidden */\nvar pageBegin = 'paging-begin';\n/** @hidden */\nvar pageComplete = 'paging-complete';\n/** @hidden */\nvar sortBegin = 'sorting-begin';\n/** @hidden */\nvar sortComplete = 'sorting-complete';\n/** @hidden */\nvar filterBegin = 'filtering-begin';\n/** @hidden */\nvar filterComplete = 'filtering-complete';\n/** @hidden */\nvar searchBegin = 'searching-begin';\n/** @hidden */\nvar searchComplete = 'searching-complete';\n/** @hidden */\nvar reorderBegin = 'reorder-begin';\n/** @hidden */\nvar reorderComplete = 'reorder-complete';\n/** @hidden */\nvar rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nvar rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nvar groupBegin = 'grouping-begin';\n/** @hidden */\nvar groupComplete = 'grouping-complete';\n/** @hidden */\nvar ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nvar ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nvar groupAggregates = 'group-aggregates';\n/** @hidden */\nvar refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nvar refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nvar refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nvar rowSelectionBegin = 'rowselecting';\n/** @hidden */\nvar rowSelectionComplete = 'rowselected';\n/** @hidden */\nvar columnSelectionBegin = 'columnselecting';\n/** @hidden */\nvar columnSelectionComplete = 'columnselected';\n/** @hidden */\nvar cellSelectionBegin = 'cellselecting';\n/** @hidden */\nvar cellSelectionComplete = 'cellselected';\n/** @hidden */\nvar destroyAutoFillElements = 'destroy-autofill-elements';\n/** @hidden */\nvar beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nvar cellFocused = 'cellfocused';\n/** @hidden */\nvar keyPressed = 'key-pressed';\n/** @hidden */\nvar click = 'click';\n/** @hidden */\nvar destroy = 'destroy';\n/** @hidden */\nvar columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nvar scroll = 'scroll';\n/** @hidden */\nvar columnWidthChanged = 'column-width-changed';\n/** @hidden */\nvar columnPositionChanged = 'column-position-changed';\n/** @hidden */\nvar rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nvar rowsAdded = 'rows-added';\n/** @hidden */\nvar rowsRemoved = 'rows-removed';\n/** @hidden */\nvar columnDragStop = 'column-drag-stop';\n/** @hidden */\nvar headerDrop = 'header-drop';\n/** @hidden */\nvar dataSourceModified = 'datasource-modified';\n/** @hidden */\nvar refreshComplete = 'refresh-complete';\n/** @hidden */\nvar refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nvar dblclick = 'dblclick';\n/** @hidden */\nvar toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nvar bulkSave = 'bulk-save';\n/** @hidden */\nvar autoCol = 'auto-col';\n/** @hidden */\nvar tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nvar updateData = 'update-data';\n/** @hidden */\nvar editBegin = 'edit-begin';\n/** @hidden */\nvar editComplete = 'edit-complete';\n/** @hidden */\nvar addBegin = 'add-begin';\n/** @hidden */\nvar addComplete = 'add-complete';\n/** @hidden */\nvar saveComplete = 'save-complete';\n/** @hidden */\nvar deleteBegin = 'delete-begin';\n/** @hidden */\nvar deleteComplete = 'delete-complete';\n/** @hidden */\nvar preventBatch = 'prevent-batch';\n/** @hidden */\nvar dialogDestroy = 'dialog-destroy';\n/** @hidden */\nvar crudAction = 'crud-Action';\n/** @hidden */\nvar addDeleteAction = 'add-delete-Action';\n/** @hidden */\nvar destroyForm = 'destroy-form';\n/** @hidden */\nvar doubleTap = 'double-tap';\n/** @hidden */\nvar beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nvar excelExportComplete = 'excelExportComplete';\n/** @hidden */\nvar excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nvar excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nvar exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nvar exportDetailTemplate = 'exportDetailTemplate';\n/** @hidden */\nvar beforePdfExport = 'beforePdfExport';\n/** @hidden */\nvar pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nvar pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nvar pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nvar accessPredicate = 'access-predicate';\n/** @hidden */\nvar contextMenuClick = 'contextMenuClick';\n/** @hidden */\nvar freezeRender = 'freezerender';\n/** @hidden */\nvar freezeRefresh = 'freezerefresh';\n/** @hidden */\nvar contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nvar columnMenuClick = 'columnMenuClick';\n/** @hidden */\nvar columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nvar filterOpen = 'filterOpen';\n/** @hidden */\nvar filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nvar filterMenuClose = 'filter-menu-close';\n/** @hidden */\nvar initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nvar getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nvar generateQuery = 'generateQuery';\n/** @hidden */\nvar showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nvar foreignKeyData = 'foreignKeyData';\n/** @hidden */\nvar columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nvar dataStateChange = 'dataStateChange';\n/** @hidden */\nvar dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nvar rtlUpdated = 'rtl-updated';\n/** @hidden */\nvar beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nvar frozenHeight = 'frozenHeight';\n/** @hidden */\nvar textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nvar recordAdded = 'recordAdded';\n/** @hidden */\nvar cancelBegin = 'cancel-Begin';\n/** @hidden */\nvar editNextValCell = 'editNextValCell';\n/** @hidden */\nvar hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nvar expandChildGrid = 'expandchildgrid';\n/** @hidden */\nvar printGridInit = 'printGrid-Init';\n/** @hidden */\nvar exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nvar exportDataBound = 'export-DataBound';\n/** @hidden */\nvar rowPositionChanged = 'row-position-changed';\n/** @hidden */\nvar columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nvar batchForm = 'batchedit-form';\n/** @hidden */\nvar beforeStartEdit = 'edit-form';\n/** @hidden */\nvar beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nvar batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nvar partialRefresh = 'partial-refresh';\n/** @hidden */\nvar beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nvar selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nvar columnsPrepared = 'columns-prepared';\n/** @hidden */\nvar cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nvar cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nvar fltrPrevent = 'filter-Prevent';\n/** @hidden */\nvar beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nvar valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nvar filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nvar componentRendered = 'component-rendered';\n/** @hidden */\nvar restoreFocus = 'restore-Focus';\n/** @hidden */\nvar detailStateChange = 'detail-state-change';\n/** @hidden */\nvar detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nvar virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nvar virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nvar virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nvar virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nvar virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nvar virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nvar refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nvar editReset = 'edit-reset';\n/** @hidden */\nvar virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nvar getVirtualData = 'get-virtual-data';\n/** @hidden */\nvar refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nvar resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nvar infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nvar infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nvar infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nvar appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nvar removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nvar setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nvar infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nvar initialCollapse = 'initial-collapse';\n/** @hidden */\nvar getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nvar closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nvar columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nvar getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nvar resetColumns = 'reset-columns';\n/** @hidden */\nvar pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nvar excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nvar setGroupCache = 'group-cache';\n/** @hidden */\nvar lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nvar groupCollapse = 'group-collapse';\n/** @hidden */\nvar beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nvar refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nvar refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nvar setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nvar refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nvar setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nvar setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nvar setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nvar beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nvar immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nvar refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nvar checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nvar refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nvar setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nvar preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nvar nextCellIndex = 'next-cell-index';\n/** @hidden */\nvar refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nvar infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nvar filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nvar refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nvar refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nvar renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nvar filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nvar customFilterClose = 'custom-filter-close';\n/** @hidden */\nvar setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nvar refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nvar rowModeChange = 'row-mode-change';\n/** @hidden */\nvar enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nvar refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nvar setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nvar selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nvar pagerRefresh = 'pager-refresh';\n/** @hidden */\nvar closeInline = 'closeinline';\n/** @hidden */\nvar closeBatch = 'closebatch';\n/** @hidden */\nvar closeEdit = 'close-edit';\n/** @hidden */\nvar resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nvar afterContentRender = 'after-content-renderer';\n/** @hidden */\nvar refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nvar scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nvar beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nvar createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nvar validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nvar destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nvar stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nvar captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nvar refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nvar refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nvar afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nvar beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nvar commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nvar batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nvar refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n/** @hidden */\nvar refreshFrozenPosition = 'refresh-Frozen-Position';\n/** @hidden */\nvar refreshResizePosition = 'refresh-Resize-Position';\n/** @hidden */\nvar refreshSplitFrozenColumn = 'refresh-Split-Frozen-Column';\n/** @hidden */\nvar renderResponsiveChangeAction = 'render-Responsive-Change-Action';\n/** @hidden */\nvar renderResponsiveColumnChooserDiv = 'render-Responsive-Column-Chooser-Div';\n/** @hidden */\nvar showAddNewRowFocus = 'show-Add-New-Row-Focus';\n/** @hidden */\nvar infiniteScrollComplete = 'infinitescroll-complete';\n/** @hidden */\nvar lastRowCellBorderUpdated = 'last-rowcell-border-updated';\n/** @hidden */\nvar destroyEditForm = 'destroy-edit-form';\n\n/**\n * Defines types of Cell\n *\n * @hidden\n */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @__PURE__ @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(rowsAdded, this.addRows, this);\n this.parent.on(rowPositionChanged, this.reorderRows, this);\n this.parent.on(rowsRemoved, this.removeRows, this);\n this.parent.on(dataSourceModified, this.initDataManager, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(updateData, this.crudActions, this);\n this.parent.on(addDeleteAction, this.getData, this);\n this.parent.on(autoCol, this.refreshFilteredCols, this);\n this.parent.on(columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n if (this.parent.getDataModule().isRemote()) {\n this.parent.getCurrentViewRecords().splice(e.toIndex, 0, this.parent.getCurrentViewRecords().splice(e.fromIndex, 1)[0]);\n }\n else {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n }\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 = !isNullOrUndefined(gObj.getQuery()) ? gObj.getQuery().clone() : new Query();\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(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(infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n (gObj.pagerModule.pagerObj.isAllPage && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @param {Column} fcolumn - specifies the forein key column model\n * @param {boolean} isForeignKey - Confirms whether the column is a foreign key or not\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = (!isNullOrUndefined(sSettings.fields) && sSettings.fields.length) ? sSettings.fields\n : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (!isNullOrUndefined(this.parent.searchSettings.key) && 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$1(fields[parseInt(i.toString(), 10)], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate$1.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 foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime' || gridColumn.type === 'dateonly')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).type : gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)]\n .field, defaultFltrCols[parseInt(i.toString(), 10)].isForeignKey).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field, col.isForeignKey).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n 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$1.and(predicateList));\n }\n else {\n this.parent.notify(showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(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(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(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(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(rowsAdded, this.addRows);\n this.parent.off(rowsRemoved, this.removeRows);\n this.parent.off(dataSourceModified, this.initDataManager);\n this.parent.off(destroy, this.destroy);\n this.parent.off(updateData, this.crudActions);\n this.parent.off(addDeleteAction, this.getData);\n this.parent.off(autoCol, this.refreshFilteredCols);\n this.parent.off(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$1(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(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(recordAdded, editArgs_1);\n }\n _this.parent.trigger(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(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}());\n\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @__PURE__ @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}());\n\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @__PURE__ @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}());\n\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @__PURE__ @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}());\n\n/**\n * Specifies class names\n */\n/** @hidden */\nvar rowCell = 'e-rowcell';\n/** @hidden */\nvar gridHeader = 'e-gridheader';\n/** @hidden */\nvar gridContent = 'e-gridcontent';\n/** @hidden */\nvar gridFooter = 'e-gridfooter';\n/** @hidden */\nvar headerContent = 'e-headercontent';\n/** @hidden */\nvar movableContent = 'e-movablecontent';\n/** @hidden */\nvar movableHeader = 'e-movableheader';\n/** @hidden */\nvar frozenContent = 'e-frozencontent';\n/** @hidden */\nvar frozenHeader = 'e-frozenheader';\n/** @hidden */\nvar content = 'e-content';\n/** @hidden */\nvar table = 'e-table';\n/** @hidden */\nvar row = 'e-row';\n/** @hidden */\nvar gridChkBox = 'e-gridchkbox';\n/** @hidden */\nvar editedRow = 'e-editedrow';\n/** @hidden */\nvar addedRow = 'e-addedrow';\n/** @hidden */\nvar groupCaptionRow = 'e-groupcaptionrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nvar changedRecords = 'changedRecords';\n/** @hidden */\nvar addedRecords = 'addedRecords';\n/** @hidden */\nvar deletedRecords = 'deletedRecords';\n/** @hidden */\nvar leftRight = 'Left-Right';\n/** @hidden */\nvar frozenRight = 'frozen-right';\n/** @hidden */\nvar frozenLeft = 'frozen-left';\n/** @hidden */\nvar dataColIndex = 'data-colindex';\n/** @hidden */\nvar ariaColIndex = 'aria-colindex';\n/** @hidden */\nvar dataRowIndex = 'data-rowindex';\n/** @hidden */\nvar ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nvar tbody = 'tbody';\n/** @hidden */\nvar colGroup = 'colgroup';\n/** @hidden */\nvar open = 'open';\n/** @hidden */\nvar change = 'change';\n/** @hidden */\nvar focus = 'focus';\n/** @hidden */\nvar create = 'created';\n/** @hidden */\nvar beforeOpen = 'beforeOpen';\n/** @hidden */\nvar downArrow = 'downArrow';\n/** @hidden */\nvar upArrow = 'upArrow';\n/** @hidden */\nvar pageUp = 'PageUp';\n/** @hidden */\nvar pageDown = 'PageDown';\n/** @hidden */\nvar enter = 'enter';\n/** @hidden */\nvar shiftEnter = 'shiftEnter';\n/** @hidden */\nvar tab = 'tab';\n/** @hidden */\nvar shiftTab = 'shiftTab';\n/** @hidden */\nvar initialFrozenColumnIndex = 'initialFrozenColumnIndex';\n\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @__PURE__ @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$1, 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 var isFirstVisibleCell = true;\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 attributes(tr, extend$1({}, attributes$1, {}));\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 isGroupFirstCell = !this_1.parent.enableRtl && this_1.parent.groupSettings && isFirstVisibleCell &&\n this_1.parent.groupSettings.columns.length && (this_1.parent.gridLines === 'Vertical' || this_1.parent.gridLines === 'Both');\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 if (cell.visible && isGroupFirstCell) {\n td.classList.add('e-grid-group-first-cell');\n isFirstVisibleCell = false;\n }\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n var isReactPrintGrid = this_1.parent.printGridParent && this_1.parent.printGridParent.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef) || (isReactPrintGrid\n && this_1.parent.printGridParent.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$1(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$1(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 ((cell.cellType === CellType.Header || cell.cellType === CellType.StackedHeader) &&\n isGroupFirstCell && (cell.visible || cell.cellType === CellType.StackedHeader)) {\n var visibleColumns = this_1.parent.getVisibleColumns();\n var field = 'field';\n var type = 'type';\n if ((cell.column[\"\" + type] && cell.column[\"\" + type] === 'checkbox') ||\n (cell.cellType === CellType.Header && cell.column[\"\" + field] && visibleColumns.length &&\n visibleColumns[0].field === cell.column[\"\" + field]) || cell.cellType === CellType.StackedHeader) {\n td.classList.add('e-grid-group-first-cell');\n isFirstVisibleCell = false;\n }\n }\n if (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 currentRowCell = prevRowCells[parseInt(i.toString(), 10)];\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 (!isRtl && (!currentRowCell.isRowSpanned || prevRowCell.rowSpanRange > currentRowCell.rowSpanRange)) {\n td.classList.add('e-rowcell-firstchild');\n }\n if (isFrozen) {\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 }\n if (nextRowCell && (nextRowCell.isRowSpanned || nextRowCell.rowSpanRange > 1) && nextRowCell.visible) {\n if (isRtl && (!currentRowCell.isRowSpanned || nextRowCell.rowSpanRange > currentRowCell.rowSpanRange)) {\n td.classList.add('e-rowcell-lastchild');\n }\n if (isFrozen && nextRowCell.column.freeze === 'Fixed' && direction === 'Fixed' && cellArgs.colSpan < 2) {\n td.classList.add(isRtl ? 'e-removefreezeleftborder' : 'e-removefreezerightborder');\n }\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);\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 || tr.classList.contains('e-columnheader')) &&\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$1(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n if (!eventArg_1.isSelectable) {\n row.isSelectable = eventArg_1.isSelectable;\n thisRef_2.disableRowSelection(thisRef_2, row, args, eventArg_1);\n }\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.disableRowSelection(this, row, args, eventArg_1);\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\n }\n var vFTable = this.parent.enableColumnVirtualization;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.resetrowSpanvalue = function (rowCount, cellArgs, rowIndex) {\n if (rowCount > rowIndex && rowCount < rowIndex + cellArgs.rowSpan) {\n var rowSpan = (rowIndex + cellArgs.rowSpan) - rowCount;\n cellArgs.rowSpan = cellArgs.rowSpan - rowSpan;\n }\n };\n RowRenderer.prototype.disableRowSelection = function (thisRef, row, args, eventArg) {\n var selIndex = this.parent.getSelectedRowIndexes();\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var selRowIndex = selIndex.indexOf(row.index);\n if (selRowIndex > -1) {\n selIndex.splice(selRowIndex, 1);\n }\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg.row.querySelector('.e-rowdragdrop');\n var cellIdx = thisRef.parent.groupSettings.columns.length + (isDrag || thisRef.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n };\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row$1) {\n var attr = {};\n var prop = { 'rowindex': dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row$1.isDataRow) {\n classes.push(row);\n }\n if (row$1.isAltRow) {\n classes.push('e-altrow');\n }\n if (row$1.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row$1.isAggregateRow && row$1.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row$1.index)) {\n attr[ariaRowIndex] = row$1.index + 1;\n attr[prop.rowindex] = row$1.index;\n }\n if (row$1.rowSpan) {\n attr.rowSpan = row$1.rowSpan;\n }\n if (row$1.uid) {\n attr[prop.dataUID] = row$1.uid;\n }\n if (row$1.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row$1.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\n\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @__PURE__ @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(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}());\n\nvar __extends$1 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @__PURE__ @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 || args.loadSummaryOnEmpty)) {\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 disablePageWiseAggregatesGroup = this.parent.groupSettings.disablePageWiseAggregates\n && this.parent.groupSettings.columns.length && group.items ? true : false;\n var val = (types[parseInt(i.toString(), 10)] !== 'Custom' || disablePageWiseAggregatesGroup) && group.aggregates\n && 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}());\nvar GroupSummaryModelGenerator = /** @__PURE__ @class */ (function (_super) {\n __extends$1(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));\nvar CaptionSummaryModelGenerator = /** @__PURE__ @class */ (function (_super) {\n __extends$1(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));\n\nvar __extends$2 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @__PURE__ @class */ (function (_super) {\n __extends$2(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 && groupKey.toString() === key.toString() && groupKey instanceof Date) || 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$1(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$1({}, 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));\n\n// eslint-disable-next-line valid-jsdoc, jsdoc/require-param, jsdoc/require-returns\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @__PURE__ @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(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('.' + 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(contentReady, { rows: rows, args: arg });\n if (_this.parent.editSettings.showAddNewRow && _this.parent.addNewRowFocus) {\n _this.parent.notify(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(dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(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(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(columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(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('.' + gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: 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('.' + 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$1 = innerDiv.querySelector('.' + table) ? innerDiv.querySelector('.' + table) :\n this.parent.createElement('table', {\n className: table, attrs: {\n cellspacing: '0.25px', role: 'presentation',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(colGroup).cloneNode(true));\n table$1.appendChild(this.getColGroup());\n table$1.appendChild(this.parent.createElement(tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table$1);\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 isReactPrintGrid = this.parent.printGridParent && this.parent.printGridParent.isReact;\n var frag = isReact || isReactPrintGrid ? gObj.createElement(tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend$1([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if ((gObj.isReact || isReactPrintGrid) && 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(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(setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var isFrozenLeft = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplates = this.parent.registeredTemplate;\n if (!(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && registeredTemplates\n && registeredTemplates.template && !args.isFrozen && !isFrozenLeft) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templatetoclear = [];\n for (var i = 0; i < registeredTemplates.template.length; i++) {\n for (var j = 0; j < registeredTemplates.template[parseInt(i.toString(), 10)].rootNodes.length; j++) {\n if (isNullOrUndefined(registeredTemplates.template[parseInt(i.toString(), 10)]\n .rootNodes[parseInt(j.toString(), 10)].parentNode)) {\n templatetoclear.push(registeredTemplates.template[parseInt(i.toString(), 10)]);\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && !(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n if (args.requestType === 'infiniteScroll' && this.parent.infiniteScrollSettings.enableCache) {\n templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'commandsTemplate'\n ];\n }\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n this.tbody = this.getTable().querySelector(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(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 || isReactPrintGrid) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend$1({ 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(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$1({ 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(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);\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(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(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(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(tbody));\n }\n _this.tbody = _this.parent.createElement(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(removeInfiniteRows, { args: args });\n _this.parent.notify(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('.' + 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(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$1({}, 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(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(dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(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(partialRefresh, { rows: contentrows, args: args });\n if (this.parent.editSettings.showAddNewRow && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.parent.notify(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(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 = 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('.' + gridHeader)\n .querySelector(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$1) {\n this.getTable().appendChild(tbody$1);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(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(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$1 = gObj.createElement(tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(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$1.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$1.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$1.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody$1.children);\n remove(this.getTable().querySelector(tbody));\n this.getTable().appendChild(tbody$1);\n this.parent.trigger(dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(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(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(dataRowIndex, index.toString());\n tr.setAttribute(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}());\n\n// eslint-disable-next-line valid-jsdoc, jsdoc/require-param\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @__PURE__ @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$1({ 'index': colIndex }, col), gObj, 'headerTemplate', null, null, null, null, gObj.root);\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(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$1 = closest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest$1 || closest$1.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(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(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$1 = closest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest$1 && closest$1.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(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(columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(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('.' + gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + headerContent) :\n this.parent.createElement('div', { className: 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('.' + table));\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(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('.' + 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 var gObj = this.parent;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table$1 = this.parent.createElement('table', { className: table, attrs: { cellspacing: '0.25px', role: 'presentation' } });\n var findHeaderRow = this.createHeaderContent(tableName);\n var thead = findHeaderRow.thead;\n var tbody$1 = this.parent.createElement(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$1 = this.parent.createElement(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$1.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup$1);\n tbody$1.appendChild(rowBody);\n table$1.appendChild(this.setColGroup(colGroup$1));\n table$1.appendChild(thead);\n table$1.appendChild(tbody$1);\n table$1.appendChild(this.caption);\n return table$1;\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 var headerTemplateColumn = columns.filter(function (a) { return a.headerTemplate; });\n if (headerTemplateColumn.length && (this.parent.isReact || this.parent.isVue)) {\n clearReactVueTemplates(this.parent, ['headerTemplate']);\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$1) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n colGroup$1.id = this.parent.element.id + 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$1.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup$1.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup$1.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$1.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup$1.appendChild(col);\n }\n return colGroup$1;\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(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 < (!isNullOrUndefined(cols) ? cols.length : 0); 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 = (!isNullOrUndefined(cols) ? cols.length : 0); 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.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$1 = this.parent.createElement(colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup$1);\n table.insertBefore(this.setColGroup(colGroup$1), table.firstChild);\n this.appendContent(table);\n this.parent.notify(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(headerRefreshed, { rows: this.rows });\n if (this.parent.enableColumnVirtualization && parentsUntil(table, movableHeader)) {\n this.parent.notify(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 = (!isNullOrUndefined(column) ? column.some(function (column) { return !isNullOrUndefined(column.columns); })\n : false);\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('.' + 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(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(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('.' + 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}());\n\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @__PURE__ @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: 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 isReactPrintGrid = this.parent.printGridParent && this.parent.printGridParent.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 || isReactPrintGrid) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend$1(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend$1({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild && !isReactPrintGrid) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n var arialabelText = node.getAttribute('aria-label');\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n arialabelText ? td.setAttribute('aria-label', arialabelText) : null;\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n if (column.type === 'dateonly' && !isNullOrUndefined(value) && typeof value === 'string') {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, this.parent.sanitize(innerHtml), column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(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': 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[ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[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}());\n\n/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @__PURE__ @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}());\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\nvar __extends$3 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$3(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 (this.parent.allowSorting && column.allowSorting && !isNullOrUndefined(column.field)) {\n node.classList.add('e-sort-icon');\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' && !(column.headerTemplate.prototype && column.headerTemplate.prototype.CSPTemplate);\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var isReactPrintGrid = this.parent.printGridParent && this.parent.printGridParent.isReact;\n if (isReactCompiler || isReactChild_1 || isReactPrintGrid) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend$1(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend$1({ '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));\n\nvar __extends$4 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$4(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', null, null, null, null, this.parent.root));\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));\n\nvar __extends$5 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$5(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));\n\nvar __extends$6 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$6(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 var isReactPrintGrid = this_1.parent.printGridParent\n && this_1.parent.printGridParent.isReact;\n if ((this_1.parent.isReact || isReactPrintGrid) && 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 !(gObj.groupSettings.captionTemplate.prototype &&\n gObj.groupSettings.captionTemplate.prototype.CSPTemplate);\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var isReactPrintGrid = this.parent.printGridParent && this.parent.printGridParent.isReact;\n if (isReactCompiler || isReactChild || isReactPrintGrid) {\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 || (gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isVue)) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', null, null, null, null, gObj.root);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild && !isReactPrintGrid) {\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));\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$6(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));\n\nvar __extends$7 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$7(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 ? this.localizer.getConstant('Expanded') : this.localizer.getConstant('Collapsed') }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\n\nvar __extends$8 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$8(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));\n\nvar __extends$9 = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$9(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));\n\nvar __extends$a = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$a(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));\n\nvar __extends$b = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$b(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));\n\nvar __extends$c = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$c(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));\n\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @__PURE__ @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(actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(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 _this.parent.notify(destroyEditForm, args);\n if (_this.parent.groupModule && args.preventFocusOnGroup) {\n _this.parent.groupModule.preventFocusOnGroup = args.preventFocusOnGroup;\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(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(resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + 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 var foreignKeyColumns = this.parent.getForeignKeyColumns();\n var foreignKeyLength = foreignKeyColumns.length;\n if (this.parent.columnQueryMode === 'ExcludeHidden' && foreignKeyLength) {\n foreignKeyLength = foreignKeyColumns.filter(function (col) { return col.visible !== false; }).length;\n }\n if (foreignKeyLength && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(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(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 (!isNullOrUndefined(gObj.searchSettings.key) && gObj.searchSettings.key.length))\n && 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$1 = this.contentRenderer.getTable().querySelector(tbody);\n if (!isNullOrUndefined(tbody$1)) {\n remove(tbody$1);\n }\n tbody$1 = this.parent.createElement(tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = gObj.allowRowDragAndDrop && isNullOrUndefined(gObj.rowDropSettings.targetID) ? 1 : 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var className = gObj.editSettings.showAddNewRow && gObj.editSettings.newRowPosition === 'Bottom' ?\n 'e-emptyrow e-show-added-row' : 'e-emptyrow';\n var tr = this.parent.createElement('tr', { className: className, attrs: { role: 'row' } });\n var td;\n if (gObj.emptyRecordTemplate) {\n var emptyRecordTemplateID = gObj.element.id + 'emptyRecordTemplate';\n td = this.parent.createElement('td', { attrs: { colspan: (gObj.getVisibleColumns().length +\n spanCount + gObj.groupSettings.columns.length).toString() } });\n if (gObj.isVue || (gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.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 + (!isNullOrUndefined(gObj.groupSettings.columns) ?\n gObj.groupSettings.columns.length : 0)).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$1.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody$1);\n if (isTrigger) {\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.trigger(dataBound, {});\n this.parent.notify(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(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$1({}, 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(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(infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(editReset, {});\n _this.parent.notify(tooltipDestroy, {});\n if (args && !((args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add') &&\n gObj.enableInfiniteScrolling)) {\n _this.parent.notify(commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = !isNullOrUndefined(_this.parent.currentViewData) && _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(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(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(dataReady, extend$1({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates, loadSummaryOnEmpty: false }, 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$1 = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content$1].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(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('.' + content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(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(actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(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('.' + content), { busy: false, invalid: true });\n this.setRowCount(1);\n }\n this.parent.trigger(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(refreshSplitFrozenColumn, {});\n }\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(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(initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(modelChanged, this.refresh, this);\n this.parent.on(refreshComplete, this.refreshComplete, this);\n this.parent.on(bulkSave, this.sendBulkRequest, this);\n this.parent.on(showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(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$1('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate$1.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$1.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$1(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$1('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}());\n\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @__PURE__ @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}());\n\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @__PURE__ @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: filterDialogClose, handler: this.closeCustomDialog },\n { event: refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: customFilterClose, handler: this.customExFilterClose },\n { event: refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(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 = this.parent.localeObj.getConstant('NoneText');\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(renderResponsiveChangeAction, { action: 5 });\n gObj.showResponsiveCustomColumnChooser();\n }\n else if (parentsUntil(target, 'e-responsivefilterdiv')) {\n gObj.notify(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(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(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 if (this.parent.enableAdaptiveUI && this.parent.filterSettings && (this.parent.filterSettings.type === 'CheckBox'\n || this.parent.filterSettings.type === 'Excel') && this.parent.filterSettings.enableInfiniteScrolling\n && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n var filterBase = this.parent.filterSettings.type === 'CheckBox' ? this.parent.filterModule.filterModule.checkBoxBase : this.parent.filterModule.filterModule.excelFilterBase;\n filterBase.showMask();\n }\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(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(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(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(renderResponsiveChangeAction, { action: 4 });\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n this.parent.off(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('FilterTitle');\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(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(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(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(actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\n\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @__PURE__ @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}());\n\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @__PURE__ @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}());\n\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @__PURE__ @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 (totalColumnsWidth !== 'auto') {\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n var maxWidthColumns = columns.filter(function (a) {\n return !isNullOrUndefined(a.maxWidth);\n });\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n if (this.parent.allowResizing && this.parent.element.getBoundingClientRect().width > totalColumnsWidth &&\n maxWidthColumns.length === columns.length && header && content) {\n addClass([header, content], ['e-tableborder']);\n }\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var _this = this;\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n if (_this.parent.allowResizing) {\n return (isNullOrUndefined(a.width) || a.width === 'auto') && isNullOrUndefined(a.maxWidth);\n }\n else {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n }\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 = parseInt(this.parent.width, 10) - 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 && tgridWidth !== 'auto') {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if (this.parent.allowResizing && (module === 'resize' || this.parent.getFrozenColumns())) {\n var contentTable = this.parent.getContentTable();\n this.setWidthToTable(this.parent.getFrozenColumns() && contentTable.style.width.indexOf('px') === -1);\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(colGroup)\n .children[parseInt(index.toString(), 10)];\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol = content.querySelector(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 = [gridHeader, 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 (this.parent.allowResizing && isNullOrUndefined(column.width)) {\n if (isNullOrUndefined(column.minWidth) && isNullOrUndefined(column.maxWidth)\n && !this.isWidthUndefined()) {\n column.width = 200;\n }\n else if (column.maxWidth) {\n column.width = column.maxWidth;\n }\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, resetIndentWidth) {\n var tWidth = 0;\n var isAutoColumn = false;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.visible !== false) {\n var cWidth = this.getWidth(column);\n if (column.width === 'auto' || !column.width) {\n if (this.parent.allowResizing && !resetIndentWidth) {\n if (!column.maxWidth) {\n isAutoColumn = true;\n }\n }\n else {\n cWidth = 0;\n }\n }\n if (cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n }\n tWidth = isAutoColumn ? 'auto' : tWidth;\n return tWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function (isMaxWidth) {\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() || tWidth === 'auto' || isMaxWidth) ? '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}());\n\nvar __extends$d = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @__PURE__ @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n /** @hidden */\n this.virtualSelectionInfo = {};\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n /** @hidden */\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()[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 if (this.currentInfo.element.querySelector('.e-checkselectall')) {\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n }\n else {\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n if (this.parent.allowPaging && this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer')) {\n this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer').removeAttribute('aria-hidden');\n }\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n firstHeaderCell.tabIndex = 0;\n this.setActive(false);\n if (!isNullOrUndefined(this.active) && (isNullOrUndefined(this.active.target) || !this.active.target.classList.contains('e-columnmenu'))) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force, isFocusFirstCell) {\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, '.' + gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + gridHeader)) ||\n e.target.classList.contains(content) || e.target.classList.contains(headerContent) ||\n (!isNullOrUndefined(closest(e.target, '.e-unboundcell')) && !force)) {\n return;\n }\n this.setActive(isContent);\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(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' && !isFocusFirstCell) {\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n if (isFocusFirstCell && e && e.target) {\n addClass([e.target], ['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.editSettings.mode === 'Batch') {\n this.content.target = null;\n }\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.parent.showColumnChooser) {\n this.handleFilterNavigation(e, '.e-ccdlg .e-ccsearch.e-cc.e-input', '.e-ccdlg .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 && !isNullOrUndefined(this.parent.groupSettings.columns)\n && 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(beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString() && this.content.matrix.matrix.length) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.parent.allowPaging && this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer')) {\n this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer').setAttribute('aria-hidden', 'true');\n }\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n if (this.parent.enableVirtualization && !this.parent.enableColumnVirtualization\n && this.parent.contentModule.prevInfo.blockIndexes[0] !== 1) {\n e.preventDefault();\n this.removeFocus();\n var virtual = this.parent.contentModule;\n virtual.firstCellFocus = true;\n virtual.content.scrollTop = 0;\n return;\n }\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (this.parent.allowPaging && this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer')) {\n this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer').removeAttribute('aria-hidden');\n }\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && !isNullOrUndefined(this.parent.groupSettings.columns)\n && 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 this.header.action = e.action;\n this.header.currentTarget = null;\n this.header.focusType = 'key';\n if (e.target && parentsUntil(e.target, 'e-fltrtemp') && (e.action === 'tab' || e.action === 'shiftTab')) {\n var target = e.target;\n var focusElement = [].slice.call(closest(target, 'th').querySelectorAll('.e-fltrtemp-focus'));\n if (focusElement.length) {\n var elementIndex = focusElement.indexOf(target);\n var resetActive = ((e.action === 'tab' && elementIndex < focusElement.length - 1)\n || (e.action === 'shiftTab' && elementIndex > 0)) ? true : false;\n if (resetActive) {\n this.setActive(false);\n this.active.matrix.current = bValue;\n this.active.currentTarget = target;\n }\n }\n }\n if (focusFirstHeaderCell && parentsUntil(this.active.getTable(), 'e-gridheader')\n && e.target && e.target.id === this.parent.element.id + '_searchbar') {\n this.parent.searchModule.headerFocus = true;\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.parent.isEdit && target && target.closest('.e-unboundcell') && this.currentInfo.skipAction && ((e.action === 'shiftTab' &&\n this.commandColumnFocusElement(target.closest('.e-unboundcell'), false) === target) ||\n (e.action === 'tab' &&\n this.commandColumnFocusElement(target.closest('.e-unboundcell'), true) === target))) {\n return this.currentInfo.skipAction = 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.querySelectorAll('input:not([type=\"hidden\"],.e-numeric-hidden,.e-disabled), select:not([aria-hidden=\"true\"]), button:not(.e-hide), textarea:not(.e-hide,.e-disabled,[disabled])');\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, '.' + gridContent) === null && closest(target, '.' + 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(gridChkBox) && closest(target, '.' + 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(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(resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n if ((this.parent.enableVirtualization && (!e || (e && e.action !== 'ctrlHome' && e.action !== 'ctrlEnd'))) ||\n !this.parent.enableVirtualization) {\n this.parent.contentModule.selectedRowIndex = -1;\n }\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 var filterMenuElement = isNullOrUndefined(_this.parent.element.querySelector('.e-flmenu')) ?\n document.querySelector('.e-grid-popup .e-flmenu') : _this.parent.element.querySelector('.e-flmenu');\n if ((_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) && isNullOrUndefined(filterMenuElement)) {\n _this.focusVirtualElement(e);\n }\n else if (isNullOrUndefined(filterMenuElement) ||\n parentsUntil(document.activeElement, 'e-flmenu-valuediv') !== filterMenuElement.querySelector('.e-flmenu-valuediv')) {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(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\n && !isNullOrUndefined(this.parent.groupSettings.columns) && this.parent.groupSettings.columns.length) &&\n this.parent.getRowByIndex(this.prevIndexes.rowIndex)) {\n var cellElem = this.parent.getCellFromIndex(this.prevIndexes.rowIndex, this.prevIndexes\n .cellIndex);\n this.currentInfo.element = cellElem ? cellElem : this.currentInfo.element;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false);\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true);\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && (!isNullOrUndefined(e) || this.isVirtualScroll);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(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 (!isNullOrUndefined(_this.parent.groupSettings.columns) && _this.parent.groupSettings.columns.length && frozenRow && content) {\n frozenRow = 0;\n for (var i = 0; i < e.rows.length; i++) {\n frozenRow++;\n if (e.rows[parseInt(i.toString(), 10)].index + 1 === _this.parent.frozenRows) {\n break;\n }\n }\n _this.groupedFrozenRow = frozenRow;\n }\n var rows = content ? e.rows.slice(frozenRow + batchLen) : e.rows;\n var updateRow = content ? e.rows.slice(0, frozenRow + batchLen) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n if (frozenRow && ((_this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || (e.args && (e.args.requestType === 'batchsave')))) ||\n (e.args && (e.args.requestType === 'delete' || e.args.requestType === 'save')))) {\n var matrixcs = _this.header.matrix.matrix;\n var hdrLen = _this.parent.headerModule.rows.length;\n matrixcs.splice(hdrLen, matrixcs.length - hdrLen);\n }\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n var isScroll = _this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling;\n if ((_this.parent.editSettings.showAddNewRow && content && _this.header && _this.header.matrix) &&\n (!isScroll || (isScroll && _this.parent.isAddNewRow))) {\n var tempMatrix = _this.header.matrix.matrix;\n var lastRowHeaderIdx = _this.parent.allowFiltering && _this.parent.filterSettings.type === 'FilterBar' ? 2 : 1;\n cFocus.matrix.rows = _this.parent.frozenRows && _this.parent.editSettings.newRowPosition === 'Top' ?\n cFocus.matrix.rows : ++cFocus.matrix.rows;\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n (_this.parent.frozenRows || isScroll ?\n matrix : cFocus.matrix.matrix).unshift(_this.refreshAddNewRowMatrix(tempMatrix[tempMatrix.length -\n lastRowHeaderIdx]));\n }\n else {\n cFocus.matrix.matrix.push(_this.refreshAddNewRowMatrix(tempMatrix[tempMatrix.length - lastRowHeaderIdx]));\n }\n _this.parent.isAddNewRow = false;\n }\n if (!(_this.parent.isFrozenGrid() && (e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))) ||\n (frozenRow && _this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || e.args.requestType === 'batchsave'))) {\n 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 frzLeftCount = _this.parent.getVisibleFrozenLeftCount();\n var frzRightCount = _this.parent.getVisibleFrozenRightCount();\n if (_this.parent.enableColumnVirtualization && !(frzLeftCount && frzRightCount) && _this.parent.isFrozenGrid() &&\n e.args.virtualInfo.direction === 'right') {\n _this.content.matrix.current[1] = _this.content.matrix.current[1] - (frzLeftCount + (frzRightCount ? frzRightCount + 1 : 0));\n }\n var isGroup = _this.parent.allowGrouping && _this.parent.groupSettings.columns.length ? true : false;\n if (isGroup) {\n _this.content.matrix.current[1] = _this.prevIndexes.cellIndex;\n if (_this.virtualSelectionInfo.isPending) {\n _this.content.matrix.current[0] = _this.virtualSelectionInfo.direction === 'downArrow' ? _this.content.matrix.current[0] + 1\n : _this.content.matrix.current[0] - 1;\n }\n }\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n var freezeLeftColWidth = 0;\n var freezeRightColWidth = 0;\n if (_this.parent.enableColumnVirtualization && !(frzLeftCount && frzRightCount) && _this.parent.isFrozenGrid() &&\n e.args.virtualInfo.direction === 'right') {\n if (frzLeftCount) {\n freezeLeftColWidth = _this.parent.leftrightColumnWidth('left');\n }\n else {\n freezeRightColWidth = _this.parent.leftrightColumnWidth('right');\n }\n }\n if ((cellPosition.top >= 0 && cellPosition.left >= 0 &&\n (cellPosition.right - freezeLeftColWidth - freezeRightColWidth) <= (Math.min(gridPosition.right, window.innerWidth || document.documentElement.clientWidth) + freezeRightColWidth)\n && cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) || isGroup) {\n _this.isVirtualScroll = true;\n _this.focus(isGroup && _this.virtualSelectionInfo.isPending ?\n _this.virtualSelectionInfo.event : undefined);\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 _this.virtualSelectionInfo = {};\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: keyPressed, handler: this.onKeyPress },\n { event: click, handler: this.onClick },\n { event: contentReady, handler: this.refMatrix },\n { event: partialRefresh, handler: this.refMatrix },\n { event: refreshExpandandCollapse, handler: this.refMatrix },\n { event: showAddNewRowFocus, handler: this.showAddNewRowFocus },\n { event: headerRefreshed, handler: this.refreshMatrix() },\n { event: closeEdit, handler: this.restoreFocus },\n { 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: 'custom-filter-close', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: batchAdd, handler: this.refMatrix },\n { event: batchCancel, handler: this.refMatrix },\n { event: batchDelete, handler: this.refMatrix },\n { event: detailDataBound, handler: this.refMatrix },\n { event: onEmpty, handler: this.refMatrix },\n { event: cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.showAddNewRowFocus = function () {\n if (this.parent.editSettings.showAddNewRow) {\n var startIdx = this.parent.editSettings.newRowPosition === 'Top' ? 0 : this.content.matrix.matrix.length - 1;\n var startCellIdx = this.parent.getIndentCount();\n if (this.parent.editSettings.newRowPosition === 'Top' && (this.parent.frozenRows ||\n this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var headrIdx = this.header.matrix.matrix.length - (this.groupedFrozenRow ?\n this.groupedFrozenRow : this.parent.frozenRows);\n startCellIdx = this.findNextCellFocus(this.header.matrix.matrix[headrIdx - 1], startCellIdx);\n this.header.matrix.current = [headrIdx - 1, startCellIdx];\n this.active = this.header;\n }\n else {\n startCellIdx = this.findNextCellFocus(this.content.matrix.matrix[parseInt(startIdx.toString(), 10)], startCellIdx);\n this.content.matrix.current = [startIdx, startCellIdx];\n this.active = this.content;\n }\n var addedrow = this.parent.element.querySelector('.e-addedrow');\n if (addedrow && addedrow.querySelectorAll('tr') &&\n addedrow.querySelector('tr').cells[parseInt(startCellIdx.toString(), 10)].querySelector('input')) {\n addedrow.querySelector('tr').cells[parseInt(startCellIdx.toString(), 10)].querySelector('input').select();\n }\n }\n };\n FocusStrategy.prototype.findNextCellFocus = function (matrix, cellIndex) {\n for (var i = cellIndex; i < matrix.length; i++) {\n if (matrix[parseInt(i.toString(), 10)] === 1) {\n return i;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'touchstart', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function (arg) {\n if (arg && arg.requestType === 'sorting' && isNullOrUndefined(arg.target)) {\n return;\n }\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 !(this.parent.groupModule && this.parent.groupModule.preventFocusOnGroup)) {\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 this.prevIndexes = { rowIndex: current[0], cellIndex: current[1] };\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.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' && e.parent.classList.contains('e-detailcell')) ||\n ((e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab') && e.parent.classList.contains('e-unboundcell'))))) {\n return;\n }\n this.clearIndicator();\n var focusEle;\n if (e.parent && e.parent.closest('.e-unboundcell') && e.keyArgs.action === 'shiftTab') {\n focusEle = this.commandColumnFocusElement(e.parent, true);\n }\n else {\n focusEle = this.getContent().getFocusable(this.getFocusedElement());\n }\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n FocusStrategy.prototype.commandColumnFocusElement = function (cell, isLast) {\n var commandButtons = cell.querySelectorAll('button:not(.e-hide)');\n return isLast ? commandButtons[commandButtons.length - 1] : commandButtons[0];\n };\n return FocusStrategy;\n}());\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @__PURE__ @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', 'enter', 'shiftEnter'].indexOf(action) !== -1) ? moveTo ? 0 : ++index :\n 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}());\n/**\n * @hidden\n */\nvar ContentFocus = /** @__PURE__ @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(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 && !isNullOrUndefined(this.parent.groupSettings.columns) && 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(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(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, rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n var row = this.getTable().rows[parseInt(rowIndex.toString(), 10)];\n info.element = !isNullOrUndefined(row) ? this.parent.editSettings.showAddNewRow && row.classList.contains('e-addedrow') ?\n (row.querySelectorAll('td:not(.e-editcell)'))[parseInt(cellIndex.toString(), 10)]\n : row.cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = (!info.element.classList.contains('e-unboundcell') || (this.parent.editSettings.showAddNewRow &&\n info.element.classList.contains('e-unboundcell') && parentsUntil(info.element, 'e-addedrow'))) &&\n !info.element.classList.contains('e-detailcell') ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n if (this.parent.editSettings.mode === 'Batch' && this.parent.isEdit && info.elementToFocus.tagName.toLowerCase() === 'input'\n && info.elementToFocus.classList.contains('e-dropdownlist')) {\n info.elementToFocus = info.elementToFocus.parentElement;\n }\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n var commandCellQuery = this.parent.editSettings.showAddNewRow && parentsUntil(element, 'e-addedrow') ?\n ', button:not(.e-hide)' : '';\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea' + commandCellQuery;\n }\n var child = [].slice.call(element.querySelectorAll(query));\n if (element.classList.contains('e-fltrtemp')) {\n var focusElement = [].slice.call(element.querySelectorAll('.e-fltrtemp-focus'));\n if (this.focusType === 'click' && this.target && this.target.classList.contains('e-fltrtemp-focus')) {\n return this.target;\n }\n else if (this.focusType === 'key' && focusElement.length && (this.action === 'tab' || this.action === 'shiftTab')) {\n var elementIndex = focusElement.indexOf(this.currentTarget);\n return elementIndex === -1 ? focusElement[this.action === 'tab' ? 0 : focusElement.length - 1]\n : focusElement[this.action === 'tab' ? elementIndex + 1 : elementIndex - 1];\n }\n }\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.parent.editSettings.mode === 'Batch'\n && this.parent.isEdit && this.target) ? 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 (this.matrix.matrix[current[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 }\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$1 = 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$1) && row$1.classList.contains(row)) {\n var rowIndex = parseInt(row$1.getAttribute(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(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(dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(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.enableVirtualization && this.parent.groupSettings.columns.length) {\n rowIndex = rIndex;\n cellIndex = cIndex;\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(rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(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(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}());\n/**\n * @hidden\n */\nvar HeaderFocus = /** @__PURE__ @class */ (function (_super) {\n __extends$d(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 this.focusType = 'click';\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(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$1(_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));\n/** @hidden */\nvar SearchBox = /** @__PURE__ @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}());\n\nvar __extends$e = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$e(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate$1([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate$1([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate$1([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate$1([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate$1([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate$1([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\n\nvar __extends$f = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$f(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate$2([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\n\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @__PURE__ @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 /**\n * @hidden\n */\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.virtualSelectedData = [];\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 this.isRowDeselect = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.isFocusLastCell = false;\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('.' + gridHeader) && !gridElement.querySelector('.' + 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()[addedRecords]) :\n this.parent.editModule.getBatchChanges()[addedRecords].concat(currentRecords);\n var deletedRecords$1 = this.parent.editModule.getBatchChanges()[deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords$1.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords$1[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(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 if (!isToggle || !this.selectedRowIndexes.length) {\n isToggle = false;\n }\n else {\n var isCheckboxModeResetOnRowClick = this.selectionSettings.checkboxMode === 'ResetOnRowClick';\n var isSelectionTypeMultiple = !this.parent.isCheckBoxSelection && this.selectionSettings.type === 'Multiple';\n if ((!isCheckboxModeResetOnRowClick && !isSelectionTypeMultiple) ||\n (this.selectedRowIndexes.length === 1 && (isCheckboxModeResetOnRowClick || isSelectionTypeMultiple))) {\n isToggle = !(this.isKeyAction && this.parent.isCheckBoxSelection) ? this.selectedRowIndexes.indexOf(index) !== -1 : false;\n }\n else {\n isToggle = false;\n }\n }\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(rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n if (this.selectionSettings.checkboxMode !== 'ResetOnRowClick' && this.selectionSettings.persistSelection) {\n this.rowDeselect(rowDeselecting, [rowObj.index], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], this.actualTarget);\n if (this.isCancelDeSelect) {\n return;\n }\n if (!this.parent.isCheckBoxSelection) {\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.isRowSelected = false;\n this.selectRowIndex(-1);\n }\n this.rowDeselect(rowDeselected, [rowObj.index], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], this.actualTarget, undefined, undefined, undefined);\n }\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 && _this.parent.isCheckBoxSelection &&\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, 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(rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n if (!(_this.selectionSettings.persistSelection && gObj.allowRowDragAndDrop && _this.isDragged)) {\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, 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(rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n if (this.checkVirtualCheckBox() && !this.parent.isPersistSelection) {\n this.virtualSelectedData.splice(this.virtualSelectedData.indexOf(rowObj.data), 1);\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(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(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, 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 if (this.checkVirtualCheckBox() && !this.parent.isPersistSelection) {\n this.virtualSelectedData.push(this.parent.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data);\n }\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 && !(this.parent.isFocusFirstCell || this.isFocusLastCell)) {\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 else {\n if (this.parent.isFocusFirstCell || this.isFocusLastCell) {\n this.parent.isFocusFirstCell = false;\n var selector = this.isFocusLastCell ? 'last-child' : 'first-child';\n var target = selectedRow.querySelector('.e-selectionbackground.e-rowcell:not(.e-hide, .e-detailrowcollapse, .e-detailrowexpand, .e-rowdragdrop, .e-gridchkbox):' + selector);\n this.isFocusLastCell = false;\n if (target) {\n this.focus.onClick({ target: target }, true, true);\n }\n }\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 this.isRowDeselect = true;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = void 0;\n if (this.parent.enableVirtualization || (this.parent.enableInfiniteScrolling\n && this.parent.infiniteScrollSettings.enableCache)) {\n currentRow = this.parent.getRowByIndex(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n }\n else {\n 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 }\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(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' || _this.parent.isPersistSelection) {\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 if ((_this.parent.enableVirtualization || (_this.parent.enableInfiniteScrolling\n && _this.parent.infiniteScrollSettings.enableCache)) && _this.selectedRecords.length && !element.length\n && !_this.parent.selectionSettings.persistSelection && !_this.disableUI\n && !_this.parent.isCheckBoxSelection) {\n _this.addRemoveClassesForRow(null, false, true);\n }\n _this.virtualSelectedData = [];\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(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 this.isRowDeselect = false;\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || !this.isRowDeselect || 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() || (this.isCellType() && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache)))) {\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(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, 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(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, 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, 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, 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() || (this.isCellType() && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache)))) {\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(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(cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, 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, 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, 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(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(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(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(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(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(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(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, rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, rowCell);\n if (rowIndex > -1) {\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(dataColIndex), 10));\n }\n }\n }\n }\n if (!e.ctrlKey && !e.shiftKey && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling &&\n !this.parent.enableColumnVirtualization && !this.parent.groupSettings.columns.length && this.isCellDrag) {\n this.updateScrollPosition(e, position, this.parent.getContent());\n }\n };\n Selection.prototype.updateScrollPosition = function (mouseEvent, position, scrollElement) {\n var _this = this;\n var clientRect = scrollElement.getBoundingClientRect();\n if (clientRect.left >= position.x - 20 -\n (this.parent.enableRtl && this.parent.height !== 'auto' ? getScrollBarWidth() : 0)) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, _this.parent.enableRtl ? 'right' : 'left', mouseEvent); }, 200);\n }\n else if (clientRect.left + scrollElement.clientWidth - 20 -\n (!this.parent.enableRtl && this.parent.height !== 'auto' ? getScrollBarWidth() : 0) < position.x) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, _this.parent.enableRtl ? 'left' : 'right', mouseEvent); }, 200);\n }\n if (clientRect.top >= position.y - (this.parent.getRowHeight() * 0.5)) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, 'up', mouseEvent); }, 200);\n }\n else if (clientRect.top + scrollElement.clientHeight - (this.parent.getRowHeight() * 0.5) -\n (scrollElement.firstElementChild.scrollWidth > scrollElement.firstElementChild.offsetWidth ?\n getScrollBarWidth() : 0) <= position.y) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, 'down', mouseEvent); }, 200);\n }\n };\n Selection.prototype.stopTimer = function () {\n if (this.timer1) {\n window.clearInterval(this.timer1);\n this.timer1 = null;\n }\n if (this.timer2) {\n window.clearInterval(this.timer2);\n this.timer2 = null;\n }\n this.preventFocus = false;\n };\n Selection.prototype.setScrollPosition = function (scrollElement, direction, mouseEvent) {\n var rowIndex = -1;\n var columnIndex = -1;\n if (this.endAFCell || this.prevECIdxs) {\n rowIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('index'), 10) : this.prevECIdxs.rowIndex;\n columnIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('data-colindex'), 10) : this.prevECIdxs.cellIndex;\n }\n switch (direction) {\n case 'up':\n if (mouseEvent && closest(mouseEvent.target, '.e-headercontent')) {\n return;\n }\n if (this.isAutoFillSel && this.startAFCell && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes.length === 1 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes.length > 1 && this.startAFCell.getBoundingClientRect().top > 0))) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'), 10);\n }\n rowIndex -= 1;\n if (this.parent.frozenRows) {\n rowIndex += this.parent.frozenRows + 1;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n rowIndex < 1 ? scrollElement.scrollTop = 0 : scrollElement.scrollTop -= this.parent.getRowByIndex(rowIndex)\n .offsetHeight;\n break;\n case 'down':\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'), 10);\n }\n if (rowIndex < this.parent.getRows().length - 1) {\n rowIndex += 1;\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n this.startAFCell = this.parent.getCellFromIndex(rowIndex, this.selectedRowCellIndexes[0].cellIndexes[0]);\n }\n scrollElement.scrollTop += this.parent.getRowByIndex(rowIndex).offsetHeight;\n }\n else {\n scrollElement.scrollTop = scrollElement.scrollHeight;\n }\n break;\n case 'left':\n if (columnIndex > 0 && rowIndex > -1) {\n if (this.isAutoFillSel && this.startAFCell && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes[0].cellIndexes.length > 0 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes[0].cellIndexes.length > 1 &&\n ((!this.parent.enableRtl && this.startAFCell.getBoundingClientRect().left > 0) || (this.parent.enableRtl &&\n this.startAFCell.getBoundingClientRect().left < this.parent.element.offsetWidth))))) {\n columnIndex = parseInt(this.startAFCell.getAttribute('data-colindex'), 10);\n }\n var nextElement_1 = this.findNextCell(scrollElement, direction, columnIndex, rowIndex);\n columnIndex = nextElement_1 ? parseInt(nextElement_1.getAttribute('data-colindex'), 10) : -1;\n if (this.parent.enableRtl && nextElement_1) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n columnIndex < 1 ? scrollElement.scrollLeft = scrollElement.scrollWidth :\n scrollElement.scrollLeft += nextElement_1.offsetWidth;\n }\n else if (nextElement_1) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n columnIndex < 1 ? scrollElement.scrollLeft = 0 : scrollElement.scrollLeft -= nextElement_1.offsetWidth;\n }\n }\n break;\n case 'right':\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n columnIndex = parseInt(this.startAFCell.getAttribute('data-colindex'), 10);\n }\n // eslint-disable-next-line no-case-declarations\n var currentElement = this.parent.getCellFromIndex(rowIndex, columnIndex);\n // eslint-disable-next-line no-case-declarations\n var nextElement = this.findNextCell(scrollElement, direction, columnIndex, rowIndex);\n if (nextElement && this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n this.startAFCell = this.parent.getCellFromIndex(this.selectedRowCellIndexes[0].rowIndex, parseInt(nextElement.getAttribute('data-colindex'), 10));\n }\n columnIndex = nextElement ? parseInt(nextElement.getAttribute('data-colindex'), 10) : -1;\n if (this.parent.enableRtl && nextElement) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n columnIndex < this.parent.columns.length - 1 ? scrollElement.scrollLeft -= currentElement.offsetWidth :\n scrollElement.scrollLeft = -scrollElement.scrollWidth;\n }\n else if (nextElement) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n columnIndex < this.parent.columns.length - 1 ? scrollElement.scrollLeft += currentElement.offsetWidth :\n scrollElement.scrollLeft = scrollElement.scrollWidth;\n }\n if (this.isAutoFillSel && (columnIndex === this.parent.columns.length - 1 || columnIndex === -1) &&\n this.startAFCell && this.endAFCell) {\n this.positionAFBorders();\n scrollElement.scrollLeft = this.parent.enableRtl ? -scrollElement.scrollWidth : scrollElement.scrollWidth;\n }\n break;\n }\n if (rowIndex > -1 && rowIndex < this.parent.getRows().length && columnIndex > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mouseEvent_1 = { target: this.parent.getCellFromIndex(rowIndex, columnIndex) };\n if (this.isAutoFillSel && mouseEvent_1.target.classList.contains('e-cellselectionbackground') &&\n ((direction === 'down' && parseInt(mouseEvent_1.target.getAttribute('index'), 10) === this.parent.getRows().length - 1) ||\n (direction === 'right' && parseInt(mouseEvent_1.target.getAttribute('data-colindex'), 10) === this.parent.columns.length - 1))) {\n return;\n }\n this.endAFCell = mouseEvent_1.target;\n this.preventFocus = true;\n this.selectLikeExcel(mouseEvent_1, rowIndex, columnIndex);\n }\n };\n Selection.prototype.findNextCell = function (scrollElement, direction, columnIndex, rowIndex) {\n var nextElement = this.parent.getCellFromIndex(rowIndex, direction === 'left' ? columnIndex - 1 : columnIndex + 1);\n if (nextElement && nextElement.classList.contains('e-hide')) {\n var siblingEles = nextElement.closest('tr').querySelectorAll('.e-rowcell:not(.e-hide)');\n var nextEleInd = Array.from(siblingEles).indexOf(nextElement.nextElementSibling);\n if (nextEleInd > 0 && nextEleInd < siblingEles.length - 1) {\n nextElement = siblingEles[nextEleInd + (direction === 'left' ? -1 : 1)];\n return nextElement;\n }\n else {\n scrollElement.scrollLeft = 0;\n return null;\n }\n }\n return nextElement;\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.setFrozenBorders = function (parentEle, border, bdrStr) {\n var width = border.style.borderWidth.toString().split(' ');\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n var cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr])).\n filter(function (ele) { return ele.style.display === ''; });\n var fixedCells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground.e-fixedfreeze')).\n filter(function (ele) { return ele.style.display === ''; });\n var isRtl = this.parent.enableRtl;\n if (cells.length) {\n var firstRowIdx = cells[0].getAttribute('index');\n var firstColIdx = cells[0].getAttribute('data-colindex');\n var lastRowIdx = cells[cells.length - 1].getAttribute('index');\n var lastColIdx = cells[cells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === firstRowIdx && (width.length === 1 || (width.length === 3\n && parseInt(width[0], 10) === 2) || (width.length === 4 && parseInt(width[0], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === firstColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && (((!isRtl &&\n parseInt(width[3], 10) === 2)) || (isRtl && parseInt(width[1], 10) === 2))))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === lastRowIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[2], 10) === 2) || (width.length === 4 && parseInt(width[2], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === lastColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && ((!isRtl &&\n parseInt(width[1], 10) === 2)) || (isRtl && parseInt(width[3], 10) === 2)))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n if (fixedCells.length) {\n var firstRowIdx = fixedCells[0].getAttribute('index');\n var firstColIdx = fixedCells[0].getAttribute('data-colindex');\n var lastRowIdx = fixedCells[fixedCells.length - 1].getAttribute('index');\n var lastColIdx = fixedCells[fixedCells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < fixedCells.length; i++) {\n var idx = fixedCells[parseInt(i.toString(), 10)].getAttribute('index');\n var colIdx = fixedCells[parseInt(i.toString(), 10)].getAttribute('data-colindex');\n if (idx === firstRowIdx &&\n ((!this.parent.getHeaderContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-content')) || !parentsUntil(parentEle, 'e-content'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (idx === lastRowIdx &&\n ((!this.parent.getContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-headercontent')) || !parentsUntil(parentEle, 'e-headercontent'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n var preCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) - 1];\n if (colIdx === firstColIdx && (!preCell || (preCell && !preCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n var nextCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) + 1];\n if (colIdx === lastColIdx && (!nextCell || (nextCell && !nextCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n };\n Selection.prototype.refreshFrozenBorders = function () {\n if (this.bdrElement) {\n this.setFrozenBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === 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() === leftRight) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\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, 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, 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() === 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() === 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() === 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() === 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() === 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() === 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() === 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() === 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, movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, movableContent) ||\n parentsUntil(this.startAFCell, movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, 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, movableContent) ||\n parentsUntil(this.startAFCell, movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n var borderAFRightValue = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n borderAFRightValue > 0 ? this.bdrAFRight.style.right = borderAFRightValue + 'px' : this.bdrAFRight.style.right = '0px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n if (this.parent.height !== 'auto' && getScrollBarWidth()) {\n this.bdrAFTop.style.left = getScrollBarWidth() + 'px';\n this.bdrAFTop.style.width = (parseInt(this.bdrAFTop.style.width, 10) - getScrollBarWidth()) + 'px';\n }\n else {\n this.bdrAFTop.style.left = '0px';\n }\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.destroyAutoFillElements = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.remove();\n this.bdrAFRight.remove();\n this.bdrAFBottom.remove();\n this.bdrAFTop.remove();\n this.bdrAFLeft = this.bdrAFRight = this.bdrAFBottom = this.bdrAFTop = null;\n }\n if (this.autofill) {\n this.autofill.remove();\n this.autofill = null;\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(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, row).getAttribute(dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, row).getAttribute(dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(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, 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, row).getAttribute(dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(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(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(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, 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(rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(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, 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(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(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() === leftRight\n && col.getFreezeTableName() === frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, 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, headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, 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(dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, rowCell).getAttribute(dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, rowCell).getAttribute(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(dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, rowCell).getAttribute(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: uiUpdate, handler: this.enableAfterRender },\n { event: initialEnd, handler: this.initializeSelection },\n { event: rowSelectionComplete, handler: this.onActionComplete },\n { event: cellSelectionComplete, handler: this.onActionComplete },\n { event: inBoundModelChanged, handler: this.onPropertyChanged },\n { event: cellFocused, handler: this.onCellFocused },\n { event: beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: columnPositionChanged, handler: this.columnPositionChanged },\n { event: contentReady, handler: this.initialEnd },\n { event: rowsRemoved, handler: this.rowsRemoved },\n { event: headerRefreshed, handler: this.refreshHeader },\n { event: destroyAutoFillElements, handler: this.destroyAutoFillElements },\n { event: 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(actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(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(actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n this.parent.off(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(contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(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 this.dataSuccess((!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n this.parent.getDataModule().isRemote() ? this.parent.getCurrentViewRecords() :\n this.parent.renderModule.data.dataManager.dataSource.json);\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n for (var i = 0; i < res.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, res[parseInt(i.toString(), 10)]);\n var checkedFieldData = res[parseInt(i.toString(), 10)][this.chkField];\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && checkedFieldData && typeof checkedFieldData === 'boolean') {\n this.selectedRowState[\"\" + pkValue] = checkedFieldData;\n if (this.parent.isPersistSelection) {\n this.persistSelectedData.push(res[parseInt(i.toString(), 10)]);\n }\n }\n }\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(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, '.' + 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 if (this.checkVirtualCheckBox() && !this.parent.isPersistSelection) {\n this.virtualSelectedData = this.virtualCheckBoxData().slice();\n this.selectedRowIndexes = Object.keys(this.virtualSelectedData).map(function (key) { return parseInt(key, 10); });\n }\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((stateStr === 'Uncheck' || this.isCheckboxReset) ||\n (stateStr === 'Intermediate' && this.parent.isPersistSelection))) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n if (!this.chkField && !this.parent.isPersistSelection) {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.parent.isPersistSelection) {\n for (var i = 0; i < this.getCurrentBatchRecordChanges().length; i++) {\n if (!isNullOrUndefined(this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i]))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (Object.keys(this.selectedRowState).includes((this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i])).toString())) {\n state = true;\n }\n else {\n state = false;\n break;\n }\n }\n }\n }\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes;\n if (!isNullOrUndefined(ele)) {\n classes = ele.nextElementSibling.classList;\n }\n else {\n if (!isNullOrUndefined(this.getCheckAllBox())) {\n classes = this.getCheckAllBox().nextElementSibling.classList;\n }\n }\n var status = 'None';\n if (classes instanceof DOMTokenList) {\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 }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + 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(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(dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top' && !this.parent.editSettings.showAddNewRow) {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + 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(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.getData();\n if (this.parent.groupSettings.columns.length && data['records']) {\n data = data['records'];\n }\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() ? [] : this.getData();\n if (this.parent.groupSettings.columns.length && getRecord['records']) {\n getRecord = getRecord['records'];\n }\n this.totalRecordsCount = this.checkVirtualCheckBox() ? getRecord.length : this.totalRecordsCount;\n if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n getRecord.length)) || (!isFiltered && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n getRecord.length && checkedLen === getRecord.length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && ((checkedLen === this.parent.totalDataRecordsCount) || ((this.\n isSelectAllRowCount(checkedLen) || checkedLen === this.totalRecordsCount) && !this.parent.isPersistSelection))) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))\n || (checkedLen === this.totalRecordsCount && this.totalRecordsCount && !this.isPartialSelection &&\n !this.parent.allowPaging && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling)))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.checkVirtualCheckBox = function () {\n return this.parent.enableVirtualization && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.parent.isCheckBoxSelection && !this.isPartialSelection;\n };\n Selection.prototype.virtualCheckBoxData = function () {\n var data = this.getData();\n if (this.parent.groupSettings.columns.length && data['records']) {\n data = data['records'];\n }\n return data;\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 === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224) ||\n (((Browser.info.name === 'safari') || (Browser.info.name === 'chrome')) && (e.keyCode === 91 || e.keyCode === 93))) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, 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 === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224) ||\n (((Browser.info.name === 'safari') || (Browser.info.name === 'chrome')) && (e.keyCode === 91 || e.keyCode === 93))) {\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, 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, 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, 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(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 rIndex = 0;\n rIndex = parseInt(target.parentElement.getAttribute(dataRowIndex), 10);\n if (this.parent.isPersistSelection && !this.parent.editSettings.showAddNewRow\n && this.parent.element.getElementsByClassName(addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(dataColIndex), 10));\n }\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + 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(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, '.' + rowCell).classList.contains(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(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, '.' + 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, '.' + 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.enableVirtualization) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n if (!this.parent.enableColumnVirtualization && !this.parent.groupSettings.columns.length &&\n this.parent.totalDataRecordsCount >= 1) {\n if (e.keyArgs.action === 'ctrlHome') {\n rowIndex = 0;\n this.parent.isFocusFirstCell = true;\n }\n else if (e.keyArgs.action === 'ctrlEnd') {\n rowIndex = this.parent.totalDataRecordsCount - 1;\n this.isFocusLastCell = true;\n }\n }\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 var rowObj = this.parent.getRowsObject();\n this.selectRowsByRange(rowObj[0].index, rowObj[rowObj.length - 1].index);\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(dataColIndex), 10);\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(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 if (!(this.parent.enableVirtualization || this.parent.enableColumnVirtualization)) {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\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(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 if (this.checkVirtualCheckBox() && !this.parent.isPersistSelection) {\n selectedData = this.virtualSelectedData;\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 (!this.selectionSettings.enableToggle || isMultiColumns || !isColSelected) {\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, columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (isMultiColumns || !(isColSelected && gObj.selectionSettings.enableToggle && index === this.prevColIndex)) {\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, 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, 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, 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, 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, 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, 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, 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(row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(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(dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(dataBound, this.onDataBoundFunction);\n this.parent.on(refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(actionComplete, this.actionCompleteFunc);\n this.parent.on(click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(dataReady, this.dataReady);\n this.parent.removeEventListener(dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(actionComplete, this.actionCompleteFunc);\n this.parent.off(refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(click, this.clickHandler);\n this.parent.removeEventListener(resizeStop, this.resizeEndFn);\n this.parent.off(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}());\n\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @__PURE__ @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 //Internal variables\n /** @hidden */\n this.headerFocus = false;\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Checks if the input string contains non-numeric characters.\n *\n * @param {string} searchString - The string to be checked for non-numeric characters.\n * @returns {boolean} - `true` if the input string contains non-numeric characters, `false` otherwise.\n */\n Search.prototype.hasNonNumericCharacters = function (searchString) {\n var decimalFound = false;\n for (var _i = 0, searchString_1 = searchString; _i < searchString_1.length; _i++) {\n var char = searchString_1[_i];\n if ((char < '0' || char > '9') && char !== '.') {\n return true;\n }\n if (char === '.') {\n if (decimalFound) {\n // If decimal is found more than once, it's not valid\n return true;\n }\n decimalFound = true;\n }\n }\n return false;\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(preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n this.headerFocus = false;\n // Check searchString is number and parseFloat to remove trailing zeros\n if (searchString !== '' && !this.hasNonNumericCharacters(searchString)) {\n if (searchString === '.' || (searchString.indexOf('.') === -1)) {\n gObj.searchSettings.key = searchString.toString();\n }\n else {\n gObj.searchSettings.key = parseFloat(searchString).toString();\n }\n }\n else {\n gObj.searchSettings.key = searchString.toString();\n }\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n else {\n this.headerFocus = false;\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(inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(searchComplete, this.onSearchComplete, this);\n this.parent.on(destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(actionComplete, this.actionCompleteFunc);\n this.parent.on(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(inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(searchComplete, this.onSearchComplete);\n this.parent.off(destroy, this.destroy);\n this.parent.removeEventListener(actionComplete, this.actionCompleteFunc);\n this.parent.off(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(modelChanged, {\n requestType: 'searching', type: actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(modelChanged, {\n requestType: 'searching', type: 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(actionComplete, extend$1(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: 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 if (this.refreshSearch && e.requestType === 'refresh' && this.headerFocus) {\n this.headerFocus = false;\n this.parent.focusModule.focus();\n addClass([this.parent.focusModule.currentInfo.element], ['e-focused']);\n }\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}());\n\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @__PURE__ @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 this.widthService = new ColumnWidthService(parent);\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: batchCancel, handler: this.batchChanges },\n { event: 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(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(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(actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n _this.parent.notify(destroyEditForm, args);\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 _this.parent.notify(refreshFrozenPosition, { isModeChg: true });\n }\n else {\n if (_this.parent.isFrozenGrid() && columns.length) {\n _this.parent.notify(refreshFrozenPosition, { isModeChg: true });\n }\n _this.parent.notify(columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(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(showAddNewRowFocus, {});\n }\n }\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (!this.parent.groupSettings.columns.length) {\n if (this.parent.autoFit) {\n this.parent.preventAdjustColumns();\n }\n else if (this.parent.allowResizing && this.parent.resizeSettings.mode === 'Normal') {\n var isMaxWidth = this.parent.getHeaderTable().style.width.indexOf('px') === -1;\n this.widthService.setWidthToTable(isMaxWidth);\n }\n }\n };\n return ShowHide;\n}());\n\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @__PURE__ @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$1 = this.parent.getContent().querySelector('.' + 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 this.parent.height !== '100%') {\n var tbody$1 = this.parent.getHeaderContent()\n .querySelector(tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody$1 ? tbody$1.offsetHeight : 0;\n if (tbody$1 && mHdrHeight) {\n var add = tbody$1.getElementsByClassName(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$1.style.height = formatUnit(parseInt(height, 10) - mHdrHeight);\n }\n else {\n content$1.style.height = formatUnit(height);\n }\n this.ensureOverflow(content$1);\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('.' + 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('.' + 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('.' + 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(headerContent);\n return function (e) {\n if (_this.content.querySelector(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 var scrollLeft = _this.parent.enableRtl ? Math.abs(target.scrollLeft) : target.scrollLeft;\n var isStartOfScroll = scrollLeft <= 1;\n if (!isStartOfScroll && _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 scrollRight = _this.parent.enableRtl ? Math.abs(target.scrollLeft) : target.scrollLeft;\n var isEndOfScroll = Math.round(scrollRight + target.clientWidth) >= target.scrollWidth - 1;\n if (isEndOfScroll && _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(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('.' + headerContent);\n var mCont = _this.parent.getContent().querySelector('.' + 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('.' + content);\n this.header = this.parent.getHeaderContent().querySelector('.' + 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 _this.parent.notify(lastRowCellBorderUpdated, args);\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 removeClass(table.querySelectorAll('td'), 'e-lastrowcell');\n if (table.querySelector('tr:nth-last-child(2)')) {\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 /**\n * @returns {void}\n * @hidden\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 windowScale = window.devicePixelRatio;\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 (windowScale !== 1) {\n top_1 = Math.ceil(top_1);\n }\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(stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.width = width != null ? width + 'px' : '';\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('.' + gridHeader) && !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + 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('.' + headerContent)], headerContent);\n removeClass([cont], 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}());\n\nvar __extends$g = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @__PURE__ @class */ (function (_super) {\n __extends$g(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$3([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate$3([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate$3([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate$3([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate$3([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate$3([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate$3([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate$3([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @__PURE__ @class */ (function (_super) {\n __extends$g(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$3([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\n\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @__PURE__ @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(contentReady, this.initialEnd, this);\n this.parent.on(keyPressed, this.keyDownHandler, this);\n this.parent.on(click, this.clickHandler, this);\n this.parent.on(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(keyPressed, this.keyDownHandler);\n this.parent.off(contentReady, this.initialEnd);\n this.parent.off(click, this.clickHandler);\n this.parent.off(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 (!grid.isEdit && e.keyCode === 67 && isMacLike && e.metaKey) {\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, '.' + 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) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(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(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 if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && selectedIndexes.length > rows.length) {\n selectedIndexes = [];\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n if (row.getAttribute('aria-selected') === 'true') {\n selectedIndexes.push(parseInt(row.getAttribute('data-rowindex'), 10));\n }\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 var currentRow = rows[parseInt(idx.toString(), 10)];\n if (!(isNullOrUndefined(currentRow))) {\n leftCols.push.apply(leftCols, [].slice.call(currentRow.querySelectorAll('.e-rowcell:not(.e-hide)')));\n this.getCopyData(leftCols, false, '\\t', withHeader);\n }\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n var colHeader = this.parent\n .getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]);\n if (!colHeader.classList.contains('e-hide')) {\n headers.push(colHeader);\n }\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-cellselectionbackground:not(.e-hide)'));\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(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(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}());\n\n/**\n *\n * `Logger` class\n */\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 = /** @__PURE__ @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}());\nvar 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);\n var ajaxError = ajaxErrorHandler(args);\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: !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid),\n options: { name: 'freeze' }\n };\n break;\n case 'virtualization':\n opt = {\n success: !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid),\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 '* Details Template\\n' +\n '* Hierarchy Grid\\n';\n break;\n case 'virtualization':\n opt = 'Virtualization does not support the following features.\\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) ||\n (!isNullOrUndefined(parent.dataSource) && 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 + (\": EXPORTING 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 + (\": EXPORTING 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 + \"/common/internationalization#supported-format-string\\n\") +\n (\"Date format: \" + DOC_URL + \"/common/internationalization#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\nvar __extends$h = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @__PURE__ @class */ (function (_super) {\n __extends$h(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate$4([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate$4([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$h(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate$4([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @__PURE__ @class */ (function (_super) {\n __extends$h(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate$4([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate$4([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate$4([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate$4([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate$4([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate$4([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate$4([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate$4([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate$4([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate$4([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate$4([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n __decorate$4([\n Property()\n ], Predicate.prototype, \"condition\", void 0);\n return Predicate;\n}(ChildProperty));\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$h(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate$4([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate$4([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$h(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate$4([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate$4([\n Property('OnEnter')\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate$4([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate$4([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate$4([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate$4([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate$4([\n Property(false)\n ], FilterSettings.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate$4([\n Property(50)\n ], FilterSettings.prototype, \"itemsCount\", void 0);\n __decorate$4([\n Property('Shimmer')\n ], FilterSettings.prototype, \"loadingIndicator\", void 0);\n __decorate$4([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate$4([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$h(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate$4([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate$4([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate$4([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate$4([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate$4([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate$4([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate$4([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate$4([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$h(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate$4([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate$4([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate$4([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate$4([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$h(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$h(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$h(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$h(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate$4([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate$4([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate$4([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate$4([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate$4([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate$4([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate$4([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate$4([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$h(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate$4([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate$4([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate$4([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate$4([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate$4([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate$4([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate$4([\n Property()\n ], EditSettings.prototype, \"template\", void 0);\n __decorate$4([\n Property()\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate$4([\n Property()\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate$4([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate$4([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate$4([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n __decorate$4([\n Property(false)\n ], EditSettings.prototype, \"showAddNewRow\", void 0);\n return EditSettings;\n}(ChildProperty));\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @__PURE__ @class */ (function (_super) {\n __extends$h(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\n/**\n * Represents the Grid component.\n * ```html\n *
    \n * \n * ```\n */\nvar Grid = /** @__PURE__ @class */ (function (_super) {\n __extends$h(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 /** @hidden */\n _this_1.pageRequireRefresh = true;\n _this_1.mediaBindInstance = {};\n /** @hidden */\n _this_1.commandDelIndex = undefined;\n /** @hidden */\n _this_1.preventAutoFit = false;\n /** @hidden */\n _this_1.asyncTimeOut = 50;\n /** @hidden */\n _this_1.isExportGrid = false;\n /** @hidden */\n _this_1.isWidgetsDestroyed = 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 if (this.enableVirtualization && this.enablePersistence && this.contentModule &&\n this.contentModule.getPageFromTop) {\n settings['properties']['currentPage'] = this.contentModule.getPageFromTop(this.scrollPosition.top, { block: 1 });\n }\n this.setProperties({ pageSettings: settings }, true);\n var captionTemplateRef = this.groupSettings.captionTemplate;\n var isAngularCaptionTemplate = captionTemplateRef && this.isAngular;\n if (isAngularCaptionTemplate) {\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 if (isAngularCaptionTemplate) {\n this.groupSettings.captionTemplate = captionTemplateRef;\n }\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 (!isNullOrUndefined(this.columns) && 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 (!isNullOrUndefined(this.columns) && this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator], name: 'ForeignKey' });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this], name: 'Logger' });\n }\n };\n Grid.prototype.resizeCheck = function () {\n var autoFitColumns = this.getColumns().filter(function (c) { return c.autoFit === true; }).length ? true : false;\n if (!isNullOrUndefined(this.columnModel) && this.columnModel.length && !(this.columnModel[0] instanceof Column)) {\n this.columnModel = [];\n }\n var columnMenu = this.showColumnMenu && (!this.columnMenuItems || this.columnMenuItems\n .filter(function (c) { return c === 'AutoFit' || c === 'AutoFitAll'; }).length) ? true : false;\n var contextMenu = this.contextMenuItems && this.contextMenuItems\n .filter(function (c) { return c === 'AutoFit' || c === 'AutoFitAll'; }).length ? true : false;\n return this.allowResizing || this.autoFitColumnsResize || autoFitColumns || columnMenu || contextMenu;\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.freezeColumnRefresh = true;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n ColumnMenu: 'Column Menu',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n FilterTitle: 'Filter',\n FilterIcon: '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 SortIcon: '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(initialLoad, {});\n if (this.pageSettings.enableQueryString) {\n var pageValue = new URL(window.location.href).searchParams.get('page');\n if (!isNullOrUndefined(pageValue) && window.location.href.indexOf('?page=') > 0) {\n var currentPageValue = parseInt(pageValue, 10);\n this.setProperties({ pageSettings: { currentPage: currentPageValue } }, true);\n this.pageSettings.currentPage = currentPageValue;\n }\n }\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.aggregateModule && this.aggregates.length) {\n for (var i = 0; i < this.aggregates.length; i++) {\n for (var j = 0; j < this.aggregates[parseInt(i.toString(), 10)].columns.length; j++) {\n var column = this.aggregates[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)];\n if (column['types']) {\n column.type = column['types'];\n }\n }\n }\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(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(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(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[\"\" + 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 (this.allowPaging && this.pageSettings.pageSize !== this.currentViewData.length &&\n this.pagerModule.pagerObj.totalPages !== this.pageSettings.currentPage) {\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 < this.pageSettings.pageSize - this.currentViewData.length; i++) {\n maskTBody.appendChild((i % 2 === 1) ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\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(.e-hide):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('.' + 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('.' + 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(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('.' + 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('.' + gridHeader) &&\n gridElement.querySelector('.' + gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(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('.' + gridHeader) && !gridElement.querySelector('.' + 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(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(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(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(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 && this.pageRequireRefresh\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n if (!this.pageRequireRefresh) {\n this.pageRequireRefresh = true;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n }\n break;\n case 'allowSorting':\n this.notify(uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(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(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(uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(uiUpdate, { module: 'selection', enable: this.allowSelection });\n this.renderModule.refresh();\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(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(uiUpdate, { module: 'toolbar' });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'groupSettings':\n this.notify(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(uiUpdate, { module: 'aggregate', properties: newProp });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'enableColumnVirtualization':\n case 'currencyCode':\n case 'locale':\n if (this.isFrozenGrid()) {\n this.log('frozen_rows_columns');\n }\n freezeRefresh = true;\n requireGridRefresh = true;\n this.addNewRowFocus = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows\n || (this.frozenLeftColumns.length || this.frozenRightColumns.length)) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(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(rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n if (this.resizeModule) {\n this.resizeModule.render();\n }\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(uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n if (this.toolbarModule) {\n this.toolbarModule.refreshToolbarItems();\n }\n this.notify(uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(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(freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n this.refreshHeader();\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var requestPendingState = this.getDataModule().getState();\n if (this.allowPaging && this.pageSettings.pageSizes && !this.getDataModule().isRemote()\n && !(requestPendingState && requestPendingState.isPending)) {\n if (this.pagerModule.pagerObj.isAllPage) {\n var count = this.dataSource instanceof DataManager ? this.dataSource.dataSource.json.length :\n 'result' in this.dataSource ? this.dataSource.count : this.dataSource.length;\n if (this.pageSettings.pageSizes.indexOf('All') === -1 && this.pageSettings.pageSize !== count) {\n this.pagerModule.pagerObj.isAllPage = false;\n }\n else {\n this.setProperties({ pageSettings: { pageSize: count } }, true);\n this.pagerModule.pagerObj.setProperties({ pageSize: count }, true);\n }\n }\n }\n if (this.allowSelection && this.isPersistSelection && !(requestPendingState && requestPendingState.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 (requestPendingState.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (requestPendingState.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)], requestPendingState.aggregates\n || []);\n }\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n requestPendingState.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(dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(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(setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n case 'allowPdfExport':\n if (this.toolbarModule) {\n this.toolbarModule.refreshToolbarItems();\n }\n break;\n case 'allowExcelExport':\n if (this.toolbarModule) {\n this.toolbarModule.refreshToolbarItems();\n }\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(contentReady, fn_1);\n };\n this.on(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 = (!isNullOrUndefined(columns) ? columns.length : 0); i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateLockableColumns();\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.frozenLeftColumns.length !== 0 || this.frozenRightColumns.length !== 0 ||\n this.fixedColumns.length !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * @param {string} position - specifies position\n * @returns {number} returns the width\n * @hidden\n */\n Grid.prototype.leftrightColumnWidth = function (position) {\n var cols = position === 'left' ? this.getFrozenLeftColumns() : position === 'right' ? this.getFrozenRightColumns() : [];\n var width = 0;\n cols.filter(function (col) {\n if (col.visible) {\n width += parseInt(col.width.toString(), 10);\n }\n });\n return width;\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this_1 = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this_1.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.getVisibleColumns().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(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(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 * @deprecated This method has been marked as deprecated. It is recommended to utilize the `getRowByIndex()` method instead, and apply the `e-unfreeze` class to select the movable cell within the tr element.\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 * @deprecated This method has been marked as deprecated. It is recommended to utilize the `getRowByIndex()` method instead, and apply the `e-leftfreeze` class to select the frozen cell within the tr element.\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 * @deprecated This method has been marked as deprecated. It is recommended to utilize the `getRowByIndex()` method instead, and apply the `e-rightfreeze` class to select the frozen right cell within the tr element.\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, '.' + rowCell);\n if (!cell) {\n var row_1 = closest(ele, '.' + 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(dataRowIndex), 10);\n args = { row: row_1, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(dataColIndex), 10);\n var row_2 = closest(cell, '.' + row);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex) && !isNullOrUndefined(row_2)) {\n var rowIndex = parseInt(row_2.getAttribute(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 * @deprecated This method has been marked as deprecated. It is recommended to utilize the `getRows()` method instead, and apply the `e-unfreeze` class to select the movable cell within the tr element.\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 * @deprecated This method has been marked as deprecated. It is recommended to utilize the `getRows()` method instead, and apply the `e-rightfreeze` class to select the frozen right cell within the tr element.\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(tbody))) {\n return [];\n }\n var tbody$1 = this.getContentTable().querySelector(tbody);\n var rows = [].slice.call(tbody$1.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(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(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 * @deprecated This method has been marked as deprecated. It is recommended to utilize the `getDataRows()` method instead, and apply the `e-unfreeze` class to select the movable cell within the tr element.\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @deprecated This method has been marked as deprecated. It is recommended to utilize the `getAllDataRows()` method instead, and apply the `e-unfreeze` class to select the movable cell within the tr element.\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 * @deprecated This method has been marked as deprecated. It is recommended to utilize the `getDataRows()` method instead, and apply the `e-leftfreeze` class to select the frozen cell within the tr element.\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @deprecated This method has been marked as deprecated. It is recommended to utilize the `getAllDataRows()` method instead, and apply the `e-leftfreeze` class to select the frozen cell within the tr element.\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 * @deprecated This method has been marked as deprecated. It is recommended to utilize the `getDataRows()` method instead, and apply the `e-rightfreeze` class to select the frozen right cell within the tr element.\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @deprecated This method has been marked as deprecated. It is recommended to utilize the `getAllDataRows()` method instead, and apply the `e-rightfreeze` class to select the frozen right cell within the tr element.\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n *\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable()) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(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(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(refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n var _loop_1 = function (j) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this_1, this_1.serviceLocator);\n var td = parentsUntil(this_1.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n var cols = this_1.sortSettings.columns;\n var columnIndex = cols.findIndex(function (col) {\n return col.field === cell\n .column.field;\n });\n if (columnIndex !== -1) {\n var header = this_1.getColumnHeaderByField(cell.column.field);\n this_1.ariaService.setSort(header, (cols[parseInt(columnIndex.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this_1.createElement('span', { className: 'e-sortnumber', innerHTML: (columnIndex + 1).toString() }), header.querySelector('.e-headertext'));\n }\n var filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(columnIndex.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n }\n };\n var this_1 = this;\n for (var j = 0; j < rowsObj.length; j++) {\n _loop_1(j);\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n *\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(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 * @deprecated This method is deprecated. Use `getCellFromIndex()` method instead\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 * @deprecated This method is deprecated. Use `getCellFromIndex()` method instead.\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 * @deprecated This method is deprecated. Use `getColumnHeaderByIndex()` method instead.\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 * @deprecated This method is deprecated. Use `getColumnHeaderByIndex()` method instead.\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 * @deprecated This method is deprecated. Use `getColumnHeaderByIndex()` method instead.\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n * @deprecated This method is deprecated. Use `getRowsObject()` method instead.\n */\n Grid.prototype.getMovableRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n * @deprecated This method is deprecated. Use `getRowsObject()` method instead.\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 * @param {boolean} isColumns - Defines the all columns.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid, isColumns) {\n var cols = isColumns ? this.columns : this.getColumns();\n return iterateArrayOrObject(cols.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 isFrozenAuto = gcol.some(function (data) {\n return (data.freeze === 'Left' || data.freeze === 'Right'\n || data.freeze === 'Fixed' || data.isFrozen) && data.width === 'auto';\n });\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 if (!isNullOrUndefined(col.maxWidth) && parseFloat(col.maxWidth.toString()) < col.width) {\n col.width = col.maxWidth;\n }\n }\n if (col.width === 'auto' && isFrozenAuto) {\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 < (!isNullOrUndefined(columns) ? columns.length : 0); 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 = (!isNullOrUndefined(cols) ? cols.length : 0); 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(colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(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(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(), true);\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(refreshHandlers, {});\n }\n if (this.frozenRows && this.scrollModule) {\n this.scrollModule.resizeFrozenRowBorder();\n }\n if (this.enableStickyHeader) {\n this.scrollModule.makeStickyHeader();\n }\n if (this.enableAutoFill && this.selectionSettings.type === 'Multiple' &&\n this.selectionSettings.mode === 'Cell' && this.selectionModule.selectedRowCellIndexes.length) {\n this.selectionModule.updateAutoFillPosition();\n this.selectionModule.drawBorders();\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(colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(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 var column = this.getColumns().find(function (col) { return !isNullOrUndefined(col.width); });\n return column ? column.width.toString().indexOf('%') > -1 : false;\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 flag = false;\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(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.isSafari()) {\n this.element.classList.add('e-mac-safari');\n }\n if (Browser.isDevice && this.adaptiveUIMode === 'Desktop') {\n this.element.classList.add('e-device');\n this.enableAdaptiveUI = false;\n }\n if (this.adaptiveUIMode === 'Mobile' && !(Browser.isDevice || this.rowRenderingMode === 'Vertical')) {\n this.enableAdaptiveUI = false;\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$1 = this.createElement('div', { className: content, attrs: { tabIndex: '-1' } });\n append([content$1, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content$1.appendChild(this.createElement('span'));\n append([content$1, 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(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(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(dataColIndex), 10)];\n var domSetter = col && 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 && 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(dataReady, this.dataReady, this);\n this.on(contentReady, this.recalcIndentWidth, this);\n this.on(headerRefreshed, this.recalcIndentWidth, this);\n this.on(refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(dataBound, this.dataBoundFunction);\n this.on(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(dataReady, this.dataReady);\n this.off(contentReady, this.recalcIndentWidth);\n this.off(headerRefreshed, this.recalcIndentWidth);\n this.on(refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.removeEventListener(dataBound, this.dataBoundFunction);\n this.off(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, gridContent) ||\n e.target.tagName === 'TD')) || (parentsUntil(e.target, 'e-headercell') &&\n parentsUntil(e.target, 'e-headercell').querySelector('.e-checkselectall')) ||\n (!(this.allowGrouping || this.allowReordering) && parentsUntil(e.target, 'e-gridheader'))) &&\n e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[\"\" + cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(recordClick, args);\n }\n this.notify(click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(editedRow) || (tr.classList.contains(addedRow)) &&\n !this.editSettings.showAddNewRow);\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, rowCell) &&\n parentsUntil(e.target, 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(recordDoubleClick, args);\n }\n this.notify(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'))) && !parentsUntil(e.target, 'edit-custom-template')))) {\n this.editModule.saveCell();\n this.notify(editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal' && !this.isWidgetsDestroyed) {\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 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$1(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)][\"\" + initialFrozenColumnIndex] :\n tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (isFrozenGrid) {\n localCol = extend$1({}, 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$1(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend$1(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$1(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(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(groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.editModule && ((this.editModule.alertDObj && this.editModule.alertDObj.visible) ||\n (this.editModule.dialogObj && this.editModule.dialogObj.visible))) ||\n ((this.isEdit && (!this.editSettings.showAddNewRow || (this.editSettings.showAddNewRow &&\n this.element.querySelector(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(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(autoCol, {});\n };\n Grid.prototype.refreshFrozenPosition = function (obj) {\n if (obj && obj.isModeChg) {\n this.refreshColumns();\n this.notify(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('.' + headerContent).scrollLeft = left;\n this.getContent().querySelector('.' + content).scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, workbook, isBlob);\n }\n else {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n }\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n *\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n }\n else {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n }\n };\n Grid.prototype.exportMultiplePdfGrids = function (gridIds, pdfExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pdfDoc, isBlob) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var exportPromise = currentGridInstance.pdfExportModule ?\n currentGridInstance.pdfExportModule.Map(currentGridInstance, pdfExportProperties, isMultipleExport, pdfDoc, isBlob)\n : Promise.resolve();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n Grid.prototype.exportMultipleExcelGrids = function (gridIds, excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.excelExportModule ?\n currentGridInstance.excelExportModule.Map(currentGridInstance, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n *\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n *\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this_1 = this;\n var refresh = function () {\n _this_1.scrollModule.refresh();\n _this_1.off(contentReady, refresh);\n };\n this.on(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$1 = this.getContent().querySelector('.' + content);\n if (content$1.scrollHeight <= content$1.clientHeight) {\n this.scrollModule.removePadding();\n content$1.style.overflowY = 'auto';\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n *\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @param {boolean} isForeignKey - Defines the foreign key\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field, isForeignKey) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if ((!isForeignKey && field === gCols[parseInt(i.toString(), 10)].field) ||\n (isForeignKey && gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if ((this.allowFiltering && this.filterSettings.columns.length) || this.searchSettings.key.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad|macintosh/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(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(tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(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 (this.getHeaderContent() && !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 * @param {ExportHeaders} headers - The headers to include in the export request.\n *\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url, headers) {\n this.isExcel = true;\n this.exportGrid(url, headers);\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 * @param {ExportHeaders} headers - The headers to include in the export request.\n *\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url, headers) {\n this.isExcel = false;\n this.exportGrid(url, headers);\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 csv export action.\n *\n * @param {ExportHeaders} headers - The headers to include in the export request.\n *\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url, headers) {\n this.isExcel = true;\n this.exportGrid(url, headers);\n };\n /**\n * @param {string} url - Defines exporting url\n * @param {ExportHeaders} headers - The optional headers for the export request.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url, headers) {\n var _this_1 = this;\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 if (headers && headers.headers && Array.isArray(headers.headers)) {\n headers.headers.forEach(function (header) {\n Object.keys(header).forEach(function (key) {\n var value = typeof header[\"\" + key] === 'string' ? header[\"\" + key] : JSON.stringify(header[\"\" + key]);\n var headerInput = _this_1.createElement('input', { attrs: { name: key, value: value, type: 'hidden' } });\n form.appendChild(headerInput);\n });\n });\n }\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(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) {\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 var isReactPrintGrid = this.printGridParent && this.printGridParent.isReact;\n if ((isReactChild || isReactPrintGrid) && this['portals']) {\n var parentInstObj = isReactPrintGrid ? this.printGridParent : this.parentDetails.parentInstObj;\n parentInstObj['portals'] = parentInstObj['portals'].concat(this['portals']);\n 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 = [addedRecords, changedRecords, 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(row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(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$1 = this.getContentTable().querySelector(tbody);\n if (tbody$1.querySelector('.e-emptyrow')) {\n var emptyRow = tbody$1.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$1 = this.getHeaderContent().querySelector(tbody);\n }\n else {\n tbody$1 = this.getContent().querySelector(tbody);\n }\n tbody$1 = this.getContent().querySelector(tbody);\n tbody$1.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)\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 * @deprecated This method is deprecated. Use `getContent()` method instead.\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n * @deprecated This method is deprecated. Use `getHeaderContent()` method instead.\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.headerModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n * @deprecated This method is deprecated. Use `getHeaderContent().querySelector('tbody')` method instead.\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getHeaderContent().querySelector(tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n * @deprecated This method is deprecated. Use `getContent().querySelector('tbody')` method instead.\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getContent().querySelector(tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n * @deprecated This method is deprecated. Use `getHeaderContent().querySelector('tbody')` method instead.\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getHeaderContent().querySelector(tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n * @deprecated This method is deprecated. Use `getContent().querySelector('tbody')` method instead.\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getContent().querySelector(tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n * @deprecated This method is deprecated. Use `getHeaderContent().querySelector('tbody')` method instead.\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getHeaderContent().querySelector(tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n * @deprecated This method is deprecated. Use `getContent().querySelector('tbody')` method instead.\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n return this.getContent().querySelector(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$4([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"showHider\", void 0);\n __decorate$4([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate$4([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate$4([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate$4([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate$4([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate$4([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate$4([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate$4([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate$4([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate$4([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate$4([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate$4([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate$4([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate$4([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate$4([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate$4([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate$4([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate$4([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate$4([\n Property('Both')\n ], Grid.prototype, \"adaptiveUIMode\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate$4([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate$4([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"autoFit\", void 0);\n __decorate$4([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate$4([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate$4([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate$4([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate$4([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate$4([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate$4([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate$4([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"emptyRecordTemplate\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate$4([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate$4([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate$4([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate$4([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate$4([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"exportGrids\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate$4([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate$4([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate$4([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate$4([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate$4([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate$4([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate$4([\n Property('')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"created\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"load\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"exportDetailTemplate\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate$4([\n Event$1()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate$4([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\n\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nfunction 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 = /** @__PURE__ @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(contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(actionBegin, this.actionBeginFunction);\n this.parent.on(onEmpty, this.onEmpty.bind(this));\n this.parent.on(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$1({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (!gObj.getFrozenColumns() && gObj.isFrozenGrid()) {\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(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 if (this.parent.isVue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.vueInstance = this.parent.vueInstance;\n }\n printGrid.printGridParent = gObj;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n var _this = this;\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(beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n if (this.parent.printGridParent && this.parent.printGridParent.isReact) {\n this.parent.printGridParent.renderTemplates(function () {\n _this.printGrid();\n });\n }\n else {\n this.printGrid();\n }\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('.' + content);\n var headerDiv = gObj.element.querySelector('.' + 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(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(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 if (!isNullOrUndefined(this.printWind)) {\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = print(gObj.element, this.printWind);\n }\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 = gObj.groupSettings.enableLazyLoading ? (parseInt(groupCaption[0].getAttribute('colspan'), 10) -\n (gObj.groupSettings.columns.length - 1)).toString() : 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(contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(actionBegin, this.actionBeginFunction);\n this.parent.off(onEmpty, this.onEmpty.bind(this));\n this.parent.off(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([beforePrint, printComplete, load]);\n return Print;\n}());\n\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 */\nfunction 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\nfunction 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 */\nfunction 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\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(extend$1({}, 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 */\nfunction templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (typeof template === 'function') {\n return compile(template);\n }\n else if (validSelector && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nfunction setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n extend$1(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 */\nfunction extend(copied, first, second, exclude) {\n var moved = extend$1(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 */\nfunction setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = (!isNullOrUndefined(columnModel) ? columnModel.length : 0); 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 */\nfunction prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = (!isNullOrUndefined(columns) ? columns.length : 0); 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.headerValueAccessor = typeof column.headerValueAccessor === 'string' ? getValue(column.headerValueAccessor, window)\n : column.headerValueAccessor;\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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table$1 = createElement('table', { className: table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table$1.innerHTML = 'A';\n element.appendChild(table$1);\n var rect = table$1.querySelector('td').getBoundingClientRect();\n element.removeChild(table$1);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nfunction getActualRowHeight(element) {\n var table$1 = createElement('table', { className: table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table$1.innerHTML = 'A';\n element.appendChild(table$1);\n var rect = table$1.querySelector('tr').getBoundingClientRect();\n element.removeChild(table$1);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction isEditable(col, type, elem) {\n var row$1 = parentsUntil(elem, row);\n var isOldRow = !row$1 ? true : row$1 && !row$1.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 */\nfunction 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\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction refreshForeignData(row, columns, data) {\n for (var i = 0; i < (!isNullOrUndefined(columns) ? columns.length : 0); 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 */\nfunction getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data));\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 */\nfunction 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 */\nfunction 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 */\nfunction getDatePredicate(filterObject, type, isExecuteLocal) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = extend$1({}, getActualProperties(filterObject));\n var nextObj = extend$1({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate$1(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$1(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$1(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate$1(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$1(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 */\nfunction 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\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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[\"\" + key]);\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if ((gObj.childGrid || 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 */\nfunction 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)]] = extend$1({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = extend$1([], 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 */\nfunction measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < (!isNullOrUndefined(column) ? column.length : 0); 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 */\nfunction 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 */\nfunction 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\nvar 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction groupCaptionRowLeftRightPos(tr, gObj) {\n var width = 0;\n var idx = 0;\n var frozenCount = gObj.getVisibleFrozenLeftCount();\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n if (frozenCount === idx) {\n break;\n }\n if (td.classList.contains('e-groupcaption') || td.classList.contains('e-summarycell')) {\n idx += parseInt(td.getAttribute('colspan'), 10);\n }\n td.classList.add('e-leftfreeze');\n if (td.classList.contains('e-groupcaption') && parseInt(td.getAttribute('colspan'), 10) === 1) {\n td.classList.add('e-freezeleftborder');\n }\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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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(dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(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 */\nfunction 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(dataRowIndex, startIndex.toString());\n rowElement.setAttribute(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 */\nfunction 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(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 */\nfunction 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 */\nfunction 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 */\nfunction sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {Dialog} dlgObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nfunction resetDialogAppend(gObj, dlgObj) {\n var element = gObj.createElement('div', { className: 'e-grid-popup', id: gObj.element.id + '_e-popup' });\n var pos = calculatePosition(gObj.element, 'left', 'Top');\n if (document.getElementById(gObj.element.id + '_e-popup')) {\n element = document.getElementById(gObj.element.id + '_e-popup');\n }\n element.style.top = pos.top + 'px';\n element.style.left = pos.left + 'px';\n element.style.zIndex = (dlgObj.zIndex).toString();\n element.style.width = dlgObj.element.offsetWidth + 'px';\n element.appendChild(dlgObj.element);\n var sbPanel = document.querySelector('.sb-demo-section,.e-grid-dialog-fixed');\n if (sbPanel) {\n var sbPos = calculateRelativeBasedPosition(gObj.element, sbPanel);\n element.style.top = sbPos.top + 'px';\n element.style.left = sbPos.left + 'px';\n sbPanel.insertBefore(element, sbPanel.firstChild);\n }\n else {\n document.body.insertBefore(element, document.body.firstChild);\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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction getCellsByTableName(gObj, col, rowIndex) {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(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 */\nfunction 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 */\nfunction 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() === frozenLeft\n || (!index && col.getFreezeTableName() === 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() === 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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\nfunction 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\nfunction 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 */\nfunction clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { HTMLElement[] } removeElem - Defines checkbox wrapper element\n * @returns {void}\n * @hidden\n */\nfunction infiniteRemoveElements(removeElem) {\n for (var i = 0; i < removeElem.length; i++) {\n remove(removeElem[i]);\n }\n}\n/**\n *\n * @param { HTMLElement[] } appendElem - Defines checkbox wrapper element\n * @param { HTMLElement } ulElement - Defines ul element\n * @returns {void}\n * @hidden\n */\nfunction infiniteAppendElements(appendElem, ulElement) {\n for (var i = 0; i < appendElem.length; i++) {\n ulElement.insertBefore(appendElem[i], ulElement.children[i]);\n }\n}\n/**\n *\n * @param { HTMLElement } element - Defines checkbox wrapper element\n * @param { boolean } isChooser - Defines checkbox filter column chooser\n * @returns { number } list height value\n * @hidden\n */\nfunction getListHeight(element, isChooser) {\n var listDiv = isChooser ? createElement('li', { className: 'e-cclist', styles: 'visibility: hidden; list-style: none' }) :\n createElement('div', { className: 'e-ftrchk', styles: 'visibility: hidden' });\n listDiv.innerHTML = isChooser ? '
    A
    ' :\n '
    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/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nfunction getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(dataRowIndex), 10);\n}\n/**\n *\n * @param { IGrid } grid - Defines grid instance\n * @returns { IGrid } returns parent grid instance\n */\nfunction getParentIns(grid) {\n return grid.parentDetails && grid.parentDetails.parentInstObj ?\n getParentIns(grid.parentDetails.parentInstObj) : grid;\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\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n/**\n *\n * @param { IGrid } grid - Defines parent instance\n * @returns { boolean } - Returns is virtual\n */\nfunction checkIsVirtual(grid) {\n return !(isGroupAdaptive(grid) || grid.groupSettings.enableLazyLoading\n || (!grid.enableVirtualization && grid.enableColumnVirtualization));\n}\n/**\n *\n * @param { number[] } blockes - Defines block indexes\n * @returns { number[] } - Returns is visible page\n */\nfunction getVisiblePage(blockes) {\n var visiblePage = [];\n for (var i = 0; i < blockes.length; i++) {\n var page = Math.ceil(blockes[parseInt(i.toString(), 10)] / 2);\n if (visiblePage.indexOf(page) === -1) {\n visiblePage.push(page);\n }\n }\n return visiblePage;\n}\n\n/* tslint:disable-next-line:max-line-length */\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @__PURE__ @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.searchInputArgs = null;\n this.isExecuteLocal = false;\n this.queryFilteredColumn = [];\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(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.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (isNullOrUndefined(this.sInput)) {\n return;\n }\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 this.searchInputArgs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(this.searchInputArgs, 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: 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(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 if (this.parent && this.parent.filterSettings && (this.parent.filterSettings.type === 'CheckBox'\n || (this.options.column && this.options.column.filter && this.options.column.filter.type === 'CheckBox')) &&\n this.parent.getContent().firstElementChild.offsetHeight < this.dialogObj.element.offsetHeight &&\n !parentsUntil(this.parent.element, 'e-gantt-dialog')) {\n resetDialogAppend(this.parent, this.dialogObj);\n }\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!this.parent.enableAdaptiveUI) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && !this.infiniteRenderMod) {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.showMask();\n }\n }\n else {\n if (this.parent.enableAdaptiveUI && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.getAllData();\n return;\n }\n if (this.infiniteRenderMod) {\n this.cBox.style.marginTop = 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(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(filterMenuClose, { field: this.options.field });\n this.unWireEvents();\n if (this.searchInputArgs && this.searchInputArgs.element && this.searchInputArgs.element.parentElement) {\n Input.destroy(this.searchInputArgs);\n remove(this.searchInputArgs.element);\n }\n this.searchInputArgs = null;\n this.sInput = null;\n if (this.parent.isReact && this.options.column.filter && typeof (this.options.column.filter.itemTemplate) !== 'string'\n && (this.options.column.filter.type === 'CheckBox' || this.options.column.filter.type === 'Excel')) {\n this.dialogObj.element.querySelector('.e-dlg-content').innerHTML = '';\n }\n this.dialogObj.destroy();\n if (this.dialogObj['dlgClosedBy'] === 'escape') {\n this.parent.isColumnMenuFilterClosing = true;\n }\n if (this.dlg && this.dlg.parentElement) {\n remove(this.dlg);\n }\n this.dlg = null;\n this.parent.notify(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(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(afterFilterColumnMenuClose, {});\n }\n if (!isNullOrUndefined(this.parent.focusModule)) {\n this.parent.focusModule.filterfocus();\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 val;\n var length;\n var coll = [];\n if ((checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== ''))\n || this.infiniteRenderMod) {\n if (!this.infiniteRenderMod) {\n coll = this.complexQueryPredicate(checked, defaults, isNotEqual);\n }\n else if (this.infiniteRenderMod &&\n (!this.infiniteSearchPred || (this.infiniteSearchPred && !this.infiniteSearchPred.isComplex))) {\n this.infiniteFltrBtnHandler(coll);\n }\n else {\n if (this.infiniteSearchPred.isComplex) {\n coll = this.complexQueryPredicate(checked, defaults, isNotEqual);\n }\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'or', 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.complexQueryPredicate = function (checkBoxChecked, defaults, isNotEqual) {\n var value;\n var fObj;\n var coll = [];\n for (var i = 0; i < checkBoxChecked.length; i++) {\n value = this.values[parentsUntil(checkBoxChecked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend$1({}, { 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 return coll;\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(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$1(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$1.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime' || this.options.type === 'dateonly') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n if (this.options.type === 'dateonly') {\n parsed = parsed.getFullYear() + '-' + padZero(parsed.getMonth() + 1) + '-' + padZero(parsed.getDate());\n }\n }\n this.infiniteSearchValChange = true;\n this.infiniteLoadedElem = [];\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteSkipCnt = 0;\n this.infiniteDataCount = 0;\n this.infiniteManualSelectMaintainPred = [];\n if (this.sInput.value === '') {\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n }\n else {\n this.infiniteUnloadParentExistPred = [];\n }\n this.addDistinct(query);\n var args = {\n requestType: 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(actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate$1(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(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(generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate$1.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate$1.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 var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (!(!isNullOrUndefined(this.parent.getDataModule) && moduleName && moduleName() === 'ODataV4Adaptor')) {\n query.requiresCount(); //consider take query\n }\n this.addDistinct(query);\n var args = {\n requestType: 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(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 var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (moduleName && moduleName() === 'ODataV4Adaptor' && this.parent &&\n this.parent.query instanceof Query) {\n var gridQuery = this.parent.query;\n for (var i = 0; i < gridQuery.queries.length; i++) {\n var queryOptions = gridQuery.queries[parseInt(i.toString(), 10)];\n if (queryOptions.fn === 'onWhere') {\n this.getPredicateFields(queryOptions.e);\n this.queryFilteredColumn.map(function (field) {\n if (filteredColumn.indexOf(field) === -1) {\n filteredColumn.push(field);\n }\n });\n this.queryFilteredColumn = [];\n }\n }\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_1 = this.options.dataManager.adaptor.getModuleName;\n if (moduleName_1 && moduleName_1() && (moduleName_1() === 'ODataV4Adaptor' || moduleName_1() === 'WebApiAdaptor'\n || moduleName_1() === 'CustomDataAdaptor' || moduleName_1() === 'GraphQLAdaptor' || moduleName_1() === 'ODataAdaptor')) {\n query.distinct(filteredColumn);\n }\n }\n return query;\n };\n CheckBoxFilterBase.prototype.getPredicateFields = function (query) {\n var _this = this;\n if (query.isComplex && query.predicates) {\n query.predicates.forEach(function (predicate) {\n if (Array.isArray(predicate)) {\n predicate.forEach(function (p) { return _this.getPredicateFields(p); });\n }\n else {\n _this.getPredicateFields(predicate);\n }\n });\n }\n else {\n if (query.field && !query.isComplex) {\n if (this.queryFilteredColumn.indexOf(query.field) <= -1) {\n this.queryFilteredColumn = this.queryFilteredColumn.concat(DataUtil.distinct([query.field], 'field'));\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(dataStateChange, defObj.state);\n this.addInfiniteScrollEvent(query);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.infiniteDataCount = _this.infiniteRenderMod && !_this.infiniteDataCount ? e['count'] : _this.infiniteDataCount;\n var dataResult = _this.infiniteRenderMod ? e['result'] : e;\n _this.dataSuccess(dataResult);\n });\n };\n CheckBoxFilterBase.prototype.addInfiniteScrollEvent = function (query) {\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 };\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.getShimmerTemplate = function () {\n return '';\n };\n /**\n * @returns {void}\n * @hidden\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 liHeight = getListHeight(wrapperElem);\n var height = wrapperElem.children.length ? parseInt(computedStyle.height, 10) :\n Math.floor(parseInt(computedStyle.height.split('px')[0], 10)) - 5;\n if (this.parent.enableAdaptiveUI && this.infiniteRenderMod) {\n maskList.style.height = (height - liHeight) + 'px';\n this.dlg.querySelector('.e-dlg-content').style.overflow = 'hidden';\n }\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 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 infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt += this.prevInfiniteScrollDirection === 'down' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n appendChildren(this.cBox, this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.parent.filterSettings.itemsCount +\n this.infiniteSkipCnt));\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.infiniteLoadedElem.length > this.parent.filterSettings.itemsCount * 3\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings\n .itemsCount * 2), this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt -= this.prevInfiniteScrollDirection === 'up' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt +\n this.parent.filterSettings.itemsCount)), this.cBox);\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 infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings\n .itemsCount * 2), this.infiniteDataCount % this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt = (Math.floor(this.infiniteDataCount / this.parent.filterSettings.itemsCount) - 3) *\n this.parent.filterSettings.itemsCount;\n infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt +\n this.parent.filterSettings.itemsCount)), this.cBox);\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n };\n CheckBoxFilterBase.prototype.makeInfiniteScrollRequest = function (query) {\n var _this = this;\n if (!this.infiniteInitialLoad && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n setTimeout(function () {\n if (_this.infiniteQueryExecutionPending) {\n _this.showMask();\n }\n }, 500);\n }\n else if (!this.infiniteInitialLoad) {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent\n .createElement);\n showSpinner(this.spinner);\n }\n var fName = 'fn';\n if (this.infiniteQuery && this.infiniteQuery.queries && this.infiniteQuery.queries.length) {\n for (var i = 0; i < this.infiniteQuery.queries.length; i++) {\n if (this.infiniteQuery.queries[i][\"\" + fName] === 'onTake'\n || this.infiniteQuery.queries[i][\"\" + fName] === 'onSkip') {\n this.infiniteQuery.queries.splice(i, 1);\n i--;\n }\n }\n }\n var existQuery = query ? true : false;\n query = query ? query : this.infiniteQuery;\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteSkipCnt = 0;\n }\n else {\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount;\n }\n query.skip(this.infiniteSkipCnt);\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n query.take(this.parent.filterSettings.itemsCount * 3);\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount * 2;\n }\n else {\n query.take(this.parent.filterSettings.itemsCount);\n }\n if (!existQuery) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var args = {\n requestType: filterChoiceRequest, query: query, filterChoiceCount: null, filterModel: this\n };\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.filterEvent(args, query);\n }\n else {\n this.processDataOperation(query);\n this.infiniteQueryExecutionPending = true;\n }\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 this.addInfiniteScrollEvent(query);\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(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: filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(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 moduleName = this.options.dataManager.adaptor.getModuleName;\n if (!isNullOrUndefined(this.parent.getDataModule) && moduleName && moduleName() === 'ODataV4Adaptor') {\n this.parent.getDataModule().searchQuery(query);\n }\n else {\n var searchSettings = this.parent.searchSettings;\n var fields = searchSettings.fields.length ? searchSettings.fields\n : this.options.columns.map(function (f) { return f.field; });\n query.search(searchSettings.key, fields, searchSettings.operator, searchSettings.ignoreCase, searchSettings.ignoreAccent);\n }\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[parseInt(i.toString(), 10)];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols, this.isExecuteLocal);\n if (predicate) {\n query.where(predicate);\n }\n }\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.isExecuteLocal = true;\n this.updateResult();\n this.isExecuteLocal = false;\n var args1 = { dataSource: this.fullData, isCheckboxFilterTemplate: false, column: this.options.column,\n element: this.cBox, type: this.options.type, format: this.options.type, btnObj: this.options.isResponsiveFilter ? null :\n this.dialogObj.btnObj[0], searchBox: this.searchBox };\n this.parent.notify(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(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$1({}, { value: value }, defaults));\n if (defaults.predicate === 'or') {\n this.options.parentTotalDataCount++;\n }\n else {\n this.options.parentTotalDataCount--;\n }\n }\n };\n /**\n * Method to set the next target element on keyboard navigation using arrow keys.\n *\n * @param {KeyboardEventArgs} e - Defines the Keyboard event argument\n * @param {HTMLElement[]} focusableElements - Defines the Focusable elements\n * @returns {void}\n */\n CheckBoxFilterBase.prototype.focusNextOrPrev = function (e, focusableElements) {\n var nextIndex = (e.key === 'ArrowUp') ? focusableElements.indexOf(document.activeElement) - 1\n : focusableElements.indexOf(document.activeElement) + 1;\n var nextElement = focusableElements[((nextIndex + focusableElements.length) % focusableElements.length)];\n // Set focus on the next / previous element\n if (nextElement) {\n nextElement.focus();\n var target = nextElement.classList.contains('e-chk-hidden') ? parentsUntil(nextElement, 'e-ftrchk') : nextElement;\n this.setFocus(target);\n }\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n if (e.key === 'Tab' || ((e.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\n && 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 !(this.options.column.filter.itemTemplate.prototype && this.options.column.filter.itemTemplate.prototype.CSPTemplate);\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', null, null, null, null, this.parent.root));\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(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 selectAll.classList.add('e-infinitescroll');\n if (this.parent.enableAdaptiveUI) {\n this.spinner.style.height = (this.spinner.offsetHeight - getListHeight(this.cBox)) + 'px';\n }\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$1('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 !== this.getLocalizedLabel('AddCurrentSelection'))) || !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 predicateElement.classList.add('e-infinitescroll');\n this.sBox.insertBefore(predicateElement, this.spinner);\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var reduceHeight = Math.ceil(predicateElement.getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0], 10) - reduceHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n }\n else {\n cBoxes.appendChild(predicateElement);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-add-current')) {\n this.sBox.querySelector('.e-ftrchk .e-add-current').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-add-current').parentElement.classList.remove('e-checkbox-disabled');\n }\n }\n else if (this.infiniteRenderMod && !isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText === this.getLocalizedLabel('AddCurrentSelection')) {\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var increaseHeight = Math.ceil(this.sBox.children[2].getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0], 10) + increaseHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n remove(this.sBox.children[2]);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(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 = 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 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 && 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: filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(cBoxFltrComplete, args);\n this.parent.notify(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 var predValue = pred.value instanceof Date ?\n this.valueFormatter.toView(pred.value, this.options.formatFn) : pred.value;\n if (value === predValue && (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$1, 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$1)[0];\n setValue(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$1(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$1(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}());\n\nvar __extends$i = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilterBase = /** @__PURE__ @class */ (function (_super) {\n __extends$i(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(beforeFltrcMenuOpen, { element: this.menu });\n this.parent.notify(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 = this.cmenu.querySelector('.' + className);\n var menuFocusElem = this.menu.querySelector('.' + className);\n if (prevElem) {\n prevElem.classList.remove(className);\n }\n if (menuFocusElem && menuFocusElem.classList.contains('e-menufocus')) {\n menuFocusElem.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(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: Browser.isDevice ? 'ZoomIn' : '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$1(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(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 && (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 && args.event.target.classList &&\n 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 && !isNullOrUndefined(this.parent.getContent) && this.parent.getContent()\n && this.parent.getContent().firstElementChild\n .offsetHeight < this.dlg.offsetHeight && !parentsUntil(this.parent.element, 'e-gantt-dialog')) {\n resetDialogAppend(this.parent, this.dialogObj);\n }\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 var menuItems = this.dlg.querySelectorAll('.e-menu-item');\n menuItems.forEach(function (menuItem) {\n if (menuItem.scrollWidth > menuItem.clientWidth) {\n menuItem.setAttribute('title', menuItem.textContent);\n }\n });\n if (options.column.showColumnMenu) {\n this.parent.notify(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(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 !(_this.options.column.filterTemplate.prototype && _this.options.column.filterTemplate.prototype.CSPTemplate);\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 },\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(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(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(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 predicateSelector = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n var predicate = (predicateSelector.checked ? 'and' : 'or');\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(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$1(field, firstOperator.toLowerCase(), arg.arg3, !matchCase, ignoreAccent);\n if (!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, [open, change], evt, this);\n dropOptr.addEventListener(open, this.eventHandlers[optrInput.id][open]);\n dropOptr.addEventListener(change, this.eventHandlers[optrInput.id][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, [open, change], this);\n }\n else if (component.element.classList.contains('e-autocomplete')) {\n removeEventHandlers(component, [actionComplete, 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$1 = this.parent.createElement(colGroup);\n colGroup$1.innerHTML = '';\n table.appendChild(colGroup$1);\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 !(this.options.column.filterTemplate.prototype && this.options.column.filterTemplate.prototype.CSPTemplate);\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, null, null, null, this.parent.root);\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(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, [actionComplete, focus], evt, this);\n actObj.addEventListener(focus, this.eventHandlers[inputValue.id][focus]);\n actObj.addEventListener(actionComplete, this.eventHandlers[inputValue.id][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));\n\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nvar Sort = /** @__PURE__ @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: actionComplete\n } : { requestType: 'sorting', type: actionComplete };\n this.isRemove = false;\n this.parent.trigger(actionComplete, extend$1(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(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: actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(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(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(preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n var args = { requestType: 'sorting', type: 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(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(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: setFullScreenDialog, handler: this.setFullScreenDialog },\n { event: renderResponsiveChangeAction, handler: this.renderResponsiveChangeAction },\n { event: contentReady, handler: this.initialEnd },\n { event: sortComplete, handler: this.onActionComplete },\n { event: inBoundModelChanged, handler: this.onPropertyChanged },\n { event: click, handler: this.clickHandler },\n { event: headerRefreshed, handler: this.refreshSortIcons },\n { event: keyPressed, handler: this.keyPressed },\n { event: cancelBegin, handler: this.cancelBeginEvent },\n { event: destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n EventHandler.add(document.body, 'click', this.excelFilterSortAction, this);\n EventHandler.add(document.body, 'touchend', this.excelFilterSortAction, 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 EventHandler.remove(document.body, 'click', this.excelFilterSortAction);\n EventHandler.remove(document.body, 'touchend', this.excelFilterSortAction);\n };\n Sort.prototype.excelFilterSortAction = function (e) {\n var popUp = parentsUntil(e.target, 'e-grid-popup');\n var gridID = this.parent.element.id + '_e-popup';\n if (popUp && popUp.id === gridID && parentsUntil(e.target, 'e-excelfilter')) {\n this.excelFilterSortActionHandler(e);\n }\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('.' + gridHeader) && !gridElement.querySelector('.' + 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 this.excelFilterSortActionHandler(e);\n };\n Sort.prototype.excelFilterSortActionHandler = function (e) {\n if (parentsUntil(e.target, 'e-excel-ascending') || 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(this.parent.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(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}());\n\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nvar NumericContainer = /** @__PURE__ @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 this.pagerModule.isInteracted = true;\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 if (this.links[parseInt(currentPage.toString(), 10)]) {\n this.links[parseInt(currentPage.toString(), 10)].setAttribute('aria-current', 'page');\n }\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}());\n\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pager Module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n *\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar' });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n };\n /**\n * Refreshes the pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n this.pageNoMsgElem.parentElement.classList.remove('e-hide');\n };\n /**\n * Hides the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n /**\n * To format the PagerMessage\n *\n * @function format\n * @param {string} str - specifies the string\n * @param {number[]} args - specifies the argument\n * @returns {string} returns the format string\n * @hidden\n */\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n var regExp = RegExp;\n for (var i = 0; i < args.length; i++) {\n regx = new regExp('\\\\{' + (i) + '\\\\}', 'gm');\n if (this.isValidLocale(this.pagerModule.locale)) {\n str = str.replace(regx, args[parseInt(i.toString(), 10)].toLocaleString(this.pagerModule.locale));\n }\n else {\n str = str.replace(regx, args[parseInt(i.toString(), 10)].toString());\n }\n }\n return str;\n };\n PagerMessage.prototype.isValidLocale = function (locale) {\n try {\n new Intl.NumberFormat(locale);\n return true;\n }\n catch (e) {\n return false;\n }\n };\n return PagerMessage;\n}());\n\nvar __extends$j = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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/**\n * Represents the `Pager` component.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Pager = /** @__PURE__ @class */ (function (_super) {\n __extends$j(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 /** @hidden */\n _this.isInteracted = 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.enableQueryString) {\n var pageValue = new URL(window.location.href).searchParams.get('page');\n if (!isNullOrUndefined(pageValue) && window.location.href.indexOf('?page=') > 0) {\n var currentPageValue = parseInt(pageValue, 10);\n if (this.hasParent) {\n this.parent\n .setProperties({ pageSettings: { currentPage: currentPageValue } }, true);\n }\n this.currentPage = currentPageValue;\n }\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(['pagerTemplate']);\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$1(e, { cancel: false });\n this.notify(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(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(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.isInteracted = false;\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, isInteracted: this.isInteracted\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, 'pagerTemplate', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = this.isVue ? this.getPagerTemplate()(data, this, 'pagerTemplate', null, null, null, null, this.root)\n : 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 = compile(template);\n }\n else {\n if (document.querySelectorAll(template).length) {\n this.templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n this.templateFn = compile(template);\n }\n }\n }\n catch (e) {\n this.templateFn = compile(template);\n }\n }\n return undefined;\n };\n /**\n * Refreshes page count, pager information and external message.\n *\n * @returns {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify(this.pageRefresh, {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n this.containerModule.refresh();\n this.removeTabindexLastElements();\n if (focusedTabIndexElement && focusedTabIndexElement.classList.contains('e-disable')) {\n if (this.checkFocusInAdaptiveMode(focusedTabIndexElement)) {\n this.changeFocusInAdaptiveMode(focusedTabIndexElement);\n }\n else {\n this.setPagerFocusForActiveElement();\n }\n }\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n this.setTabIndexForFocusLastElement();\n this.resizePager();\n }\n };\n Pager.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Pager.prototype.initLocalization = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n };\n Pager.prototype.updateQueryString = function (value) {\n var updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n };\n Pager.prototype.getUpdatedURL = function (uri, key, value) {\n var regExp = RegExp;\n var regx = new regExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n var hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n };\n Pager.prototype.renderFirstPrevDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: this.getLocalizedLabel('firstPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList.length; i++) {\n var element = this.element.querySelector(classList[parseInt(i.toString(), 10)]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return (this.isReact || this.isVue) && this.template && typeof (this.template) !== 'string' && !(this.template.prototype && this.template.prototype.CSPTemplate);\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$5([\n Property(false)\n ], Pager.prototype, \"enableQueryString\", void 0);\n __decorate$5([\n Property(false)\n ], Pager.prototype, \"enableExternalMessage\", void 0);\n __decorate$5([\n Property(true)\n ], Pager.prototype, \"enablePagerMessage\", void 0);\n __decorate$5([\n Property(12)\n ], Pager.prototype, \"pageSize\", void 0);\n __decorate$5([\n Property(10)\n ], Pager.prototype, \"pageCount\", void 0);\n __decorate$5([\n Property(1)\n ], Pager.prototype, \"currentPage\", void 0);\n __decorate$5([\n Property()\n ], Pager.prototype, \"totalRecordsCount\", void 0);\n __decorate$5([\n Property()\n ], Pager.prototype, \"externalMessage\", void 0);\n __decorate$5([\n Property(false)\n ], Pager.prototype, \"pageSizes\", void 0);\n __decorate$5([\n Property()\n ], Pager.prototype, \"template\", void 0);\n __decorate$5([\n Property('')\n ], Pager.prototype, \"customText\", void 0);\n __decorate$5([\n Event$1()\n ], Pager.prototype, \"click\", void 0);\n __decorate$5([\n Property('')\n ], Pager.prototype, \"cssClass\", void 0);\n __decorate$5([\n Event$1()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate$5([\n Event$1()\n ], Pager.prototype, \"created\", void 0);\n Pager = __decorate$5([\n NotifyPropertyChanges\n ], Pager);\n return Pager;\n}(Component));\n\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @__PURE__ @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 if (this.pagerModule.isAllPage && typeof this.pagerModule.pageSizes === 'object' &&\n this.pagerModule.pageSizes.indexOf('All') === -1) {\n this.pagerModule.isAllPage = false;\n }\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}());\n\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @__PURE__ @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}());\n\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @__PURE__ @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 = extend({}, extend$1({}, 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.root = gObj.root ? gObj.root : gObj;\n this.pagerObj.hasParent = true;\n this.pagerObj.on(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 var isAddAction = (e.action === 'add' && e.requestType === 'save') || (e.requestType === 'batchsave');\n if (this.pagerObj.isAllPage && !isAddAction) {\n this.parent.pageSettings.pageSize = this.parent.pageSettings.totalRecordsCount;\n }\n if (isAddAction) {\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(actionComplete, extend$1(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: 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(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(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: actionBegin\n };\n if (!this.isCancel) {\n this.pageSettings.currentPage = e.currentPage;\n this.parent.notify(modelChanged, args);\n gObj.pageRequireRefresh = false;\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 || (this.parent.parentDetails && this.parent.parentDetails.parentInstObj\n && this.parent.parentDetails.parentInstObj.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(create, this.handlers.created.bind(this));\n }\n this.evtHandlers = [{ event: initialLoad, handler: this.handlers.load },\n { event: initialEnd, handler: this.handlers.end },\n { event: dataReady, handler: this.handlers.ready },\n { event: pageComplete, handler: this.handlers.complete },\n { event: uiUpdate, handler: this.handlers.updateLayout },\n { event: inBoundModelChanged, handler: this.handlers.inboundChange },\n { event: keyPressed, handler: this.handlers.keyPress },\n { event: 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(create, this.handlers.created);\n }\n this.parent.off(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}());\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\nvar __extends$k = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * FilterCellRenderer class which responsible for building filter cell.\n *\n * @hidden\n */\nvar FilterCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$k(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 if (this.parent.filterSettings.type === 'FilterBar') {\n node.classList.add('e-fltrtemp');\n }\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string' &&\n !(column.filterTemplate.prototype && column.filterTemplate.prototype.CSPTemplate);\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, null, null, null, this.parent.root);\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 this.parent.filterModule.inputList.push(args);\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 else {\n if (!column.visible) {\n node.classList.add('e-hide');\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(getFilterBarOperator, e);\n };\n return FilterCellRenderer;\n}(CellRenderer));\n\n/**\n * `filter operators` render boolean column.\n *\n * @hidden\n */\nvar FlMenuOptrUI = /** @__PURE__ @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(filterMenuClose, this.destroyDropDownList, this);\n this.parent.on(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 === 'isnotnull' || this.value === 'isnull') {\n if (!isNullOrUndefined(valInput['ej2_instances'])) {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else {\n valInput.setAttribute('disabled', 'true');\n }\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n if (!isNullOrUndefined(valInput['ej2_instances'])) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n else {\n valInput.removeAttribute('disabled');\n }\n }\n }\n });\n this.dropOptr.addEventListener(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(open, this.ddOpen);\n this.dropOptr.destroy();\n this.parent.off(filterMenuClose, this.destroyDropDownList);\n this.parent.off(destroy, this.destroyDropDownList);\n };\n return FlMenuOptrUI;\n}());\n\n/**\n * `string filterui` render string column.\n *\n * @hidden\n */\nvar StringFilterUI = /** @__PURE__ @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(filterMenuClose, this.destroy, this);\n this.parent.on(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$1(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$1({\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(focus, this.acFocus);\n autoComplete.addEventListener(open, this.acOpen);\n autoComplete.addEventListener(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(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 this.parent.off(filterMenuClose, this.destroy);\n this.parent.off(destroy, this.destroy);\n if (!this.actObj || this.actObj.isDestroyed) {\n return;\n }\n this.actObj.removeEventListener(focus, this.acFocus);\n this.actObj.removeEventListener(open, this.acOpen);\n this.actObj.removeEventListener(actionComplete, this.acComplete);\n this.actObj.destroy();\n };\n return StringFilterUI;\n}());\n\n/**\n * `numberfilterui` render number column.\n *\n * @hidden\n */\nvar NumberFilterUI = /** @__PURE__ @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(filterMenuClose, this.destroy, this);\n this.parent.on(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$1({\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 this.parent.off(filterMenuClose, this.destroy);\n this.parent.off(destroy, this.destroy);\n if (!this.numericTxtObj || this.numericTxtObj.isDestroyed) {\n return;\n }\n this.numericTxtObj.destroy();\n };\n return NumberFilterUI;\n}());\n\n/**\n * `boolfilterui` render boolean column.\n *\n * @hidden\n */\nvar BooleanFilterUI = /** @__PURE__ @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(filterMenuClose, this.destroy, this);\n this.parent.on(destroy, this.destroy, this);\n }\n }\n BooleanFilterUI.prototype.create = function (args) {\n var _this = this;\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$1({\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(open, this.ddOpen);\n this.dropInstance.addEventListener(actionComplete, this.ddComplete);\n if (dataSource && 'result' in dataSource) {\n var query = this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n var defObj = eventPromise({ requestType: 'booleanfilterrequest' }, query);\n this.parent.trigger(dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dropInstance.dataSource = new DataManager(e);\n _this.dropInstance.dataBind();\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 (args.column.uid === column.uid) {\n _this.dropInstance.value = column.value;\n }\n }\n });\n }\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 this.parent.off(filterMenuClose, this.destroy);\n this.parent.off(destroy, this.destroy);\n if (!this.dropInstance || this.dropInstance.isDestroyed) {\n return;\n }\n this.dropInstance.removeEventListener(open, this.ddOpen);\n this.dropInstance.removeEventListener(actionComplete, this.ddComplete);\n this.dropInstance.destroy();\n };\n return BooleanFilterUI;\n}());\n\n/**\n * `datefilterui` render date column.\n *\n * @hidden\n */\nvar DateFilterUI = /** @__PURE__ @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(filterMenuClose, this.destroy, this);\n this.parent.on(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$1({\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$1({\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(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(filterMenuClose, this.destroy);\n this.parent.off(destroy, this.destroy);\n if (isNullOrUndefined(this.datePickerObj) || this.datePickerObj.isDestroyed) {\n return;\n }\n this.datePickerObj.removeEventListener(open, this.dpOpen);\n this.datePickerObj.destroy();\n };\n return DateFilterUI;\n}());\n\n/**\n * `filter menu` render boolean column.\n *\n * @hidden\n */\nvar FilterMenuRenderer = /** @__PURE__ @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 var _this = this;\n if (!this.dlgObj) {\n return;\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 if (argument.cancel) {\n this.parent.isColumnMenuFilterClosing = false;\n return;\n }\n this.parent.notify(filterMenuClose, argument);\n this.isDialogOpen = false;\n if (this.isMenuCheck) {\n this.menuFilterBase.unWireEvents();\n this.parent.off(cBoxFltrComplete, this.actionComplete);\n this.isMenuCheck = false;\n }\n var column = this.col;\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.destroy)) {\n var temp = column.filter.ui.destroy;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp();\n }\n if ((this.parent.isReact || this.parent.isVue) && this.col.filterTemplate && this.col.filterTemplate instanceof Function) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.clearTemplate(['filterTemplate'], undefined, function () {\n _this.dlgObj.destroy();\n });\n }\n else {\n this.dlgObj.destroy();\n remove(elem);\n }\n if (this.parent.isColumnMenuFilterClosing) {\n document.getElementById(this.parent.element.id + '_columnmenu').focus();\n }\n }\n this.parent.notify(filterDialogClose, {});\n };\n FilterMenuRenderer.prototype.renderDlgContent = function (target, column) {\n var args = {\n requestType: filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(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 else if (!this.options.isResponsiveFilter) {\n this.dlgObj.position = { X: 'center', Y: 'center' };\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 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 if (!isNullOrUndefined(column.filterTemplate) && !(isReactCompiler || isReactChild)) {\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(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 if (this.parent.getContent().firstElementChild.offsetHeight < this.dlgObj.element.offsetHeight &&\n !parentsUntil(this.parent.element, 'e-gantt-dialog')) {\n resetDialogAppend(this.parent, this.dlgObj);\n }\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 if (!isNullOrUndefined(valInput['ej2_instances'])) {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else {\n valInput.setAttribute('disabled', 'true');\n }\n }\n else if (!isNullOrUndefined(valInput && valInput.getAttribute('disabled'))) {\n if (!isNullOrUndefined(valInput['ej2_instances'])) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n else {\n valInput.removeAttribute('disabled');\n }\n }\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n var args = {\n requestType: 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(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 !(column.filterTemplate.prototype && column.filterTemplate.prototype.CSPTemplate);\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, null, null, null, this.parent.root);\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(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(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 if (this.parent.showColumnMenu) {\n this.parent.notify(afterFilterColumnMenuClose, {});\n }\n };\n FilterMenuRenderer.prototype.destroy = function () {\n this.closeDialog();\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n FilterMenuRenderer.prototype.getFilterUIInfo = function () {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n };\n FilterMenuRenderer.prototype.renderCheckBoxMenu = function () {\n this.isMenuCheck = true;\n this.menuFilterBase.updateModel(this.options);\n this.menuFilterBase.getAndSetChkElem(this.options);\n this.dlgObj.buttons = [{\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: {\n content: this.menuFilterBase.getLocalizedLabel('FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: { cssClass: 'e-flat', content: this.menuFilterBase.getLocalizedLabel('ClearButton') }\n }];\n this.menuFilterBase.dialogObj = this.dlgObj;\n this.menuFilterBase.dlg = this.dlgObj.element;\n this.menuFilterBase.dlg.classList.add('e-menucheckbox');\n this.menuFilterBase.dlg.classList.remove('e-checkboxfilter');\n this.maxHeight = '800px';\n return this.menuFilterBase.sBox.innerHTML;\n };\n FilterMenuRenderer.prototype.actionComplete = function (args) {\n if (this.isMenuCheck) {\n this.parent.trigger(actionComplete, args);\n }\n };\n return FilterMenuRenderer;\n}());\n\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nvar CheckBoxFilter = /** @__PURE__ @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(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(actionBegin, args);\n };\n CheckBoxFilter.prototype.actionComplete = function (args) {\n this.parent.trigger(actionComplete, args);\n };\n CheckBoxFilter.prototype.actionPrevent = function (args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(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(cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(fltrPrevent, this.actionPrevent, this);\n };\n CheckBoxFilter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(cBoxFltrBegin, this.actionBegin);\n this.parent.off(cBoxFltrComplete, this.actionComplete);\n this.parent.off(fltrPrevent, this.actionPrevent);\n };\n return CheckBoxFilter;\n}());\n\nvar __extends$l = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilter = /** @__PURE__ @class */ (function (_super) {\n __extends$l(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(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));\n\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nvar Filter = /** @__PURE__ @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 /** @hidden */\n this.inputList = [];\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(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('.' + gridHeader) && !gridElement.querySelector('.' + 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.parent.isDestroyed) {\n if (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 this.parent.getColumns().map(function (column) {\n if (column.filterBarTemplate && !isNullOrUndefined(column.filterBarTemplate.destroy)) {\n var destroyFn = column.filterBarTemplate.destroy;\n if (typeof destroyFn === 'string') {\n destroyFn = getValue(destroyFn, window);\n }\n destroyFn();\n }\n });\n }\n if (this.element) {\n if (this.element.parentElement) {\n for (var i = 0; i < this.inputList.length; i++) {\n Input.destroy(this.inputList[parseInt(i.toString(), 10)], this.inputList[parseInt(i.toString(), 10)].element.nextElementSibling);\n remove(this.inputList[parseInt(i.toString(), 10)].element);\n }\n this.inputList = [];\n remove(this.element);\n this.element = null;\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: actionComplete\n } : {\n requestType: 'filtering', type: actionComplete\n };\n this.parent.trigger(actionComplete, extend$1(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(beforeDataBound, this.refreshFilterValueFn);\n }\n if ((this.filterSettings.type === 'FilterBar' || this.filterSettings.type === 'Excel') && this.filterSettings.columns.length &&\n !this.parent.getCurrentViewRecords().length) {\n this.initialEnd();\n }\n };\n Filter.prototype.initialEnd = function () {\n this.parent.off(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(setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(filterComplete, this.onActionComplete, this);\n this.parent.on(inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(keyPressed, this.keyUpHandler, this);\n this.parent.on(columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(headerRefreshed, this.render, this);\n this.parent.on(contentReady, this.initialEnd, this);\n this.parent.on(filterMenuClose, this.filterMenuClose, this);\n this.parent.on(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(filterOpen, this.columnMenuFilter, this);\n this.parent.on(click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(closeFilterDialog, this.clickHandler, this);\n this.parent.on(destroy, this.destroy, this);\n this.refreshFilterValueFn = this.refreshFilterValue.bind(this);\n this.parent.addEventListener(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(setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(uiUpdate, this.enableAfterRender);\n this.parent.off(filterComplete, this.onActionComplete);\n this.parent.off(inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(keyPressed, this.keyUpHandler);\n this.parent.off(columnPositionChanged, this.columnPositionChanged);\n this.parent.off(headerRefreshed, this.render);\n this.parent.off(filterOpen, this.columnMenuFilter);\n this.parent.off(filterMenuClose, this.filterMenuClose);\n this.parent.off(renderResponsiveChangeAction, this.renderResponsiveChangeAction);\n this.parent.off(click, this.filterIconClickHandler);\n this.parent.off(closeFilterDialog, this.clickHandler);\n this.parent.off(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 if (typeof filterValue === 'string') {\n filterValue = this.parent.sanitize(filterValue);\n }\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(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: actionBegin, cancel: false\n };\n if (this.contentRefresh && this.skipUid(e.properties[\"\" + col])) {\n this.parent.notify(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(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 && this.parent.filterSettings.type === 'Menu' &&\n (col.type === 'date' || col.type === 'datetime')) {\n return (this.checkDateColumnValue(col.value, this.value) &&\n col.operator === this.operator && col.predicate === this.predicate);\n }\n else 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.checkDateColumnValue = function (colDate, filterDate) {\n if (isNullOrUndefined(colDate) && isNullOrUndefined(filterDate)) {\n return true;\n }\n else if (colDate instanceof Date && filterDate instanceof Date) {\n return colDate.getTime() === filterDate.getTime();\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(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(modelChanged, {\n requestType: 'filtering', type: 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);\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')) && !this.parent.enableAdaptiveUI) {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell') && !element.classList.contains('e-stackedheadercell')) {\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 if (this.parent.showColumnMenu && this.filterModule.isDialogOpen) {\n this.parent.isColumnMenuFilterClosing = true;\n }\n this.filterModule.closeDialog();\n if (!this.parent.showColumnMenu) {\n gObj.notify(restoreFocus, {});\n }\n }\n };\n Filter.prototype.updateCrossIcon = function (element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n };\n Filter.prototype.updateFilterMsg = function () {\n if (this.filterSettings.type === 'FilterBar') {\n var gObj = this.parent;\n var getFormatFlValue = void 0;\n var columns = this.filterSettings.columns;\n var column = void 0;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (var index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[parseInt(index.toString(), 10)].uid)\n || gObj.grabColumnByFieldFromAllCols(columns[parseInt(index.toString(), 10)]\n .field, columns[parseInt(index.toString(), 10)].isForeignKey);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n var flValue = (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), (column.type === 'dateonly' ? 'date' : column.type)) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly')) {\n var formater = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n if (this.parent.height === '100%') {\n this.parent.scrollModule.refresh();\n }\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$1({ '=': 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') ?\n document.querySelector('.e-filter-popup') : document.getElementById(this.parent.element.id + '_e-popup') ?\n document.getElementById(this.parent.element.id + '_e-popup').querySelector('.e-filter-popup') : 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}());\n\nvar 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 = /** @__PURE__ @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 _this = this;\n var columnName = (fName === undefined || fName === null || fName.length <= 0) ?\n this.parent.getColumns().map(function (x) { x.autoFit = true; return x.field; }) : (typeof fName === 'string') ? [fName] : fName;\n this.parent.isAutoFitColumns = true;\n if (!isNullOrUndefined(fName) && typeof fName === 'object' && fName.length !== 0) {\n fName.forEach(function (field) {\n if (_this.parent.getColumnByField(field)) {\n _this.parent.getColumnByField(field).autoFit = true;\n }\n });\n }\n else if (typeof fName === 'string' && fName.trim() !== '') {\n this.parent.getColumnByField(fName).autoFit = true;\n }\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 cols = this.parent.getColumns();\n var isMaxWidthCount = 0;\n var newarray = cols.filter(function (c) {\n if (!isNullOrUndefined(c.maxWidth)) {\n isMaxWidthCount++;\n }\n return c.autoFit === true;\n }).map(function (c) { return c.field || c.headerText; });\n if (newarray.length > 0 && !this.parent.preventAutoFit) {\n this.autoFitColumns(newarray);\n }\n var contentTable = this.parent.getContentTable();\n if (this.parent.allowResizing && isMaxWidthCount && (this.parent.resizeSettings.mode === 'Auto' ||\n (this.parent.resizeSettings.mode === 'Normal' && !this.parent.autoFit && newarray.length === 0))) {\n this.widthService.setWidthToTable(contentTable.style.width.indexOf('px') === -1);\n }\n else if (this.parent.autoFit && this.parent.resizeSettings.mode === 'Auto') {\n this.widthService.setWidthToTable();\n }\n if (contentTable.style.width.indexOf('px') !== -1\n && contentTable.getBoundingClientRect().width < contentTable.parentElement.clientWidth) {\n addClass([this.parent.getHeaderTable(), contentTable], ['e-tableborder']);\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 = gridContent;\n var footerDivTag = 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.visible || gObj.groupSettings.columns.length) &&\n (x.width === null || 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 = contentTable.parentElement.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 removeClass([gObj.element], ['e-left-shadow', 'e-right-shadow']);\n }\n else {\n removeClass([headerTable, contentTable], ['e-tableborder']);\n if (gObj.getVisibleFrozenRightCount()) {\n addClass([gObj.element], 'e-right-shadow');\n }\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('.' + gridHeader) && !gridElement.querySelector('.' + 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(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(headerRefreshed, this.refreshHeight, this);\n this.parent.on(refreshResizePosition, this.refreshResizePosition, this);\n this.parent.on(initialEnd, this.wireEvents, this);\n this.parent.on(contentReady, this.autoFit, this);\n this.parent.on(refreshHandlers, this.refreshHeight, this);\n this.parent.on(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(headerRefreshed, this.refreshHeight);\n this.parent.off(refreshResizePosition, this.refreshResizePosition);\n this.parent.off(initialEnd, this.wireEvents);\n this.parent.off(refreshHandlers, this.refreshHeight);\n this.parent.off(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 = '100%';\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(), 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(), 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 = '100%';\n }\n };\n Resize.prototype.callAutoFit = function (e) {\n if (Browser.isDevice && typeof e.preventDefault === 'function' && this.isDblClk) {\n e.preventDefault();\n }\n if (e.target.classList.contains('e-rhandler') && !this.isCancelAutoFit) {\n var col = this.getTargetColumn(e);\n if (col.columns) {\n return;\n }\n this.resizeColumn(col.field, this.parent.getNormalizedColumnIndex(col.uid), col.uid);\n if (this.parent.isFrozenGrid()) {\n this.refreshResizefrzCols(true, true);\n }\n var header = closest(e.target, resizeClassList.header);\n header.classList.add('e-resized');\n }\n };\n Resize.prototype.touchResizeStart = function (e) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n return this.resizeStart(e);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.callAutoFit(e);\n }\n };\n Resize.prototype.resizeStart = function (e) {\n var _this = this;\n if (e.target.classList.contains('e-rhandler')) {\n this.isCancelAutoFit = false;\n var args = { e: e, column: this.getTargetColumn(e) };\n this.parent.trigger(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 if (this.parent.isRowDragable()) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }));\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() === 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 EventHandler.add(document, Browser.touchEndEvent, this.resizeEnd, this);\n EventHandler.add(this.parent.element, Browser.touchMoveEvent, this.resizing, this);\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 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 var _this = this;\n if (Browser.isDevice && typeof e.preventDefault === 'function') {\n e.preventDefault();\n }\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 prevWidth = parseFloat(this.column.width.toString());\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(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 var minMaxCols = this.parent.getColumns().filter(function (col) { return col.visible && (col.maxWidth || col.minWidth); });\n if (this.parent.resizeSettings.mode === 'Auto' && minMaxCols.length) {\n var columns_2 = this.parent.getColumns().filter(function (col) { return col.visible && col.uid !== _this.column.uid; });\n var distributedCols = this.distributeColWidth(columns_2, mousemove, 0);\n if (Math.round(distributedCols.usedWidth) !== Math.abs(mousemove)) {\n finalColumns[0].width = prevWidth + (distributedCols.usedWidth * Math.sign(mousemove));\n }\n finalColumns = finalColumns.concat(distributedCols.columns);\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.distributeColWidth = function (columns, distributeWidth, usedWidth) {\n var incDecWidth = distributeWidth / columns.length;\n var absIncDecWidth = Math.abs(incDecWidth);\n var appliedColumns = [];\n var availableColumns = [];\n var extraWidth = 0;\n for (var _i = 0, columns_3 = columns; _i < columns_3.length; _i++) {\n var col = columns_3[_i];\n var afterIncDec = parseFloat(col.width.toString()) - incDecWidth;\n if (col.minWidth && afterIncDec < parseInt(col.minWidth.toString(), 10)) {\n var remainWidth = parseFloat((parseInt(col.minWidth.toString(), 10) - afterIncDec).toFixed(3));\n extraWidth += remainWidth;\n usedWidth += (absIncDecWidth - remainWidth);\n col.width = col.minWidth;\n appliedColumns.push(col);\n }\n else if (col.maxWidth && afterIncDec > parseInt(col.maxWidth.toString(), 10)) {\n var remainWidth = parseFloat((afterIncDec - parseInt(col.maxWidth.toString(), 10)).toFixed(3));\n extraWidth += remainWidth;\n usedWidth += (absIncDecWidth - remainWidth);\n col.width = col.maxWidth;\n appliedColumns.push(col);\n }\n else {\n usedWidth += absIncDecWidth;\n col.width = afterIncDec;\n availableColumns.push(col);\n }\n }\n var distributedCols = extraWidth && availableColumns.length\n ? this.distributeColWidth(availableColumns, extraWidth * Math.sign(distributeWidth), usedWidth)\n : { columns: availableColumns, usedWidth: usedWidth };\n return { columns: appliedColumns.concat(distributedCols.columns), usedWidth: distributedCols.usedWidth };\n };\n Resize.prototype.calulateColumnsWidth = function (columns, isUpdate, mousemove) {\n var finalColumns = [];\n for (var _i = 0, columns_4 = columns; _i < columns_4.length; _i++) {\n var col = columns_4[_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 if (Browser.isDevice) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n }\n this.updateCursor('remove');\n detach(this.helper);\n var args = { e: e, column: this.column };\n var content$1 = this.parent.getContent().querySelector('.' + content);\n var cTable = content$1;\n if (cTable.scrollHeight > cTable.clientHeight) {\n this.parent.scrollModule.setPadding();\n cTable.style.overflowY = 'scroll';\n }\n this.parent.trigger(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(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 removeClass([gObj.element], ['e-left-shadow', 'e-right-shadow']);\n }\n else {\n removeClass([headerTable, contentTable], ['e-tableborder']);\n if (gObj.getVisibleFrozenRightCount()) {\n addClass([gObj.element], 'e-right-shadow');\n }\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_5 = columns; _b < columns_5.length; _b++) {\n var column = columns_5[_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}());\n\n/**\n *\n * The `Reorder` module is used for reordering columns.\n */\nvar Reorder = /** @__PURE__ @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(headerDrop, this.headerDrop, this);\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(reorderComplete, this.onActionComplete, this);\n this.parent.on(columnDrag, this.drag, this);\n this.parent.on(columnDragStart, this.dragStart, this);\n this.parent.on(columnDragStop, this.dragStop, this);\n this.parent.on(headerDrop, this.headerDrop, this);\n this.parent.on(headerRefreshed, this.createReorderElement, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(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(closest(srcElem, 'thead').children, srcElem.parentElement)\n === Array.prototype.indexOf.call(closest(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 (!closest(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 = closest(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(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(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(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 if (!(parent && parent.columns)) {\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.preventAutoFit = true;\n gObj.notify(columnPositionChanged, { fromIndex: destIndex, toIndex: srcIdx });\n if (preventRefresh !== false) {\n gObj.notify(modelChanged, {\n type: 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(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('.' + 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.preventAutoFit = false;\n this.parent.trigger(actionComplete, extend$1(e, { type: 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('.' + gridHeader) &&\n !gridElement.querySelector('.' + 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(headerDrop, this.headerDrop);\n this.parent.off(uiUpdate, this.enableAfterRender);\n this.parent.off(reorderComplete, this.onActionComplete);\n this.parent.off(columnDrag, this.drag);\n this.parent.off(columnDragStart, this.dragStart);\n this.parent.off(columnDragStop, this.dragStop);\n this.parent.off(headerRefreshed, this.createReorderElement);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(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$1 = closest(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$1 && !closest$1.isEqualNode(this.element)) {\n target = closest$1;\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$1 && closest$1.isEqualNode(this.element) &&\n !((gObj.allowGrouping && e.column.allowGrouping) || e.column.allowReordering)) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n else if (!closest$1 && !(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(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(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(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}());\n\n// eslint-disable-next-line valid-jsdoc, jsdoc/require-param, jsdoc/require-returns\n/**\n *\n * Reorder module is used to handle row reordering.\n *\n * @hidden\n */\nvar RowDD = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function RowDD(parent) {\n var _this = this;\n this.selectedRows = [];\n this.isOverflowBorder = true;\n this.selectedRowColls = [];\n this.isRefresh = true;\n this.isReplaceDragEle = true;\n this.istargetGrid = false;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n if (!isNullOrUndefined(target) && gObj.rowDropSettings.targetID && !isNullOrUndefined(target.classList) && !target.classList.contains('e-rowcell')) {\n target = parentsUntil(target, 'e-rowcell');\n }\n var visualElement = _this.parent.createElement('div', {\n className: 'e-cloneproperties e-draganddrop e-grid e-dragclone',\n styles: 'height:\"auto\", z-index:2, width:' + gObj.element.offsetWidth\n });\n var table = _this.parent.createElement('table', { styles: 'width:' + gObj.element.offsetWidth, attrs: { role: 'grid' } });\n var tbody$1 = _this.parent.createElement(tbody, { attrs: { role: 'rowgroup' } });\n if (document.getElementsByClassName('e-griddragarea').length ||\n (gObj.rowDropSettings.targetID && ((!isNullOrUndefined(target) && !target.classList.contains('e-selectionbackground')\n && gObj.selectionSettings.type !== 'Single') || !parentsUntil(target, 'e-rowcell'))) ||\n (!gObj.rowDropSettings.targetID && !parentsUntil(target, 'e-rowdragdrop'))) {\n return false;\n }\n if (gObj.rowDropSettings.targetID &&\n gObj.selectionSettings.mode === 'Row' && gObj.selectionSettings.type === 'Single') {\n gObj.selectRow(parseInt(_this.draggable.currentStateTarget.parentElement.getAttribute(dataRowIndex), 10));\n }\n _this.startedRow = closest(target, 'tr').cloneNode(true);\n if (_this.parent.isFrozenGrid()) {\n var nodes = [].slice.call(_this.startedRow.querySelectorAll('.e-rowcell'));\n for (var i = 0; i < nodes.length; i++) {\n removeClass([nodes[parseInt(i.toString(), 10)]], ['e-leftfreeze', 'e-freezeleftborder', 'e-fixedfreeze', 'e-freezerightborder', 'e-rightfreeze', 'e-unfreeze']);\n nodes[parseInt(i.toString(), 10)].removeAttribute('style');\n }\n }\n _this.processArgs(target);\n var args = {\n selectedRow: _this.rows, dragelement: target,\n cloneElement: visualElement, cancel: false, data: _this.rowData\n };\n var selectedRows = gObj.getSelectedRows();\n gObj.trigger(rowDragStartHelper, args);\n var cancel = 'cancel';\n if (args[\"\" + cancel]) {\n return false;\n }\n removeElement(_this.startedRow, '.e-indentcell');\n removeElement(_this.startedRow, '.e-detailrowcollapse');\n removeElement(_this.startedRow, '.e-detailrowexpand');\n if (!(gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache)) {\n _this.removeCell(_this.startedRow, gridChkBox);\n }\n var exp = new RegExp('e-active', 'g'); //high contrast issue\n _this.startedRow.innerHTML = _this.startedRow.innerHTML.replace(exp, '');\n tbody$1.appendChild(_this.startedRow);\n if (gObj.getSelectedRowIndexes().length > 1 && _this.startedRow.hasAttribute('aria-selected')) {\n var dropCountEle = _this.parent.createElement('span', {\n className: 'e-dropitemscount', innerHTML: '' + selectedRows.length\n });\n visualElement.appendChild(dropCountEle);\n }\n var ele = closest(target, 'tr').querySelector('.e-icon-rowdragicon');\n if (ele) {\n ele.classList.add('e-dragstartrow');\n }\n table.appendChild(tbody$1);\n visualElement.appendChild(table);\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n if ((gObj.enableVirtualization || gObj.infiniteScrollSettings.enableCache) && gObj.allowGrouping &&\n gObj.groupSettings.columns.length && !isNullOrUndefined(e.target.closest('tr'))) {\n var dragTrs = e.dragElement.querySelectorAll('tr');\n var indentCells = e.target.closest('tr').querySelectorAll('.e-indentcell');\n for (var i = 0; i < dragTrs.length; i++) {\n for (var j = 0; j < indentCells.length; j++) {\n var cloneIndentCell = indentCells[parseInt(j.toString(), 10)].cloneNode(true);\n dragTrs[parseInt(i.toString(), 10)].insertBefore(cloneIndentCell, dragTrs[parseInt(i.toString(), 10)].firstElementChild);\n }\n }\n }\n if (gObj.element.classList.contains('e-childgrid')) {\n var parentGrid = _this.getParentGrid(gObj.element);\n parentGrid.appendChild(e.dragElement);\n gObj.element.appendChild(gObj.createElement('div', { className: 'e-drag-ref' }));\n }\n document.body.classList.add('e-prevent-select');\n if (document.getElementsByClassName('e-griddragarea').length) {\n return;\n }\n var target = e.target;\n var spanCssEle = _this.parent.element.querySelector('.e-dropitemscount');\n if (_this.parent.getSelectedRecords().length > 1 && spanCssEle) {\n spanCssEle.style.left = _this.parent.element.querySelector('.e-cloneproperties table')\n .offsetWidth - 5 + 'px';\n }\n _this.processArgs(target);\n gObj.trigger(rowDragStart, {\n rows: _this.rows, target: e.target,\n draggableType: 'rows', fromIndex: parseInt(_this.rows[0].getAttribute(dataRowIndex), 10),\n data: (_this.rowData[0] && Object.keys(_this.rowData[0]).length > 0) ? _this.rowData : _this.currentViewData()\n });\n _this.dragStartData = _this.rowData;\n var dropElem = document.getElementById(gObj.rowDropSettings.targetID);\n if (gObj.rowDropSettings.targetID && dropElem && dropElem.ej2_instances &&\n dropElem.ej2_instances[0].getModuleName() === 'grid') {\n dropElem.ej2_instances[0].getContent().classList.add('e-allowRowDrop');\n }\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n _this.isDropGrid = _this.parent;\n _this.istargetGrid = false;\n if (_this.parent.rowDropSettings.targetID) {\n var dropElement = document.getElementById(gObj.rowDropSettings.targetID);\n _this.isDropGrid = dropElement.ej2_instances[0];\n if (parentsUntil(e.target, 'e-grid')) {\n _this.istargetGrid = _this.parent.rowDropSettings.targetID === parentsUntil(e.target, 'e-grid').id;\n }\n }\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (gObj.element.classList.contains('e-childgrid')) {\n var parentGrid = _this.getParentGrid(gObj.element);\n cloneElement = parentGrid.querySelector('.e-cloneproperties');\n }\n var target = _this.getElementFromPosition(cloneElement, e.event);\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur', 'e-movecur', 'e-grabcur']);\n _this.isOverflowBorder = true;\n _this.hoverState = gObj.enableHover;\n var trElement = parentsUntil(target, 'e-grid') ? closest(e.target, 'tr') : null;\n if (!e.target) {\n return;\n }\n _this.processArgs(target);\n if (gObj.enableVirtualization && isNullOrUndefined(_this.rows[0])) {\n classList(cloneElement, ['e-notallowedcur'], ['e-movecur']);\n }\n var args = {\n rows: _this.rows, target: target, draggableType: 'rows',\n data: _this.rowData, originalEvent: e, cancel: false\n };\n gObj.trigger(rowDrag, args);\n _this.stopTimer();\n if (args.cancel) {\n return;\n }\n gObj.element.classList.add('e-rowdrag');\n if (trElement && (parentsUntil(target, 'e-grid').id === cloneElement.parentElement.id || parentsUntil(target, 'e-grid').id)) {\n if (_this.isDropGrid.element.querySelector('.e-emptyrow')) {\n _this.dragTarget = 0;\n }\n else {\n _this.dragTarget = parseInt(trElement.getAttribute('data-rowindex'), 10);\n }\n }\n else {\n _this.dragTarget = parseInt(_this.startedRow.getAttribute('data-rowindex'), 10);\n }\n if (gObj.rowDropSettings.targetID) {\n var dragParentElement = document.querySelector('.e-drag-ref');\n if (!parentsUntil(target, 'e-grid') || (dragParentElement\n && parentsUntil(dragParentElement.parentElement, 'e-grid').id === parentsUntil(target, 'e-grid').id) ||\n parentsUntil(cloneElement.parentElement, 'e-grid').id === parentsUntil(target, 'e-grid').id) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n else {\n classList(cloneElement, ['e-grabcur'], ['e-notallowedcur']);\n }\n }\n else {\n var element = parentsUntil(target, 'e-grid');\n if (element && element.id === cloneElement.parentElement.id && parentsUntil(target, 'e-row') &&\n !parentsUntil(target, 'e-addedrow')) {\n classList(cloneElement, ['e-movecur'], ['e-defaultcur']);\n }\n else {\n classList(cloneElement, ['e-notallowedcur'], ['e-movecur']);\n }\n }\n if (parentsUntil(_this.isDropGrid.element, 'e-grid')) {\n if ((!_this.isDropGrid.groupSettings.columns.length || _this.isDropGrid.groupSettings.columns.length)\n && !_this.isDropGrid.element.querySelector('.e-emptyrow')) {\n if (parentsUntil(target, 'e-grid') && parentsUntil(target, 'e-grid').id === _this.isDropGrid.element.id) {\n _this.updateScrollPostion(e.event);\n }\n if (((_this.isOverflowBorder || _this.parent.frozenRows > _this.dragTarget) &&\n (parseInt(_this.startedRow.getAttribute(dataRowIndex), 10) !== _this.dragTarget || _this.istargetGrid))\n || (_this.istargetGrid && trElement && _this.isDropGrid.getRowByIndex(_this.isDropGrid.getCurrentViewRecords().length - 1).\n getAttribute('data-uid') === trElement.getAttribute('data-uid'))) {\n _this.moveDragRows(e, _this.startedRow, trElement);\n }\n else {\n var islastRowIndex = void 0;\n if (_this.parent.enableVirtualization) {\n islastRowIndex = trElement && parseInt(trElement.getAttribute(dataRowIndex), 10) ===\n _this.parent.renderModule.data.dataManager.dataSource.json.length - 1;\n }\n else {\n var rowIndex = _this.parent.enableInfiniteScrolling && _this.parent.infiniteScrollSettings.enableCache &&\n !_this.parent.groupSettings.enableLazyLoading ?\n _this.parent.pageSettings.currentPage * _this.parent.pageSettings.pageSize - 1 :\n _this.parent.getCurrentViewRecords().length - 1;\n var lastRow = _this.parent.getRowByIndex(rowIndex);\n islastRowIndex = trElement && lastRow && lastRow.getAttribute('data-uid') === trElement.getAttribute('data-uid') &&\n lastRow.getAttribute('data-uid') !== _this.startedRow.getAttribute('data-uid');\n if (_this.isNewRowAdded() && _this.parent.editSettings.newRowPosition === 'Bottom') {\n islastRowIndex = false;\n }\n }\n if (islastRowIndex && !_this.parent.rowDropSettings.targetID) {\n var bottomborder = _this.parent.createElement('div', { className: 'e-lastrow-dragborder' });\n var gridcontentEle = _this.parent.getContent();\n bottomborder.style.width = _this.parent.element.offsetWidth - _this.getScrollWidth() + 'px';\n if (_this.parent.enableVirtualization) {\n bottomborder.style.zIndex = '1';\n }\n if (!gridcontentEle.getElementsByClassName('e-lastrow-dragborder').length &&\n (!(gObj.allowGrouping && gObj.groupSettings.columns.length) || isNullOrUndefined(trElement.nextSibling))) {\n gridcontentEle.classList.add('e-grid-relative');\n gridcontentEle.appendChild(bottomborder);\n bottomborder.style.bottom = _this.getScrollWidth() + 'px';\n }\n }\n _this.removeBorder(trElement);\n }\n }\n if (target && target.classList.contains(content)\n && !_this.isDropGrid.element.querySelector('.e-emptyrow') && _this.istargetGrid) {\n _this.removeBorder(trElement);\n var rowIndex = _this.isDropGrid.getCurrentViewRecords().length - 1;\n var selector = '.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse';\n var groupSelector = '.e-rowcell:not(.e-hide),.e-rowdragdrop:not(.e-hide),.e-detailrowcollapse:not(.e-hide)';\n var rowElement = [];\n if (_this.parent.allowGrouping && _this.parent.groupSettings.columns && _this.parent.groupSettings.columns.length) {\n rowElement = [].slice.call(_this.isDropGrid.getRowByIndex(rowIndex).querySelectorAll(groupSelector));\n }\n else {\n rowElement = [].slice.call(_this.isDropGrid.getRowByIndex(rowIndex).querySelectorAll(selector));\n }\n if (rowElement.length > 0) {\n if (_this.parent.allowGrouping && _this.parent.groupSettings.columns && _this.parent.groupSettings.columns.length) {\n _this.groupRowDDIndicator(rowElement, true);\n }\n else {\n addRemoveActiveClasses(rowElement, true, 'e-dragborder');\n }\n }\n }\n }\n };\n this.dragStop = function (e) {\n if (_this.parent.isCheckBoxSelection && _this.parent.enableInfiniteScrolling) {\n window.getSelection().removeAllRanges();\n }\n document.body.classList.remove('e-prevent-select');\n if (isActionPrevent(_this.parent)) {\n _this.parent.notify(preventBatch, {\n instance: _this, handler: _this.processDragStop, arg1: e\n });\n }\n else {\n _this.processDragStop(e);\n }\n };\n this.processDragStop = function (e) {\n var gObj = _this.parent;\n if (_this.parent.isDestroyed) {\n return;\n }\n var targetEle = _this.getElementFromPosition(e.helper, e.event);\n var target = targetEle && !targetEle.classList.contains('e-dlg-overlay') ?\n targetEle : e.target;\n gObj.element.classList.remove('e-rowdrag');\n var dropElement = document.getElementById(gObj.rowDropSettings.targetID);\n if (gObj.rowDropSettings.targetID && dropElement && dropElement.ej2_instances &&\n dropElement.ej2_instances[0].getModuleName() === 'grid') {\n dropElement.ej2_instances[0].getContent().classList.remove('e-allowRowDrop');\n }\n if (parentsUntil(_this.isDropGrid.element, 'e-grid')) {\n _this.stopTimer();\n _this.isDropGrid.enableHover = _this.hoverState;\n _this.isDropGrid.getContent().classList.remove('e-grid-relative');\n _this.removeBorder(targetEle);\n var stRow = _this.isDropGrid.element.querySelector('.e-dragstartrow');\n if (stRow) {\n stRow.classList.remove('e-dragstartrow');\n }\n }\n _this.processArgs(target);\n if (gObj.enableVirtualization && isNullOrUndefined(_this.rows[0])) {\n return;\n }\n var args = {\n target: target, draggableType: 'rows',\n cancel: false,\n fromIndex: parseInt(_this.rows[0].getAttribute(dataRowIndex), 10),\n dropIndex: _this.dragTarget, rows: _this.rows,\n data: (Object.keys(_this.dragStartData[0]).length > 0) ? _this.dragStartData : _this.currentViewData()\n };\n gObj.trigger(rowDrop, args, function () {\n if (!(parentsUntil(target, row) || parentsUntil(target, 'e-emptyrow')\n || parentsUntil(target, gridContent)) || args.cancel) {\n _this.dragTarget = null;\n remove(e.helper);\n return;\n }\n _this.isRefresh = false;\n var selectedIndexes = _this.parent.getSelectedRowIndexes();\n if (gObj.isRowDragable()) {\n if (!_this.parent.rowDropSettings.targetID &&\n _this.startedRow.querySelector('td.e-selectionbackground') && selectedIndexes.length > 1 &&\n selectedIndexes.length !== _this.parent.getCurrentViewRecords().length) {\n _this.reorderRows(selectedIndexes, args.dropIndex);\n }\n else {\n _this.reorderRows([parseInt(_this.startedRow.getAttribute(dataRowIndex), 10)], _this.dragTarget);\n }\n _this.dragTarget = null;\n if (!gObj.rowDropSettings.targetID) {\n if (e.helper.classList.contains('e-cloneproperties') && document.querySelector('.' + e.helper.classList[0])) {\n remove(e.helper);\n }\n if (gObj.enableVirtualization && !gObj.sortSettings.columns.length && !gObj.filterSettings.columns.length &&\n (!_this.parent.allowGrouping || !gObj.groupSettings.columns.length)) {\n gObj.refresh();\n }\n else {\n _this.rowOrder(args);\n }\n }\n if (_this.parent.getContentTable().scrollHeight < _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setLastRowCell();\n }\n }\n _this.isRefresh = true;\n });\n };\n this.removeCell = function (targetRow, className) {\n return [].slice.call(targetRow.querySelectorAll('td')).filter(function (cell) {\n if (cell.classList.contains(className)) {\n targetRow.deleteCell(cell.cellIndex);\n }\n });\n };\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.initializeDrag, this);\n this.parent.on(columnDrop, this.columnDrop, this);\n this.parent.on(rowDragAndDropComplete, this.onActionComplete, this);\n this.onDataBoundFn = this.onDataBound.bind(this);\n this.parent.addEventListener(dataBound, this.onDataBoundFn);\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(destroy, this.destroy, this);\n }\n RowDD.prototype.getParentGrid = function (childGrid) {\n var parentGrid = childGrid;\n var parentGridObtained = false;\n while (!parentGridObtained) {\n if (parentGrid.ej2_instances[0].parentDetails) {\n parentGrid = document.getElementById(parentGrid.ej2_instances[0].parentDetails.parentID);\n }\n if (!parentGrid.classList.contains('e-childgrid')) {\n parentGridObtained = true;\n }\n }\n return parentGrid;\n };\n RowDD.prototype.isNewRowAdded = function () {\n return this.parent.editSettings && this.parent.editSettings.showAddNewRow &&\n !(this.parent.enableInfiniteScrolling || this.parent.enableVirtualization);\n };\n RowDD.prototype.groupRowDDIndicator = function (rowElement, isAdd) {\n addRemoveActiveClasses([rowElement[0]], isAdd, 'e-dragleft');\n addRemoveActiveClasses(rowElement, isAdd, 'e-dragtop', 'e-dragbottom');\n addRemoveActiveClasses([rowElement[rowElement.length - 1]], isAdd, 'e-dragright');\n };\n RowDD.prototype.refreshRow = function (args, tbody$1, target) {\n var gObj = this.parent;\n var tbodyContent = gObj.getContentTable().querySelector(tbody);\n var tbodyHeader = gObj.getHeaderTable().querySelector(tbody);\n for (var i = 0, len = args.rows.length; i < len; i++) {\n var row$1 = args.rows[parseInt(i.toString(), 10)];\n if (((gObj.enableVirtualization && gObj.allowGrouping && gObj.groupSettings.columns.length) ||\n (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache)) &&\n args.rows.length === 1) {\n var removeElem = gObj.getRowElementByUID(row$1.getAttribute('data-uid'));\n if (!isNullOrUndefined(removeElem)) {\n remove(removeElem);\n }\n }\n var dragstartrow = row$1.querySelector('.e-dragstartrow');\n if (dragstartrow) {\n dragstartrow.classList.remove('e-dragstartrow');\n }\n tbody$1.insertBefore(row$1, target);\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n var dragRowUid = row$1.getAttribute('data-uid');\n var dropRowUid = args.target.parentElement.getAttribute('data-uid');\n var dragRowObject = gObj.getRowObjectFromUID(dragRowUid);\n var dropRowObject = gObj.getRowObjectFromUID(dropRowUid);\n if (dragRowObject.parentUid !== dropRowObject.parentUid) {\n gObj['groupModule'].groupReorderHandler(dragRowObject, dropRowObject);\n }\n }\n }\n var tr = [].slice.call(gObj.editSettings.showAddNewRow ?\n tbody$1.querySelectorAll('.e-row:not(.e-addedrow)') : tbody$1.getElementsByClassName(row));\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (gObj.groupSettings.enableLazyLoading || (gObj.enableInfiniteScrolling &&\n gObj.infiniteScrollSettings.enableCache && tr.length > gObj.pageSettings.pageSize * 3)) {\n gObj.refresh();\n }\n else {\n groupReorderRowObject(this.parent, args, tr);\n if (gObj.enableVirtualization || (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache)) {\n resetCachedRowIndex(gObj);\n }\n else {\n resetRowIndex(this.parent, gObj.getRowsObject().filter(function (data) { return data.isDataRow; }), tr);\n }\n this.parent.notify(refreshExpandandCollapse, {\n rows: gObj.enableVirtualization ? this.parent.vRows : this.parent.getRowsObject()\n });\n }\n }\n else if (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.columns.length) {\n if (tr.length > gObj.pageSettings.pageSize * 3) {\n gObj.refresh();\n }\n else {\n groupReorderRowObject(this.parent, args, tr);\n resetCachedRowIndex(gObj);\n }\n }\n else {\n this.refreshData(tr);\n }\n if (this.parent.frozenRows) {\n for (var i = 0, len = tr.length; i < len; i++) {\n if (i < this.parent.frozenRows) {\n tbodyHeader.appendChild(tr[parseInt(i.toString(), 10)]);\n }\n else {\n tbodyContent.appendChild(tr[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n RowDD.prototype.updateFrozenRowreOrder = function (args) {\n var gObj = this.parent;\n var tbodyC = gObj.getContentTable().querySelector(tbody);\n var tbodyH = gObj.getHeaderTable().querySelector(tbody);\n var tr = [].slice.call(tbodyH.getElementsByClassName(row)).concat([].slice.call(tbodyC.getElementsByClassName(row)));\n var tbody$1 = gObj.createElement(tbody, { attrs: { role: 'rowgroup' } });\n if (!gObj.selectionSettings.persistSelection && Object.keys(gObj.selectionModule.selectedRowState).length === 0) {\n this.parent.clearSelection();\n }\n else {\n this.parent.clearRowSelection();\n }\n var targetRow = this.refreshRowTarget(args);\n for (var i = 0, len = tr.length; i < len; i++) {\n tbody$1.appendChild(tr[parseInt(i.toString(), 10)]);\n }\n this.refreshRow(args, tbody$1, targetRow);\n };\n RowDD.prototype.refreshRowTarget = function (args) {\n var gObj = this.parent;\n var targetIdx = parseInt(args.target.parentElement.getAttribute(dataRowIndex), 10);\n if (gObj.enableVirtualization && gObj.allowGrouping && gObj.groupSettings.columns.length) {\n targetIdx = this.parent.getDataRows().indexOf(args.target.parentElement);\n }\n if ((args.fromIndex < args.dropIndex || args.fromIndex === args.dropIndex) && (!gObj.allowGrouping ||\n !gObj.groupSettings.columns.length)) {\n targetIdx = targetIdx + 1;\n }\n var targetTR = gObj.getRowByIndex(targetIdx);\n if (targetIdx === gObj.getRows().length && this.isNewRowAdded() && this.parent.editSettings.newRowPosition === 'Bottom') {\n targetTR = this.parent.element.querySelector('.e-row.e-addedrow');\n }\n var tr = gObj.allowGrouping && gObj.groupSettings.columns.length && targetIdx !== -1 &&\n args.fromIndex < args.dropIndex && targetTR ? targetTR.nextSibling : targetTR;\n return tr;\n };\n RowDD.prototype.updateFrozenColumnreOrder = function (args) {\n var gObj = this.parent;\n var tbody$1 = gObj.getContentTable().querySelector(tbody);\n if (!gObj.selectionSettings.persistSelection && Object.keys(gObj.selectionModule.selectedRowState).length === 0) {\n this.parent.clearSelection();\n }\n else {\n this.parent.clearRowSelection();\n }\n var targetRow = this.refreshRowTarget(args);\n this.refreshRow(args, tbody$1, targetRow);\n };\n RowDD.prototype.refreshData = function (tr) {\n var rowObj = {};\n var recordobj = {};\n var rowObjects = this.parent.getRowsObject();\n var currentViewData = this.parent.getCurrentViewRecords();\n for (var i = 0, len = tr.length; i < len; i++) {\n var index = parseInt(tr[parseInt(i.toString(), 10)].getAttribute(dataRowIndex), 10);\n rowObj[parseInt(i.toString(), 10)] = rowObjects[parseInt(index.toString(), 10)];\n recordobj[parseInt(i.toString(), 10)] = currentViewData[parseInt(index.toString(), 10)];\n }\n var rows = this.parent.getRows();\n for (var i = 0, len = tr.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = tr[parseInt(i.toString(), 10)];\n rowObjects[parseInt(i.toString(), 10)] = rowObj[parseInt(i.toString(), 10)];\n currentViewData[parseInt(i.toString(), 10)] = recordobj[parseInt(i.toString(), 10)];\n }\n resetRowIndex(this.parent, rowObjects, tr);\n };\n RowDD.prototype.rowOrder = function (args) {\n if (args.dropIndex === args.fromIndex || isNaN(args.dropIndex) || parentsUntil(args.target, 'e-groupcaption')) {\n return;\n }\n if (this.parent.isDetail()) {\n this.parent.detailCollapseAll();\n var rows = [].slice.call(this.parent.getContentTable().querySelector(tbody).children);\n var rowObjects = this.parent.getRowsObject();\n rows.filter(function (row) {\n if (row.classList.contains('e-detailrow')) {\n row.remove();\n }\n });\n for (var i = 0, len = rowObjects.length; i < len; i++) {\n if (!rowObjects[parseInt(i.toString(), 10)]) {\n break;\n }\n if (rowObjects[parseInt(i.toString(), 10)].isDetailRow) {\n this.parent.getRowsObject().splice(i, 1);\n i--;\n }\n }\n }\n if (args.target.classList.contains('e-rowcelldrag') || args.target.classList.contains('e-dtdiagonalright')\n || args.target.classList.contains('e-dtdiagonaldown')) {\n args.target = args.target.parentElement;\n }\n if (!args.target.classList.contains('e-rowcell') && parentsUntil(args.target, 'e-rowcell')) {\n args.target = parentsUntil(args.target, 'e-rowcell');\n }\n if (this.parent.frozenRows) {\n this.updateFrozenRowreOrder(args);\n }\n else {\n this.updateFrozenColumnreOrder(args);\n }\n if ((!this.parent.allowGrouping || !this.parent.groupSettings.columns.length) && this.selectedRowColls.length > 0) {\n this.parent.selectRows(this.selectedRowColls);\n var indexes = [];\n if (this.parent.filterSettings.columns.length || this.parent.sortSettings.columns.length) {\n for (var i = 0, len = args.rows.length; i < len; i++) {\n indexes.push(parseInt(args.rows[parseInt(i.toString(), 10)].getAttribute(dataRowIndex), 10));\n }\n this.selectedRowColls = indexes;\n }\n this.selectedRowColls = [];\n }\n else {\n this.selectedRowColls = [];\n }\n };\n RowDD.prototype.currentViewData = function () {\n var selectedIndexes = this.parent.getSelectedRowIndexes();\n var currentVdata = [];\n var fromIdx = parseInt(this.startedRow.getAttribute(dataRowIndex), 10);\n for (var i = 0, n = selectedIndexes.length; i < n; i++) {\n var currentV = 'currentViewData';\n currentVdata[parseInt(i.toString(), 10)] = this.parent[\"\" + currentV][selectedIndexes[parseInt(i.toString(), 10)]];\n }\n if (!this.parent.rowDropSettings.targetID && selectedIndexes.length === 0) {\n currentVdata[0] = this.parent.currentViewData[parseInt(fromIdx.toString(), 10)];\n }\n return currentVdata;\n };\n // private saveChange(changeRecords: object, query: Query): void {\n // this.parent.getDataModule().saveChanges(changeRecords, this.parent.getPrimaryKeyFieldNames()[0], {}, query)\n // .then(() => {\n // this.parent.notify(events.modelChanged, {\n // type: events.actionBegin, requestType: 'rowdraganddrop'\n // });\n // }).catch((e: Error) => {\n // const error: string = 'error';\n // const message: string = 'message';\n // if (!isNullOrUndefined(e[`${error}`]) && !isNullOrUndefined(e[`${error}`][`${message}`])) {\n // e[`${error}`] = e[`${error}`][`${message}`];\n // }\n // this.parent.trigger(events.actionFailure, e);\n // });\n // }\n RowDD.prototype.reorderRows = function (fromIndexes, toIndex) {\n var selectedIndexes = this.parent.getSelectedRowIndexes();\n var selectedRecords = [];\n var draggedRecords = [];\n var currentViewData = this.parent.getDataModule().isRemote() ? this.parent.getCurrentViewRecords() :\n this.parent.renderModule.data.dataManager.dataSource.json;\n var skip = this.parent.allowPaging ?\n (this.parent.pageSettings.currentPage * this.parent.pageSettings.pageSize) - this.parent.pageSettings.pageSize : 0;\n var dropIdx = toIndex + skip;\n var actualIdx = fromIndexes[0] + skip;\n for (var i = 0, len = fromIndexes.length; i < len; i++) {\n draggedRecords[parseInt(i.toString(), 10)] = currentViewData[fromIndexes[parseInt(i.toString(), 10)] + skip];\n }\n for (var i = 0, len = selectedIndexes.length; i < len; i++) {\n selectedRecords[parseInt(i.toString(), 10)] = currentViewData[selectedIndexes[parseInt(i.toString(), 10)] + skip];\n }\n for (var i = 0, len = draggedRecords.length; i < len; i++) {\n if (i !== 0) {\n for (var j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(currentViewData[parseInt(j.toString(), 10)]) ===\n JSON.stringify(draggedRecords[parseInt(i.toString(), 10)])) {\n actualIdx = j;\n break;\n }\n }\n for (var j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(currentViewData[parseInt(j.toString(), 10)]) === JSON\n .stringify(draggedRecords[i - 1])) {\n if (actualIdx > j) {\n dropIdx = j + 1;\n }\n break;\n }\n }\n }\n this.reorderRow(actualIdx - skip, dropIdx - skip);\n }\n if (this.isRefresh) {\n this.parent.notify(modelChanged, {\n type: actionBegin, requestType: 'rowdraganddrop'\n });\n }\n for (var i = 0, len = selectedRecords.length; i < len; i++) {\n for (var j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(currentViewData[parseInt(j.toString(), 10)]) === JSON\n .stringify(selectedRecords[parseInt(i.toString(), 10)])) {\n selectedIndexes[parseInt(i.toString(), 10)] = j - skip;\n break;\n }\n }\n }\n this.selectedRowColls = selectedIndexes;\n };\n RowDD.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n RowDD.prototype.onActionComplete = function (e) {\n this.parent.trigger(actionComplete, extend$1(e, { type: actionComplete, requestType: 'rowdraganddrop' }));\n };\n RowDD.prototype.initializeDrag = function () {\n var gObj = this.parent;\n this.draggable = new Draggable(gObj.element, {\n dragTarget: '.e-rowcelldrag, .e-rowdragdrop, .e-rowcell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n isReplaceDragEle: this.isReplaceDragEle,\n isPreventSelect: false,\n isPreventScroll: true\n });\n };\n RowDD.prototype.updateScrollPostion = function (e) {\n var _this = this;\n var y = getPosition(e).y;\n var cliRect = this.isDropGrid.getContent().getBoundingClientRect();\n var rowHeight = this.isDropGrid.getRowHeight() - 15;\n var scrollElem = this.isDropGrid.getContent().firstElementChild;\n var virtualScrollbtm = this.parent.enableVirtualization ? 20 : 0;\n if (cliRect.top >= y) {\n var scrollPixel_1 = -(this.isDropGrid.getRowHeight());\n this.isOverflowBorder = false;\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollElem, scrollPixel_1); }, 200);\n }\n else if (cliRect.top + this.isDropGrid.getContent().clientHeight - rowHeight - 33 - virtualScrollbtm <= y) {\n var scrollPixel_2 = (this.isDropGrid.getRowHeight());\n this.isOverflowBorder = false;\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollElem, scrollPixel_2); }, 200);\n }\n };\n RowDD.prototype.setScrollDown = function (scrollElem, scrollPixel) {\n scrollElem.scrollTop = scrollElem.scrollTop + scrollPixel;\n };\n RowDD.prototype.moveDragRows = function (e, startedRow, targetRow) {\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n if (this.parent.element.classList.contains('e-childgrid')) {\n var parentGrid = this.getParentGrid(this.parent.element);\n cloneElement = parentGrid.querySelector('.e-cloneproperties');\n }\n var element = closest(e.target, 'tr');\n if (parentsUntil(element, 'e-grid') &&\n ((!this.parent.rowDropSettings.targetID &&\n parentsUntil(cloneElement.parentElement, 'e-grid').id === parentsUntil(element, 'e-grid').id) || this.istargetGrid)) {\n var targetElement = element;\n if (!element) {\n targetElement = startedRow;\n }\n this.setBorder(targetElement, e.event, startedRow, targetRow);\n }\n };\n RowDD.prototype.setBorder = function (element, event, startedRow, targetRow) {\n var node = this.parent.element;\n if (this.istargetGrid) {\n node = this.isDropGrid.element;\n }\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n this.removeBorder(element);\n }\n else {\n this.removeFirstRowBorder(element);\n this.removeLastRowBorder(element);\n }\n if (parentsUntil(element, 'e-grid') && element.classList.contains(row) && ((!this.parent.rowDropSettings.targetID &&\n parentsUntil(cloneElement.parentElement, 'e-grid').id === parentsUntil(element, 'e-grid').id) || this.istargetGrid)) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns && this.parent.groupSettings.columns.length) {\n removeClass(node.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'), ['e-dragtop', 'e-dragright',\n 'e-dragbottom', 'e-dragleft']);\n }\n else {\n removeClass(node.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'), ['e-dragborder']);\n }\n var rowElement = [];\n var targetRowIndex = parseInt(targetRow.getAttribute(dataRowIndex), 10);\n if (targetRow && targetRowIndex === 0 &&\n !(this.isNewRowAdded() && this.parent.editSettings.newRowPosition === 'Top')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n element = targetRow;\n rowElement = [].slice.call(element\n .querySelectorAll('.e-groupcaption,.e-summarycell,.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n else {\n var div = this.parent.createElement('div', { className: 'e-firstrow-dragborder' });\n var gridheaderEle = this.isDropGrid.getHeaderContent();\n gridheaderEle.classList.add('e-grid-relative');\n div.style.width = node.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridheaderEle.getElementsByClassName('e-firstrow-dragborder').length) {\n if (this.parent.frozenRows) {\n if (this.parent.isFrozenGrid()) {\n div.style.width = this.parent.getContent().firstElementChild.scrollWidth + 'px';\n }\n gridheaderEle.querySelector('thead').appendChild(div);\n div.style.position = 'relative';\n }\n else {\n gridheaderEle.appendChild(div);\n }\n }\n }\n }\n else if (this.parent.rowDropSettings.targetID && targetRow) {\n element = this.isDropGrid.getRowByIndex(targetRowIndex - 1);\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n else if (targetRow && parseInt(startedRow.getAttribute(dataRowIndex), 10) > targetRowIndex) {\n if (this.parent.enableVirtualization && this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n targetRowIndex = this.parent.getDataRows().indexOf(targetRow);\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n element = targetRow;\n rowElement = [].slice.call(element\n .querySelectorAll(\".e-groupcaption,.e-summarycell,.e-rowcell:not(.e-hide),.e-rowdragdrop:not(.e-hide),\\n .e-detailrowcollapse:not(.e-hide)\"));\n }\n else {\n if (targetRowIndex === 0 && this.isNewRowAdded() && this.parent.editSettings.newRowPosition === 'Top') {\n element = this.parent.element.querySelector('.e-row.e-addedrow tr');\n }\n else {\n element = this.parent.getRowByIndex(targetRowIndex - 1);\n }\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse,.e-dragindentcell'));\n }\n }\n else {\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n if (rowElement.length > 0) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns && this.parent.groupSettings.columns.length) {\n this.groupRowDDIndicator(rowElement, true);\n }\n else {\n addRemoveActiveClasses(rowElement, true, 'e-dragborder');\n }\n }\n }\n };\n RowDD.prototype.getScrollWidth = function () {\n var scrollElem = this.parent.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? Scroll.getScrollBarWidth() : 0;\n };\n RowDD.prototype.removeFirstRowBorder = function (element) {\n if (this.isDropGrid.element.getElementsByClassName('e-firstrow-dragborder').length > 0 && element &&\n (element.rowIndex !== 0 || element.classList.contains('e-columnheader'))) {\n remove(this.isDropGrid.element.getElementsByClassName('e-firstrow-dragborder')[0]);\n }\n else {\n var addNewRow = this.parent.element.querySelector('.e-row.e-addedrow tr');\n if (addNewRow && addNewRow.querySelector('.e-dragborder')) {\n var rowElement = [].slice.call(addNewRow.\n querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse,.e-dragindentcell'));\n addRemoveActiveClasses(rowElement, false, 'e-dragborder');\n }\n }\n };\n RowDD.prototype.removeLastRowBorder = function (element) {\n var islastRowIndex;\n if (this.parent.enableVirtualization) {\n islastRowIndex = element && parseInt(element.getAttribute(dataRowIndex), 10) !==\n this.parent.renderModule.data.dataManager.dataSource.json.length - 1;\n }\n else {\n var rowIndex = this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache &&\n !this.parent.groupSettings.enableLazyLoading ?\n this.parent.pageSettings.currentPage * this.parent.pageSettings.pageSize - 1 :\n this.parent.getCurrentViewRecords().length - 1;\n var lastRow = this.parent.getRowByIndex(rowIndex);\n islastRowIndex = element && lastRow && lastRow.getAttribute('data-uid') !== element.getAttribute('data-uid');\n }\n if (this.parent.element.getElementsByClassName('e-lastrow-dragborder').length > 0 && element && islastRowIndex) {\n remove(this.parent.element.getElementsByClassName('e-lastrow-dragborder')[0]);\n }\n };\n RowDD.prototype.removeBorder = function (element) {\n this.removeFirstRowBorder(element);\n if (!this.parent.rowDropSettings.targetID) {\n this.removeLastRowBorder(element);\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n element = ([].slice.call(this.isDropGrid.getContentTable().querySelectorAll('tr'))).filter(function (row) {\n return row.querySelector('td.e-dragtop.e-dragbottom');\n })[0];\n }\n else {\n element = (this.isDropGrid.getRows()).filter(function (row) { return row.querySelector('td.e-dragborder'); })[0];\n }\n if (element) {\n var rowElement = this.parent.allowGrouping && this.parent.groupSettings.columns.length ? [].slice.call(element\n .querySelectorAll('.e-dragtop.e-dragbottom')) : [].slice.call(element.getElementsByClassName('e-dragborder'));\n if (this.parent.allowGrouping && this.parent.groupSettings.columns && this.parent.groupSettings.columns.length) {\n this.groupRowDDIndicator(rowElement, false);\n }\n else {\n addRemoveActiveClasses(rowElement, false, 'e-dragborder');\n }\n }\n };\n RowDD.prototype.getElementFromPosition = function (element, event) {\n var position = getPosition(event);\n element.style.display = 'none';\n var target = document.elementFromPoint(position.x, position.y);\n element.style.display = '';\n return target;\n };\n RowDD.prototype.onDataBound = function () {\n if (this.selectedRowColls.length > 0 && (this.parent.enableVirtualization || this.parent.allowRowDragAndDrop)) {\n this.parent.selectRows(this.selectedRowColls);\n this.selectedRowColls = [];\n }\n };\n RowDD.prototype.getTargetIdx = function (targetRow) {\n return targetRow ? parseInt(targetRow.getAttribute(dataRowIndex), 10) : 0;\n };\n RowDD.prototype.singleRowDrop = function (e) {\n var targetRow = closest(e.target, 'tr');\n var srcControl = e.droppedElement.parentElement.ej2_instances[0];\n var currentIndex = targetRow ? targetRow.rowIndex : srcControl.currentViewData.length - 1;\n this.reorderRow(this.startedRowIndex, currentIndex);\n };\n RowDD.prototype.columnDrop = function (e) {\n var gObj = this.parent;\n if (e.droppedElement.getAttribute('action') !== 'grouping' &&\n (parentsUntil(e.target, row) || parentsUntil(e.target, 'e-emptyrow') || parentsUntil(e.target, gridContent))) {\n var targetRow = closest(e.target, 'tr');\n var srcControl = void 0;\n var currentIndex = void 0;\n var dragParentElement = document.querySelector('.e-drag-ref');\n if ((e.droppedElement.querySelector('tr').getAttribute('single-dragrow') !== 'true' &&\n (e.droppedElement.parentElement.id === gObj.element.id || (dragParentElement\n && dragParentElement.parentElement.id === gObj.element.id)))\n || (e.droppedElement.querySelector('tr').getAttribute('single-dragrow') === 'true' &&\n e.droppedElement.parentElement.id !== gObj.element.id)) {\n return;\n }\n if (e.droppedElement.parentElement.id !== gObj.element.id) {\n if (dragParentElement) {\n srcControl = dragParentElement.parentElement.ej2_instances[0];\n remove(dragParentElement);\n }\n else {\n srcControl = e.droppedElement.parentElement.ej2_instances[0];\n }\n }\n else if (this.isSingleRowDragDrop || e.droppedElement.querySelector('tr').getAttribute('single-dragrow') === 'true') {\n this.singleRowDrop(e);\n return;\n }\n if (srcControl.element.id !== gObj.element.id && srcControl.rowDropSettings.targetID !== gObj.element.id) {\n return;\n }\n var records = srcControl.getSelectedRecords();\n var targetIndex = currentIndex = this.getTargetIdx(targetRow);\n if (e.target && e.target.classList.contains('e-content') && gObj.getCurrentViewRecords().length) {\n var lastrow = gObj.getContentTable().querySelector('tr:last-child');\n if (lastrow) {\n targetIndex = currentIndex = parseInt(lastrow.getAttribute(ariaRowIndex), 10);\n }\n }\n if (isNaN(targetIndex)) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n targetIndex = currentIndex = 0;\n }\n if (gObj.allowPaging) {\n targetIndex = targetIndex + (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize;\n }\n //Todo: drag and drop mapper & BatchChanges\n gObj.notify(rowsAdded, { toIndex: targetIndex, records: records });\n gObj.notify(modelChanged, {\n type: actionBegin, requestType: 'rowdraganddrop'\n });\n var selectedRows = srcControl.getSelectedRowIndexes();\n var skip = srcControl.allowPaging ?\n (srcControl.pageSettings.currentPage * srcControl.pageSettings.pageSize) - srcControl.pageSettings.pageSize : 0;\n this.selectedRows = [];\n for (var i = 0, len = records.length; i < len; i++) {\n this.selectedRows.push(skip + selectedRows[parseInt(i.toString(), 10)]);\n }\n srcControl.notify(rowsRemoved, { indexes: this.selectedRows, records: records });\n if (srcControl.dataSource instanceof DataManager && srcControl.dataSource.dataSource.offline) {\n srcControl.notify(modelChanged, {\n type: actionBegin, requestType: 'rowdraganddrop'\n });\n }\n }\n };\n RowDD.prototype.reorderRow = function (fromIndexes, toIndex) {\n var gObj = this.parent;\n if (!gObj.groupSettings.columns.length) {\n //Todo: drag and drop mapper & BatchChanges\n var skip = gObj.allowPaging ?\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : 0;\n toIndex = toIndex + skip;\n this.selectedRows = gObj.getSelectedRowIndexes();\n gObj.notify(rowPositionChanged, {\n fromIndex: fromIndexes + skip,\n toIndex: toIndex\n });\n }\n };\n RowDD.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.initializeDrag();\n }\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n RowDD.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + gridHeader) &&\n !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n this.draggable.destroy();\n this.parent.off(initialEnd, this.initializeDrag);\n this.parent.off(columnDrop, this.columnDrop);\n this.parent.off(rowDragAndDropComplete, this.onActionComplete);\n this.parent.removeEventListener(dataBound, this.onDataBoundFn);\n this.parent.off(uiUpdate, this.enableAfterRender);\n this.parent.off(destroy, this.destroy);\n //destory ejdrag and drop\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n RowDD.prototype.getModuleName = function () {\n return 'rowDragAndDrop';\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDD.prototype.processArgs = function (target) {\n var gObj = this.parent;\n var dragIdx = parseInt(this.startedRow.getAttribute(dataRowIndex), 10);\n if ((gObj.getSelectedRecords().length > 0 && this.startedRow.cells[0].classList.contains('e-selectionbackground') === false)\n || gObj.getSelectedRecords().length === 0) {\n if (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache) {\n this.rows = [this.startedRow];\n }\n else {\n this.rows = [gObj.getRowByIndex(dragIdx)];\n }\n this.rowData = [gObj.getRowInfo((this.startedRow).querySelector('.' + rowCell)).rowData];\n if ((gObj.enableVirtualization || (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache))\n && gObj.allowGrouping && gObj.groupSettings.columns.length && gObj.getSelectedRows().length) {\n this.rows = gObj.getSelectedRows();\n this.rowData = Array.from(this.rows, function (row) { return gObj.getRowObjectFromUID(row.getAttribute('data-uid')).data; });\n }\n }\n else {\n this.rows = gObj.getSelectedRows();\n this.rowData = Array.from(this.rows, function (row) { return gObj.getRowObjectFromUID(row.getAttribute('data-uid')).data; });\n }\n };\n return RowDD;\n}());\n\n// eslint-disable-next-line valid-jsdoc, jsdoc/require-param, jsdoc/require-returns\n/**\n *\n * The `Group` module is used to handle group action.\n */\nvar Group = /** @__PURE__ @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 /** @hidden */\n this.preventFocusOnGroup = 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(columnDrag, { target: target, draggableType: 'headercell', column: _this.column });\n if (!_this.groupSettings.allowReordering) {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!(parentsUntil(target, 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, 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(uiUpdate, this.enableAfterRender, this);\n this.parent.on(groupComplete, this.onActionComplete, this);\n this.parent.on(ungroupComplete, this.onActionComplete, this);\n this.parent.on(inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(click, this.clickHandler, this);\n this.parent.on(columnDrag, this.columnDrag, this);\n this.parent.on(columnDragStart, this.columnDragStart, this);\n this.parent.on(headerDrop, this.columnDrop, this);\n this.parent.on(columnDrop, this.columnDrop, this);\n this.parent.on(headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(sortComplete, this.refreshSortIcons, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(contentReady, this.initialEnd, this);\n this.parent.on(onEmpty, this.initialEnd, this);\n this.parent.on(initialEnd, this.render, this);\n this.parent.on(groupAggregates, this.onGroupAggregates, this);\n this.parent.on(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(initialEnd, this.render);\n this.parent.off(uiUpdate, this.enableAfterRender);\n this.parent.off(groupComplete, this.onActionComplete);\n this.parent.off(ungroupComplete, this.onActionComplete);\n this.parent.off(inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(click, this.clickHandler);\n this.parent.off(columnDrag, this.columnDrag);\n this.parent.off(columnDragStart, this.columnDragStart);\n this.parent.off(columnDrop, this.columnDrop);\n this.parent.off(headerDrop, this.columnDrop);\n this.parent.off(headerRefreshed, this.refreshSortIcons);\n this.parent.off(sortComplete, this.refreshSortIcons);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(groupAggregates, this.onGroupAggregates);\n this.parent.off(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(contentReady, this.initialEnd);\n this.parent.off(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 || (this.parent.groupSettings.enableLazyLoading && this.groupSettings.columns.length\n && (e.action === 'ctrlUpArrow' || e.action === 'ctrlDownArrow'))) {\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(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(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$1 = element && element.parentElement ? element.parentElement.querySelector('[class^=\"e-record\"]') : null;\n if (!row$1) {\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$1);\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(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', this.l10n.getConstant('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', this.l10n.getConstant('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(refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n if (!this.parent.enableInfiniteScrolling || !this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(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(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(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(initialCollapse, isExpand);\n }\n var rowNodes = this.parent.getContentTable().querySelector(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', this.l10n.getConstant('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', this.l10n.getConstant('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(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(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(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 if (this.groupSettings.showDropArea && this.parent.height === '100%') {\n this.parent.scrollModule.refresh();\n }\n var args = this.groupSettings.columns.indexOf(this.colName) > -1 ? {\n columnName: this.colName, requestType: 'grouping', type: actionComplete\n } : { requestType: 'ungrouping', type: actionComplete };\n this.parent.trigger(actionComplete, extend$1(e, args));\n this.colName = null;\n };\n Group.prototype.groupAddSortingQuery = function (colName) {\n var i = 0;\n while (i < this.parent.sortSettings.columns.length) {\n if (this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field === colName) {\n break;\n }\n i++;\n }\n if (this.parent.sortSettings.columns.length === i) {\n this.parent.sortSettings.columns.push({ field: colName, direction: 'Ascending', isFromGroup: true });\n }\n else if (!this.parent.allowSorting) {\n this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction = 'Ascending';\n }\n };\n Group.prototype.createElement = function (field) {\n var gObj = this.parent;\n var direction = 'Ascending';\n var animator = this.parent.createElement('div', { className: 'e-grid-icon e-group-animator' });\n var groupedColumn = this.parent.createElement('div', { className: 'e-grid-icon e-groupheadercell' });\n var childDiv = this.parent.createElement('div', { attrs: { 'ej-mappingname': field } });\n if (isComplexField(field)) {\n childDiv.setAttribute('ej-complexname', getComplexFieldID(field));\n }\n var column = this.parent.getColumnByField(field);\n //Todo headerTemplateID for grouped column, disableHtmlEncode\n var headerCell = gObj.getColumnHeaderByUid(column.uid);\n // if (!isNullOrUndefined(column.headerTemplate)) {\n // if (column.headerTemplate.indexOf('#') !== -1) {\n // childDiv.innerHTML = document.querySelector(column.headerTemplate).innerHTML.trim();\n // } else {\n // childDiv.innerHTML = column.headerTemplate;\n // }\n // childDiv.firstElementChild.classList.add('e-grouptext');\n // } else {\n if (this.groupSettings.allowReordering) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-drag e-icons e-icon-drag', innerHTML: ' ',\n attrs: { title: 'Drag', tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupedDrag') }\n }));\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-grouptext', innerHTML: column.headerText,\n attrs: { tabindex: '-1' }\n }));\n // }\n if (this.groupSettings.showToggleButton) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-togglegroupbutton e-icons e-icon-ungroup e-toggleungroup', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('UnGroupAria') }\n }));\n }\n if (headerCell.querySelectorAll('.e-ascending,.e-descending').length) {\n direction = headerCell.querySelector('.e-ascending') ? 'Ascending' : 'Descending';\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-groupsort e-icons ' +\n ('e-' + direction.toLowerCase() + ' e-icon-' + direction.toLowerCase()), innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupedSortIcon') + column.headerText, role: 'button' }\n }));\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-ungroupbutton e-icons e-icon-hide', innerHTML: ' ',\n attrs: { title: this.l10n.getConstant('UnGroup'),\n tabindex: '-1', 'aria-label': this.l10n.getConstant('UnGroupIcon') + column.headerText, role: 'button' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n }));\n groupedColumn.appendChild(childDiv);\n if (this.groupSettings.allowReordering) {\n animator.appendChild(groupedColumn);\n animator.appendChild(this.createSeparator());\n groupedColumn = animator;\n }\n return groupedColumn;\n };\n Group.prototype.addColToGroupDrop = function (field) {\n var groupElem = isComplexField(field) ? this.parent.element.querySelector('.e-groupdroparea div[ej-complexname=' +\n getParsedFieldID(getComplexFieldID(field)) + ']') : this.parent.element.querySelector('.e-groupdroparea div[ej-mappingname=' + getParsedFieldID(field) + ']');\n if (this.groupSettings.allowReordering && groupElem) {\n return;\n }\n var column = this.parent.getColumnByField(field);\n if (isNullOrUndefined(column)) {\n return;\n }\n var groupedColumn = this.createElement(field);\n if (this.groupSettings.allowReordering) {\n var index = this.element.getElementsByClassName('e-group-animator').length;\n groupedColumn.setAttribute('index', index.toString());\n }\n this.element.appendChild(groupedColumn);\n var focusModule = this.parent.focusModule;\n focusModule.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (focusModule.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(focusModule.active.matrix.matrix, firstContentCellIndex, true);\n }\n focusModule.active.matrix.current = firstContentCellIndex;\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.notify(showAddNewRowFocus, {});\n }\n else if (this.parent.isInitialLoad && !this.preventFocusOnGroup) {\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(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: actionBegin, preventFocusOnGroup: false\n };\n }\n else {\n args = { columnName: this.colName, requestType: 'ungrouping', type: 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(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(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('.' + gridHeader) && !gridElement.querySelector('.' + 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(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(tbody).insertBefore(dragRow, dropRow);\n }\n else {\n this.parent.getContentTable().querySelector(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(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(refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n };\n Group.prototype.groupReorderHandler = function (dragRowObject, dropRowObject) {\n var gObj = this.parent;\n var dragRowObjectData = dragRowObject.data;\n var dropRowObjectData = dropRowObject.data;\n var groupAggregateTemplate = gObj['groupModule'].getGroupAggregateTemplates(false);\n var dropParentRowObject = gObj.getRowObjectFromUID(dropRowObject.parentUid);\n var dragParentRowObject = gObj.getRowObjectFromUID(dragRowObject.parentUid);\n var dropRootParentRowObjects = [dropParentRowObject];\n var dragRootParentRowObjects = [dragParentRowObject];\n var groupColumns = gObj.groupSettings.columns;\n for (var j = 0; j < groupColumns.length; j++) {\n dragRowObjectData[groupColumns[parseInt(j.toString(), 10)]] = dropRowObjectData[groupColumns[parseInt(j.toString(), 10)]];\n if (j > 0) {\n dropRootParentRowObjects.push(gObj.getRowObjectFromUID(dropRootParentRowObjects[j - 1].parentUid));\n dragRootParentRowObjects.push(gObj.getRowObjectFromUID(dragRootParentRowObjects[j - 1].parentUid));\n }\n }\n dragRowObject.parentUid = dropRowObject.parentUid;\n dragRowObject.visible = dropRowObject.visible;\n dragRowObject['parentGid'] = dropRowObject['parentGid'];\n if (dragRowObject.changes !== dragRowObjectData) {\n dragRowObject.changes = dragRowObjectData;\n }\n var updatedCurrentViewData = this.iterateGroupAggregates([{ dragRowObjects: dragRootParentRowObjects,\n dropRowObjects: dropRootParentRowObjects }]);\n var updatedDragCurrentViewData = updatedCurrentViewData.filter(function (object) {\n return (object['key'] === dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key'] ||\n (object['key'] instanceof Date && object['key'].toString() ===\n dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key'].toString()));\n });\n var updatedDropCurrentViewData = updatedCurrentViewData.filter(function (object) {\n return (object['key'] === dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key'] ||\n (object['key'] instanceof Date && object['key'].toString() ===\n dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key'].toString()));\n });\n updatedCurrentViewData = [];\n if (!isNullOrUndefined(updatedDragCurrentViewData[0])) {\n updatedCurrentViewData.push(updatedDragCurrentViewData[0]);\n }\n if (!isNullOrUndefined(updatedDropCurrentViewData[0])) {\n updatedCurrentViewData.push(updatedDropCurrentViewData[0]);\n }\n var currentViewData = gObj.currentViewData;\n for (var i = 0; i < currentViewData.length; i++) {\n if (isNullOrUndefined(updatedDragCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] ===\n dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key']) {\n currentViewData.splice(i, 1);\n i--;\n }\n else if (isNullOrUndefined(updatedDropCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] ===\n dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key']) {\n currentViewData.splice(i, 1);\n i--;\n }\n else if (!isNullOrUndefined(updatedDragCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] === updatedDragCurrentViewData[0]['key']) {\n currentViewData[parseInt(i.toString(), 10)] = updatedDragCurrentViewData[0];\n }\n else if (!isNullOrUndefined(updatedDropCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] === updatedDropCurrentViewData[0]['key']) {\n currentViewData[parseInt(i.toString(), 10)] = updatedDropCurrentViewData[0];\n }\n }\n var updatedRowObject = this.groupGenerator.generateRows(updatedCurrentViewData, {});\n var dragRootParentAggregateRowObject = [];\n var dropRootParentAggregateRowObject = [];\n for (var i = 0; i < dragRootParentRowObjects.length; i++) {\n dragRootParentAggregateRowObject\n .push.apply(dragRootParentAggregateRowObject, this.getGroupParentFooterAggregateRowObject(dragRootParentRowObjects[parseInt(i.toString(), 10)].uid));\n }\n for (var i = 0; i < dropRootParentRowObjects.length; i++) {\n dropRootParentAggregateRowObject\n .push.apply(dropRootParentAggregateRowObject, this.getGroupParentFooterAggregateRowObject(dropRootParentRowObjects[parseInt(i.toString(), 10)].uid));\n }\n dragRootParentRowObjects.push.apply(dragRootParentRowObjects, dragRootParentAggregateRowObject);\n dropRootParentRowObjects.push.apply(dropRootParentRowObjects, dropRootParentAggregateRowObject);\n this.updatedRowObjChange(dragRootParentRowObjects, updatedRowObject, groupAggregateTemplate, true);\n this.updatedRowObjChange(dropRootParentRowObjects, updatedRowObject, groupAggregateTemplate);\n this.groupReorderRefreshHandler(dragRootParentRowObjects);\n this.groupReorderRefreshHandler(dropRootParentRowObjects);\n };\n Group.prototype.updatedRowObjChange = function (rootParentRowObjects, updatedRowObjects, groupAggregateTemplate, isDraggedRow) {\n var gObj = this.parent;\n var rowObjects = gObj.getRowsObject();\n var cache = {};\n var virtualCacheRowObjects = [];\n if (gObj.enableVirtualization) {\n cache = gObj.contentModule['vgenerator'].cache;\n virtualCacheRowObjects = gObj.vcRows;\n }\n for (var i = 0; i < rootParentRowObjects.length; i++) {\n var keyPresent = false;\n var parentRowObject = rootParentRowObjects[parseInt(i.toString(), 10)];\n for (var j = 0; j < updatedRowObjects.length; j++) {\n var updatedRowObject = updatedRowObjects[parseInt(j.toString(), 10)];\n if (!isNullOrUndefined(updatedRowObject) && !isNullOrUndefined(parentRowObject.data['key']) &&\n !isNullOrUndefined(updatedRowObject.data['key']) && ((parentRowObject.data['key'] ===\n updatedRowObject.data['key'] || (parentRowObject.data['key'] instanceof Date &&\n parentRowObject.data['key'].toString() === updatedRowObject.data['key'].toString())))) {\n var isParentKeyPresent = true;\n var nextParentObject = rootParentRowObjects[parseInt((i + 1).toString(), 10)];\n if (isDraggedRow && nextParentObject && !nextParentObject.isAggregateRow) {\n var key = nextParentObject.data['key'].toString();\n var field = nextParentObject.data['field'];\n var groupedData = updatedRowObject.data['items'].records ?\n updatedRowObject.data['items'].records : updatedRowObject.data['items'];\n if (groupedData && groupedData.length && groupedData[0][\"\" + field] &&\n groupedData[0][\"\" + field].toString() !== key) {\n isParentKeyPresent = false;\n }\n }\n if (!isParentKeyPresent && isDraggedRow) {\n continue;\n }\n var index = rowObjects.indexOf(parentRowObject);\n if (index !== -1) {\n rowObjects[parseInt(index.toString(), 10)].data = updatedRowObject.data;\n rowObjects[parseInt(index.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n if (gObj.enableVirtualization) {\n var vIndex = virtualCacheRowObjects.indexOf(parentRowObject);\n if (vIndex !== -1) {\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)].data = updatedRowObject.data;\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n }\n parentRowObject.data = updatedRowObject.data;\n parentRowObject['gSummary'] = ['gSummary'];\n updatedRowObjects.splice(j, 1);\n j--;\n keyPresent = true;\n break;\n }\n else if (parentRowObject.isAggregateRow &&\n updatedRowObject.isAggregateRow) {\n for (var l = 0; l < groupAggregateTemplate.length; l++) {\n if (this.evaluateGroupAggregateValueChange(parentRowObject, updatedRowObject, groupAggregateTemplate[parseInt(l.toString(), 10)])) {\n var index = rowObjects.indexOf(parentRowObject);\n if (index !== -1) {\n rowObjects[parseInt(index.toString(), 10)].data = updatedRowObject.data;\n rowObjects[parseInt(index.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n if (gObj.enableVirtualization) {\n var vIndex = virtualCacheRowObjects.indexOf(parentRowObject);\n if (vIndex !== -1) {\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)].data = updatedRowObject.data;\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n }\n parentRowObject.data = updatedRowObject.data;\n parentRowObject['gSummary'] = updatedRowObject['gSummary'];\n keyPresent = true;\n break;\n }\n }\n if (keyPresent) {\n break;\n }\n }\n }\n if (!keyPresent) {\n var removeElem = gObj.getRowElementByUID(parentRowObject.uid);\n if (!isNullOrUndefined(removeElem)) {\n remove(removeElem);\n }\n rowObjects.splice(rowObjects.indexOf(parentRowObject), 1);\n if (gObj.enableVirtualization) {\n virtualCacheRowObjects.splice(virtualCacheRowObjects.indexOf(parentRowObject), 1);\n for (var k = 1; k <= Object.keys(cache).length; k++) {\n var vcIndex = cache[parseInt(k.toString(), 10)].indexOf(parentRowObject);\n if (vcIndex !== -1) {\n cache[parseInt(k.toString(), 10)].splice([parseInt(vcIndex.toString(), 10)], 1);\n }\n }\n }\n if (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache) {\n gObj.infiniteScrollModule.resetInfiniteCache(rowObjects);\n }\n }\n }\n };\n Group.prototype.groupReorderRefreshHandler = function (parentRowObjects) {\n var gObj = this.parent;\n var row = new RowRenderer(gObj['serviceLocator'], null, gObj);\n var columns = gObj.getColumns();\n for (var j = 0; j < parentRowObjects.length; j++) {\n var rowObject = parentRowObjects[parseInt(j.toString(), 10)];\n if (!isNullOrUndefined(rowObject.uid) &&\n !isNullOrUndefined(gObj.getRowElementByUID(rowObject.uid))) {\n row.refresh(rowObject, columns, false);\n }\n }\n };\n Group.prototype.getGroupParentFooterAggregateRowObject = function (parentUid) {\n var rowObjects = this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache &&\n this.parent.groupSettings.columns.length ? this.parent.contentModule['rows'] : this.parent.getRowsObject();\n var parentFooterAggregates = [];\n for (var i = 0; i < rowObjects.length; i++) {\n var rowObject = rowObjects[parseInt(i.toString(), 10)];\n if (rowObject.parentUid === parentUid && rowObject.isAggregateRow) {\n parentFooterAggregates.push(rowObject);\n }\n }\n return parentFooterAggregates;\n };\n Group.prototype.evaluateGroupAggregateValueChange = function (rowObjects, updatedRowObject, groupAggregateTemplate) {\n var change = false;\n if (rowObjects.data[groupAggregateTemplate['field']]['field'] === updatedRowObject.data[groupAggregateTemplate['field']]['field']\n && rowObjects.data[groupAggregateTemplate['field']]['key'] === updatedRowObject.data[groupAggregateTemplate['field']]['key'] &&\n rowObjects.data[groupAggregateTemplate['field']]\n // eslint-disable-next-line no-prototype-builtins\n .hasOwnProperty(groupAggregateTemplate['field'] + ' - ' + groupAggregateTemplate['type']) &&\n updatedRowObject.data[groupAggregateTemplate['field']]\n // eslint-disable-next-line no-prototype-builtins\n .hasOwnProperty(groupAggregateTemplate['field'] + ' - ' + groupAggregateTemplate['type'])) {\n change = true;\n }\n return change;\n };\n Group.prototype.gettingVirtualData = function (parentRowObjs, curViewRec, pK) {\n var datas = [];\n var _loop_2 = function (i) {\n if (curViewRec.indexOf(parentRowObjs[parseInt(i.toString(), 10)].data) === -1) {\n datas.push(parentRowObjs[parseInt(i.toString(), 10)].data);\n }\n if (parentRowObjs[parseInt(i.toString(), 10)].data['field'] === this_2.parent.groupSettings.columns[0]) {\n var draggedData_1 = parentRowObjs[parseInt(i.toString(), 10)].data['items'];\n if (!isNullOrUndefined(draggedData_1['records'])) {\n draggedData_1 = draggedData_1['records'];\n }\n var _loop_3 = function (j) {\n if (pK && curViewRec.findIndex(function (data) { return data[pK.toString()] ===\n draggedData_1[parseInt(j.toString(), 10)][pK.toString()]; }) === -1) {\n datas.push(draggedData_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < draggedData_1.length; j++) {\n _loop_3(j);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < parentRowObjs.length; i++) {\n _loop_2(i);\n }\n return datas;\n };\n Group.prototype.iterateGroupAggregates = function (editedData) {\n var _this = this;\n var updatedData = editedData instanceof Array ? editedData : [];\n var rows = this.parent.getRowsObject();\n var initData = this.parent.getCurrentViewRecords().slice();\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n var dragParentRowObjects = editedData && editedData.length ?\n editedData[0] && editedData[0]['dragRowObjects'] : null;\n var dropParentRowObjects = editedData && editedData.length ?\n editedData[0] && editedData[0]['dropRowObjects'] : null;\n var dropRootKey = null;\n var dragRootKey = null;\n if (this.parent.enableVirtualization && this.parent.allowGrouping && this.parent.groupSettings.columns.length &&\n (!isNullOrUndefined(dragParentRowObjects) || !isNullOrUndefined(dropParentRowObjects))) {\n if (dragParentRowObjects) {\n initData.push.apply(initData, this.gettingVirtualData(dragParentRowObjects, initData, field));\n }\n if (dropParentRowObjects) {\n initData.push.apply(initData, this.gettingVirtualData(dropParentRowObjects, initData, field));\n }\n }\n var isInfiniteGroup = this.parent.enableInfiniteScrolling && this.parent.allowGrouping && editedData.length &&\n this.parent.groupSettings.columns.length && !isNullOrUndefined(dragParentRowObjects) &&\n !isNullOrUndefined(dropParentRowObjects);\n if (isInfiniteGroup) {\n initData = [];\n dropRootKey = dropParentRowObjects[dropParentRowObjects.length - 1].data['key'];\n dragRootKey = dragParentRowObjects[dragParentRowObjects.length - 1].data['key'];\n this.parent.getRowsObject().map(function (row) {\n var groupKey = row.data[_this.parent.groupSettings.columns[0]];\n if (row.isDataRow &&\n ((groupKey === dropRootKey || groupKey === dragRootKey) || (groupKey instanceof Date &&\n (groupKey.toString() === dropRootKey.toString() || groupKey.toString() === dragRootKey.toString())))) {\n initData.push(row.data);\n }\n });\n }\n var deletedCols = [];\n var changeds = rows.map(function (row) {\n if (row.edit === 'delete') {\n deletedCols.push(row.data);\n }\n return row.changes instanceof Object ? row.changes : row.data;\n });\n changeds = updatedData.length === 0 ? changeds : updatedData;\n var mergeData = initData.map(function (item) {\n var pKeyVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = changeds.some(function (cItem) {\n value = cItem;\n return pKeyVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n var eData = editedData;\n if (!(eData.type && eData.type === 'cancel') && deletedCols.length > 0) {\n for (var i = 0; i < deletedCols.length; i++) {\n var index = mergeData.indexOf(deletedCols[parseInt(i.toString(), 10)]);\n mergeData.splice(index, 1);\n }\n }\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row = aggregateRows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var aggr = {};\n var type = row.columns[parseInt(k.toString(), 10)].type.toString();\n var types = type.split(',').map(function (t) { return t.trim(); });\n for (var _i = 0, types_1 = types; _i < types_1.length; _i++) {\n var aggregateType = types_1[_i];\n aggr = { type: aggregateType.toLowerCase(), field: row.columns[parseInt(k.toString(), 10)].field };\n aggregates.push(aggr);\n }\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$1('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$1.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(contentReady, { rows: rows, args: { isFrozen: false, rows: rows } });\n };\n return Group;\n}());\n\n/**\n * The `DetailRow` module is used to handle detail template and hierarchy Grid operations.\n */\nvar DetailRow = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid detail template module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifes the serviceLocator\n * @hidden\n */\n function DetailRow(parent, locator) {\n //Internal variables\n this.aria = new AriaService();\n this.childRefs = [];\n this.parent = parent;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n DetailRow.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'auxclick', this.auxilaryclickHandler, this);\n this.parent.on(click, this.clickHandler, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(expandChildGrid, this.expand, this);\n this.parent.on(columnVisibilityChanged, this.refreshColSpan, this);\n this.parent.on(destroy, this.destroyChildGrids, this);\n this.parent.on(destroyChildGrid, this.destroyChildGrids, this);\n };\n DetailRow.prototype.clickHandler = function (e) {\n if ((e.target.classList.contains('e-icon-grightarrow') || e.target.classList.contains('e-icon-gdownarrow'))\n && !this.parent.allowGrouping) {\n e.preventDefault();\n }\n this.toogleExpandcollapse(closest(e.target, 'td'));\n };\n DetailRow.prototype.auxilaryclickHandler = function (e) {\n if ((e.target.classList.contains('e-icon-grightarrow') || e.target.classList.contains('e-icon-gdownarrow'))\n && !this.parent.allowGrouping && (e.button === 1)) {\n e.preventDefault();\n }\n };\n DetailRow.prototype.toogleExpandcollapse = function (target) {\n this.l10n = this.serviceLocator.getService('localization');\n var gObj = this.parent;\n var table = this.parent.getContentTable();\n var lastrowIdx = this.parent.getCurrentViewRecords().length - 1;\n var parent = 'parentDetails';\n var childGrid;\n var isExpanded = target && target.classList.contains('e-detailrowcollapse');\n if (!(target && (target.classList.contains('e-detailrowcollapse') || target.classList.contains('e-detailrowexpand')))\n || (target && target.classList.contains('e-masked-cell'))) {\n return;\n }\n var tr = target.parentElement;\n var uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(uid);\n var needToRefresh = false;\n var nextRow = this.parent.getContentTable().querySelector(tbody).children[tr.rowIndex + 1];\n if (target.classList.contains('e-detailrowcollapse')) {\n var data_1 = rowObj.data;\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = '';\n gObj.notify(detailStateChange, { data: data_1,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n needToRefresh = true;\n }\n else if (gObj.getDetailTemplate() || gObj.childGrid) {\n var rowId = getUid('grid-row');\n var detailRow = this.parent.createElement('tr', { className: 'e-detailrow', attrs: { 'data-uid': rowId, role: 'row' } });\n var detailCell_1 = this.parent.createElement('th', { className: 'e-detailcell', attrs: { 'scope': 'col', role: 'columnheader' } });\n var colSpan = this.parent.getVisibleColumns().length;\n if (this.parent.allowRowDragAndDrop) {\n colSpan++;\n }\n detailCell_1.setAttribute('colspan', colSpan.toString());\n var row = new Row({\n isDataRow: true,\n isExpand: true,\n uid: rowId,\n isDetailRow: true,\n cells: [new Cell({ cellType: CellType.Indent }), new Cell({ isDataCell: true, visible: true })]\n });\n row.parentUid = rowObj.uid;\n for (var i = 0, len = gObj.groupSettings.columns.length; i < len; i++) {\n detailRow.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n row.cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n detailRow.appendChild(this.parent.createElement('th', { className: 'e-detailindentcell', attrs: { 'scope': 'col' } }));\n detailRow.appendChild(detailCell_1);\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n var isReactCompiler = void 0;\n var isReactChild = void 0;\n if (gObj.detailTemplate) {\n isReactCompiler = this.parent.isReact && typeof (gObj.detailTemplate) !== 'string' &&\n !(gObj.detailTemplate.prototype && gObj.detailTemplate.prototype.CSPTemplate);\n isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var isReactPrintGrid = this.parent.printGridParent && this.parent.printGridParent.isReact;\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n if (isReactCompiler || isReactChild || isReactPrintGrid) {\n gObj.getDetailTemplate()(data_1, gObj, 'detailTemplate', detailTemplateID, null, null, detailCell_1);\n this.parent.renderTemplates(function () {\n gObj.trigger(detailDataBound, { detailElement: detailCell_1, data: data_1, childGrid: childGrid });\n });\n }\n else {\n appendChildren(detailCell_1, gObj.getDetailTemplate()(data_1, gObj, 'detailTemplate', detailTemplateID, undefined, undefined, undefined, this.parent['root']));\n }\n }\n else {\n childGrid = new Grid(this.getGridModel(gObj, rowObj, gObj.printMode));\n childGrid.root = gObj.root ? gObj.root : gObj;\n this.childRefs.push(childGrid);\n if (childGrid.query) {\n childGrid.query = childGrid.query.clone();\n }\n childGrid[\"\" + parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: gObj.childGrid.queryString && isComplexField(gObj.childGrid.queryString) ?\n getObject(gObj.childGrid.queryString, data_1) : data_1[gObj.childGrid.queryString],\n parentRowData: data_1\n };\n if (gObj.isReact || gObj.isVue) {\n childGrid.parentDetails.parentInstObj = gObj;\n }\n else if (gObj.parentDetails && gObj.parentDetails.parentInstObj && (gObj.parentDetails.parentInstObj.isReact\n || gObj.parentDetails.parentInstObj.isVue)) {\n childGrid.parentDetails.parentInstObj = gObj.parentDetails.parentInstObj;\n }\n if (gObj.printGridParent && gObj.printGridParent.isReact) {\n childGrid.printGridParent = gObj.printGridParent;\n }\n childGrid.isLegacyTemplate = gObj.isReact\n || gObj.isLegacyTemplate;\n if (gObj.isPrinting) {\n childGrid.isPrinting = true;\n childGrid.on(contentReady, this.promiseResolve(childGrid), this);\n childGrid.on(onEmpty, this.promiseResolve(childGrid), this);\n }\n rowObj.childGrid = childGrid;\n var modules = childGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n childGrid.setInjectedModules(injectedModues);\n }\n var gridElem = this.parent.createElement('div', {\n id: 'child' + parents(tr, 'e-grid').length +\n '_grid' + tr.rowIndex + getUid(''), className: 'e-childgrid'\n });\n detailCell_1.appendChild(gridElem);\n childGrid.appendTo(gridElem);\n }\n detailRow.appendChild(detailCell_1);\n if (tr.nextSibling) {\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n }\n else {\n tr.parentNode.appendChild(detailRow);\n }\n var rowElems = gObj.getRows();\n var rowObjs = gObj.getRowsObject();\n rowElems.splice(rowElems.indexOf(tr) + 1, 0, detailRow);\n rowObjs.splice(rowObjs.indexOf(rowObj) + 1, 0, row);\n if (!isReactCompiler || !isReactChild) {\n gObj.trigger(detailDataBound, { detailElement: detailCell_1, data: data_1, childGrid: childGrid });\n }\n gObj.notify(detailDataBound, { rows: rowObjs });\n }\n classList(target, ['e-detailrowexpand'], ['e-detailrowcollapse']);\n classList(target.firstElementChild, ['e-dtdiagonaldown', 'e-icon-gdownarrow'], ['e-dtdiagonalright', 'e-icon-grightarrow']);\n rowObj.isExpand = true;\n if (target.classList.contains('e-lastrowcell') && this.parent.getContent().clientHeight > table.scrollHeight) {\n removeClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n var detailrowIdx = table.querySelector(tbody).getElementsByClassName('e-detailrow').length - 1;\n addClass(table.querySelector(tbody).getElementsByClassName('e-detailrow')[parseInt(detailrowIdx.toString(), 10)].childNodes, ['e-lastrowcell']);\n this.lastrowcell = true;\n }\n this.aria.setExpand(target, true);\n target.firstElementChild.setAttribute('title', this.l10n.getConstant('Expanded'));\n }\n else {\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = 'none';\n gObj.notify(detailStateChange, { data: rowObj.data,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n }\n classList(target, ['e-detailrowcollapse'], ['e-detailrowexpand']);\n classList(target.firstElementChild, ['e-dtdiagonalright', 'e-icon-grightarrow'], ['e-dtdiagonaldown', 'e-icon-gdownarrow']);\n if (parseInt(tr.getAttribute(dataRowIndex), 10) === lastrowIdx && this.lastrowcell) {\n addClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n this.lastrowcell = false;\n }\n rowObj.isExpand = false;\n needToRefresh = true;\n this.aria.setExpand(target, false);\n target.firstElementChild.setAttribute('title', this.l10n.getConstant('Collapsed'));\n }\n if (!isNullOrUndefined(gObj.detailTemplate) || (gObj.childGrid && needToRefresh)) {\n gObj.updateVisibleExpandCollapseRows();\n gObj.notify(refreshExpandandCollapse, { rows: gObj.getRowsObject() });\n }\n if (this.parent.allowTextWrap && this.parent.height === 'auto') {\n if (this.parent.getContentTable().scrollHeight > this.parent.getContent().clientHeight) {\n this.parent.scrollModule.setPadding();\n }\n else {\n this.parent.scrollModule.removePadding();\n }\n }\n };\n /**\n * @hidden\n * @param {IGrid} gObj - specifies the grid Object\n * @param {Row}rowObj - specifies the row object\n * @param {string} printMode - specifies the printmode\n * @returns {Object} returns the object\n */\n DetailRow.prototype.getGridModel = function (gObj, rowObj, printMode) {\n var gridModel;\n if (gObj.isPrinting && rowObj.isExpand && gObj.expandedRows &&\n gObj.expandedRows[rowObj.index] && gObj.expandedRows[rowObj.index].gridModel) {\n gObj.expandedRows[rowObj.index].gridModel.hierarchyPrintMode = gObj.childGrid.hierarchyPrintMode;\n gridModel = extend$1({}, gObj.expandedRows[rowObj.index].gridModel, gObj.childGrid, true);\n }\n else {\n if (gObj.isPrinting && gObj.childGrid.allowPaging) {\n gObj.childGrid.allowPaging = printMode === 'CurrentPage';\n }\n gridModel = extend$1({}, {}, gObj.childGrid, true);\n }\n return gridModel;\n };\n DetailRow.prototype.promiseResolve = function (grid) {\n var _this = this;\n return function () {\n grid.off(contentReady, _this.promiseResolve);\n grid.off(onEmpty, _this.promiseResolve);\n grid.notify(hierarchyPrint, {});\n };\n };\n DetailRow.prototype.isDetailRow = function (row) {\n return row && row.classList.contains('e-detailrow');\n };\n DetailRow.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + gridHeader) &&\n !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n EventHandler.remove(this.parent.element, 'auxclick', this.auxilaryclickHandler);\n this.parent.off(click, this.clickHandler);\n this.parent.off(destroy, this.destroy);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(expandChildGrid, this.expand);\n this.parent.off(columnVisibilityChanged, this.refreshColSpan);\n this.parent.off(destroy, this.destroyChildGrids);\n this.parent.off(destroyChildGrid, this.destroyChildGrids);\n };\n DetailRow.prototype.getTDfromIndex = function (index, className) {\n var tr = !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n if (tr && tr.querySelector(className)) {\n return tr.querySelector(className);\n }\n return null;\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n DetailRow.prototype.expand = function (target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowcollapse');\n }\n if (target && target.classList.contains('e-detailrowcollapse')) {\n this.toogleExpandcollapse(target);\n }\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n DetailRow.prototype.collapse = function (target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowexpand');\n }\n if (target && target.classList.contains('e-detailrowexpand')) {\n this.toogleExpandcollapse(target);\n }\n };\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n DetailRow.prototype.expandAll = function () {\n this.expandCollapse(true);\n this.parent.trigger(actionComplete, { requestType: 'expandAllComplete', type: actionComplete, moduleObj: this });\n };\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n DetailRow.prototype.collapseAll = function () {\n this.expandCollapse(false);\n this.parent.trigger(actionComplete, { requestType: 'collapseAllComplete', type: actionComplete, moduleObj: this });\n };\n DetailRow.prototype.expandCollapse = function (isExpand) {\n var td;\n var rows = this.parent.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n td = rows[parseInt(i.toString(), 10)].querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n if (isExpand) {\n this.expand(td);\n }\n else {\n this.collapse(td);\n }\n }\n };\n DetailRow.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'downArrow') {\n e.action = 'ctrlDownArrow';\n }\n else if (e.action === 'upArrow') {\n e.action = 'ctrlUpArrow';\n }\n }\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'altUpArrow':\n case 'altDownArrow':\n // eslint-disable-next-line no-case-declarations\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var td = dataRow.querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n if (e.action === 'altDownArrow') {\n this.expand(td);\n }\n else {\n this.collapse(td);\n }\n }\n break;\n case 'enter':\n if (this.parent.isEdit) {\n return;\n }\n // eslint-disable-next-line no-case-declarations\n var element = this.focus.getFocusedElement();\n if (element && (element.classList.contains('e-icon-grightarrow') || element.classList.contains('e-icon-gdownarrow'))) {\n element = element.parentElement;\n }\n if (element && !element.classList.contains('e-detailrowcollapse') &&\n !element.classList.contains('e-detailrowexpand')) {\n break;\n }\n this.toogleExpandcollapse(element);\n break;\n }\n };\n DetailRow.prototype.refreshColSpan = function () {\n var detailrows = this.parent.contentModule.getTable().querySelectorAll('tr.e-detailrow');\n var colSpan = this.parent.getVisibleColumns().length;\n for (var i = 0; i < detailrows.length; i++) {\n detailrows[parseInt(i.toString(), 10)].querySelector('.e-detailcell').setAttribute('colspan', colSpan + '');\n }\n };\n DetailRow.prototype.destroyChildGrids = function () {\n var rows = this.parent.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].childGrid = null;\n }\n for (var i = 0; i < this.childRefs.length; i++) {\n if (!this.childRefs[parseInt(i.toString(), 10)].isDestroyed) {\n this.childRefs[parseInt(i.toString(), 10)].destroy();\n }\n }\n this.childRefs = [];\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n DetailRow.prototype.getModuleName = function () {\n return 'detailRow';\n };\n return DetailRow;\n}());\n\n/**\n *\n * The `Toolbar` module is used to handle ToolBar actions.\n */\nvar Toolbar = /** @__PURE__ @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('FilterIcon')\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('SortIcon')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.some(function (item) {\n return (typeof item === 'object' && item.text === 'Search') || item === 'Search';\n })) {\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 this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.unWireEvent();\n this.removeEventListener();\n this.toolbar.created = null;\n this.toolbar.clicked = null;\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.destroy();\n }\n if (this.parent.isAngular) {\n var viewStr = 'viewContainerRef';\n var registerTemp = 'registeredTemplate';\n this.toolbar[\"\" + viewStr] = null;\n this.toolbar[\"\" + registerTemp] = null;\n }\n if (this.element.parentNode) {\n remove(this.element);\n this.toolbar = null;\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 break;\n }\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View': {\n var viewText = void 0;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? ICON_GRID : ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: ''\n };\n break;\n }\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n var mergedItems = Object.assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n Toolbar.prototype.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n this.parent.on(selectionChanged, this.onSelectionChanged, this);\n this.parent.on(layoutChange, this.onLayoutChange, this);\n this.parent.on(showPaste, this.showPaste, this);\n this.parent.on(hidePaste, this.hidePaste, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n var itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map(function (item) {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map(function (item) {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele && !this.parent.enableVirtualization) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? ICON_GRID : ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(modelChanged, this.onPropertyChanged);\n this.parent.off(selectionChanged, this.onSelectionChanged);\n this.parent.off(layoutChange, this.onLayoutChange);\n this.parent.off(showPaste, this.showPaste);\n this.parent.off(hidePaste, this.hidePaste);\n this.parent.off(destroy, this.destroy);\n this.parent.off(sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\n\nvar Virtualization = /** @__PURE__ @class */ (function () {\n function Virtualization(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n *\n * @returns {void}\n */\n Virtualization.prototype.setUIVirtualization = function () {\n // Get the current view data source\n var currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n var firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n var listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n if (this.itemList.length !== 0 && this.largeIconInstance.element.querySelector('.' + EMPTY)) {\n this.largeIconInstance.element.removeChild(this.largeIconInstance.element.querySelector('.' + EMPTY));\n }\n // Get the total number of items\n this.itemCount = this.getItemCount(Object.keys(this.largeIconInstance.allItems).length);\n // Remove the first child element from the large icon element\n this.largeIconInstance.element.firstChild.remove();\n // Set the items for the large icon view to the current view data source, limited to the number of items to display\n this.largeIconInstance.items = currentViewItems.slice(0, this.itemCount);\n };\n /**\n * Sets the height of the top and bottom elements that are used for virtualization.\n * These elements are used to give the appearance of an infinitely scrolling list.\n *\n * @returns {void}\n */\n Virtualization.prototype.setUlElementHeight = function () {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add('e-virtual-top');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add('e-virtual-bottom');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n var marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n };\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n *\n * @param {number} dataSourceLength The length of the data source.\n * @returns {number} The number of items to display.\n */\n Virtualization.prototype.getItemCount = function (dataSourceLength) {\n // Get the margin values for list items\n var widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount =\n Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) /\n (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n var itemCount = this.rowItemCount *\n (Math.round(parseFloat(formatUnit(this.largeIconInstance.element.clientHeight)) / this.itemList[0].offsetHeight));\n // If the calculated item count is greater than the data source length, set the item count to the data source length\n if (itemCount > dataSourceLength || itemCount === 0) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n /**\n * Wires or un wires the scroll event for the list element.\n *\n * @param {boolean} destroy - Set `true` to unwire the scroll event.\n * @returns {void}\n */\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n };\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n *\n * @returns {void}\n * @private\n */\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n // Set the starting height to 0\n var startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, this.largeIconInstance.element));\n this.itemCount = this.itemCount !== this.largeIconInstance.itemList.length ?\n this.largeIconInstance.itemList.length : this.itemCount;\n this.largeIconInstance.items = this.largeIconInstance.allItems.slice(this.renderedCount -\n this.itemCount, this.renderedCount);\n };\n /**\n * Calculates the current scroll position of the list element.\n *\n * @param {number} startingHeight The starting height from which to calculate the scroll position.\n * @returns {number} The current scroll position.\n * @private\n */\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n };\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n *\n * @param {number} listDiff The number of rows to update.\n * @param {boolean} isScrollingDown If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n // Update the displayed items\n for (var i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n };\n /**\n * Updates the items in the large icons view.\n *\n * @param {boolean} isScrollingDown - If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n Virtualization.prototype.updateUI = function (isScrollingDown) {\n var _this = this;\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, listElements));\n this.itemList.forEach(function (liEle) {\n _this.largeIconInstance.element.firstElementChild.insertBefore(liEle, _this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (var i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n var lastItemIndex = void 0;\n var isAllRendered = void 0;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n var startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (var len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (var i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n /**\n * Destroys the component.\n *\n * @returns {void}\n */\n Virtualization.prototype.destroy = function () {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n };\n return Virtualization;\n}());\n\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.isSameNodeClicked = false;\n this.isNodeExpandCalled = false;\n this.renameParent = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNullOrUndefined(this.treeObj)) {\n return;\n }\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNullOrUndefined(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNullOrUndefined(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new TreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop && isNullOrUndefined(this.dragObj)) {\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n var directories = getDirectories(files);\n var targetDirectory = this.getTreeData(target);\n if (directories.length > 0 && targetDirectory.length > 0 &&\n (directories[0].filterPath == null ||\n isNullOrUndefined(targetDirectory[0])\n && targetDirectory[0].filterPath == null\n || directories[0].filterPath !==\n targetDirectory[0].filterPath)) {\n var length_1 = 0;\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line camelcase\n folders[parseInt(length_1.toString(), 10)]._fm_icon = 'e-fe-folder';\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNullOrUndefined(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNullOrUndefined(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n var element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n var childElements = select('ul', element);\n if (isNullOrUndefined(childElements)) {\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick &&\n !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {\n this.restrictSelecting = false;\n this.isNodeClickCalled = false;\n return;\n }\n if (!this.renameParent) {\n this.parent.activeModule = 'navigationpane';\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n }\n };\n // Opens the folder while clicking open context menu item in the treeview.\n NavigationPane.prototype.openFileOnContextMenuClick = function (node) {\n var data = this.treeObj.getTreeData(node);\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? pasteEnd : pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.setProperties({ selectedNodes: [node.getAttribute('data-uid')] });\n }\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node);\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n var previousPath = this.parent.path;\n if (!this.isRightClick && this.isSameNodeClicked) {\n updatePath(args.node, this.parent.itemData[0], this.parent);\n }\n else {\n this.parent.pathId = getPathId(args.node);\n this.parent.visitedItem = args.node;\n }\n if (args.node.querySelector('.' + ICONS) && args.node.querySelector('.' + LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (previousPath !== this.parent.path) {\n if (!this.isRightClick && this.isSameNodeClicked) {\n read(this.parent, this.isPathDragged ? pasteEnd : pathChanged, this.parent.path);\n this.isNodeClickCalled = true;\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = false;\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + LIST_ITEM) === null) {\n this.isNodeExpandCalled = true;\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNullOrUndefined(id) ? false : true;\n var newText = isNullOrUndefined(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, nodeExpand, path);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n this.isNodeExpandCalled = false;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNullOrUndefined(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = (!isNullOrUndefined(sNode)) ? select('.' + LIST_PARENT, sNode) : null;\n if (isNullOrUndefined(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNullOrUndefined(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n if (this.parent.uploadObj.directoryUpload && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.setProperties({ selectedNodes: [sleId] });\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.addChild(args.files, id, false);\n this.treeObj.setProperties({ selectedNodes: [this.parent.pathId[this.parent.pathId.length - 1]] });\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n var id_1 = this.previousSelected.length > 0 && this.treeObj.getTreeData(this.previousSelected[0]).length !== 0\n ? this.previousSelected[0] : getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n this.updateItemData();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n var data = this.treeObj.getTreeData();\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, finalizeEnd, this.parent.path);\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.setProperties({ selectedNodes: [e.selectedNode] });\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n if (isFileSystemData(this.parent)) {\n this.moveNames = [];\n var obj = this.parent.dragData;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n }\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n var selectedNode = this.treeObj.getTreeData().filter(function (obj) { return obj.name === resultObj.name; })[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (isFileSystemData(this.parent) && (this.parent.path === this.parent.dropPath || this.parent.targetModule === 'navigationpane')) {\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n var obj = this.parent.isDragDrop || isFileSystemData(this.parent) ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n this.parent.on(downloadInit, this.onDownLoadInit, this);\n this.parent.on(initialEnd, this.onInitialEnd, this);\n this.parent.on(finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(pathChanged, this.onPathChanged, this);\n this.parent.on(pasteEnd, this.onpasteEnd, this);\n this.parent.on(cutEnd, this.onCutEnd, this);\n this.parent.on(pasteInit, this.onpasteInit, this);\n this.parent.on(nodeExpand, this.onNodeExpanded, this);\n this.parent.on(createEnd, this.onCreateEnd, this);\n this.parent.on(selectedData, this.onSelectedData, this);\n this.parent.on(deleteInit, this.onDeleteInit, this);\n this.parent.on(deleteEnd, this.onDeleteEnd, this);\n this.parent.on(refreshEnd, this.onRefreshEnd, this);\n this.parent.on(updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(openInit, this.onOpenInit, this);\n this.parent.on(openEnd, this.onOpenEnd, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(renameInit, this.onRenameInit, this);\n this.parent.on(renameEnd, this.onRenameEnd, this);\n this.parent.on(renameEndParent, this.onRenameEndParent, this);\n this.parent.on(clearPathInit, this.onClearPathInit, this);\n this.parent.on(cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(dropInit, this.onDropInit, this);\n this.parent.on(menuItemData, this.onMenuItemData, this);\n this.parent.on(dragEnd, this.onDragEnd, this);\n this.parent.on(dragging, this.onDragging, this);\n this.parent.on(dropPath, this.onDropPath, this);\n this.parent.on(detailsInit, this.onDetailsInit, this);\n this.parent.on(pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(initialEnd, this.onInitialEnd);\n this.parent.off(downloadInit, this.onDownLoadInit);\n this.parent.off(finalizeEnd, this.onFinalizeEnd);\n this.parent.off(selectedData, this.onSelectedData);\n this.parent.off(modelChanged, this.onPropertyChanged);\n this.parent.off(pathChanged, this.onPathChanged);\n this.parent.off(pasteEnd, this.onpasteEnd);\n this.parent.off(cutEnd, this.onCutEnd);\n this.parent.off(pasteInit, this.onpasteInit);\n this.parent.off(updateTreeSelection, this.onSelectionChanged);\n this.parent.off(nodeExpand, this.onNodeExpanded);\n this.parent.off(createEnd, this.onCreateEnd);\n this.parent.off(refreshEnd, this.onRefreshEnd);\n this.parent.off(openInit, this.onOpenInit);\n this.parent.off(openEnd, this.onOpenEnd);\n this.parent.off(destroy, this.destroy);\n this.parent.off(renameInit, this.onRenameInit);\n this.parent.off(renameEnd, this.onRenameEnd);\n this.parent.off(renameEndParent, this.onRenameEndParent);\n this.parent.off(clearPathInit, this.onClearPathInit);\n this.parent.off(deleteInit, this.onDeleteInit);\n this.parent.off(deleteEnd, this.onDeleteEnd);\n this.parent.off(cutCopyInit, this.oncutCopyInit);\n this.parent.off(dropInit, this.onDropInit);\n this.parent.off(dragEnd, this.onDragEnd);\n this.parent.off(dragging, this.onDragging);\n this.parent.off(dropPath, this.onDropPath);\n this.parent.off(detailsInit, this.onDetailsInit);\n this.parent.off(menuItemData, this.onMenuItemData);\n this.parent.off(pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n NavigationPane.prototype.getTreeData = function (args) {\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNullOrUndefined(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var node = select('[data-uid=\"' + this.parent.pathId[this.parent.pathId.length - 1] + '\"]', this.treeObj.element);\n updatePath(node, this.parent.itemData[0], this.parent);\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * DetailsView module\n */\nvar DetailsView = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.isMultiSelect = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu$2, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n back: 'backspace'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n var _this = this;\n if (this.parent.enablePersistence) {\n var gridPersistenceValue = window.localStorage.getItem('grid' + this.parent.element.id + '_grid');\n if (!isNullOrUndefined(gridPersistenceValue)) {\n var model = JSON.parse(gridPersistenceValue);\n if (!isNullOrUndefined(model) && Object.keys(model).length > 0 && 'sortSettings' in model) {\n delete model.sortSettings;\n window.localStorage.setItem('grid' + this.parent.element.id + '_grid', JSON.stringify(model));\n }\n }\n }\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], MULTI_SELECT);\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.parent.sortBy; }) !== -1;\n if (this.parent.isMobile || !isValidSortField) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick'\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\n beforeCopy: function (args) { args.cancel = true; },\n load: function () {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n if (this.parent.isReact) {\n this.gridObj.isReact = true;\n this.gridObj.portals = [];\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n DetailsView.prototype.reactTemplateRender = function (args) {\n this.parent['portals'] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent['portals'] = this.parent['portals'].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent['portals']);\n this.parent['renderReactTemplates']();\n };\n /**\n * Gets the grid height.\n *\n * @returns {number} - The grid height.\n * @private\n */\n DetailsView.prototype.getGridHeight = function () {\n // Get the content pane and breadcrumb bar elements\n var pane = select('#' + this.parent.element.id + CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + BREADCRUMBBAR_ID, this.parent.element);\n // The maximum height of the header is 36\n var headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNullOrUndefined(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n var enableHtmlSanitizer = this.parent.enableHtmlSanitizer;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return \"
    \" + name + \"
    \" + data._fm_modified + \"
    \" + data.size + \"\";\n })\n }\n ];\n }\n else {\n columns = extend([], this.parent.detailsViewSettings.columns, null, true);\n this.adjustWidth(columns, 'name');\n var _loop_1 = function (i, len) {\n columns[i].headerText = getLocaleText(this_1.parent, columns[i].headerText);\n if (columns[i].field === 'name' && !isNullOrUndefined(columns[i].template) && !(typeof columns[i].template === 'function')) {\n var template_1 = columns[i].template;\n columns[i].template = initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return template_1.replace(/\\${name}/g, name);\n });\n }\n };\n var this_1 = this;\n for (var i = 0, len = columns.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth,\n template: initializeCSPTemplate(function (data) {\n return \"\";\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return '';\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n if (this.parent.enableRangeSelection) {\n var HiddenName = { field: 'name', visible: false, customAttributes: { class: 'e-drag-text' } };\n columns.push(HiddenName);\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var text = getValue('name', args.data);\n var textEle = args.row.querySelector('[title= \"' + text + '\"]');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n if (name_1.indexOf(type) !== -1) {\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var sizeFormat = void 0;\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n var _this = this;\n showSpinner(this.parent.element);\n var nameColumn = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === _this.parent.sortBy; });\n if (nameColumn && !('sortComparer' in nameColumn)) {\n var items = getSortedData(this.parent, (this.parent.enableVirtualization)\n ? args.result\n : this.gridObj.dataSource);\n args.result = items;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) ||\n ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&\n this.element.querySelector('.e-content').scrollTop === 0))) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true && (!isNullOrUndefined(this.gridObj.getDataRows()) && this.gridObj.getDataRows().length > 0)) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n else if (!this.parent.showFileExtension && !this.parent.hasId && node.includes('.')) {\n var Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n DetailsView.prototype.addSelection = function (data) {\n var items = this.gridObj.getCurrentViewRecords();\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNullOrUndefined(this.gridObj)) {\n this.gridObj.clearSelection();\n this.interaction = true;\n }\n break;\n case 'showFileExtension':\n read(this.parent, pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, pathChanged, this.parent.path);\n break;\n case 'showItemCheckBoxes':\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var pathField = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === 'filterPath'; });\n if ((this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) ||\n (!isNullOrUndefined(pathField) && !isNullOrUndefined(pathField.hideAtMedia) && pathField.hideAtMedia !== '')) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.gridObj.freezeRefresh();\n if (this.parent.isReact) {\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNullOrUndefined(this.element.querySelector('.' + GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + EMPTY)) {\n if (this.element.querySelector('.' + GRID_VIEW).querySelector('.' + EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + GRID_VIEW).querySelector('.' + EMPTY);\n this.element.querySelector('.' + GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNullOrUndefined(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n if (_this.parent.enableVirtualization) {\n _this.parent.element.querySelector('#' + _this.parent.element.id + IMG_DIALOG_ID).focus();\n }\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(hideLayout, {});\n this.gridObj.element.classList.remove(DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(layoutChange, this.onLayoutChange, this);\n this.parent.on(pathChanged, this.onPathChanged, this);\n this.parent.on(createEnd, this.onCreateEnd, this);\n this.parent.on(dropInit, this.onDropInit, this);\n this.parent.on(detailsInit, this.onDetailsInit, this);\n this.parent.on(refreshEnd, this.onRefreshEnd, this);\n this.parent.on(search, this.onSearchFiles, this);\n this.parent.on(methodCall, this.onMethodCall, this);\n this.parent.on(actionFailure, this.onActionFailure, this);\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n this.parent.on(deleteInit, this.onDeleteInit, this);\n this.parent.on(deleteEnd, this.onDeleteEnd, this);\n this.parent.on(selectedData, this.onSelectedData, this);\n this.parent.on(renameInit, this.onRenameInit, this);\n this.parent.on(renameEnd, this.onPathChanged, this);\n this.parent.on(openInit, this.onOpenInit, this);\n this.parent.on(sortColumn, this.onSortColumn, this);\n this.parent.on(openEnd, this.onPathChanged, this);\n this.parent.on(filterEnd, this.onPathChanged, this);\n this.parent.on(pasteInit, this.onPasteInit, this);\n this.parent.on(hideLayout, this.onHideLayout, this);\n this.parent.on(selectAllInit, this.onSelectAllInit, this);\n this.parent.on(clearAllInit, this.onClearAllInit, this);\n this.parent.on(pathColumn, this.onPathColumn, this);\n this.parent.on(selectionChanged, this.onSelectionChanged, this);\n this.parent.on(beforeRequest, this.onBeforeRequest, this);\n this.parent.on(afterRequest, this.onAfterRequest, this);\n this.parent.on(pasteEnd, this.onpasteEnd, this);\n this.parent.on(cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(menuItemData, this.onMenuItemData, this);\n this.parent.on(resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(splitterResize, this.onDetailsResize, this);\n this.parent.on(layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(dropPath, this.onDropPath, this);\n this.parent.on(updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(finalizeEnd, this.onFinalizeEnd);\n this.parent.off(destroy, this.destroy);\n this.parent.off(layoutChange, this.onLayoutChange);\n this.parent.off(pathChanged, this.onPathChanged);\n this.parent.off(pasteInit, this.onPasteInit);\n this.parent.off(createEnd, this.onCreateEnd);\n this.parent.off(refreshEnd, this.onRefreshEnd);\n this.parent.off(search, this.onSearchFiles);\n this.parent.off(methodCall, this.onMethodCall);\n this.parent.off(actionFailure, this.onActionFailure);\n this.parent.off(modelChanged, this.onPropertyChanged);\n this.parent.off(renameInit, this.onRenameInit);\n this.parent.off(renameEnd, this.onPathChanged);\n this.parent.off(filterEnd, this.onPathChanged);\n this.parent.off(openInit, this.onOpenInit);\n this.parent.off(sortColumn, this.onSortColumn);\n this.parent.off(openEnd, this.onPathChanged);\n this.parent.off(hideLayout, this.onHideLayout);\n this.parent.off(selectAllInit, this.onSelectAllInit);\n this.parent.off(clearAllInit, this.onClearAllInit);\n this.parent.off(deleteInit, this.onDeleteInit);\n this.parent.off(deleteEnd, this.onDeleteEnd);\n this.parent.off(pathColumn, this.onPathColumn);\n this.parent.off(selectionChanged, this.onSelectionChanged);\n this.parent.off(beforeRequest, this.onBeforeRequest);\n this.parent.off(afterRequest, this.onAfterRequest);\n this.parent.off(pasteEnd, this.onpasteEnd);\n this.parent.off(cutCopyInit, this.oncutCopyInit);\n this.parent.off(dropInit, this.onDropInit);\n this.parent.off(selectedData, this.onSelectedData);\n this.parent.off(detailsInit, this.onDetailsInit);\n this.parent.off(menuItemData, this.onMenuItemData);\n this.parent.off(resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(splitterResize, this.onDetailsResize);\n this.parent.off(layoutRefresh, this.onLayoutRefresh);\n this.parent.off(dropPath, this.onDropPath);\n this.parent.off(updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNullOrUndefined(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNullOrUndefined(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.gridObj) {\n if (this.parent.allowDragAndDrop && isNullOrUndefined(this.dragObj)) {\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n var info = null;\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + FOLDER, item);\n this.parent.isFile = isNullOrUndefined(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n if (!this.isMultiSelect) {\n this.isMultiSelect = true;\n if ((args.isShiftPressed || args.isCtrlPressed) && !this.parent.allowMultiSelection && (args.target && args.target.parentElement && !args.target.parentElement.classList.contains('e-checkbox-wrapper'))) {\n args.cancel = true;\n var rowIndex = (args && args.rowIndexes)\n ? args.rowIndexes[args.rowIndexes.length - 1]\n : args.rowIndex;\n this.gridObj.selectRow(rowIndex);\n }\n this.isMultiSelect = false;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNullOrUndefined(item) && !isNullOrUndefined(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNullOrUndefined(this.gridObj) && !isNullOrUndefined(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else if (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNullOrUndefined(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNullOrUndefined(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNullOrUndefined(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], MULTI_SELECT);\n }\n this.parent.notify(selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n _this.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (_this.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (_this.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', _this.parent.allowMultiSelection, _this.gridObj.selectionModule);\n addClass([_this.parent.element], MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + ROW);\n var index = _this.gridObj.getRows().indexOf(row);\n _this.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.onBlur = function (e) {\n if ((e.relatedTarget !== null && closest(e.relatedTarget, '.e-grid') !== e.relatedTarget)) {\n return;\n }\n if (!isNullOrUndefined(this.gridObj.element)) {\n var thElements = this.gridObj.element.querySelectorAll('th');\n for (var i = 0; i < thElements.length; i++) {\n if (thElements[i].classList.contains('e-focus')) {\n this.addFocus(null);\n }\n }\n }\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNullOrUndefined(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n this.parent.notify(detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1 && this.gridObj.allowSorting === true) {\n if (!e.target.classList.contains('e-fe-grid-icon')) {\n var direction = !e.target.getElementsByClassName('e-ascending').length ? 'Ascending' : 'Descending';\n var currentField = this.gridObj.getColumnByUid(e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid')).field;\n this.gridObj.sortColumn(currentField, direction);\n if (!isNullOrUndefined(this.getFocusedItem().nextSibling)) {\n this.getFocusedItem().nextSibling.setAttribute('tabindex', '0');\n }\n }\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNullOrUndefined(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNullOrUndefined(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.addHeaderFocus(e);\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNullOrUndefined(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNullOrUndefined(gridItems[0])) {\n if (!isNullOrUndefined(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNullOrUndefined(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNullOrUndefined(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNullOrUndefined(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNullOrUndefined(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNullOrUndefined(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNullOrUndefined(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNullOrUndefined(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNullOrUndefined(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNullOrUndefined(indexValue) ? 0 : indexValue, isNullOrUndefined(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNullOrUndefined(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNullOrUndefined(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNullOrUndefined(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [FOCUS, FOCUSED]);\n }\n if (!isNullOrUndefined(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [FOCUS, FOCUSED]);\n }\n };\n DetailsView.prototype.addHeaderFocus = function (e) {\n var treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n var nameFocus;\n if (!isNullOrUndefined(e.target) && e.target.classList.contains('e-defaultcursor')) {\n this.addFocus(0);\n nameFocus = e.target.nextElementSibling;\n }\n else if (!isNullOrUndefined(this.gridObj.element.querySelector('.e-focus')) && (this.gridObj.element.querySelector('.e-focus').tagName === 'TH')) {\n nameFocus = this.gridObj.element.querySelector('.e-focus').nextElementSibling;\n this.addFocus(0);\n }\n else {\n nameFocus = select('th.e-fe-grid-icon', this.element);\n }\n if (!isNullOrUndefined(nameFocus)) {\n nameFocus.setAttribute('tabindex', '0');\n nameFocus.focus();\n addClass([nameFocus], [FOCUS, FOCUSED]);\n treeFocus.setAttribute('tabindex', '0');\n if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {\n removeClass([treeFocus], [FOCUS, FOCUSED]);\n }\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNullOrUndefined(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n DetailsView.prototype.getRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNullOrUndefined(ids)) {\n this.performDelete();\n return;\n }\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNullOrUndefined(ids)) {\n this.doDownload();\n return;\n }\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNullOrUndefined(id)) {\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNullOrUndefined(id)) {\n this.performRename();\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNullOrUndefined(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\n\nexport { ACTIVE, ALT_DIALOG_ID, AjaxSettings, BLUR, BREADCRUMBBAR_ID, BREADCRUMBS, BreadCrumbBar, CB_WRAP, CHECK, CHECK_SELECT, CLONE, COLLAPSED, CONTENT_ID, CONTEXT_MENU_ID, CONTROL, Column, ContextMenu, ContextMenuSettings, DETAILS_LABEL, DIALOG_ID, DISPLAY_NONE, DROP_FILE, DROP_FOLDER, Delete, DetailsView, DetailsViewSettings, Download, EMPTY, EMPTY_CONTENT, EMPTY_INNER_CONTENT, ERROR_CONTENT, EXTN_DIALOG_ID, FILTER, FOCUS, FOCUSED, FOLDER, FRAME, FULLROW, FileManager, GRID_CONTENT, GRID_HEADER, GRID_ID, GRID_VIEW, GetDetails, HEADER_CHECK, HOVER, ICONS, ICON_BREADCRUMB, ICON_CLEAR, ICON_COLLAPSIBLE, ICON_COPY, ICON_CUT, ICON_DELETE, ICON_DETAILS, ICON_DOWNLOAD, ICON_DROP_IN, ICON_DROP_OUT, ICON_GRID, ICON_IMAGE, ICON_LARGE, ICON_MUSIC, ICON_NEWFOLDER, ICON_NO_DROP, ICON_OPEN, ICON_OPTIONS, ICON_PASTE, ICON_REFRESH, ICON_RENAME, ICON_SELECTALL, ICON_SHORTBY, ICON_UPLOAD, ICON_VIDEO, ICON_VIEW, IMG_DIALOG_ID, LARGEICON_ID, LARGE_EMPTY_FOLDER, LARGE_EMPTY_FOLDER_TWO, LARGE_ICON, LARGE_ICONS, LARGE_ICON_FOLDER, LAYOUT, LAYOUT_CONTENT, LAYOUT_ID, LIST_ITEM, LIST_PARENT, LIST_TEXT, LargeIconsView, MENU_ICON, MENU_ITEM, MOBILE, MOB_POPUP, MULTI_SELECT, NAVIGATION, NAVIGATION_ID, NavigationPane, NavigationPaneSettings, OVERLAY, RETRY_DIALOG_ID, RETRY_ID, ROOT, ROOT_POPUP, ROW, ROWCELL, RTL, SEARCH_ID, SELECTED_ITEMS, SORTBY_ID, SPLITTER_ID, SPLIT_BAR, STATUS, SUBMENU_ICON, Search, SearchSettings, TB_ITEM, TB_OPTION_DOT, TB_OPTION_TICK, TEMPLATE_CELL, TEXT_CONTENT, TOOLBAR_ID, TREE_ID, TREE_VIEW, Toolbar, ToolbarItem, ToolbarSettings, UPLOAD_DIALOG_ID, UPLOAD_ID, UploadSettings, VALUE, VIEW_ID, Virtualization, actionFailure, activeElement, addBlur, afterRequest, beforeDelete, beforeDownload, beforeRequest, clearAllInit, clearPathInit, closePopup, columnArray, copyFiles, createDeniedDialog, createDialog, createEmptyElement, createEnd, createExtDialog, createFolder, createImageDialog, createNewFolder, createVirtualDragElement, cutCopyInit, cutEnd, cutFiles, defaultToolbarItems, deleteEnd, deleteInit, destroy, detailsInit, doDeleteFiles, doDownload, doDownloadFiles, doPasteUpdate, doRename, download, downloadInit, dragCancel, dragEnd, dragHelper, dragStartHandler, dragStopHandler, dragging, draggingHandler, dropHandler, dropInit, dropPath, fileItems, fileType, filter, filterEnd, finalizeEnd, folderItems, generatePath, getAccessClass, getAccessDetails, getAllChildItems, getCssClass, getDirectories, getDirectoryPath, getDuplicateData, getFullPath, getImageUrl, getItemName, getLocaleText, getModule, getName, getObject, getParentPath, getParents, getPath, getPathId, getPathNames, getPathObject, getSortField, getSortedData, getTargetModule, getTargetPath, hasContentAccess, hasDownloadAccess, hasEditAccess, hasReadAccess, hasUploadAccess, hideLayout, hidePaste, initialEnd, isFile, isFileSystemData, layoutChange, layoutItems, layoutRefresh, menuItemData, methodCall, modelChanged, nodeExpand, objectToString, openAction, openEnd, openInit, openSearchFolder, paste, pasteEnd, pasteHandler, pasteInit, pathChanged, pathColumn, pathDrag, permissionCopy, permissionDownload, permissionEdit, permissionEditContents, permissionRead, permissionUpload, read, readDropPath, refresh, refreshEnd, removeActive, removeBlur, removeDropTarget, removeItemClass, rename, renameEnd, renameEndParent, renameInit, resizeEnd, scrollHandler, search, searchTextChange, searchWordHandler, selectAllInit, selectedData, selectionChanged, setDateObject, setNextPath, setNodeId, showPaste, skipUpload, sortByChange, sortColumn, sortComparer, sortbyClickHandler, splitterResize, treeSelect, updateLayout, updatePath, updateRenamingData, updateSelectionData, updateTreeSelection, upload, uploadItem, validateSubFolder };\n","import { __decorate } from 'tslib';\nimport * as i0 from '@angular/core';\nimport { Directive, ContentChild, ContentChildren, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { ComplexBase, setValue, Template, ArrayBase, ComponentBase, ComponentMixins } from '@syncfusion/ej2-angular-base';\nimport { FileManager, DetailsView, NavigationPane, LargeIconsView, Toolbar, ContextMenu, BreadCrumbBar, Virtualization } from '@syncfusion/ej2-filemanager';\nexport * from '@syncfusion/ej2-filemanager';\nimport { CommonModule } from '@angular/common';\n\nlet input = ['align', 'cssClass', 'disabled', 'htmlAttributes', 'id', 'name', 'overflow', 'prefixIcon', 'showAlwaysInPopup', 'showTextOn', 'suffixIcon', 'tabIndex', 'template', 'text', 'tooltipText', 'type', 'visible', 'width'];\nlet outputs$1 = [];\nclass ToolbarItemDirective extends ComplexBase {\n constructor(viewContainerRef) {\n super();\n this.viewContainerRef = viewContainerRef;\n setValue('currentInstance', this, this.viewContainerRef);\n this.registerEvents(outputs$1);\n this.directivePropList = input;\n }\n}\nToolbarItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: ToolbarItemDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nToolbarItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.3\", type: ToolbarItemDirective, selector: \"e-toolbaritems>e-toolbaritem\", inputs: { align: \"align\", cssClass: \"cssClass\", disabled: \"disabled\", htmlAttributes: \"htmlAttributes\", id: \"id\", name: \"name\", overflow: \"overflow\", prefixIcon: \"prefixIcon\", showAlwaysInPopup: \"showAlwaysInPopup\", showTextOn: \"showTextOn\", suffixIcon: \"suffixIcon\", tabIndex: \"tabIndex\", template: \"template\", text: \"text\", tooltipText: \"tooltipText\", type: \"type\", visible: \"visible\", width: \"width\" }, queries: [{ propertyName: \"template\", first: true, predicate: [\"template\"], descendants: true }], usesInheritance: true, ngImport: i0 });\n__decorate([\n Template()\n], ToolbarItemDirective.prototype, \"template\", void 0);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: ToolbarItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'e-toolbaritems>e-toolbaritem',\n inputs: input,\n outputs: outputs$1,\n queries: {}\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { template: [{\n type: ContentChild,\n args: ['template']\n }] } });\n/**\n * ToolbarItem Array Directive\n * @private\n */\nclass ToolbarItemsDirective extends ArrayBase {\n constructor() {\n super('toolbaritems');\n }\n}\nToolbarItemsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: ToolbarItemsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nToolbarItemsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.3\", type: ToolbarItemsDirective, selector: \"ejs-filemanager>e-toolbaritems\", queries: [{ propertyName: \"children\", predicate: ToolbarItemDirective }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: ToolbarItemsDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'ejs-filemanager>e-toolbaritems',\n queries: {\n children: new ContentChildren(ToolbarItemDirective)\n },\n }]\n }], ctorParameters: function () { return []; } });\n\nconst inputs = ['ajaxSettings', 'allowDragAndDrop', 'allowMultiSelection', 'contextMenuSettings', 'cssClass', 'detailsViewSettings', 'enableHtmlSanitizer', 'enablePersistence', 'enableRangeSelection', 'enableRtl', 'enableVirtualization', 'fileSystemData', 'height', 'locale', 'navigationPaneSettings', 'path', 'popupTarget', 'rootAliasName', 'searchSettings', 'selectedItems', 'showFileExtension', 'showHiddenItems', 'showItemCheckBoxes', 'showThumbnail', 'sortBy', 'sortComparer', 'sortOrder', 'toolbarItems', 'toolbarSettings', 'uploadSettings', 'view', 'width'];\nconst outputs = ['beforeDelete', 'beforeDownload', 'beforeFolderCreate', 'beforeImageLoad', 'beforeMove', 'beforePopupClose', 'beforePopupOpen', 'beforeRename', 'beforeSend', 'created', 'delete', 'destroyed', 'failure', 'fileDragStart', 'fileDragStop', 'fileDragging', 'fileDropped', 'fileLoad', 'fileOpen', 'fileSelect', 'fileSelection', 'folderCreate', 'menuClick', 'menuClose', 'menuOpen', 'move', 'popupClose', 'popupOpen', 'rename', 'search', 'success', 'toolbarClick', 'toolbarCreate', 'uploadListCreate'];\nconst twoWays = [''];\n/**\n * Represents the Essential JS 2 Angular FileManager Component.\n * ```html\n * \n * ```\n */\nlet FileManagerComponent = class FileManagerComponent extends FileManager {\n constructor(ngEle, srenderer, viewContainerRef, injector) {\n super();\n this.ngEle = ngEle;\n this.srenderer = srenderer;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.tags = ['toolbarItems'];\n this.element = this.ngEle.nativeElement;\n this.injectedModules = this.injectedModules || [];\n try {\n let mod = this.injector.get('FileManagerDetailsView');\n if (this.injectedModules.indexOf(mod) === -1) {\n this.injectedModules.push(mod);\n }\n }\n catch (_a) { }\n try {\n let mod = this.injector.get('FileManagerNavigationPane');\n if (this.injectedModules.indexOf(mod) === -1) {\n this.injectedModules.push(mod);\n }\n }\n catch (_b) { }\n try {\n let mod = this.injector.get('FileManagerLargeIconsView');\n if (this.injectedModules.indexOf(mod) === -1) {\n this.injectedModules.push(mod);\n }\n }\n catch (_c) { }\n try {\n let mod = this.injector.get('FileManagerToolbar');\n if (this.injectedModules.indexOf(mod) === -1) {\n this.injectedModules.push(mod);\n }\n }\n catch (_d) { }\n try {\n let mod = this.injector.get('FileManagerContextMenu');\n if (this.injectedModules.indexOf(mod) === -1) {\n this.injectedModules.push(mod);\n }\n }\n catch (_e) { }\n try {\n let mod = this.injector.get('FileManagerBreadCrumbBar');\n if (this.injectedModules.indexOf(mod) === -1) {\n this.injectedModules.push(mod);\n }\n }\n catch (_f) { }\n try {\n let mod = this.injector.get('FileManagerVirtualization');\n if (this.injectedModules.indexOf(mod) === -1) {\n this.injectedModules.push(mod);\n }\n }\n catch (_g) { }\n this.registerEvents(outputs);\n this.addTwoWay.call(this, twoWays);\n setValue('currentInstance', this, this.viewContainerRef);\n this.context = new ComponentBase();\n }\n ngOnInit() {\n this.context.ngOnInit(this);\n }\n ngAfterViewInit() {\n this.context.ngAfterViewInit(this);\n }\n ngOnDestroy() {\n this.context.ngOnDestroy(this);\n }\n ngAfterContentChecked() {\n this.tagObjects[0].instance = this.childToolbarItems;\n this.context.ngAfterContentChecked(this);\n }\n};\nFileManagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: FileManagerComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });\nFileManagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: FileManagerComponent, selector: \"ejs-filemanager\", inputs: { ajaxSettings: \"ajaxSettings\", allowDragAndDrop: \"allowDragAndDrop\", allowMultiSelection: \"allowMultiSelection\", contextMenuSettings: \"contextMenuSettings\", cssClass: \"cssClass\", detailsViewSettings: \"detailsViewSettings\", enableHtmlSanitizer: \"enableHtmlSanitizer\", enablePersistence: \"enablePersistence\", enableRangeSelection: \"enableRangeSelection\", enableRtl: \"enableRtl\", enableVirtualization: \"enableVirtualization\", fileSystemData: \"fileSystemData\", height: \"height\", locale: \"locale\", navigationPaneSettings: \"navigationPaneSettings\", path: \"path\", popupTarget: \"popupTarget\", rootAliasName: \"rootAliasName\", searchSettings: \"searchSettings\", selectedItems: \"selectedItems\", showFileExtension: \"showFileExtension\", showHiddenItems: \"showHiddenItems\", showItemCheckBoxes: \"showItemCheckBoxes\", showThumbnail: \"showThumbnail\", sortBy: \"sortBy\", sortComparer: \"sortComparer\", sortOrder: \"sortOrder\", toolbarItems: \"toolbarItems\", toolbarSettings: \"toolbarSettings\", uploadSettings: \"uploadSettings\", view: \"view\", width: \"width\" }, outputs: { beforeDelete: \"beforeDelete\", beforeDownload: \"beforeDownload\", beforeFolderCreate: \"beforeFolderCreate\", beforeImageLoad: \"beforeImageLoad\", beforeMove: \"beforeMove\", beforePopupClose: \"beforePopupClose\", beforePopupOpen: \"beforePopupOpen\", beforeRename: \"beforeRename\", beforeSend: \"beforeSend\", created: \"created\", delete: \"delete\", destroyed: \"destroyed\", failure: \"failure\", fileDragStart: \"fileDragStart\", fileDragStop: \"fileDragStop\", fileDragging: \"fileDragging\", fileDropped: \"fileDropped\", fileLoad: \"fileLoad\", fileOpen: \"fileOpen\", fileSelect: \"fileSelect\", fileSelection: \"fileSelection\", folderCreate: \"folderCreate\", menuClick: \"menuClick\", menuClose: \"menuClose\", menuOpen: \"menuOpen\", move: \"move\", popupClose: \"popupClose\", popupOpen: \"popupOpen\", rename: \"rename\", search: \"search\", success: \"success\", toolbarClick: \"toolbarClick\", toolbarCreate: \"toolbarCreate\", uploadListCreate: \"uploadListCreate\" }, queries: [{ propertyName: \"childToolbarItems\", first: true, predicate: ToolbarItemsDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });\nFileManagerComponent = __decorate([\n ComponentMixins([ComponentBase])\n], FileManagerComponent);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: FileManagerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ejs-filemanager',\n inputs: inputs,\n outputs: outputs,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n queries: {\n childToolbarItems: new ContentChild(ToolbarItemsDirective)\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i0.Injector }]; } });\n\n/**\n * NgModule definition for the FileManager component.\n */\nclass FileManagerModule {\n}\nFileManagerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: FileManagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFileManagerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: FileManagerModule, declarations: [FileManagerComponent,\n ToolbarItemDirective,\n ToolbarItemsDirective], imports: [CommonModule], exports: [FileManagerComponent,\n ToolbarItemDirective,\n ToolbarItemsDirective] });\nFileManagerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: FileManagerModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: FileManagerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [\n FileManagerComponent,\n ToolbarItemDirective,\n ToolbarItemsDirective\n ],\n exports: [\n FileManagerComponent,\n ToolbarItemDirective,\n ToolbarItemsDirective\n ]\n }]\n }] });\n\nconst DetailsViewService = { provide: 'FileManagerDetailsView', useValue: DetailsView };\nconst NavigationPaneService = { provide: 'FileManagerNavigationPane', useValue: NavigationPane };\nconst LargeIconsViewService = { provide: 'FileManagerLargeIconsView', useValue: LargeIconsView };\nconst ToolbarService = { provide: 'FileManagerToolbar', useValue: Toolbar };\nconst ContextMenuService = { provide: 'FileManagerContextMenu', useValue: ContextMenu };\nconst BreadCrumbBarService = { provide: 'FileManagerBreadCrumbBar', useValue: BreadCrumbBar };\nconst VirtualizationService = { provide: 'FileManagerVirtualization', useValue: Virtualization };\n/**\n * NgModule definition for the FileManager component with providers.\n */\nclass FileManagerAllModule {\n}\nFileManagerAllModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: FileManagerAllModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFileManagerAllModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: FileManagerAllModule, imports: [CommonModule, FileManagerModule], exports: [FileManagerModule] });\nFileManagerAllModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: FileManagerAllModule, providers: [\n DetailsViewService,\n NavigationPaneService,\n LargeIconsViewService,\n ToolbarService,\n ContextMenuService,\n BreadCrumbBarService,\n VirtualizationService\n ], imports: [[CommonModule, FileManagerModule], FileManagerModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: FileManagerAllModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, FileManagerModule],\n exports: [\n FileManagerModule\n ],\n providers: [\n DetailsViewService,\n NavigationPaneService,\n LargeIconsViewService,\n ToolbarService,\n ContextMenuService,\n BreadCrumbBarService,\n VirtualizationService\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BreadCrumbBarService, ContextMenuService, DetailsViewService, FileManagerAllModule, FileManagerComponent, FileManagerModule, LargeIconsViewService, NavigationPaneService, ToolbarItemDirective, ToolbarItemsDirective, ToolbarService, VirtualizationService };\n","const Icon123 = `\n \n \n \n \n\n\n\n`;\n\nconst Icon24Hours = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst Icon2fa = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst Icon360View = `\n \n \n \n \n \n\n\n\n`;\n\nconst Icon360 = `\n \n \n \n\n\n\n`;\n\nconst Icon3dCubeSphereOff = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst Icon3dCubeSphere = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst Icon3dRotate = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAB2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconABOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAB = `\n \n \n \n \n\n\n\n`;\n\nconst IconAbacusOff = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAbacus = `\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAbc = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAccessPointOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAccessPoint = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAccessibleOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAccessible = `\n \n \n \n \n\n\n\n`;\n\nconst IconActivityHeartbeat = `\n \n \n\n\n\n`;\n\nconst IconActivity = `\n \n \n\n\n\n`;\n\nconst IconAd2 = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAdOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAd = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAddressBookOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAddressBook = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAdjustmentsAlt = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAdjustmentsHorizontal = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAdjustmentsOff = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAdjustments = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAerialLift = `\n \n \n\n\n\n`;\n\nconst IconAffiliate = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAirBalloon = `\n \n \n \n \n\n\n\n`;\n\nconst IconAirConditioningDisabled = `\n \n \n \n\n\n\n`;\n\nconst IconAirConditioning = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAlarmMinus = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlarmOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAlarmPlus = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAlarmSnooze = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlarm = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlbumOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconAlbum = `\n \n \n \n\n\n\n`;\n\nconst IconAlertCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconAlertOctagon = `\n \n \n \n \n\n\n\n`;\n\nconst IconAlertTriangle = `\n \n \n \n\n\n\n`;\n\nconst IconAlien = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlignBoxBottomCenter = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlignBoxBottomLeft = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlignBoxBottomRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlignBoxLeftBottom = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlignBoxLeftMiddle = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlignBoxLeftTop = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlignBoxRightBottom = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlignBoxRightMiddle = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlignBoxRightTop = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlignBoxTopCenter = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlignBoxTopLeft = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlignBoxTopRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAlignCenter = `\n \n \n \n \n\n\n\n`;\n\nconst IconAlignJustified = `\n \n \n \n \n\n\n\n`;\n\nconst IconAlignLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconAlignRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconAlpha = `\n \n \n\n\n\n`;\n\nconst IconAlphabetCyrillic = `\n \n \n \n\n\n\n`;\n\nconst IconAlphabetGreek = `\n \n \n \n \n\n\n\n`;\n\nconst IconAlphabetLatin = `\n \n \n \n \n\n\n\n`;\n\nconst IconAmbulance = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAmpersand = `\n \n \n\n\n\n`;\n\nconst IconAnalyzeOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAnalyze = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAnchorOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAnchor = `\n \n \n \n\n\n\n`;\n\nconst IconAngle = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAnkh = `\n \n \n \n\n\n\n`;\n\nconst IconAntennaBars1 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAntennaBars2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAntennaBars3 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAntennaBars4 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAntennaBars5 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAntennaBarsOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAntennaOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAntenna = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconApertureOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAperture = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconApiAppOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconApiApp = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconApiOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconApi = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAppWindow = `\n \n \n \n \n\n\n\n`;\n\nconst IconApple = `\n \n \n \n \n\n\n\n`;\n\nconst IconAppsOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconApps = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArchiveOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArchive = `\n \n \n \n \n\n\n\n`;\n\nconst IconArmchair2Off = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArmchair2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArmchairOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArmchair = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowAutofitContent = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowAutofitDown = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowAutofitHeight = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowAutofitLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowAutofitRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowAutofitUp = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowAutofitWidth = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowBackUp = `\n \n \n\n\n\n`;\n\nconst IconArrowBack = `\n \n \n\n\n\n`;\n\nconst IconArrowBadgeDown = `\n \n \n\n\n\n`;\n\nconst IconArrowBadgeLeft = `\n \n \n\n\n\n`;\n\nconst IconArrowBadgeRight = `\n \n \n\n\n\n`;\n\nconst IconArrowBadgeUp = `\n \n \n\n\n\n`;\n\nconst IconArrowBarDown = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowBarLeft = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowBarRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowBarToDown = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowBarToLeft = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowBarToRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowBarToUp = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowBarUp = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowBearLeft2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowBearLeft = `\n \n \n \n\n\n\n`;\n\nconst IconArrowBearRight2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowBearRight = `\n \n \n \n\n\n\n`;\n\nconst IconArrowBigDownLine = `\n \n \n \n\n\n\n`;\n\nconst IconArrowBigDownLines = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowBigDown = `\n \n \n\n\n\n`;\n\nconst IconArrowBigLeftLine = `\n \n \n \n\n\n\n`;\n\nconst IconArrowBigLeftLines = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowBigLeft = `\n \n \n\n\n\n`;\n\nconst IconArrowBigRightLine = `\n \n \n \n\n\n\n`;\n\nconst IconArrowBigRightLines = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowBigRight = `\n \n \n\n\n\n`;\n\nconst IconArrowBigTop = `\n \n \n\n\n\n`;\n\nconst IconArrowBigUpLine = `\n \n \n \n\n\n\n`;\n\nconst IconArrowBigUpLines = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowBounce = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowCurveLeft = `\n \n \n \n\n\n\n`;\n\nconst IconArrowCurveRight = `\n \n \n \n\n\n\n`;\n\nconst IconArrowDownBar = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowDownCircle = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowDownLeftCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowDownLeft = `\n \n \n \n\n\n\n`;\n\nconst IconArrowDownRhombus = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowDownRightCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowDownRight = `\n \n \n \n\n\n\n`;\n\nconst IconArrowDownSquare = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowDownTail = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowDown = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowFork = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowForwardUp = `\n \n \n\n\n\n`;\n\nconst IconArrowForward = `\n \n \n\n\n\n`;\n\nconst IconArrowGuide = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowIteration = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowLeftBar = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowLeftCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowLeftRhombus = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowLeftRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowLeftSquare = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowLeftTail = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowLoopLeft2 = `\n \n \n \n\n\n\n`;\n\nconst IconArrowLoopLeft = `\n \n \n \n\n\n\n`;\n\nconst IconArrowLoopRight2 = `\n \n \n \n\n\n\n`;\n\nconst IconArrowLoopRight = `\n \n \n \n\n\n\n`;\n\nconst IconArrowMergeBoth = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowMergeLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowMergeRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowMerge = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowMoveDown = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowMoveLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowMoveRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowMoveUp = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowNarrowDown = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowNarrowLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowNarrowRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowNarrowUp = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowRampLeft2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowRampLeft3 = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowRampLeft = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowRampRight2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowRampRight3 = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowRampRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowRightBar = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowRightCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowRightRhombus = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowRightSquare = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowRightTail = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowRotaryFirstLeft = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowRotaryFirstRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowRotaryLastLeft = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowRotaryLastRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowRotaryLeft = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowRotaryRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowRotaryStraight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowRoundaboutLeft = `\n \n \n \n\n\n\n`;\n\nconst IconArrowRoundaboutRight = `\n \n \n \n\n\n\n`;\n\nconst IconArrowSharpTurnLeft = `\n \n \n \n\n\n\n`;\n\nconst IconArrowSharpTurnRight = `\n \n \n \n\n\n\n`;\n\nconst IconArrowUpBar = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowUpCircle = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowUpLeftCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowUpLeft = `\n \n \n \n\n\n\n`;\n\nconst IconArrowUpRhombus = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowUpRightCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowUpRight = `\n \n \n \n\n\n\n`;\n\nconst IconArrowUpSquare = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowUpTail = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowUp = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowWaveLeftDown = `\n \n \n \n\n\n\n`;\n\nconst IconArrowWaveLeftUp = `\n \n \n \n\n\n\n`;\n\nconst IconArrowWaveRightDown = `\n \n \n \n\n\n\n`;\n\nconst IconArrowWaveRightUp = `\n \n \n \n\n\n\n`;\n\nconst IconArrowZigZag = `\n \n \n \n\n\n\n`;\n\nconst IconArrowsCross = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsDiagonal2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsDiagonalMinimize2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsDiagonalMinimize = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsDiagonal = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsDiff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsDoubleNeSw = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsDoubleNwSe = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsDoubleSeNw = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsDoubleSwNe = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsDownUp = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsDown = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsExchange2 = `\n \n \n \n\n\n\n`;\n\nconst IconArrowsExchange = `\n \n \n \n\n\n\n`;\n\nconst IconArrowsHorizontal = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowsJoin2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowsJoin = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowsLeftDown = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowsLeftRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsLeft = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsMaximize = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsMinimize = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsMoveHorizontal = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsMoveVertical = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsMove = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsRandom = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsRightDown = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowsRightLeft = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsShuffle2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsShuffle = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsSort = `\n \n \n \n\n\n\n`;\n\nconst IconArrowsSplit2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsSplit = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsTransferDown = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsTransferUp = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsUpDown = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsUpLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowsUpRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconArrowsUp = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconArrowsVertical = `\n \n \n \n \n\n\n\n`;\n\nconst IconArtboardOff = `\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArtboard = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArticleOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconArticle = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAspectRatioOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAspectRatio = `\n \n \n \n \n\n\n\n`;\n\nconst IconAssemblyOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconAssembly = `\n \n \n \n\n\n\n`;\n\nconst IconAsset = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAsteriskSimple = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAsterisk = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAtOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconAt = `\n \n \n \n\n\n\n`;\n\nconst IconAtom2 = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAtomOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAtom = `\n \n \n \n \n\n\n\n`;\n\nconst IconAugmentedReality2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAugmentedRealityOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAugmentedReality = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAwardOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconAward = `\n \n \n \n \n\n\n\n`;\n\nconst IconAxe = `\n \n \n \n\n\n\n`;\n\nconst IconAxisX = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconAxisY = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBabyBottle = `\n \n \n \n \n\n\n\n`;\n\nconst IconBabyCarriage = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBackhoe = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBackpackOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBackpack = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBackspace = `\n \n \n \n\n\n\n`;\n\nconst IconBadge3d = `\n \n \n \n \n\n\n\n`;\n\nconst IconBadge4k = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBadge8k = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBadgeAd = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBadgeAr = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBadgeCc = `\n \n \n \n \n\n\n\n`;\n\nconst IconBadgeHd = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBadgeOff = `\n \n \n \n\n\n\n`;\n\nconst IconBadgeSd = `\n \n \n \n \n\n\n\n`;\n\nconst IconBadgeTm = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBadgeVo = `\n \n \n \n \n\n\n\n`;\n\nconst IconBadgeVr = `\n \n \n \n \n\n\n\n`;\n\nconst IconBadgeWc = `\n \n \n \n \n\n\n\n`;\n\nconst IconBadge = `\n \n \n\n\n\n`;\n\nconst IconBadgesOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconBadges = `\n \n \n \n\n\n\n`;\n\nconst IconBaguette = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBallAmericanFootballOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBallAmericanFootball = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBallBaseball = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBallBasketball = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBallBowling = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBallFootballOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBallFootball = `\n \n \n \n \n\n\n\n`;\n\nconst IconBallTennis = `\n \n \n \n \n\n\n\n`;\n\nconst IconBallVolleyball = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBallonOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBallon = `\n \n \n \n \n\n\n\n`;\n\nconst IconBallpenOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBallpen = `\n \n \n \n \n\n\n\n`;\n\nconst IconBan = `\n \n \n \n\n\n\n`;\n\nconst IconBandageOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBandage = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBarbellOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBarbell = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBarcodeOff = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBarcode = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBarrelOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBarrel = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBarrierBlockOff = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBarrierBlock = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBaseline = `\n \n \n \n \n\n\n\n`;\n\nconst IconBasketOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBasket = `\n \n \n \n \n\n\n\n`;\n\nconst IconBat = `\n \n \n \n\n\n\n`;\n\nconst IconBathOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBath = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBattery1 = `\n \n \n \n\n\n\n`;\n\nconst IconBattery2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconBattery3 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBattery4 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBatteryAutomotive = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBatteryCharging2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBatteryCharging = `\n \n \n \n \n\n\n\n`;\n\nconst IconBatteryEco = `\n \n \n \n \n\n\n\n`;\n\nconst IconBatteryOff = `\n \n \n \n\n\n\n`;\n\nconst IconBattery = `\n \n \n\n\n\n`;\n\nconst IconBeachOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBeach = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBedOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBed = `\n \n \n \n\n\n\n`;\n\nconst IconBeerOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconBeer = `\n \n \n \n\n\n\n`;\n\nconst IconBellMinus = `\n \n \n \n \n\n\n\n`;\n\nconst IconBellOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconBellPlus = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBellRinging2 = `\n \n \n \n\n\n\n`;\n\nconst IconBellRinging = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBellSchool = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBellX = `\n \n \n \n \n\n\n\n`;\n\nconst IconBellZ = `\n \n \n \n \n\n\n\n`;\n\nconst IconBell = `\n \n \n \n\n\n\n`;\n\nconst IconBeta = `\n \n \n\n\n\n`;\n\nconst IconBible = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBikeOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBike = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBinaryOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBinaryTree2 = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBinaryTree = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBinary = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBiohazardOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBiohazard = `\n \n \n \n\n\n\n`;\n\nconst IconBlade = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBleachChlorine = `\n \n \n \n \n\n\n\n`;\n\nconst IconBleachNoChlorine = `\n \n \n \n \n\n\n\n`;\n\nconst IconBleachOff = `\n \n \n \n\n\n\n`;\n\nconst IconBleach = `\n \n \n\n\n\n`;\n\nconst IconBlockquote = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBluetoothConnected = `\n \n \n \n \n\n\n\n`;\n\nconst IconBluetoothOff = `\n \n \n \n\n\n\n`;\n\nconst IconBluetoothX = `\n \n \n \n \n\n\n\n`;\n\nconst IconBluetooth = `\n \n \n\n\n\n`;\n\nconst IconBlurOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBlur = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBmp = `\n \n \n \n \n\n\n\n`;\n\nconst IconBoldOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconBold = `\n \n \n \n\n\n\n`;\n\nconst IconBoltOff = `\n \n \n \n\n\n\n`;\n\nconst IconBolt = `\n \n \n\n\n\n`;\n\nconst IconBomb = `\n \n \n \n \n\n\n\n`;\n\nconst IconBoneOff = `\n \n \n \n\n\n\n`;\n\nconst IconBone = `\n \n \n\n\n\n`;\n\nconst IconBongOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBong = `\n \n \n \n \n\n\n\n`;\n\nconst IconBook2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconBookDownload = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBookOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBookUpload = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBook = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBookmarkOff = `\n \n \n \n\n\n\n`;\n\nconst IconBookmark = `\n \n \n\n\n\n`;\n\nconst IconBookmarksOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconBookmarks = `\n \n \n \n\n\n\n`;\n\nconst IconBooksOff = `\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBooks = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBorderAll = `\n \n \n \n \n\n\n\n`;\n\nconst IconBorderBottom = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBorderHorizontal = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBorderInner = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBorderLeft = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBorderNone = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBorderOuter = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBorderRadius = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBorderRight = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBorderStyle2 = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBorderStyle = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBorderTop = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBorderVertical = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBottleOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBottle = `\n \n \n \n \n\n\n\n`;\n\nconst IconBounceLeft = `\n \n \n \n\n\n\n`;\n\nconst IconBounceRight = `\n \n \n \n\n\n\n`;\n\nconst IconBow = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBowl = `\n \n \n\n\n\n`;\n\nconst IconBoxAlignBottomLeft = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxAlignBottomRight = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxAlignBottom = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxAlignLeft = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxAlignRight = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxAlignTopLeft = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxAlignTopRight = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxAlignTop = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxMargin = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxModel2Off = `\n \n \n \n \n\n\n\n`;\n\nconst IconBoxModel2 = `\n \n \n \n\n\n\n`;\n\nconst IconBoxModelOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxModel = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxMultiple0 = `\n \n \n \n \n\n\n\n`;\n\nconst IconBoxMultiple1 = `\n \n \n \n \n\n\n\n`;\n\nconst IconBoxMultiple2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconBoxMultiple3 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxMultiple4 = `\n \n \n \n \n\n\n\n`;\n\nconst IconBoxMultiple5 = `\n \n \n \n \n\n\n\n`;\n\nconst IconBoxMultiple6 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxMultiple7 = `\n \n \n \n \n\n\n\n`;\n\nconst IconBoxMultiple8 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxMultiple9 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxMultiple = `\n \n \n \n\n\n\n`;\n\nconst IconBoxOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxPadding = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBoxSeam = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBox = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBracesOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconBraces = `\n \n \n \n\n\n\n`;\n\nconst IconBracketsContainEnd = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBracketsContainStart = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBracketsContain = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBracketsOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrackets = `\n \n \n \n\n\n\n`;\n\nconst IconBraile = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrain = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrand4chan = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandAbstract = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandAdobe = `\n \n \n\n\n\n`;\n\nconst IconBrandAdonisJs = `\n \n \n \n\n\n\n`;\n\nconst IconBrandAirbnb = `\n \n \n\n\n\n`;\n\nconst IconBrandAirtable = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandAlgolia = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandAlpineJs = `\n \n \n \n\n\n\n`;\n\nconst IconBrandAmazon = `\n \n \n \n\n\n\n`;\n\nconst IconBrandAmd = `\n \n \n \n\n\n\n`;\n\nconst IconBrandAmigo = `\n \n \n \n\n\n\n`;\n\nconst IconBrandAmongus = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandAndroid = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandAngular = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandAo3 = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandAppgallery = `\n \n \n \n\n\n\n`;\n\nconst IconBrandAppleArcade = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandApplePodcast = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandApple = `\n \n \n \n\n\n\n`;\n\nconst IconBrandAppstore = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandAsana = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandBackbone = `\n \n \n \n\n\n\n`;\n\nconst IconBrandBadoo = `\n \n \n \n\n\n\n`;\n\nconst IconBrandBaidu = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandBandcamp = `\n \n \n\n\n\n`;\n\nconst IconBrandBandlab = `\n \n \n \n\n\n\n`;\n\nconst IconBrandBeats = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandBehance = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandBinance = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandBing = `\n \n \n\n\n\n`;\n\nconst IconBrandBitbucket = `\n \n \n \n\n\n\n`;\n\nconst IconBrandBlackbery = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandBlender = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandBlogger = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandBooking = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandBootstrap = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandBulma = `\n \n \n\n\n\n`;\n\nconst IconBrandBumble = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandBunpo = `\n \n \n\n\n\n`;\n\nconst IconBrandCampaignmonitor = `\n \n \n\n\n\n`;\n\nconst IconBrandCarbon = `\n \n \n \n\n\n\n`;\n\nconst IconBrandCashapp = `\n \n \n\n\n\n`;\n\nconst IconBrandChrome = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandCitymapper = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandCodecov = `\n \n \n\n\n\n`;\n\nconst IconBrandCodepen = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandCodesandbox = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandCohost = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandCoinbase = `\n \n \n\n\n\n`;\n\nconst IconBrandComedyCentral = `\n \n \n \n\n\n\n`;\n\nconst IconBrandCoreos = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandCouchdb = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandCouchsurfing = `\n \n \n \n\n\n\n`;\n\nconst IconBrandCpp = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandCss3 = `\n \n \n \n\n\n\n`;\n\nconst IconBrandCtemplar = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandCucumber = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandCupra = `\n \n \n \n\n\n\n`;\n\nconst IconBrandCypress = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandD3 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandDaysCounter = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandDcos = `\n \n \n\n\n\n`;\n\nconst IconBrandDebian = `\n \n \n \n\n\n\n`;\n\nconst IconBrandDeliveroo = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandDeno = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandDenodo = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandDeviantart = `\n \n \n\n\n\n`;\n\nconst IconBrandDingtalk = `\n \n \n \n\n\n\n`;\n\nconst IconBrandDiscord = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandDisney = `\n \n \n \n\n\n\n`;\n\nconst IconBrandDisqus = `\n \n \n \n\n\n\n`;\n\nconst IconBrandDjango = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandDocker = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandDoctrine = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandDolbyDigital = `\n \n \n \n\n\n\n`;\n\nconst IconBrandDouban = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandDribbble = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandDrops = `\n \n \n \n\n\n\n`;\n\nconst IconBrandDrupal = `\n \n \n \n\n\n\n`;\n\nconst IconBrandEdge = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandElastic = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandEmber = `\n \n \n\n\n\n`;\n\nconst IconBrandEnvato = `\n \n \n \n\n\n\n`;\n\nconst IconBrandEtsy = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandEvernote = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandFacebook = `\n \n \n\n\n\n`;\n\nconst IconBrandFigma = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandFinder = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandFirebase = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandFirefox = `\n \n \n \n\n\n\n`;\n\nconst IconBrandFlickr = `\n \n \n \n\n\n\n`;\n\nconst IconBrandFlightradar24 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandFlipboard = `\n \n \n\n\n\n`;\n\nconst IconBrandFlutter = `\n \n \n \n\n\n\n`;\n\nconst IconBrandFortnite = `\n \n \n\n\n\n`;\n\nconst IconBrandFoursquare = `\n \n \n \n\n\n\n`;\n\nconst IconBrandFramer = `\n \n \n\n\n\n`;\n\nconst IconBrandFunimation = `\n \n \n \n\n\n\n`;\n\nconst IconBrandGatsby = `\n \n \n \n\n\n\n`;\n\nconst IconBrandGit = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandGithubCopilot = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandGithub = `\n \n \n\n\n\n`;\n\nconst IconBrandGitlab = `\n \n \n\n\n\n`;\n\nconst IconBrandGmail = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandGoogleAnalytics = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandGoogleBigQuery = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandGoogleDrive = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandGoogleFit = `\n \n \n\n\n\n`;\n\nconst IconBrandGoogleHome = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandGoogleOne = `\n \n \n \n\n\n\n`;\n\nconst IconBrandGooglePhotos = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandGooglePlay = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandGooglePodcasts = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandGoogle = `\n \n \n\n\n\n`;\n\nconst IconBrandGrammarly = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandGraphql = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandGravatar = `\n \n \n\n\n\n`;\n\nconst IconBrandGrindr = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandGuardian = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandGumroad = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandHbo = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandHeadlessui = `\n \n \n \n\n\n\n`;\n\nconst IconBrandHipchat = `\n \n \n \n\n\n\n`;\n\nconst IconBrandHtml5 = `\n \n \n \n\n\n\n`;\n\nconst IconBrandInertia = `\n \n \n \n\n\n\n`;\n\nconst IconBrandInstagram = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandIntercom = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandJavascript = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandKickstarter = `\n \n \n\n\n\n`;\n\nconst IconBrandKotlin = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandLaravel = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandLastfm = `\n \n \n\n\n\n`;\n\nconst IconBrandLinkedin = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandLinktree = `\n \n \n \n\n\n\n`;\n\nconst IconBrandLinqpad = `\n \n \n\n\n\n`;\n\nconst IconBrandLoom = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandMailgun = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandMantine = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandMastercard = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandMastodon = `\n \n \n \n\n\n\n`;\n\nconst IconBrandMatrix = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandMcdonalds = `\n \n \n\n\n\n`;\n\nconst IconBrandMedium = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandMercedes = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandMessenger = `\n \n \n \n\n\n\n`;\n\nconst IconBrandMeta = `\n \n \n \n\n\n\n`;\n\nconst IconBrandMiniprogram = `\n \n \n \n\n\n\n`;\n\nconst IconBrandMixpanel = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandMonday = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandMongodb = `\n \n \n \n\n\n\n`;\n\nconst IconBrandMyOppo = `\n \n \n \n\n\n\n`;\n\nconst IconBrandMysql = `\n \n \n \n\n\n\n`;\n\nconst IconBrandNationalGeographic = `\n \n \n\n\n\n`;\n\nconst IconBrandNem = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandNetbeans = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandNeteaseMusic = `\n \n \n\n\n\n`;\n\nconst IconBrandNetflix = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandNexo = `\n \n \n \n\n\n\n`;\n\nconst IconBrandNextcloud = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandNextjs = `\n \n \n \n\n\n\n`;\n\nconst IconBrandNordVpn = `\n \n \n \n\n\n\n`;\n\nconst IconBrandNotion = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandNpm = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandNuxt = `\n \n \n \n\n\n\n`;\n\nconst IconBrandNytimes = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandOffice = `\n \n \n\n\n\n`;\n\nconst IconBrandOkRu = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandOnedrive = `\n \n \n\n\n\n`;\n\nconst IconBrandOnlyfans = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandOpenSource = `\n \n \n\n\n\n`;\n\nconst IconBrandOpenvpn = `\n \n \n \n\n\n\n`;\n\nconst IconBrandOpera = `\n \n \n \n\n\n\n`;\n\nconst IconBrandPagekit = `\n \n \n\n\n\n`;\n\nconst IconBrandPatreon = `\n \n \n \n\n\n\n`;\n\nconst IconBrandPaypal = `\n \n \n\n\n\n`;\n\nconst IconBrandPaypay = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandPeanut = `\n \n \n\n\n\n`;\n\nconst IconBrandPepsi = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandPhp = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandPicsart = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandPinterest = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandPocket = `\n \n \n \n\n\n\n`;\n\nconst IconBrandPolymer = `\n \n \n\n\n\n`;\n\nconst IconBrandPowershell = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandPrisma = `\n \n \n \n\n\n\n`;\n\nconst IconBrandProducthunt = `\n \n \n \n\n\n\n`;\n\nconst IconBrandPushbullet = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandPushover = `\n \n \n \n\n\n\n`;\n\nconst IconBrandPython = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandQq = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandReactNative = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandReact = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandReason = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandReddit = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandRedhat = `\n \n \n \n\n\n\n`;\n\nconst IconBrandRedux = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandRevolut = `\n \n \n \n\n\n\n`;\n\nconst IconBrandSafari = `\n \n \n \n\n\n\n`;\n\nconst IconBrandSamsungpass = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandSass = `\n \n \n \n\n\n\n`;\n\nconst IconBrandSentry = `\n \n \n\n\n\n`;\n\nconst IconBrandSharik = `\n \n \n\n\n\n`;\n\nconst IconBrandShazam = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandShopee = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandSketch = `\n \n \n\n\n\n`;\n\nconst IconBrandSkype = `\n \n \n \n\n\n\n`;\n\nconst IconBrandSlack = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandSnapchat = `\n \n \n\n\n\n`;\n\nconst IconBrandSnapseed = `\n \n \n \n\n\n\n`;\n\nconst IconBrandSnowflake = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandSocketIo = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandSolidjs = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandSoundcloud = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandSpacehey = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandSpotify = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandStackoverflow = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandStackshare = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandSteam = `\n \n \n \n\n\n\n`;\n\nconst IconBrandStorybook = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandStorytel = `\n \n \n\n\n\n`;\n\nconst IconBrandStrava = `\n \n \n\n\n\n`;\n\nconst IconBrandStripe = `\n \n \n\n\n\n`;\n\nconst IconBrandSublimeText = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandSuperhuman = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandSupernova = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandSurfshark = `\n \n \n \n\n\n\n`;\n\nconst IconBrandSvelte = `\n \n \n \n\n\n\n`;\n\nconst IconBrandSymfony = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandTabler = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandTailwind = `\n \n \n\n\n\n`;\n\nconst IconBrandTaobao = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandTed = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandTelegram = `\n \n \n\n\n\n`;\n\nconst IconBrandTether = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandThreejs = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandTidal = `\n \n \n\n\n\n`;\n\nconst IconBrandTiktok = `\n \n \n\n\n\n`;\n\nconst IconBrandTinder = `\n \n \n\n\n\n`;\n\nconst IconBrandTopbuzz = `\n \n \n\n\n\n`;\n\nconst IconBrandTorchain = `\n \n \n \n\n\n\n`;\n\nconst IconBrandToyota = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandTrello = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandTripadvisor = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandTumblr = `\n \n \n\n\n\n`;\n\nconst IconBrandTwilio = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandTwitch = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandTwitter = `\n \n \n\n\n\n`;\n\nconst IconBrandTypescript = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandUber = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandUbuntu = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandUnity = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandUnsplash = `\n \n \n\n\n\n`;\n\nconst IconBrandUpwork = `\n \n \n\n\n\n`;\n\nconst IconBrandValorant = `\n \n \n \n\n\n\n`;\n\nconst IconBrandVercel = `\n \n \n\n\n\n`;\n\nconst IconBrandVimeo = `\n \n \n\n\n\n`;\n\nconst IconBrandVinted = `\n \n \n\n\n\n`;\n\nconst IconBrandVisa = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandVisualStudio = `\n \n \n\n\n\n`;\n\nconst IconBrandVite = `\n \n \n \n\n\n\n`;\n\nconst IconBrandVivaldi = `\n \n \n\n\n\n`;\n\nconst IconBrandVk = `\n \n \n\n\n\n`;\n\nconst IconBrandVolkswagen = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandVsco = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandVscode = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandVue = `\n \n \n \n\n\n\n`;\n\nconst IconBrandWalmart = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandWaze = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandWebflow = `\n \n \n\n\n\n`;\n\nconst IconBrandWechat = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandWeibo = `\n \n \n \n\n\n\n`;\n\nconst IconBrandWhatsapp = `\n \n \n \n\n\n\n`;\n\nconst IconBrandWindows = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandWindy = `\n \n \n \n\n\n\n`;\n\nconst IconBrandWish = `\n \n \n \n\n\n\n`;\n\nconst IconBrandWix = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandWordpress = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandXbox = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandXing = `\n \n \n \n\n\n\n`;\n\nconst IconBrandYahoo = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandYatse = `\n \n \n\n\n\n`;\n\nconst IconBrandYcombinator = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrandYoutubeKids = `\n \n \n \n\n\n\n`;\n\nconst IconBrandYoutube = `\n \n \n \n\n\n\n`;\n\nconst IconBrandZalando = `\n \n \n\n\n\n`;\n\nconst IconBrandZapier = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandZeit = `\n \n \n\n\n\n`;\n\nconst IconBrandZhihu = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrandZoom = `\n \n \n \n\n\n\n`;\n\nconst IconBrandZulip = `\n \n \n \n\n\n\n`;\n\nconst IconBrandZwift = `\n \n \n\n\n\n`;\n\nconst IconBreadOff = `\n \n \n \n\n\n\n`;\n\nconst IconBread = `\n \n \n\n\n\n`;\n\nconst IconBriefcaseOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBriefcase = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrightness2 = `\n \n \n \n\n\n\n`;\n\nconst IconBrightnessDown = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrightnessHalf = `\n \n \n \n\n\n\n`;\n\nconst IconBrightnessOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrightnessUp = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrightness = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBroadcastOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBroadcast = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrowserCheck = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrowserOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrowserPlus = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrowserX = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBrowser = `\n \n \n \n \n\n\n\n`;\n\nconst IconBrushOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBrush = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBucketDroplet = `\n \n \n \n \n\n\n\n`;\n\nconst IconBucketOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconBucket = `\n \n \n \n\n\n\n`;\n\nconst IconBugOff = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBug = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingArch = `\n \n \n \n \n\n\n\n`;\n\nconst IconBuildingBank = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingBridge2 = `\n \n \n\n\n\n`;\n\nconst IconBuildingBridge = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingBroadcastTower = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingCarousel = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingCastle = `\n \n \n \n\n\n\n`;\n\nconst IconBuildingChurch = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingCircus = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingCommunity = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingCottage = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingEstate = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingFactory2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingFactory = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingFortress = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingHospital = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingLighthouse = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingMonument = `\n \n \n \n \n\n\n\n`;\n\nconst IconBuildingPavilon = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingSkyscraper = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingStadium = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingStore = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingTunnel = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuildingWarehouse = `\n \n \n \n \n\n\n\n`;\n\nconst IconBuildingWindTurbine = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBuilding = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBulbOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconBulb = `\n \n \n \n \n\n\n\n`;\n\nconst IconBulldozer = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBusOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBusStop = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBus = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconBusinessplan = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconButterfly = `\n \n \n \n \n\n\n\n`;\n\nconst IconCSharp = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCactusOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCactus = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCakeOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCake = `\n \n \n \n \n\n\n\n`;\n\nconst IconCalculatorOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCalculator = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCalendarDue = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCalendarEvent = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCalendarMinus = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCalendarOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCalendarPlus = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCalendarStats = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCalendarTime = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCalendar = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCameraMinus = `\n \n \n \n \n\n\n\n`;\n\nconst IconCameraOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconCameraPlus = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCameraRotate = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCameraSelfie = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCamera = `\n \n \n \n\n\n\n`;\n\nconst IconCampfire = `\n \n \n \n \n\n\n\n`;\n\nconst IconCandle = `\n \n \n \n\n\n\n`;\n\nconst IconCandyOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCandy = `\n \n \n \n \n\n\n\n`;\n\nconst IconCane = `\n \n \n\n\n\n`;\n\nconst IconCannabis = `\n \n \n \n\n\n\n`;\n\nconst IconCaptureOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCapture = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCarCrane = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCarCrash = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCarOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCarTurbine = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCar = `\n \n \n \n \n\n\n\n`;\n\nconst IconCaravan = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCardboardsOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCardboards = `\n \n \n \n \n\n\n\n`;\n\nconst IconCards = `\n \n \n \n \n\n\n\n`;\n\nconst IconCaretDown = `\n \n \n\n\n\n`;\n\nconst IconCaretLeft = `\n \n \n\n\n\n`;\n\nconst IconCaretRight = `\n \n \n\n\n\n`;\n\nconst IconCaretUp = `\n \n \n\n\n\n`;\n\nconst IconCarouselHorizontal = `\n \n \n \n \n\n\n\n`;\n\nconst IconCarouselVertical = `\n \n \n \n \n\n\n\n`;\n\nconst IconCarrotOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCarrot = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCashBanknoteOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCashBanknote = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCashOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCash = `\n \n \n \n \n\n\n\n`;\n\nconst IconCastOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCast = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCat = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCategory2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCategory = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCeOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCe = `\n \n \n \n \n\n\n\n`;\n\nconst IconCellSignal1 = `\n \n \n\n\n\n`;\n\nconst IconCellSignal2 = `\n \n \n \n\n\n\n`;\n\nconst IconCellSignal3 = `\n \n \n \n\n\n\n`;\n\nconst IconCellSignal4 = `\n \n \n \n\n\n\n`;\n\nconst IconCellSignal5 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCellSignalOff = `\n \n \n \n\n\n\n`;\n\nconst IconCell = `\n \n \n \n \n\n\n\n`;\n\nconst IconCertificate2Off = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCertificate2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCertificateOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCertificate = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChairDirector = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChalkboardOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconChalkboard = `\n \n \n \n\n\n\n`;\n\nconst IconChargingPile = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChartArcs3 = `\n \n \n \n \n\n\n\n`;\n\nconst IconChartArcs = `\n \n \n \n \n\n\n\n`;\n\nconst IconChartAreaLine = `\n \n \n \n\n\n\n`;\n\nconst IconChartArea = `\n \n \n \n\n\n\n`;\n\nconst IconChartArrowsVertical = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChartArrows = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChartBarOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChartBar = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconChartBubble = `\n \n \n \n \n\n\n\n`;\n\nconst IconChartCandle = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChartCircles = `\n \n \n \n\n\n\n`;\n\nconst IconChartDonut2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconChartDonut3 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconChartDonut4 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChartDonut = `\n \n \n \n\n\n\n`;\n\nconst IconChartDots2 = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChartDots3 = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChartDots = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChartGridDots = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChartHistogram = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChartInfographic = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChartLine = `\n \n \n \n\n\n\n`;\n\nconst IconChartPie2 = `\n \n \n \n\n\n\n`;\n\nconst IconChartPie3 = `\n \n \n \n \n\n\n\n`;\n\nconst IconChartPie4 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconChartPieOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconChartPie = `\n \n \n \n\n\n\n`;\n\nconst IconChartPpf = `\n \n \n \n\n\n\n`;\n\nconst IconChartRadar = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChartSankey = `\n \n \n \n \n\n\n\n`;\n\nconst IconChartTreemap = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCheck = `\n \n \n\n\n\n`;\n\nconst IconCheckbox = `\n \n \n \n\n\n\n`;\n\nconst IconChecklist = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconChecks = `\n \n \n \n\n\n\n`;\n\nconst IconCheckupList = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCheese = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChefHatOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconChefHat = `\n \n \n \n\n\n\n`;\n\nconst IconCherry = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChessBishop = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChessKing = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconChessKnight = `\n \n \n \n\n\n\n`;\n\nconst IconChessQueen = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChessRook = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconChess = `\n \n \n \n \n\n\n\n`;\n\nconst IconChevronDownLeft = `\n \n \n\n\n\n`;\n\nconst IconChevronDownRight = `\n \n \n\n\n\n`;\n\nconst IconChevronDown = `\n \n \n\n\n\n`;\n\nconst IconChevronLeft = `\n \n \n\n\n\n`;\n\nconst IconChevronRight = `\n \n \n\n\n\n`;\n\nconst IconChevronUpLeft = `\n \n \n\n\n\n`;\n\nconst IconChevronUpRight = `\n \n \n\n\n\n`;\n\nconst IconChevronUp = `\n \n \n\n\n\n`;\n\nconst IconChevronsDownLeft = `\n \n \n \n\n\n\n`;\n\nconst IconChevronsDownRight = `\n \n \n \n\n\n\n`;\n\nconst IconChevronsDown = `\n \n \n \n\n\n\n`;\n\nconst IconChevronsLeft = `\n \n \n \n\n\n\n`;\n\nconst IconChevronsRight = `\n \n \n \n\n\n\n`;\n\nconst IconChevronsUpLeft = `\n \n \n \n\n\n\n`;\n\nconst IconChevronsUpRight = `\n \n \n \n\n\n\n`;\n\nconst IconChevronsUp = `\n \n \n \n\n\n\n`;\n\nconst IconChisel = `\n \n \n \n \n\n\n\n`;\n\nconst IconChristmasTreeOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconChristmasTree = `\n \n \n \n\n\n\n`;\n\nconst IconCircleCaretDown = `\n \n \n \n\n\n\n`;\n\nconst IconCircleCaretLeft = `\n \n \n \n\n\n\n`;\n\nconst IconCircleCaretRight = `\n \n \n \n\n\n\n`;\n\nconst IconCircleCaretUp = `\n \n \n \n\n\n\n`;\n\nconst IconCircleCheck = `\n \n \n \n\n\n\n`;\n\nconst IconCircleChevronDown = `\n \n \n \n\n\n\n`;\n\nconst IconCircleChevronLeft = `\n \n \n \n\n\n\n`;\n\nconst IconCircleChevronRight = `\n \n \n \n\n\n\n`;\n\nconst IconCircleChevronUp = `\n \n \n \n\n\n\n`;\n\nconst IconCircleChevronsDown = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleChevronsLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleChevronsRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleChevronsUp = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleDashed = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCircleDot = `\n \n \n \n\n\n\n`;\n\nconst IconCircleDotted = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCircleHalf2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCircleHalfVertical = `\n \n \n \n\n\n\n`;\n\nconst IconCircleHalf = `\n \n \n \n\n\n\n`;\n\nconst IconCircleKey = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCircleLetterA = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleLetterB = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterC = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterD = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterE = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleLetterF = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleLetterG = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterH = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleLetterI = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterJ = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterK = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCircleLetterL = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterM = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterN = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterO = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterP = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterQ = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleLetterR = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterS = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterT = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleLetterU = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterV = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterW = `\n \n \n \n\n\n\n`;\n\nconst IconCircleLetterX = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleLetterY = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleLetterZ = `\n \n \n \n\n\n\n`;\n\nconst IconCircleMinus = `\n \n \n \n\n\n\n`;\n\nconst IconCircleNumber0 = `\n \n \n \n\n\n\n`;\n\nconst IconCircleNumber1 = `\n \n \n \n\n\n\n`;\n\nconst IconCircleNumber2 = `\n \n \n \n\n\n\n`;\n\nconst IconCircleNumber3 = `\n \n \n \n\n\n\n`;\n\nconst IconCircleNumber4 = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleNumber5 = `\n \n \n \n\n\n\n`;\n\nconst IconCircleNumber6 = `\n \n \n \n\n\n\n`;\n\nconst IconCircleNumber7 = `\n \n \n \n\n\n\n`;\n\nconst IconCircleNumber8 = `\n \n \n \n\n\n\n`;\n\nconst IconCircleNumber9 = `\n \n \n \n\n\n\n`;\n\nconst IconCircleOff = `\n \n \n \n\n\n\n`;\n\nconst IconCirclePlus = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleRectangleOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircleRectangle = `\n \n \n \n\n\n\n`;\n\nconst IconCircleSquare = `\n \n \n \n\n\n\n`;\n\nconst IconCircleTriangle = `\n \n \n \n\n\n\n`;\n\nconst IconCircleX = `\n \n \n \n\n\n\n`;\n\nconst IconCircle = `\n \n \n\n\n\n`;\n\nconst IconCirclesRelation = `\n \n \n \n\n\n\n`;\n\nconst IconCircles = `\n \n \n \n \n\n\n\n`;\n\nconst IconCircuitAmmeter = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitBattery = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitBulb = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitCapacitorPolarized = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitCapacitor = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitCellPlus = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitCell = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitChangeover = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitDiodeZener = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitDiode = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitGroundDigital = `\n \n \n \n\n\n\n`;\n\nconst IconCircuitGround = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitInductor = `\n \n \n\n\n\n`;\n\nconst IconCircuitMotor = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitPushbutton = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitResistor = `\n \n \n\n\n\n`;\n\nconst IconCircuitSwitchClosed = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitSwitchOpen = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCircuitVoltmeter = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconClearAll = `\n \n \n \n \n\n\n\n`;\n\nconst IconClearFormatting = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconClick = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconClipboardCheck = `\n \n \n \n \n\n\n\n`;\n\nconst IconClipboardCopy = `\n \n \n \n \n\n\n\n`;\n\nconst IconClipboardData = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconClipboardHeart = `\n \n \n \n \n\n\n\n`;\n\nconst IconClipboardList = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconClipboardOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconClipboardPlus = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconClipboardText = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconClipboardTypography = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconClipboardX = `\n \n \n \n \n\n\n\n`;\n\nconst IconClipboard = `\n \n \n \n\n\n\n`;\n\nconst IconClock2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconClockCancel = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconClockEdit = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockHour1 = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockHour10 = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockHour11 = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockHour12 = `\n \n \n \n\n\n\n`;\n\nconst IconClockHour2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockHour3 = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockHour4 = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockHour5 = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockHour6 = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockHour7 = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockHour8 = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockHour9 = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockPause = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconClockPlay = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockRecord = `\n \n \n \n \n\n\n\n`;\n\nconst IconClockStop = `\n \n \n \n \n\n\n\n`;\n\nconst IconClock = `\n \n \n \n\n\n\n`;\n\nconst IconClothesRackOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconClothesRack = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCloudComputing = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCloudDataConnection = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCloudDownload = `\n \n \n \n \n\n\n\n`;\n\nconst IconCloudFog = `\n \n \n \n\n\n\n`;\n\nconst IconCloudLockOpen = `\n \n \n \n \n\n\n\n`;\n\nconst IconCloudLock = `\n \n \n \n \n\n\n\n`;\n\nconst IconCloudOff = `\n \n \n \n\n\n\n`;\n\nconst IconCloudRain = `\n \n \n \n\n\n\n`;\n\nconst IconCloudSnow = `\n \n \n \n\n\n\n`;\n\nconst IconCloudStorm = `\n \n \n \n\n\n\n`;\n\nconst IconCloudUpload = `\n \n \n \n \n\n\n\n`;\n\nconst IconCloud = `\n \n \n\n\n\n`;\n\nconst IconClover2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconClover = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconClubs = `\n \n \n\n\n\n`;\n\nconst IconCodeAsterix = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCodeCircle2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCodeCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconCodeDots = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCodeMinus = `\n \n \n \n \n\n\n\n`;\n\nconst IconCodeOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCodePlus = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCode = `\n \n \n \n \n\n\n\n`;\n\nconst IconCoffeeOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCoffee = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCoffin = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCoinBitcoin = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCoinEuro = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCoinMonero = `\n \n \n \n\n\n\n`;\n\nconst IconCoinOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCoinPound = `\n \n \n \n \n\n\n\n`;\n\nconst IconCoinRupee = `\n \n \n \n \n\n\n\n`;\n\nconst IconCoinYen = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCoinYuan = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCoin = `\n \n \n \n \n\n\n\n`;\n\nconst IconCoins = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconColorFilter = `\n \n \n \n \n\n\n\n`;\n\nconst IconColorPickerOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconColorPicker = `\n \n \n \n\n\n\n`;\n\nconst IconColorSwatchOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconColorSwatch = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconColumnInsertLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconColumnInsertRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconColumnsOff = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconColumns = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconComet = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCommandOff = `\n \n \n \n\n\n\n`;\n\nconst IconCommand = `\n \n \n\n\n\n`;\n\nconst IconCompassOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCompass = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconComponentsOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconComponents = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCone2 = `\n \n \n \n\n\n\n`;\n\nconst IconConeOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconCone = `\n \n \n \n\n\n\n`;\n\nconst IconConfettiOff = `\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconConfetti = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconConfucius = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconContainerOff = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconContainer = `\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconContrast2Off = `\n \n \n \n \n\n\n\n`;\n\nconst IconContrast2 = `\n \n \n \n\n\n\n`;\n\nconst IconContrastOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconContrast = `\n \n \n \n\n\n\n`;\n\nconst IconCooker = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCookieMan = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCookieOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCookie = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCopyOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconCopy = `\n \n \n \n\n\n\n`;\n\nconst IconCopyleftOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconCopyleft = `\n \n \n \n\n\n\n`;\n\nconst IconCopyrightOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconCopyright = `\n \n \n \n\n\n\n`;\n\nconst IconCornerDownLeftDouble = `\n \n \n \n\n\n\n`;\n\nconst IconCornerDownLeft = `\n \n \n\n\n\n`;\n\nconst IconCornerDownRightDouble = `\n \n \n \n\n\n\n`;\n\nconst IconCornerDownRight = `\n \n \n\n\n\n`;\n\nconst IconCornerLeftDownDouble = `\n \n \n \n\n\n\n`;\n\nconst IconCornerLeftDown = `\n \n \n\n\n\n`;\n\nconst IconCornerLeftUpDouble = `\n \n \n \n\n\n\n`;\n\nconst IconCornerLeftUp = `\n \n \n\n\n\n`;\n\nconst IconCornerRightDownDouble = `\n \n \n \n\n\n\n`;\n\nconst IconCornerRightDown = `\n \n \n\n\n\n`;\n\nconst IconCornerRightUpDouble = `\n \n \n \n\n\n\n`;\n\nconst IconCornerRightUp = `\n \n \n\n\n\n`;\n\nconst IconCornerUpLeftDouble = `\n \n \n \n\n\n\n`;\n\nconst IconCornerUpLeft = `\n \n \n\n\n\n`;\n\nconst IconCornerUpRightDouble = `\n \n \n \n\n\n\n`;\n\nconst IconCornerUpRight = `\n \n \n\n\n\n`;\n\nconst IconCpu2 = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCpuOff = `\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCpu = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCraneOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCrane = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCreativeCommonsBy = `\n \n \n \n \n\n\n\n`;\n\nconst IconCreativeCommonsNc = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCreativeCommonsNd = `\n \n \n \n \n\n\n\n`;\n\nconst IconCreativeCommonsOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCreativeCommonsSa = `\n \n \n \n \n\n\n\n`;\n\nconst IconCreativeCommonsZero = `\n \n \n \n \n\n\n\n`;\n\nconst IconCreativeCommons = `\n \n \n \n \n\n\n\n`;\n\nconst IconCreditCardOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCreditCard = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCricket = `\n \n \n \n \n\n\n\n`;\n\nconst IconCrop = `\n \n \n \n\n\n\n`;\n\nconst IconCrossOff = `\n \n \n \n\n\n\n`;\n\nconst IconCross = `\n \n \n\n\n\n`;\n\nconst IconCrosshair = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCrownOff = `\n \n \n \n\n\n\n`;\n\nconst IconCrown = `\n \n \n\n\n\n`;\n\nconst IconCrutchesOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCrutches = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCrystalBall = `\n \n \n \n \n\n\n\n`;\n\nconst IconCubeSend = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCubeUnfolded = `\n \n \n \n\n\n\n`;\n\nconst IconCupOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCup = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurling = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurlyLoop = `\n \n \n\n\n\n`;\n\nconst IconCurrencyAfghani = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyBahraini = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyBaht = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyBitcoin = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyCent = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyDinar = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyDirham = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyDogecoin = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyDollarAustralian = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyDollarBrunei = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyDollarCanadian = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyDollarGuyanese = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyDollarOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyDollarSingapore = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyDollarZimbabwean = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyDollar = `\n \n \n \n\n\n\n`;\n\nconst IconCurrencyDong = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyDram = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyEthereum = `\n \n \n \n\n\n\n`;\n\nconst IconCurrencyEuroOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyEuro = `\n \n \n \n\n\n\n`;\n\nconst IconCurrencyForint = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyFrank = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyGuarani = `\n \n \n \n\n\n\n`;\n\nconst IconCurrencyHryvnia = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyKip = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyKroneCzech = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyKroneDanish = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyKroneSwedish = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyLari = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyLeu = `\n \n \n\n\n\n`;\n\nconst IconCurrencyLira = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyLitecoin = `\n \n \n \n\n\n\n`;\n\nconst IconCurrencyLyd = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyManat = `\n \n \n \n\n\n\n`;\n\nconst IconCurrencyMonero = `\n \n \n\n\n\n`;\n\nconst IconCurrencyNaira = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyPaanga = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyPeso = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyPoundOff = `\n \n \n \n\n\n\n`;\n\nconst IconCurrencyPound = `\n \n \n\n\n\n`;\n\nconst IconCurrencyQuetzal = `\n \n \n \n\n\n\n`;\n\nconst IconCurrencyReal = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyRenminbi = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyRipple = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyRiyal = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyRubel = `\n \n \n \n\n\n\n`;\n\nconst IconCurrencyRufiyaa = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyRupeeNepalese = `\n \n \n \n\n\n\n`;\n\nconst IconCurrencyRupee = `\n \n \n \n\n\n\n`;\n\nconst IconCurrencyShekel = `\n \n \n \n\n\n\n`;\n\nconst IconCurrencySolana = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencySom = `\n \n \n \n\n\n\n`;\n\nconst IconCurrencyTaka = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyTenge = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyTugrik = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyWon = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyYenOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyYen = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyYuan = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrencyZloty = `\n \n \n \n \n\n\n\n`;\n\nconst IconCurrency = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrentLocationOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCurrentLocation = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconCursorOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconCursorText = `\n \n \n \n \n\n\n\n`;\n\nconst IconCut = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconCylinder = `\n \n \n \n\n\n\n`;\n\nconst IconDashboardOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDashboard = `\n \n \n \n \n\n\n\n`;\n\nconst IconDatabaseExport = `\n \n \n \n \n\n\n\n`;\n\nconst IconDatabaseImport = `\n \n \n \n \n\n\n\n`;\n\nconst IconDatabaseOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDatabase = `\n \n \n \n \n\n\n\n`;\n\nconst IconDeer = `\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDelta = `\n \n \n\n\n\n`;\n\nconst IconDentalBroken = `\n \n \n \n\n\n\n`;\n\nconst IconDentalOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconDental = `\n \n \n \n\n\n\n`;\n\nconst IconDetailsOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDetails = `\n \n \n \n\n\n\n`;\n\nconst IconDeviceAirpodsCase = `\n \n \n \n \n\n\n\n`;\n\nconst IconDeviceAirpods = `\n \n \n \n\n\n\n`;\n\nconst IconDeviceAnalytics = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceAudioTape = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceCameraPhone = `\n \n \n \n \n\n\n\n`;\n\nconst IconDeviceCctvOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceCctv = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceComputerCameraOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceComputerCamera = `\n \n \n \n \n\n\n\n`;\n\nconst IconDeviceDesktopAnalytics = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceDesktopOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceDesktop = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceFloppy = `\n \n \n \n \n\n\n\n`;\n\nconst IconDeviceGamepad2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceGamepad = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceHeartMonitor = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceIpadHorizontal = `\n \n \n \n\n\n\n`;\n\nconst IconDeviceIpad = `\n \n \n \n\n\n\n`;\n\nconst IconDeviceLandlinePhone = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceLaptopOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconDeviceLaptop = `\n \n \n \n\n\n\n`;\n\nconst IconDeviceMobileCharging = `\n \n \n \n \n\n\n\n`;\n\nconst IconDeviceMobileMessage = `\n \n \n \n \n\n\n\n`;\n\nconst IconDeviceMobileOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceMobileRotated = `\n \n \n \n \n\n\n\n`;\n\nconst IconDeviceMobileVibration = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceMobile = `\n \n \n \n \n\n\n\n`;\n\nconst IconDeviceNintendoOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceNintendo = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceSdCard = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceSim1 = `\n \n \n \n\n\n\n`;\n\nconst IconDeviceSim2 = `\n \n \n \n\n\n\n`;\n\nconst IconDeviceSim3 = `\n \n \n \n\n\n\n`;\n\nconst IconDeviceSim = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceSpeakerOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceSpeaker = `\n \n \n \n \n\n\n\n`;\n\nconst IconDeviceTabletOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconDeviceTablet = `\n \n \n \n\n\n\n`;\n\nconst IconDeviceTvOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconDeviceTvOld = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceTv = `\n \n \n \n\n\n\n`;\n\nconst IconDeviceWatchOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceWatchStats2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceWatchStats = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDeviceWatch = `\n \n \n \n \n\n\n\n`;\n\nconst IconDevices2 = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDevicesOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDevicesPcOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDevicesPc = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDevices = `\n \n \n \n \n\n\n\n`;\n\nconst IconDialpadOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDialpad = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDiamondOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconDiamond = `\n \n \n \n\n\n\n`;\n\nconst IconDiamonds = `\n \n \n\n\n\n`;\n\nconst IconDice1 = `\n \n \n \n\n\n\n`;\n\nconst IconDice2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconDice3 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDice4 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDice5 = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDice6 = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDice = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDimensions = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDirectionHorizontal = `\n \n \n \n\n\n\n`;\n\nconst IconDirectionSignOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDirectionSign = `\n \n \n \n \n\n\n\n`;\n\nconst IconDirection = `\n \n \n \n\n\n\n`;\n\nconst IconDirectionsOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDirections = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDisabled2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconDisabledOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDisabled = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDiscGolf = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDiscOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDisc = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDiscount2Off = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDiscount2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDiscountCheck = `\n \n \n \n\n\n\n`;\n\nconst IconDiscountOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDiscount = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDivide = `\n \n \n \n \n\n\n\n`;\n\nconst IconDna2Off = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDna2 = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDnaOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDna = `\n \n \n \n \n\n\n\n`;\n\nconst IconDogBowl = `\n \n \n \n \n\n\n\n`;\n\nconst IconDog = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDoorEnter = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDoorExit = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDoorOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDoor = `\n \n \n \n \n\n\n\n`;\n\nconst IconDotsCircleHorizontal = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDotsDiagonal2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconDotsDiagonal = `\n \n \n \n \n\n\n\n`;\n\nconst IconDotsVertical = `\n \n \n \n \n\n\n\n`;\n\nconst IconDots = `\n \n \n \n \n\n\n\n`;\n\nconst IconDownloadOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDownload = `\n \n \n \n \n\n\n\n`;\n\nconst IconDragDrop2 = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDragDrop = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDroneOff = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDrone = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconDropCircle = `\n \n \n \n\n\n\n`;\n\nconst IconDropletFilled2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDropletFilled = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconDropletHalf2 = `\n \n \n \n\n\n\n`;\n\nconst IconDropletHalf = `\n \n \n \n\n\n\n`;\n\nconst IconDropletOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconDroplet = `\n \n \n\n\n\n`;\n\nconst IconEPassport = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconEarOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconEar = `\n \n \n \n\n\n\n`;\n\nconst IconEaseInControlPoint = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconEaseInOutControlPoints = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconEaseInOut = `\n \n \n\n\n\n`;\n\nconst IconEaseIn = `\n \n \n\n\n\n`;\n\nconst IconEaseOutControlPoint = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconEaseOut = `\n \n \n\n\n\n`;\n\nconst IconEditCircleOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconEditCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconEditOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconEdit = `\n \n \n \n \n\n\n\n`;\n\nconst IconEggCracked = `\n \n \n \n\n\n\n`;\n\nconst IconEggFried = `\n \n \n \n\n\n\n`;\n\nconst IconEggOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconEgg = `\n \n \n\n\n\n`;\n\nconst IconEggs = `\n \n \n \n\n\n\n`;\n\nconst IconElevatorOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconElevator = `\n \n \n \n \n\n\n\n`;\n\nconst IconEmergencyBed = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconEmpathizeOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconEmpathize = `\n \n \n \n\n\n\n`;\n\nconst IconEmphasis = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconEngineOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconEngine = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconEqualDouble = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconEqualNot = `\n \n \n \n \n\n\n\n`;\n\nconst IconEqual = `\n \n \n \n\n\n\n`;\n\nconst IconEraserOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconEraser = `\n \n \n \n\n\n\n`;\n\nconst IconError404Off = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconError404 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconExchangeOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconExchange = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconExclamationCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconExclamationMarkOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconExclamationMark = `\n \n \n \n\n\n\n`;\n\nconst IconExplicitOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconExplicit = `\n \n \n \n \n\n\n\n`;\n\nconst IconExposure0 = `\n \n \n\n\n\n`;\n\nconst IconExposureMinus1 = `\n \n \n \n\n\n\n`;\n\nconst IconExposureMinus2 = `\n \n \n \n\n\n\n`;\n\nconst IconExposureOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconExposurePlus1 = `\n \n \n \n \n\n\n\n`;\n\nconst IconExposurePlus2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconExposure = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconExternalLinkOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconExternalLink = `\n \n \n \n \n\n\n\n`;\n\nconst IconEyeCheck = `\n \n \n \n \n\n\n\n`;\n\nconst IconEyeOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconEyeTable = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconEye = `\n \n \n \n\n\n\n`;\n\nconst IconEyeglass2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconEyeglassOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconEyeglass = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFaceIdError = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFaceId = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFaceMaskOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFaceMask = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFall = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFeatherOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFeather = `\n \n \n \n\n\n\n`;\n\nconst IconFenceOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFence = `\n \n \n \n \n\n\n\n`;\n\nconst IconFidgetSpinner = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFile3d = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileAlert = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileAnalytics = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileArrowLeft = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileArrowRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileBarcode = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileBroken = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileCertificate = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileChart = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileCheck = `\n \n \n \n \n\n\n\n`;\n\nconst IconFileCode2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileCode = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileDatabase = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileDelta = `\n \n \n \n \n\n\n\n`;\n\nconst IconFileDescription = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileDiff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileDigit = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileDislike = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileDollar = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileDots = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileDownload = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileEuro = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileExport = `\n \n \n \n\n\n\n`;\n\nconst IconFileFunction = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileHorizontal = `\n \n \n \n\n\n\n`;\n\nconst IconFileImport = `\n \n \n \n\n\n\n`;\n\nconst IconFileInfinity = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileInfo = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileInvoice = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileLambda = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileLike = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileMinus = `\n \n \n \n \n\n\n\n`;\n\nconst IconFileMusic = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileOff = `\n \n \n \n\n\n\n`;\n\nconst IconFileOrientation = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFilePencil = `\n \n \n \n \n\n\n\n`;\n\nconst IconFilePercent = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFilePhone = `\n \n \n \n \n\n\n\n`;\n\nconst IconFilePlus = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFilePower = `\n \n \n \n \n\n\n\n`;\n\nconst IconFileReport = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileRss = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileScissors = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileSearch = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileSettings = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileShredder = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileSignal = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileSpreadsheet = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileStack = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileStar = `\n \n \n \n \n\n\n\n`;\n\nconst IconFileSymlink = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileText = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileTime = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileTypography = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileUnknown = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileUpload = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFileVector = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFileX = `\n \n \n \n \n\n\n\n`;\n\nconst IconFileZip = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFile = `\n \n \n \n\n\n\n`;\n\nconst IconFilesOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFiles = `\n \n \n \n \n\n\n\n`;\n\nconst IconFilterOff = `\n \n \n \n\n\n\n`;\n\nconst IconFilter = `\n \n \n\n\n\n`;\n\nconst IconFingerprintOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFingerprint = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFireHydrantOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFireHydrant = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFiretruck = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFirstAidKitOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFirstAidKit = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFishBone = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFishChristianity = `\n \n \n\n\n\n`;\n\nconst IconFishHookOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFishHook = `\n \n \n \n \n\n\n\n`;\n\nconst IconFishOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFish = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFlag2Off = `\n \n \n \n\n\n\n`;\n\nconst IconFlag2 = `\n \n \n\n\n\n`;\n\nconst IconFlag3 = `\n \n \n\n\n\n`;\n\nconst IconFlagOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFlag = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFlameOff = `\n \n \n \n\n\n\n`;\n\nconst IconFlame = `\n \n \n\n\n\n`;\n\nconst IconFlare = `\n \n \n\n\n\n`;\n\nconst IconFlask2Off = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFlask2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconFlaskOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFlask = `\n \n \n \n \n\n\n\n`;\n\nconst IconFlipFlops = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFlipHorizontal = `\n \n \n \n \n\n\n\n`;\n\nconst IconFlipVertical = `\n \n \n \n \n\n\n\n`;\n\nconst IconFloatCenter = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFloatLeft = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFloatNone = `\n \n \n \n \n\n\n\n`;\n\nconst IconFloatRight = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFlowerOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconFlower = `\n \n \n \n\n\n\n`;\n\nconst IconFocus2 = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFocusCentered = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFocus = `\n \n \n \n\n\n\n`;\n\nconst IconFoldDown = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFoldUp = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFold = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFolderMinus = `\n \n \n \n\n\n\n`;\n\nconst IconFolderOff = `\n \n \n \n\n\n\n`;\n\nconst IconFolderPlus = `\n \n \n \n \n\n\n\n`;\n\nconst IconFolderX = `\n \n \n \n\n\n\n`;\n\nconst IconFolder = `\n \n \n\n\n\n`;\n\nconst IconFoldersOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconFolders = `\n \n \n \n\n\n\n`;\n\nconst IconForbid2 = `\n \n \n \n\n\n\n`;\n\nconst IconForbid = `\n \n \n \n\n\n\n`;\n\nconst IconForklift = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconForms = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFountainOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFountain = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFrameOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFrame = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFreeRights = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFridgeOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFridge = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFriendsOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconFriends = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFunctionOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconFunction = `\n \n \n \n \n\n\n\n`;\n\nconst IconGardenCartOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGardenCart = `\n \n \n \n \n\n\n\n`;\n\nconst IconGasStationOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGasStation = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGaugeOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGauge = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGavel = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGenderAgender = `\n \n \n \n\n\n\n`;\n\nconst IconGenderAndrogyne = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGenderBigender = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGenderDemiboy = `\n \n \n \n \n\n\n\n`;\n\nconst IconGenderDemigirl = `\n \n \n \n \n\n\n\n`;\n\nconst IconGenderEpicene = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGenderFemale = `\n \n \n \n \n\n\n\n`;\n\nconst IconGenderFemme = `\n \n \n \n \n\n\n\n`;\n\nconst IconGenderGenderfluid = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGenderGenderless = `\n \n \n \n \n\n\n\n`;\n\nconst IconGenderGenderqueer = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGenderHermaphrodite = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGenderIntergender = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGenderMale = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGenderNeutrois = `\n \n \n \n\n\n\n`;\n\nconst IconGenderThird = `\n \n \n \n \n\n\n\n`;\n\nconst IconGenderTransgender = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGenderTrasvesti = `\n \n \n \n \n\n\n\n`;\n\nconst IconGeometry = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGhost2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGhostOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGhost = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGif = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGiftCard = `\n \n \n \n \n\n\n\n`;\n\nconst IconGiftOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGift = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGitBranchDeleted = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGitBranch = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGitCherryPick = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGitCommit = `\n \n \n \n \n\n\n\n`;\n\nconst IconGitCompare = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGitFork = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGitMerge = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGitPullRequestClosed = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGitPullRequestDraft = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGitPullRequest = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGizmo = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGlassFull = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGlassOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGlass = `\n \n \n \n \n\n\n\n`;\n\nconst IconGlobeOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGlobe = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGoGame = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGolfOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconGolf = `\n \n \n \n\n\n\n`;\n\nconst IconGps = `\n \n \n \n\n\n\n`;\n\nconst IconGradienter = `\n \n \n \n \n\n\n\n`;\n\nconst IconGrain = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGraphOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconGraph = `\n \n \n \n\n\n\n`;\n\nconst IconGrave2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconGrave = `\n \n \n \n\n\n\n`;\n\nconst IconGridDots = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGridPattern = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGrillFork = `\n \n \n \n \n\n\n\n`;\n\nconst IconGrillOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGrillSpatula = `\n \n \n \n \n\n\n\n`;\n\nconst IconGrill = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGripHorizontal = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGripVertical = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconGrowth = `\n \n \n\n\n\n`;\n\nconst IconGuitarPick = `\n \n \n\n\n\n`;\n\nconst IconH1 = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconH2 = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconH3 = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconH4 = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconH5 = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconH6 = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHammerOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconHammer = `\n \n \n \n\n\n\n`;\n\nconst IconHandClick = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHandFingerOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHandFinger = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHandGrab = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHandLittleFinger = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHandMiddleFinger = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHandMove = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHandOff = `\n \n \n \n\n\n\n`;\n\nconst IconHandRingFinger = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHandRock = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHandSanitizer = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHandStop = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHandThreeFingers = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHandTwoFingers = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHanger2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconHangerOff = `\n \n \n \n\n\n\n`;\n\nconst IconHanger = `\n \n \n\n\n\n`;\n\nconst IconHash = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHaze = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHeadingOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHeading = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHeadphonesOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHeadphones = `\n \n \n \n \n\n\n\n`;\n\nconst IconHeadsetOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHeadset = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHealthRecognition = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHeartBroken = `\n \n \n \n\n\n\n`;\n\nconst IconHeartHandshake = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHeartMinus = `\n \n \n \n\n\n\n`;\n\nconst IconHeartOff = `\n \n \n \n\n\n\n`;\n\nconst IconHeartPlus = `\n \n \n \n \n\n\n\n`;\n\nconst IconHeartRateMonitor = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHeart = `\n \n \n\n\n\n`;\n\nconst IconHeartbeat = `\n \n \n \n\n\n\n`;\n\nconst IconHeartsOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconHearts = `\n \n \n \n\n\n\n`;\n\nconst IconHelicopterLanding = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHelicopter = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHelmetOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconHelmet = `\n \n \n \n\n\n\n`;\n\nconst IconHelpOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHelp = `\n \n \n \n \n\n\n\n`;\n\nconst IconHexagon3d = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterA = `\n \n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterB = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterC = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterD = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterE = `\n \n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterF = `\n \n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterG = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterH = `\n \n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterI = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterJ = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterK = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterL = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterM = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterN = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterO = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterP = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterQ = `\n \n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterR = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterS = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterT = `\n \n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterU = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterV = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterW = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterX = `\n \n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterY = `\n \n \n \n \n\n\n\n`;\n\nconst IconHexagonLetterZ = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonNumber0 = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonNumber1 = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonNumber2 = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonNumber3 = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonNumber4 = `\n \n \n \n \n\n\n\n`;\n\nconst IconHexagonNumber5 = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonNumber6 = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonNumber7 = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonNumber8 = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonNumber9 = `\n \n \n \n\n\n\n`;\n\nconst IconHexagonOff = `\n \n \n \n\n\n\n`;\n\nconst IconHexagon = `\n \n \n\n\n\n`;\n\nconst IconHexagonsOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHexagons = `\n \n \n \n \n\n\n\n`;\n\nconst IconHierarchy2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHierarchy3 = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHierarchyOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHierarchy = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHighlightOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHighlight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHistoryOff = `\n \n \n \n\n\n\n`;\n\nconst IconHistoryToggle = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHistory = `\n \n \n \n\n\n\n`;\n\nconst IconHome2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconHomeBolt = `\n \n \n \n \n\n\n\n`;\n\nconst IconHomeCancel = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeCheck = `\n \n \n \n \n\n\n\n`;\n\nconst IconHomeCog = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeDollar = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeDot = `\n \n \n \n \n\n\n\n`;\n\nconst IconHomeDown = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeEco = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeEdit = `\n \n \n \n \n\n\n\n`;\n\nconst IconHomeExclamation = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeHand = `\n \n \n \n \n\n\n\n`;\n\nconst IconHomeHeart = `\n \n \n \n \n\n\n\n`;\n\nconst IconHomeInfinity = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeLink = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeMinus = `\n \n \n \n \n\n\n\n`;\n\nconst IconHomeMove = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomePlus = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeQuestion = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeRibbon = `\n \n \n \n \n\n\n\n`;\n\nconst IconHomeSearch = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeShare = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeShield = `\n \n \n \n \n\n\n\n`;\n\nconst IconHomeSignal = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeStar = `\n \n \n \n \n\n\n\n`;\n\nconst IconHomeStats = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeUp = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHomeX = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHome = `\n \n \n \n \n\n\n\n`;\n\nconst IconHorseToy = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconHotelService = `\n \n \n\n\n\n`;\n\nconst IconHourglassEmpty = `\n \n \n \n\n\n\n`;\n\nconst IconHourglassHigh = `\n \n \n \n \n\n\n\n`;\n\nconst IconHourglassLow = `\n \n \n \n \n\n\n\n`;\n\nconst IconHourglassOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconHourglass = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconIceCream2 = `\n \n \n \n\n\n\n`;\n\nconst IconIceCreamOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconIceCream = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconIceSkating = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconIconsOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconIcons = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconIdBadge2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconIdBadgeOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconIdBadge = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconIdOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconId = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconInboxOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconInbox = `\n \n \n \n\n\n\n`;\n\nconst IconIndentDecrease = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconIndentIncrease = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconInfinityOff = `\n \n \n \n\n\n\n`;\n\nconst IconInfinity = `\n \n \n\n\n\n`;\n\nconst IconInfoCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconInfoSquareRounded = `\n \n \n \n \n\n\n\n`;\n\nconst IconInfoSquare = `\n \n \n \n \n\n\n\n`;\n\nconst IconInnerShadowBottomLeft = `\n \n \n \n\n\n\n`;\n\nconst IconInnerShadowBottomRight = `\n \n \n \n\n\n\n`;\n\nconst IconInnerShadowBottom = `\n \n \n \n\n\n\n`;\n\nconst IconInnerShadowLeft = `\n \n \n \n\n\n\n`;\n\nconst IconInnerShadowRight = `\n \n \n \n\n\n\n`;\n\nconst IconInnerShadowTopLeft = `\n \n \n \n\n\n\n`;\n\nconst IconInnerShadowTopRight = `\n \n \n \n\n\n\n`;\n\nconst IconInnerShadowTop = `\n \n \n \n\n\n\n`;\n\nconst IconInputSearch = `\n \n \n \n \n\n\n\n`;\n\nconst IconIroning1 = `\n \n \n \n\n\n\n`;\n\nconst IconIroning2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconIroning3 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconIroningOff = `\n \n \n \n\n\n\n`;\n\nconst IconIroningSteamOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconIroningSteam = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconItalic = `\n \n \n \n \n\n\n\n`;\n\nconst IconJacket = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconJetpack = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconJewishStar = `\n \n \n\n\n\n`;\n\nconst IconJpg = `\n \n \n \n \n\n\n\n`;\n\nconst IconJumpRope = `\n \n \n \n \n\n\n\n`;\n\nconst IconKarate = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconKayak = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconKering = `\n \n \n \n \n\n\n\n`;\n\nconst IconKeyOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconKey = `\n \n \n \n\n\n\n`;\n\nconst IconKeyboardHide = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconKeyboardOff = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconKeyboardShow = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconKeyboard = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconKeyframeAlignCenter = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconKeyframeAlignHorizontal = `\n \n \n \n \n\n\n\n`;\n\nconst IconKeyframeAlignVertical = `\n \n \n \n \n\n\n\n`;\n\nconst IconKeyframe = `\n \n \n\n\n\n`;\n\nconst IconKeyframes = `\n \n \n \n \n\n\n\n`;\n\nconst IconLadderOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLadder = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLambda = `\n \n \n \n\n\n\n`;\n\nconst IconLamp2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLampOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLamp = `\n \n \n \n \n\n\n\n`;\n\nconst IconLanguageHiragana = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLanguageKatakana = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLanguageOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLanguage = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLassoOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLassoPolygon = `\n \n \n \n \n\n\n\n`;\n\nconst IconLasso = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayersDifference = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLayersIntersect2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayersIntersect = `\n \n \n \n\n\n\n`;\n\nconst IconLayersLinked = `\n \n \n \n\n\n\n`;\n\nconst IconLayersOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayersSubtract = `\n \n \n \n\n\n\n`;\n\nconst IconLayersUnion = `\n \n \n\n\n\n`;\n\nconst IconLayout2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLayoutAlignBottom = `\n \n \n \n\n\n\n`;\n\nconst IconLayoutAlignCenter = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayoutAlignLeft = `\n \n \n \n\n\n\n`;\n\nconst IconLayoutAlignMiddle = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayoutAlignRight = `\n \n \n \n\n\n\n`;\n\nconst IconLayoutAlignTop = `\n \n \n \n\n\n\n`;\n\nconst IconLayoutBoardSplit = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLayoutBoard = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLayoutBottombarCollapse = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayoutBottombarExpand = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayoutBottombar = `\n \n \n \n\n\n\n`;\n\nconst IconLayoutCards = `\n \n \n \n\n\n\n`;\n\nconst IconLayoutCollage = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayoutColumns = `\n \n \n \n\n\n\n`;\n\nconst IconLayoutDashboard = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLayoutDistributeHorizontal = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayoutDistributeVertical = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayoutGridAdd = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLayoutGrid = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLayoutKanban = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLayoutList = `\n \n \n \n\n\n\n`;\n\nconst IconLayoutNavbarCollapse = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayoutNavbarExpand = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayoutNavbar = `\n \n \n \n\n\n\n`;\n\nconst IconLayoutOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLayoutRows = `\n \n \n \n\n\n\n`;\n\nconst IconLayoutSidebarLeftCollapse = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayoutSidebarLeftExpand = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayoutSidebarRightCollapse = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayoutSidebarRightExpand = `\n \n \n \n \n\n\n\n`;\n\nconst IconLayoutSidebarRight = `\n \n \n \n\n\n\n`;\n\nconst IconLayoutSidebar = `\n \n \n \n\n\n\n`;\n\nconst IconLayout = `\n \n \n \n \n\n\n\n`;\n\nconst IconLeafOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconLeaf = `\n \n \n \n\n\n\n`;\n\nconst IconLegoOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLego = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLemon2 = `\n \n \n\n\n\n`;\n\nconst IconLemon = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLetterA = `\n \n \n \n\n\n\n`;\n\nconst IconLetterB = `\n \n \n \n\n\n\n`;\n\nconst IconLetterC = `\n \n \n\n\n\n`;\n\nconst IconLetterCaseLower = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLetterCaseToggle = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLetterCaseUpper = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLetterCase = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLetterD = `\n \n \n\n\n\n`;\n\nconst IconLetterE = `\n \n \n \n\n\n\n`;\n\nconst IconLetterF = `\n \n \n \n\n\n\n`;\n\nconst IconLetterG = `\n \n \n\n\n\n`;\n\nconst IconLetterH = `\n \n \n \n \n\n\n\n`;\n\nconst IconLetterI = `\n \n \n\n\n\n`;\n\nconst IconLetterJ = `\n \n \n\n\n\n`;\n\nconst IconLetterK = `\n \n \n \n \n\n\n\n`;\n\nconst IconLetterL = `\n \n \n\n\n\n`;\n\nconst IconLetterM = `\n \n \n\n\n\n`;\n\nconst IconLetterN = `\n \n \n\n\n\n`;\n\nconst IconLetterO = `\n \n \n\n\n\n`;\n\nconst IconLetterP = `\n \n \n\n\n\n`;\n\nconst IconLetterQ = `\n \n \n \n\n\n\n`;\n\nconst IconLetterR = `\n \n \n \n\n\n\n`;\n\nconst IconLetterS = `\n \n \n\n\n\n`;\n\nconst IconLetterSpacing = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLetterT = `\n \n \n \n\n\n\n`;\n\nconst IconLetterU = `\n \n \n\n\n\n`;\n\nconst IconLetterV = `\n \n \n\n\n\n`;\n\nconst IconLetterW = `\n \n \n\n\n\n`;\n\nconst IconLetterX = `\n \n \n \n\n\n\n`;\n\nconst IconLetterY = `\n \n \n \n\n\n\n`;\n\nconst IconLetterZ = `\n \n \n\n\n\n`;\n\nconst IconLicenseOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLicense = `\n \n \n \n \n\n\n\n`;\n\nconst IconLifebuoyOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLifebuoy = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLineDashed = `\n \n \n \n \n\n\n\n`;\n\nconst IconLineDotted = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLineHeight = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLine = `\n \n \n \n \n\n\n\n`;\n\nconst IconLinkOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLink = `\n \n \n \n\n\n\n`;\n\nconst IconListCheck = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconListDetails = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconListNumbers = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconListSearch = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconList = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLivePhotoOff = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLivePhoto = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLiveView = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLoader2 = `\n \n \n\n\n\n`;\n\nconst IconLoader3 = `\n \n \n \n\n\n\n`;\n\nconst IconLoaderQuarter = `\n \n \n \n \n\n\n\n`;\n\nconst IconLoader = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLocationBroken = `\n \n \n \n\n\n\n`;\n\nconst IconLocationOff = `\n \n \n \n\n\n\n`;\n\nconst IconLocation = `\n \n \n\n\n\n`;\n\nconst IconLockAccessOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLockAccess = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLockOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLockOpenOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLockOpen = `\n \n \n \n \n\n\n\n`;\n\nconst IconLockSquareRounded = `\n \n \n \n \n\n\n\n`;\n\nconst IconLockSquare = `\n \n \n \n \n\n\n\n`;\n\nconst IconLock = `\n \n \n \n \n\n\n\n`;\n\nconst IconLogicAnd = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLogicBuffer = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLogicNand = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLogicNor = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLogicNot = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLogicOr = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconLogicXnor = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLogicXor = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLogin = `\n \n \n \n\n\n\n`;\n\nconst IconLogout = `\n \n \n \n\n\n\n`;\n\nconst IconLollipopOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLollipop = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLuggageOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLuggage = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLungsOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconLungs = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMacroOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMacro = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMagnetOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMagnet = `\n \n \n \n \n\n\n\n`;\n\nconst IconMailFast = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMailForward = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMailOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconMailOpened = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMail = `\n \n \n \n\n\n\n`;\n\nconst IconMailboxOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMailbox = `\n \n \n \n \n\n\n\n`;\n\nconst IconMan = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconManualGearbox = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMap2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMapOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMapPinOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconMapPin = `\n \n \n \n\n\n\n`;\n\nconst IconMapPins = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMapSearch = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMap = `\n \n \n \n \n\n\n\n`;\n\nconst IconMarkdownOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMarkdown = `\n \n \n \n \n\n\n\n`;\n\nconst IconMarquee2 = `\n \n \n\n\n\n`;\n\nconst IconMarqueeOff = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMarquee = `\n \n \n\n\n\n`;\n\nconst IconMars = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMaskOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconMask = `\n \n \n \n\n\n\n`;\n\nconst IconMasksTheaterOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMasksTheater = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMassage = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMatchstick = `\n \n \n \n \n\n\n\n`;\n\nconst IconMath1Divide2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconMath1Divide3 = `\n \n \n \n \n\n\n\n`;\n\nconst IconMathAvg = `\n \n \n \n\n\n\n`;\n\nconst IconMathEqualGreater = `\n \n \n \n\n\n\n`;\n\nconst IconMathEqualLower = `\n \n \n \n\n\n\n`;\n\nconst IconMathFunctionOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMathFunctionY = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMathFunction = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMathGreater = `\n \n \n\n\n\n`;\n\nconst IconMathIntegralX = `\n \n \n \n \n\n\n\n`;\n\nconst IconMathIntegral = `\n \n \n\n\n\n`;\n\nconst IconMathIntegrals = `\n \n \n \n\n\n\n`;\n\nconst IconMathLower = `\n \n \n\n\n\n`;\n\nconst IconMathMax = `\n \n \n \n\n\n\n`;\n\nconst IconMathMin = `\n \n \n \n \n\n\n\n`;\n\nconst IconMathNot = `\n \n \n\n\n\n`;\n\nconst IconMathOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMathPiDivide2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMathPi = `\n \n \n \n \n\n\n\n`;\n\nconst IconMathSymbols = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMathXDivide2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMathXDivideY2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMathXDivideY = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMathXMinusX = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMathXMinusY = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMathXPlusX = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMathXPlusY = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMathXy = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMathYMinusY = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMathYPlusY = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMath = `\n \n \n \n \n\n\n\n`;\n\nconst IconMaximizeOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMaximize = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMeatOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMeat = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMedal2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMedal = `\n \n \n \n\n\n\n`;\n\nconst IconMedicalCrossOff = `\n \n \n \n\n\n\n`;\n\nconst IconMedicalCross = `\n \n \n\n\n\n`;\n\nconst IconMedicineSyrup = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMeeple = `\n \n \n\n\n\n`;\n\nconst IconMenorah = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMenu2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconMenuOrder = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMenu = `\n \n \n \n\n\n\n`;\n\nconst IconMessage2Code = `\n \n \n \n \n\n\n\n`;\n\nconst IconMessage2Off = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMessage2Share = `\n \n \n \n \n\n\n\n`;\n\nconst IconMessage2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconMessageChatbot = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMessageCircle2 = `\n \n \n\n\n\n`;\n\nconst IconMessageCircleOff = `\n \n \n \n\n\n\n`;\n\nconst IconMessageCircle = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMessageCode = `\n \n \n \n \n\n\n\n`;\n\nconst IconMessageDots = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMessageForward = `\n \n \n \n \n\n\n\n`;\n\nconst IconMessageLanguage = `\n \n \n \n \n\n\n\n`;\n\nconst IconMessageOff = `\n \n \n \n\n\n\n`;\n\nconst IconMessagePlus = `\n \n \n \n \n\n\n\n`;\n\nconst IconMessageReport = `\n \n \n \n \n\n\n\n`;\n\nconst IconMessageShare = `\n \n \n \n \n\n\n\n`;\n\nconst IconMessage = `\n \n \n \n \n\n\n\n`;\n\nconst IconMessagesOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconMessages = `\n \n \n \n\n\n\n`;\n\nconst IconMeteorOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconMeteor = `\n \n \n \n\n\n\n`;\n\nconst IconMickey = `\n \n \n \n \n\n\n\n`;\n\nconst IconMicrophone2Off = `\n \n \n \n \n\n\n\n`;\n\nconst IconMicrophone2 = `\n \n \n \n\n\n\n`;\n\nconst IconMicrophoneOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMicrophone = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMicroscopeOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMicroscope = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMicrowaveOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMicrowave = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMilitaryAward = `\n \n \n \n \n\n\n\n`;\n\nconst IconMilitaryRank = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMilkOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMilk = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMilkshake = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMinimize = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMinusVertical = `\n \n \n\n\n\n`;\n\nconst IconMinus = `\n \n \n\n\n\n`;\n\nconst IconMistOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMist = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoneybag = `\n \n \n \n\n\n\n`;\n\nconst IconMoodAngry = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodAnnoyed2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodAnnoyed = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodBoy = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodConfuzed = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodCrazyHappy = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodCry = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodEmpty = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodHappy = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodKid = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodLookLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconMoodLookRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconMoodNerd = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodNervous = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodNeutral = `\n \n \n \n \n\n\n\n`;\n\nconst IconMoodOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodSad2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodSadDizzy = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodSadSquint = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodSad = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodSick = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodSilence = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodSing = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodSmileBeam = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodSmileDizzy = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodSmile = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodSuprised = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodTongueWink2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodTongueWink = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodTongue = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodUnamused = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodWink2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodWink = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodWrrr = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMoodXd = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMoon2 = `\n \n \n \n\n\n\n`;\n\nconst IconMoonOff = `\n \n \n \n\n\n\n`;\n\nconst IconMoonStars = `\n \n \n \n \n\n\n\n`;\n\nconst IconMoon = `\n \n \n\n\n\n`;\n\nconst IconMoped = `\n \n \n \n \n\n\n\n`;\n\nconst IconMotorbike = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMountainOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconMountain = `\n \n \n \n\n\n\n`;\n\nconst IconMouse2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconMouseOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconMouse = `\n \n \n \n\n\n\n`;\n\nconst IconMoustache = `\n \n \n \n\n\n\n`;\n\nconst IconMovieOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMovie = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMugOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconMug = `\n \n \n \n\n\n\n`;\n\nconst IconMultiplier05x = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconMultiplier15x = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMultiplier1x = `\n \n \n \n \n\n\n\n`;\n\nconst IconMultiplier2x = `\n \n \n \n \n\n\n\n`;\n\nconst IconMushroomOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconMushroom = `\n \n \n \n\n\n\n`;\n\nconst IconMusicOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconMusic = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconNavigationOff = `\n \n \n \n\n\n\n`;\n\nconst IconNavigation = `\n \n \n\n\n\n`;\n\nconst IconNeedleThread = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconNeedle = `\n \n \n \n\n\n\n`;\n\nconst IconNetworkOff = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconNetwork = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconNewSection = `\n \n \n \n \n\n\n\n`;\n\nconst IconNewsOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconNews = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconNfcOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconNfc = `\n \n \n \n \n\n\n\n`;\n\nconst IconNoCopyright = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconNoCreativeCommons = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconNoDerivatives = `\n \n \n \n \n\n\n\n`;\n\nconst IconNorthStar = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconNoteOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconNote = `\n \n \n \n\n\n\n`;\n\nconst IconNotebookOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconNotebook = `\n \n \n \n \n\n\n\n`;\n\nconst IconNotesOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconNotes = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconNotificationOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconNotification = `\n \n \n \n\n\n\n`;\n\nconst IconNumber0 = `\n \n \n \n\n\n\n`;\n\nconst IconNumber1 = `\n \n \n\n\n\n`;\n\nconst IconNumber2 = `\n \n \n\n\n\n`;\n\nconst IconNumber3 = `\n \n \n \n\n\n\n`;\n\nconst IconNumber4 = `\n \n \n\n\n\n`;\n\nconst IconNumber5 = `\n \n \n\n\n\n`;\n\nconst IconNumber6 = `\n \n \n \n\n\n\n`;\n\nconst IconNumber7 = `\n \n \n\n\n\n`;\n\nconst IconNumber8 = `\n \n \n \n\n\n\n`;\n\nconst IconNumber9 = `\n \n \n \n\n\n\n`;\n\nconst IconNumber = `\n \n \n \n \n\n\n\n`;\n\nconst IconNumbers = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconNurse = `\n \n \n \n \n\n\n\n`;\n\nconst IconOctagonOff = `\n \n \n \n\n\n\n`;\n\nconst IconOctagon = `\n \n \n\n\n\n`;\n\nconst IconOld = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconOlympicsOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconOlympics = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconOm = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconOmega = `\n \n \n\n\n\n`;\n\nconst IconOutbound = `\n \n \n \n \n\n\n\n`;\n\nconst IconOutlet = `\n \n \n \n \n\n\n\n`;\n\nconst IconOvalVertical = `\n \n \n\n\n\n`;\n\nconst IconOval = `\n \n \n\n\n\n`;\n\nconst IconOverline = `\n \n \n \n\n\n\n`;\n\nconst IconPackageOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPackage = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPackages = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPackgeExport = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPackgeImport = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPacman = `\n \n \n \n\n\n\n`;\n\nconst IconPageBreak = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPaintOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPaint = `\n \n \n \n \n\n\n\n`;\n\nconst IconPaletteOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPalette = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPanoramaHorizontalOff = `\n \n \n \n\n\n\n`;\n\nconst IconPanoramaHorizontal = `\n \n \n\n\n\n`;\n\nconst IconPanoramaVerticalOff = `\n \n \n \n\n\n\n`;\n\nconst IconPanoramaVertical = `\n \n \n\n\n\n`;\n\nconst IconPaperBagOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPaperBag = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPaperclip = `\n \n \n\n\n\n`;\n\nconst IconParachuteOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconParachute = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconParenthesesOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconParentheses = `\n \n \n \n\n\n\n`;\n\nconst IconParkingOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconParking = `\n \n \n \n\n\n\n`;\n\nconst IconPassword = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPawOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPaw = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPeace = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPencilMinus = `\n \n \n \n \n\n\n\n`;\n\nconst IconPencilOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconPencilPlus = `\n \n \n \n \n\n\n\n`;\n\nconst IconPencil = `\n \n \n \n\n\n\n`;\n\nconst IconPennant2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconPennantOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPennant = `\n \n \n \n \n\n\n\n`;\n\nconst IconPentagonOff = `\n \n \n \n\n\n\n`;\n\nconst IconPentagon = `\n \n \n\n\n\n`;\n\nconst IconPentagram = `\n \n \n \n\n\n\n`;\n\nconst IconPepperOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconPepper = `\n \n \n \n\n\n\n`;\n\nconst IconPercentage = `\n \n \n \n \n\n\n\n`;\n\nconst IconPerfume = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPerspectiveOff = `\n \n \n \n\n\n\n`;\n\nconst IconPerspective = `\n \n \n\n\n\n`;\n\nconst IconPhoneCall = `\n \n \n \n \n\n\n\n`;\n\nconst IconPhoneCalling = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPhoneCheck = `\n \n \n \n\n\n\n`;\n\nconst IconPhoneIncoming = `\n \n \n \n \n\n\n\n`;\n\nconst IconPhoneOff = `\n \n \n \n\n\n\n`;\n\nconst IconPhoneOutgoing = `\n \n \n \n \n\n\n\n`;\n\nconst IconPhonePause = `\n \n \n \n \n\n\n\n`;\n\nconst IconPhonePlus = `\n \n \n \n\n\n\n`;\n\nconst IconPhoneX = `\n \n \n \n\n\n\n`;\n\nconst IconPhone = `\n \n \n\n\n\n`;\n\nconst IconPhotoCancel = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPhotoCheck = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPhotoDown = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPhotoEdit = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPhotoHeart = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPhotoMinus = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPhotoOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPhotoPlus = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPhotoSearch = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPhotoShield = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPhotoStar = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPhotoUp = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPhotoX = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPhoto = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPhysotherapist = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPictureInPictureOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPictureInPictureOn = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPictureInPictureTop = `\n \n \n \n\n\n\n`;\n\nconst IconPictureInPicture = `\n \n \n \n\n\n\n`;\n\nconst IconPigMoney = `\n \n \n \n \n\n\n\n`;\n\nconst IconPigOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconPig = `\n \n \n \n\n\n\n`;\n\nconst IconPilcrow = `\n \n \n \n \n\n\n\n`;\n\nconst IconPillOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconPill = `\n \n \n \n\n\n\n`;\n\nconst IconPills = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPin = `\n \n \n \n \n\n\n\n`;\n\nconst IconPingPong = `\n \n \n \n \n\n\n\n`;\n\nconst IconPinnedOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPinned = `\n \n \n \n \n\n\n\n`;\n\nconst IconPizzaOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPizza = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPlaceholder = `\n \n \n \n \n\n\n\n`;\n\nconst IconPlaneArrival = `\n \n \n \n\n\n\n`;\n\nconst IconPlaneDeparture = `\n \n \n \n\n\n\n`;\n\nconst IconPlaneInflight = `\n \n \n \n\n\n\n`;\n\nconst IconPlaneOff = `\n \n \n \n\n\n\n`;\n\nconst IconPlaneTilt = `\n \n \n\n\n\n`;\n\nconst IconPlane = `\n \n \n\n\n\n`;\n\nconst IconPlanetOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconPlanet = `\n \n \n \n\n\n\n`;\n\nconst IconPlant2Off = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPlant2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPlantOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPlant = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPlayCardOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPlayCard = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPlayerEject = `\n \n \n \n\n\n\n`;\n\nconst IconPlayerPause = `\n \n \n \n\n\n\n`;\n\nconst IconPlayerPlay = `\n \n \n\n\n\n`;\n\nconst IconPlayerRecord = `\n \n \n\n\n\n`;\n\nconst IconPlayerSkipBack = `\n \n \n \n\n\n\n`;\n\nconst IconPlayerSkipForward = `\n \n \n \n\n\n\n`;\n\nconst IconPlayerStop = `\n \n \n\n\n\n`;\n\nconst IconPlayerTrackNext = `\n \n \n \n\n\n\n`;\n\nconst IconPlayerTrackPrev = `\n \n \n \n\n\n\n`;\n\nconst IconPlaylistAdd = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPlaylistOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPlaylistX = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPlaylist = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPlaystationCircle = `\n \n \n \n\n\n\n`;\n\nconst IconPlaystationSquare = `\n \n \n \n\n\n\n`;\n\nconst IconPlaystationTriangle = `\n \n \n \n\n\n\n`;\n\nconst IconPlaystationX = `\n \n \n \n \n\n\n\n`;\n\nconst IconPlugConnectedX = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPlugConnected = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPlugOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPlugX = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPlug = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPlus = `\n \n \n \n\n\n\n`;\n\nconst IconPng = `\n \n \n \n \n\n\n\n`;\n\nconst IconPodiumOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPodium = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPointOff = `\n \n \n \n\n\n\n`;\n\nconst IconPoint = `\n \n \n\n\n\n`;\n\nconst IconPointer = `\n \n \n\n\n\n`;\n\nconst IconPokeballOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPokeball = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPokerChip = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPolaroid = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPolygonOff = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPolygon = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPoo = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPoolOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPool = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPower = `\n \n \n \n\n\n\n`;\n\nconst IconPray = `\n \n \n \n\n\n\n`;\n\nconst IconPremiumRights = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPrescription = `\n \n \n \n \n\n\n\n`;\n\nconst IconPresentationAnalytics = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPresentationOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPresentation = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPrinterOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPrinter = `\n \n \n \n \n\n\n\n`;\n\nconst IconPrison = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPrompt = `\n \n \n \n\n\n\n`;\n\nconst IconPropellerOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPropeller = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconPumpkinScary = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPuzzle2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconPuzzleOff = `\n \n \n \n\n\n\n`;\n\nconst IconPuzzle = `\n \n \n\n\n\n`;\n\nconst IconPyramidOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconPyramid = `\n \n \n \n\n\n\n`;\n\nconst IconQrcodeOff = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconQrcode = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconQuestionCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconQuestionMark = `\n \n \n \n\n\n\n`;\n\nconst IconQuoteOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconQuote = `\n \n \n \n\n\n\n`;\n\nconst IconRadar2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconRadarOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconRadar = `\n \n \n \n \n\n\n\n`;\n\nconst IconRadioOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRadio = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRadioactiveOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconRadioactive = `\n \n \n \n \n\n\n\n`;\n\nconst IconRadiusBottomLeft = `\n \n \n\n\n\n`;\n\nconst IconRadiusBottomRight = `\n \n \n\n\n\n`;\n\nconst IconRadiusTopLeft = `\n \n \n\n\n\n`;\n\nconst IconRadiusTopRight = `\n \n \n\n\n\n`;\n\nconst IconRainbowOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconRainbow = `\n \n \n \n \n\n\n\n`;\n\nconst IconRating12Plus = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRating14Plus = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRating16Plus = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRating18Plus = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRating21Plus = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRazorElectric = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRazor = `\n \n \n \n \n\n\n\n`;\n\nconst IconReceipt2 = `\n \n \n \n\n\n\n`;\n\nconst IconReceiptOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconReceiptRefund = `\n \n \n \n\n\n\n`;\n\nconst IconReceiptTax = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconReceipt = `\n \n \n\n\n\n`;\n\nconst IconRecharging = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRecordMailOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconRecordMail = `\n \n \n \n \n\n\n\n`;\n\nconst IconRectangleVertical = `\n \n \n\n\n\n`;\n\nconst IconRectangle = `\n \n \n\n\n\n`;\n\nconst IconRecycleOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconRecycle = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRefreshAlert = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconRefreshDot = `\n \n \n \n \n\n\n\n`;\n\nconst IconRefreshOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconRefresh = `\n \n \n \n\n\n\n`;\n\nconst IconRegexOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRegex = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRegistered = `\n \n \n \n \n\n\n\n`;\n\nconst IconRelationManyToMany = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRelationOneToMany = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRelationOneToOne = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconReload = `\n \n \n \n\n\n\n`;\n\nconst IconRepeatOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconRepeatOnce = `\n \n \n \n \n\n\n\n`;\n\nconst IconRepeat = `\n \n \n \n\n\n\n`;\n\nconst IconReplaceOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconReplace = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconReportAnalytics = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconReportMedical = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconReportMoney = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconReportOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconReportSearch = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconReport = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconResize = `\n \n \n \n\n\n\n`;\n\nconst IconRibbonHealth = `\n \n \n\n\n\n`;\n\nconst IconRippleOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconRipple = `\n \n \n \n \n\n\n\n`;\n\nconst IconRoadOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRoadSign = `\n \n \n \n \n\n\n\n`;\n\nconst IconRoad = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRobotOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRobot = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRocketOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconRocket = `\n \n \n \n \n\n\n\n`;\n\nconst IconRollerSkating = `\n \n \n \n \n\n\n\n`;\n\nconst IconRollercoasterOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRollercoaster = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRosetteNumber0 = `\n \n \n \n\n\n\n`;\n\nconst IconRosetteNumber1 = `\n \n \n \n\n\n\n`;\n\nconst IconRosetteNumber2 = `\n \n \n \n\n\n\n`;\n\nconst IconRosetteNumber3 = `\n \n \n \n\n\n\n`;\n\nconst IconRosetteNumber4 = `\n \n \n \n \n\n\n\n`;\n\nconst IconRosetteNumber5 = `\n \n \n \n\n\n\n`;\n\nconst IconRosetteNumber6 = `\n \n \n \n\n\n\n`;\n\nconst IconRosetteNumber7 = `\n \n \n \n\n\n\n`;\n\nconst IconRosetteNumber8 = `\n \n \n \n\n\n\n`;\n\nconst IconRosetteNumber9 = `\n \n \n \n\n\n\n`;\n\nconst IconRosette = `\n \n \n\n\n\n`;\n\nconst IconRotate2 = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRotate360 = `\n \n \n \n\n\n\n`;\n\nconst IconRotateClockwise2 = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRotateClockwise = `\n \n \n\n\n\n`;\n\nconst IconRotateDot = `\n \n \n \n\n\n\n`;\n\nconst IconRotateRectangle = `\n \n \n \n\n\n\n`;\n\nconst IconRotate = `\n \n \n\n\n\n`;\n\nconst IconRoute2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRouteOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconRoute = `\n \n \n \n \n\n\n\n`;\n\nconst IconRouterOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRouter = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRowInsertBottom = `\n \n \n \n \n\n\n\n`;\n\nconst IconRowInsertTop = `\n \n \n \n \n\n\n\n`;\n\nconst IconRss = `\n \n \n \n \n\n\n\n`;\n\nconst IconRubberStampOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconRubberStamp = `\n \n \n \n\n\n`;\n\nconst IconRuler2Off = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRuler2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRuler3 = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRulerMeasure = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRulerOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRuler = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconRun = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSTurnDown = `\n \n \n \n \n\n\n\n`;\n\nconst IconSTurnLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconSTurnRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconSTurnUp = `\n \n \n \n \n\n\n\n`;\n\nconst IconSailboat2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSailboatOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSailboat = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSalad = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSalt = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSatelliteOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSatellite = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSausage = `\n \n \n \n \n\n\n\n`;\n\nconst IconScaleOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconScaleOutlineOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconScaleOutline = `\n \n \n \n\n\n\n`;\n\nconst IconScale = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconScanEye = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconScan = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSchemaOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSchema = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSchoolBell = `\n \n \n \n \n\n\n\n`;\n\nconst IconSchoolOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconSchool = `\n \n \n \n\n\n\n`;\n\nconst IconScissorsOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconScissors = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconScooterElectric = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconScooter = `\n \n \n \n \n\n\n\n`;\n\nconst IconScreenShareOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconScreenShare = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconScreenshot = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconScribbleOff = `\n \n \n \n\n\n\n`;\n\nconst IconScribble = `\n \n \n\n\n\n`;\n\nconst IconScriptMinus = `\n \n \n \n\n\n\n`;\n\nconst IconScriptPlus = `\n \n \n \n \n\n\n\n`;\n\nconst IconScriptX = `\n \n \n \n\n\n\n`;\n\nconst IconScript = `\n \n \n\n\n\n`;\n\nconst IconScubaMaskOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconScubaMask = `\n \n \n \n\n\n\n`;\n\nconst IconSdk = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSearchOff = `\n \n \n \n\n\n\n`;\n\nconst IconSearch = `\n \n \n \n\n\n\n`;\n\nconst IconSectionSign = `\n \n \n \n \n\n\n\n`;\n\nconst IconSection = `\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSeedingOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSeeding = `\n \n \n \n \n\n\n\n`;\n\nconst IconSelect = `\n \n \n \n\n\n\n`;\n\nconst IconSelector = `\n \n \n \n\n\n\n`;\n\nconst IconSendOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconSend = `\n \n \n \n\n\n\n`;\n\nconst IconSeo = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSeparatorHorizontal = `\n \n \n \n \n\n\n\n`;\n\nconst IconSeparatorVertical = `\n \n \n \n \n\n\n\n`;\n\nconst IconSeparator = `\n \n \n \n \n\n\n\n`;\n\nconst IconServer2 = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconServerBolt = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconServerCog = `\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconServerOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconServer = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconServicemark = `\n \n \n \n\n\n\n`;\n\nconst IconSettings2 = `\n \n \n \n\n\n\n`;\n\nconst IconSettingsAutomation = `\n \n \n \n\n\n\n`;\n\nconst IconSettingsOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconSettings = `\n \n \n \n\n\n\n`;\n\nconst IconShadowOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconShadow = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconShape2 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconShape3 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconShapeOff = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconShape = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconShareOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconShare = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconShieldCheck = `\n \n \n \n\n\n\n`;\n\nconst IconShieldCheckered = `\n \n \n \n \n\n\n\n`;\n\nconst IconShieldChevron = `\n \n \n \n\n\n\n`;\n\nconst IconShieldHalfFilled = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconShieldHalf = `\n \n \n \n\n\n\n`;\n\nconst IconShieldLock = `\n \n \n \n \n\n\n\n`;\n\nconst IconShieldOff = `\n \n \n \n\n\n\n`;\n\nconst IconShieldX = `\n \n \n \n\n\n\n`;\n\nconst IconShield = `\n \n \n\n\n\n`;\n\nconst IconShipOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconShip = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconShirtOff = `\n \n \n \n\n\n\n`;\n\nconst IconShirtSport = `\n \n \n \n\n\n\n`;\n\nconst IconShirt = `\n \n \n\n\n\n`;\n\nconst IconShoeOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconShoe = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconShoppingBag = `\n \n \n \n\n\n\n`;\n\nconst IconShoppingCartDiscount = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconShoppingCartOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconShoppingCartPlus = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconShoppingCartX = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconShoppingCart = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconShovel = `\n \n \n \n \n\n\n\n`;\n\nconst IconShredder = `\n \n \n \n\n\n\n`;\n\nconst IconSignLeft = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSignRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSignal3g = `\n \n \n \n \n\n\n\n`;\n\nconst IconSignal4gPlus = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSignal4g = `\n \n \n \n \n\n\n\n`;\n\nconst IconSignal5g = `\n \n \n \n\n\n\n`;\n\nconst IconSignatureOff = `\n \n \n \n\n\n\n`;\n\nconst IconSignature = `\n \n \n\n\n\n`;\n\nconst IconSitemapOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSitemap = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSkateboardOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSkateboard = `\n \n \n \n \n\n\n\n`;\n\nconst IconSkull = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSlash = `\n \n \n\n\n\n`;\n\nconst IconSlashes = `\n \n \n \n\n\n\n`;\n\nconst IconSleigh = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSlice = `\n \n \n\n\n\n`;\n\nconst IconSlideshow = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSmartHomeOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconSmartHome = `\n \n \n \n\n\n\n`;\n\nconst IconSmokingNo = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSmoking = `\n \n \n \n \n\n\n\n`;\n\nconst IconSnowflakeOff = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSnowflake = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSnowman = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSoccerField = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSocialOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSocial = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSock = `\n \n \n \n\n\n\n`;\n\nconst IconSofaOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSofa = `\n \n \n \n \n\n\n\n`;\n\nconst IconSort09 = `\n \n \n \n \n\n\n\n`;\n\nconst IconSort90 = `\n \n \n \n \n\n\n\n`;\n\nconst IconSortAZ = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSortAscending2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSortAscendingLetters = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSortAscendingNumbers = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSortAscending = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSortDescending2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSortDescendingLetters = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSortDescendingNumbers = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSortDescending = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSortZA = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSos = `\n \n \n \n \n\n\n\n`;\n\nconst IconSoupOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSoup = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSourceCode = `\n \n \n \n \n\n\n\n`;\n\nconst IconSpaceOff = `\n \n \n \n\n\n\n`;\n\nconst IconSpace = `\n \n \n\n\n\n`;\n\nconst IconSpacingHorizontal = `\n \n \n \n \n\n\n\n`;\n\nconst IconSpacingVertical = `\n \n \n \n \n\n\n\n`;\n\nconst IconSpade = `\n \n \n\n\n\n`;\n\nconst IconSpeakerphone = `\n \n \n \n \n\n\n\n`;\n\nconst IconSpeedboat = `\n \n \n \n \n\n\n\n`;\n\nconst IconSpider = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSpiralOff = `\n \n \n \n\n\n\n`;\n\nconst IconSpiral = `\n \n \n\n\n\n`;\n\nconst IconSportBillard = `\n \n \n \n \n\n\n\n`;\n\nconst IconSpray = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSpyOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSpy = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareArrowDown = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareArrowLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareArrowRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareArrowUp = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareAsterisk = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareCheck = `\n \n \n \n\n\n\n`;\n\nconst IconSquareChevronDown = `\n \n \n \n\n\n\n`;\n\nconst IconSquareChevronLeft = `\n \n \n \n\n\n\n`;\n\nconst IconSquareChevronRight = `\n \n \n \n\n\n\n`;\n\nconst IconSquareChevronUp = `\n \n \n \n\n\n\n`;\n\nconst IconSquareChevronsDown = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareChevronsLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareChevronsRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareChevronsUp = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareDot = `\n \n \n \n\n\n\n`;\n\nconst IconSquareF0 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareF1 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareF2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareF3 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareF4 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareF5 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareF6 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareF7 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareF8 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareF9 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareForbid2 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareForbid = `\n \n \n \n\n\n\n`;\n\nconst IconSquareHalf = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareKey = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareLetterA = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareLetterB = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterC = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterD = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterE = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareLetterF = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareLetterG = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterH = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareLetterI = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterJ = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterK = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareLetterL = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterM = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterN = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterO = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterP = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterQ = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareLetterR = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterS = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterT = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareLetterU = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterV = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterW = `\n \n \n \n\n\n\n`;\n\nconst IconSquareLetterX = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareLetterY = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareLetterZ = `\n \n \n \n\n\n\n`;\n\nconst IconSquareMinus = `\n \n \n \n\n\n\n`;\n\nconst IconSquareNumber0 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareNumber1 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareNumber2 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareNumber3 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareNumber4 = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareNumber5 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareNumber6 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareNumber7 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareNumber8 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareNumber9 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareOff = `\n \n \n \n\n\n\n`;\n\nconst IconSquarePlus = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoot2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoot = `\n \n \n\n\n\n`;\n\nconst IconSquareRotatedForbid2 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRotatedForbid = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRotatedOff = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRotated = `\n \n \n\n\n\n`;\n\nconst IconSquareRoundedArrowDown = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedArrowLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedArrowRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedArrowUp = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedCheck = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedChevronDown = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedChevronLeft = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedChevronRight = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedChevronUp = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedChevronsDown = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedChevronsLeft = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedChevronsRight = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedChevronsUp = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterA = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterB = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterC = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterD = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterE = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterF = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterG = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterH = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterI = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterJ = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterK = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterL = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterM = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterN = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterO = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterP = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterQ = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterR = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterS = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterT = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterU = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterV = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterW = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterX = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterY = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedLetterZ = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedMinus = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedNumber0 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedNumber1 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedNumber2 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedNumber3 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedNumber4 = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedNumber5 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedNumber6 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedNumber7 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedNumber8 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedNumber9 = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedPlus = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquareRoundedX = `\n \n \n \n\n\n\n`;\n\nconst IconSquareRounded = `\n \n \n\n\n\n`;\n\nconst IconSquareToggleHorizontal = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareToggle = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSquareX = `\n \n \n \n\n\n\n`;\n\nconst IconSquare = `\n \n \n\n\n\n`;\n\nconst IconSquaresDiagonal = `\n \n \n \n \n\n\n\n`;\n\nconst IconSquaresFilled = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconStack2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconStack3 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconStackPop = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconStackPush = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconStack = `\n \n \n \n\n\n\n`;\n\nconst IconStairsDown = `\n \n \n \n\n\n\n`;\n\nconst IconStairsUp = `\n \n \n \n\n\n\n`;\n\nconst IconStairs = `\n \n \n\n\n\n`;\n\nconst IconStarHalf = `\n \n \n\n\n\n`;\n\nconst IconStarOff = `\n \n \n \n\n\n\n`;\n\nconst IconStar = `\n \n \n\n\n\n`;\n\nconst IconStarsOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconStars = `\n \n \n \n \n\n\n\n`;\n\nconst IconStatusChange = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSteam = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSteeringWheelOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSteeringWheel = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconStepInto = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconStepOut = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconStereoGlasses = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconStethoscopeOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconStethoscope = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSticker = `\n \n \n \n\n\n\n`;\n\nconst IconStormOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconStorm = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconStretching = `\n \n \n \n \n\n\n\n`;\n\nconst IconStrikethrough = `\n \n \n \n\n\n\n`;\n\nconst IconSubmarine = `\n \n \n \n \n\n\n\n`;\n\nconst IconSubscript = `\n \n \n \n\n\n\n`;\n\nconst IconSubtask = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSumOff = `\n \n \n \n\n\n\n`;\n\nconst IconSum = `\n \n \n\n\n\n`;\n\nconst IconSunHigh = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSunLow = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSunMoon = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSunOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconSunWind = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSun = `\n \n \n \n\n\n\n`;\n\nconst IconSunglasses = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSunrise = `\n \n \n \n \n\n\n\n`;\n\nconst IconSunset2 = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSunset = `\n \n \n \n \n\n\n\n`;\n\nconst IconSuperscript = `\n \n \n \n\n\n\n`;\n\nconst IconSvg = `\n \n \n \n \n\n\n\n`;\n\nconst IconSwimming = `\n \n \n \n \n\n\n\n`;\n\nconst IconSwipe = `\n \n \n \n\n\n\n`;\n\nconst IconSwitch2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSwitch3 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSwitchHorizontal = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSwitchVertical = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconSwitch = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconSwordOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconSword = `\n \n \n \n\n\n\n`;\n\nconst IconSwords = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTableAlias = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTableExport = `\n \n \n\n\n\n`;\n\nconst IconTableImport = `\n \n \n\n\n\n`;\n\nconst IconTableOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTableOptions = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTableShortcut = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTable = `\n \n \n \n \n\n\n\n`;\n\nconst IconTagOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconTag = `\n \n \n \n\n\n\n`;\n\nconst IconTagsOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTags = `\n \n \n \n \n\n\n\n`;\n\nconst IconTallymark1 = `\n \n \n\n\n\n`;\n\nconst IconTallymark2 = `\n \n \n \n\n\n\n`;\n\nconst IconTallymark3 = `\n \n \n \n \n\n\n\n`;\n\nconst IconTallymark4 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTallymarks = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTank = `\n \n \n \n \n\n\n\n`;\n\nconst IconTargetArrow = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTargetOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTarget = `\n \n \n \n \n\n\n\n`;\n\nconst IconTeapot = `\n \n \n \n \n\n\n\n`;\n\nconst IconTelescopeOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTelescope = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTemperatureCelsius = `\n \n \n \n\n\n\n`;\n\nconst IconTemperatureFahrenheit = `\n \n \n \n \n\n\n\n`;\n\nconst IconTemperatureMinus = `\n \n \n \n \n\n\n\n`;\n\nconst IconTemperatureOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconTemperaturePlus = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTemperature = `\n \n \n \n\n\n\n`;\n\nconst IconTemplateOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTemplate = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTentOff = `\n \n \n \n\n\n\n`;\n\nconst IconTent = `\n \n \n\n\n\n`;\n\nconst IconTerminal2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconTerminal = `\n \n \n \n\n\n\n`;\n\nconst IconTestPipe2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconTestPipeOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTestPipe = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTex = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTextCaption = `\n \n \n \n \n\n\n\n`;\n\nconst IconTextColor = `\n \n \n \n \n\n\n\n`;\n\nconst IconTextDecrease = `\n \n \n \n \n\n\n\n`;\n\nconst IconTextDirectionLtr = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTextDirectionRtl = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTextIncrease = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTextOrientation = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTextPlus = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTextRecognition = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTextResize = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTextSize = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTextSpellcheck = `\n \n \n \n \n\n\n\n`;\n\nconst IconTextWrapDisabled = `\n \n \n \n \n\n\n\n`;\n\nconst IconTextWrap = `\n \n \n \n \n\n\n\n`;\n\nconst IconTexture = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconThermometer = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconThumbDownOff = `\n \n \n \n\n\n\n`;\n\nconst IconThumbDown = `\n \n \n\n\n\n`;\n\nconst IconThumbUpOff = `\n \n \n \n\n\n\n`;\n\nconst IconThumbUp = `\n \n \n\n\n\n`;\n\nconst IconTicTac = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTicketOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTicket = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTie = `\n \n \n \n\n\n\n`;\n\nconst IconTilde = `\n \n \n\n\n\n`;\n\nconst IconTiltShiftOff = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTiltShift = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTimelineEventExclamation = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTimelineEventMinus = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTimelineEventPlus = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTimelineEventText = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTimelineEventX = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTimelineEvent = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTimeline = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTir = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconToggleLeft = `\n \n \n \n\n\n\n`;\n\nconst IconToggleRight = `\n \n \n \n\n\n\n`;\n\nconst IconToiletPaperOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconToiletPaper = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTool = `\n \n \n\n\n\n`;\n\nconst IconToolsKitchen2Off = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconToolsKitchen2 = `\n \n \n\n\n\n`;\n\nconst IconToolsKitchenOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconToolsKitchen = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconToolsOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTools = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTooltip = `\n \n \n \n\n\n\n`;\n\nconst IconTopologyBus = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTopologyComplex = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTopologyFullHierarchy = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTopologyFull = `\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTopologyRing2 = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTopologyRing3 = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTopologyRing = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTopologyStar2 = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTopologyStar3 = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTopologyStarRing2 = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTopologyStarRing3 = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTopologyStarRing = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTopologyStar = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTorii = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTornado = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTournament = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTowerOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconTower = `\n \n \n \n\n\n\n`;\n\nconst IconTrack = `\n \n \n\n\n\n`;\n\nconst IconTractor = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTrademark = `\n \n \n \n\n\n\n`;\n\nconst IconTrafficConeOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTrafficCone = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTrafficLightsOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTrafficLights = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTrain = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTransferIn = `\n \n \n \n \n\n\n\n`;\n\nconst IconTransferOut = `\n \n \n \n \n\n\n\n`;\n\nconst IconTransform = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTransitionBottom = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTransitionLeft = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTransitionRight = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTransitionTop = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTrashOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTrashX = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTrash = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTree = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTrees = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTrekking = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTrendingDown2 = `\n \n \n \n\n\n\n`;\n\nconst IconTrendingDown3 = `\n \n \n \n\n\n\n`;\n\nconst IconTrendingDown = `\n \n \n \n\n\n\n`;\n\nconst IconTrendingUp2 = `\n \n \n \n\n\n\n`;\n\nconst IconTrendingUp3 = `\n \n \n \n\n\n\n`;\n\nconst IconTrendingUp = `\n \n \n \n\n\n\n`;\n\nconst IconTriangleInverted = `\n \n \n\n\n\n`;\n\nconst IconTriangleOff = `\n \n \n \n\n\n\n`;\n\nconst IconTriangleSquareCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconTriangle = `\n \n \n\n\n\n`;\n\nconst IconTriangles = `\n \n \n \n\n\n\n`;\n\nconst IconTrident = `\n \n \n \n\n\n\n`;\n\nconst IconTrolley = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTrophyOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTrophy = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTrowel = `\n \n \n \n \n\n\n\n`;\n\nconst IconTruckDelivery = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTruckLoading = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTruckOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconTruckReturn = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTruck = `\n \n \n \n \n\n\n\n`;\n\nconst IconTxt = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTypographyOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconTypography = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconUfOff = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconUfo = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconUmbrellaOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconUmbrella = `\n \n \n \n\n\n\n`;\n\nconst IconUnderline = `\n \n \n \n\n\n\n`;\n\nconst IconUnlink = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconUpload = `\n \n \n \n \n\n\n\n`;\n\nconst IconUrgent = `\n \n \n \n \n\n\n\n`;\n\nconst IconUsb = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconUserCheck = `\n \n \n \n \n\n\n\n`;\n\nconst IconUserCircle = `\n \n \n \n \n\n\n\n`;\n\nconst IconUserExclamation = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconUserMinus = `\n \n \n \n \n\n\n\n`;\n\nconst IconUserOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconUserPlus = `\n \n \n \n \n\n\n\n`;\n\nconst IconUserSearch = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconUserX = `\n \n \n \n \n\n\n\n`;\n\nconst IconUser = `\n \n \n \n\n\n\n`;\n\nconst IconUsers = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconUvIndex = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconUxCircle = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconVaccineBottleOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVaccineBottle = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVaccineOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVaccine = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVacuumCleaner = `\n \n \n \n \n\n\n\n`;\n\nconst IconVariableMinus = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconVariableOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVariablePlus = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconVariable = `\n \n \n \n\n\n\n`;\n\nconst IconVectorBezier2 = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVectorBezierArc = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVectorBezierCircle = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVectorBezier = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVectorOff = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVectorSpline = `\n \n \n \n \n\n\n\n`;\n\nconst IconVectorTriangleOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVectorTriangle = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVector = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVenus = `\n \n \n \n \n\n\n\n`;\n\nconst IconVersionsOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconVersions = `\n \n \n \n \n\n\n\n`;\n\nconst IconVideoMinus = `\n \n \n \n \n\n\n\n`;\n\nconst IconVideoOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconVideoPlus = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconVideo = `\n \n \n \n\n\n\n`;\n\nconst IconView360Off = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconView360 = `\n \n \n \n \n\n\n\n`;\n\nconst IconViewfinderOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconViewfinder = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconViewportNarrow = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconViewportWide = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconVinyl = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconVipOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVip = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVirusOff = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVirusSearch = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVirus = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVocabularyOff = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVocabulary = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconVolume2 = `\n \n \n \n\n\n\n`;\n\nconst IconVolume3 = `\n \n \n \n\n\n\n`;\n\nconst IconVolumeOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconVolume = `\n \n \n \n \n\n\n\n`;\n\nconst IconWalk = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWallOff = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWall = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWalletOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWallet = `\n \n \n \n\n\n\n`;\n\nconst IconWallpaperOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWallpaper = `\n \n \n \n \n\n\n\n`;\n\nconst IconWandOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWand = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWashDry1 = `\n \n \n \n \n\n\n\n`;\n\nconst IconWashDry2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWashDry3 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWashDryA = `\n \n \n \n \n\n\n\n`;\n\nconst IconWashDryDip = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWashDryF = `\n \n \n \n \n\n\n\n`;\n\nconst IconWashDryHang = `\n \n \n \n\n\n\n`;\n\nconst IconWashDryOff = `\n \n \n \n\n\n\n`;\n\nconst IconWashDryP = `\n \n \n \n\n\n\n`;\n\nconst IconWashDryShade = `\n \n \n \n \n\n\n\n`;\n\nconst IconWashDryW = `\n \n \n \n\n\n\n`;\n\nconst IconWashDry = `\n \n \n\n\n\n`;\n\nconst IconWashDrycleanOff = `\n \n \n \n\n\n\n`;\n\nconst IconWashDryclean = `\n \n \n\n\n\n`;\n\nconst IconWashGentle = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWashMachine = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWashOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconWashPress = `\n \n \n \n \n\n\n\n`;\n\nconst IconWashTemperature1 = `\n \n \n \n \n\n\n\n`;\n\nconst IconWashTemperature2 = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWashTemperature3 = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWashTemperature4 = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWashTemperature5 = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWashTemperature6 = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWashTumbleDry = `\n \n \n \n\n\n\n`;\n\nconst IconWashTumbleOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconWash = `\n \n \n \n\n\n\n`;\n\nconst IconWaveSawTool = `\n \n \n\n\n\n`;\n\nconst IconWaveSine = `\n \n \n\n\n\n`;\n\nconst IconWaveSquare = `\n \n \n\n\n\n`;\n\nconst IconWebhookOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWebhook = `\n \n \n \n \n\n\n\n`;\n\nconst IconWeight = `\n \n \n \n\n\n\n`;\n\nconst IconWheelchairOff = `\n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWheelchair = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWhirl = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWifi0 = `\n \n \n\n\n\n`;\n\nconst IconWifi1 = `\n \n \n \n\n\n\n`;\n\nconst IconWifi2 = `\n \n \n \n \n\n\n\n`;\n\nconst IconWifiOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWifi = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWindOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWind = `\n \n \n \n \n\n\n\n`;\n\nconst IconWindmillOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWindmill = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWindowMaximize = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWindowMinimize = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWindowOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWindow = `\n \n \n \n \n\n\n\n`;\n\nconst IconWindsock = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWiperWash = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWiper = `\n \n \n \n \n\n\n\n`;\n\nconst IconWoman = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWood = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWorldDownload = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWorldLatitude = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWorldLongitude = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWorldOff = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWorldUpload = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWorldWww = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWorld = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWreckingBall = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconWritingOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWritingSignOff = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconWritingSign = `\n \n \n \n \n\n\n\n`;\n\nconst IconWriting = `\n \n \n \n \n\n\n\n`;\n\nconst IconX = `\n \n \n \n\n\n\n`;\n\nconst IconXboxA = `\n \n \n \n \n\n\n\n`;\n\nconst IconXboxB = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconXboxX = `\n \n \n \n \n\n\n\n`;\n\nconst IconXboxY = `\n \n \n \n \n\n\n\n`;\n\nconst IconYinYang = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconYoga = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconZeppelinOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconZeppelin = `\n \n \n \n\n\n\n`;\n\nconst IconZip = `\n \n \n \n \n\n\n\n`;\n\nconst IconZodiacAquarius = `\n \n \n \n\n\n\n`;\n\nconst IconZodiacAries = `\n \n \n \n \n\n\n\n`;\n\nconst IconZodiacCancer = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconZodiacCapricorn = `\n \n \n \n \n\n\n\n`;\n\nconst IconZodiacGemini = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconZodiacLeo = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconZodiacLibra = `\n \n \n \n\n\n\n`;\n\nconst IconZodiacPisces = `\n \n \n \n \n\n\n\n`;\n\nconst IconZodiacSagittarius = `\n \n \n \n \n\n\n\n`;\n\nconst IconZodiacScorpio = `\n \n \n \n \n\n\n\n`;\n\nconst IconZodiacTaurus = `\n \n \n \n\n\n\n`;\n\nconst IconZodiacVirgo = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconZoomCancel = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconZoomCheck = `\n \n \n \n \n\n\n\n`;\n\nconst IconZoomCode = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconZoomExclamation = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconZoomInArea = `\n \n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconZoomIn = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconZoomMoney = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconZoomOutArea = `\n \n \n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconZoomOut = `\n \n \n \n \n\n\n\n`;\n\nconst IconZoomPan = `\n \n \n \n \n \n \n \n\n\n\n`;\n\nconst IconZoomQuestion = `\n \n \n \n \n \n\n\n\n`;\n\nconst IconZoomReplace = `\n \n \n \n \n \n \n\n\n\n`;\n\nconst IconZoomReset = `\n \n \n \n \n\n\n\n`;\n\nconst IconZzzOff = `\n \n \n \n \n\n\n\n`;\n\nconst IconZzz = `\n \n \n \n\n\n\n`;\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Icon123, Icon24Hours, Icon2fa, Icon360, Icon360View, Icon3dCubeSphere, Icon3dCubeSphereOff, Icon3dRotate, IconAB, IconAB2, IconABOff, IconAbacus, IconAbacusOff, IconAbc, IconAccessPoint, IconAccessPointOff, IconAccessible, IconAccessibleOff, IconActivity, IconActivityHeartbeat, IconAd, IconAd2, IconAdOff, IconAddressBook, IconAddressBookOff, IconAdjustments, IconAdjustmentsAlt, IconAdjustmentsHorizontal, IconAdjustmentsOff, IconAerialLift, IconAffiliate, IconAirBalloon, IconAirConditioning, IconAirConditioningDisabled, IconAlarm, IconAlarmMinus, IconAlarmOff, IconAlarmPlus, IconAlarmSnooze, IconAlbum, IconAlbumOff, IconAlertCircle, IconAlertOctagon, IconAlertTriangle, IconAlien, IconAlignBoxBottomCenter, IconAlignBoxBottomLeft, IconAlignBoxBottomRight, IconAlignBoxLeftBottom, IconAlignBoxLeftMiddle, IconAlignBoxLeftTop, IconAlignBoxRightBottom, IconAlignBoxRightMiddle, IconAlignBoxRightTop, IconAlignBoxTopCenter, IconAlignBoxTopLeft, IconAlignBoxTopRight, IconAlignCenter, IconAlignJustified, IconAlignLeft, IconAlignRight, IconAlpha, IconAlphabetCyrillic, IconAlphabetGreek, IconAlphabetLatin, IconAmbulance, IconAmpersand, IconAnalyze, IconAnalyzeOff, IconAnchor, IconAnchorOff, IconAngle, IconAnkh, IconAntenna, IconAntennaBars1, IconAntennaBars2, IconAntennaBars3, IconAntennaBars4, IconAntennaBars5, IconAntennaBarsOff, IconAntennaOff, IconAperture, IconApertureOff, IconApi, IconApiApp, IconApiAppOff, IconApiOff, IconAppWindow, IconApple, IconApps, IconAppsOff, IconArchive, IconArchiveOff, IconArmchair, IconArmchair2, IconArmchair2Off, IconArmchairOff, IconArrowAutofitContent, IconArrowAutofitDown, IconArrowAutofitHeight, IconArrowAutofitLeft, IconArrowAutofitRight, IconArrowAutofitUp, IconArrowAutofitWidth, IconArrowBack, IconArrowBackUp, IconArrowBadgeDown, IconArrowBadgeLeft, IconArrowBadgeRight, IconArrowBadgeUp, IconArrowBarDown, IconArrowBarLeft, IconArrowBarRight, IconArrowBarToDown, IconArrowBarToLeft, IconArrowBarToRight, IconArrowBarToUp, IconArrowBarUp, IconArrowBearLeft, IconArrowBearLeft2, IconArrowBearRight, IconArrowBearRight2, IconArrowBigDown, IconArrowBigDownLine, IconArrowBigDownLines, IconArrowBigLeft, IconArrowBigLeftLine, IconArrowBigLeftLines, IconArrowBigRight, IconArrowBigRightLine, IconArrowBigRightLines, IconArrowBigTop, IconArrowBigUpLine, IconArrowBigUpLines, IconArrowBounce, IconArrowCurveLeft, IconArrowCurveRight, IconArrowDown, IconArrowDownBar, IconArrowDownCircle, IconArrowDownLeft, IconArrowDownLeftCircle, IconArrowDownRhombus, IconArrowDownRight, IconArrowDownRightCircle, IconArrowDownSquare, IconArrowDownTail, IconArrowFork, IconArrowForward, IconArrowForwardUp, IconArrowGuide, IconArrowIteration, IconArrowLeft, IconArrowLeftBar, IconArrowLeftCircle, IconArrowLeftRhombus, IconArrowLeftRight, IconArrowLeftSquare, IconArrowLeftTail, IconArrowLoopLeft, IconArrowLoopLeft2, IconArrowLoopRight, IconArrowLoopRight2, IconArrowMerge, IconArrowMergeBoth, IconArrowMergeLeft, IconArrowMergeRight, IconArrowMoveDown, IconArrowMoveLeft, IconArrowMoveRight, IconArrowMoveUp, IconArrowNarrowDown, IconArrowNarrowLeft, IconArrowNarrowRight, IconArrowNarrowUp, IconArrowRampLeft, IconArrowRampLeft2, IconArrowRampLeft3, IconArrowRampRight, IconArrowRampRight2, IconArrowRampRight3, IconArrowRight, IconArrowRightBar, IconArrowRightCircle, IconArrowRightRhombus, IconArrowRightSquare, IconArrowRightTail, IconArrowRotaryFirstLeft, IconArrowRotaryFirstRight, IconArrowRotaryLastLeft, IconArrowRotaryLastRight, IconArrowRotaryLeft, IconArrowRotaryRight, IconArrowRotaryStraight, IconArrowRoundaboutLeft, IconArrowRoundaboutRight, IconArrowSharpTurnLeft, IconArrowSharpTurnRight, IconArrowUp, IconArrowUpBar, IconArrowUpCircle, IconArrowUpLeft, IconArrowUpLeftCircle, IconArrowUpRhombus, IconArrowUpRight, IconArrowUpRightCircle, IconArrowUpSquare, IconArrowUpTail, IconArrowWaveLeftDown, IconArrowWaveLeftUp, IconArrowWaveRightDown, IconArrowWaveRightUp, IconArrowZigZag, IconArrowsCross, IconArrowsDiagonal, IconArrowsDiagonal2, IconArrowsDiagonalMinimize, IconArrowsDiagonalMinimize2, IconArrowsDiff, IconArrowsDoubleNeSw, IconArrowsDoubleNwSe, IconArrowsDoubleSeNw, IconArrowsDoubleSwNe, IconArrowsDown, IconArrowsDownUp, IconArrowsExchange, IconArrowsExchange2, IconArrowsHorizontal, IconArrowsJoin, IconArrowsJoin2, IconArrowsLeft, IconArrowsLeftDown, IconArrowsLeftRight, IconArrowsMaximize, IconArrowsMinimize, IconArrowsMove, IconArrowsMoveHorizontal, IconArrowsMoveVertical, IconArrowsRandom, IconArrowsRight, IconArrowsRightDown, IconArrowsRightLeft, IconArrowsShuffle, IconArrowsShuffle2, IconArrowsSort, IconArrowsSplit, IconArrowsSplit2, IconArrowsTransferDown, IconArrowsTransferUp, IconArrowsUp, IconArrowsUpDown, IconArrowsUpLeft, IconArrowsUpRight, IconArrowsVertical, IconArtboard, IconArtboardOff, IconArticle, IconArticleOff, IconAspectRatio, IconAspectRatioOff, IconAssembly, IconAssemblyOff, IconAsset, IconAsterisk, IconAsteriskSimple, IconAt, IconAtOff, IconAtom, IconAtom2, IconAtomOff, IconAugmentedReality, IconAugmentedReality2, IconAugmentedRealityOff, IconAward, IconAwardOff, IconAxe, IconAxisX, IconAxisY, IconBabyBottle, IconBabyCarriage, IconBackhoe, IconBackpack, IconBackpackOff, IconBackspace, IconBadge, IconBadge3d, IconBadge4k, IconBadge8k, IconBadgeAd, IconBadgeAr, IconBadgeCc, IconBadgeHd, IconBadgeOff, IconBadgeSd, IconBadgeTm, IconBadgeVo, IconBadgeVr, IconBadgeWc, IconBadges, IconBadgesOff, IconBaguette, IconBallAmericanFootball, IconBallAmericanFootballOff, IconBallBaseball, IconBallBasketball, IconBallBowling, IconBallFootball, IconBallFootballOff, IconBallTennis, IconBallVolleyball, IconBallon, IconBallonOff, IconBallpen, IconBallpenOff, IconBan, IconBandage, IconBandageOff, IconBarbell, IconBarbellOff, IconBarcode, IconBarcodeOff, IconBarrel, IconBarrelOff, IconBarrierBlock, IconBarrierBlockOff, IconBaseline, IconBasket, IconBasketOff, IconBat, IconBath, IconBathOff, IconBattery, IconBattery1, IconBattery2, IconBattery3, IconBattery4, IconBatteryAutomotive, IconBatteryCharging, IconBatteryCharging2, IconBatteryEco, IconBatteryOff, IconBeach, IconBeachOff, IconBed, IconBedOff, IconBeer, IconBeerOff, IconBell, IconBellMinus, IconBellOff, IconBellPlus, IconBellRinging, IconBellRinging2, IconBellSchool, IconBellX, IconBellZ, IconBeta, IconBible, IconBike, IconBikeOff, IconBinary, IconBinaryOff, IconBinaryTree, IconBinaryTree2, IconBiohazard, IconBiohazardOff, IconBlade, IconBleach, IconBleachChlorine, IconBleachNoChlorine, IconBleachOff, IconBlockquote, IconBluetooth, IconBluetoothConnected, IconBluetoothOff, IconBluetoothX, IconBlur, IconBlurOff, IconBmp, IconBold, IconBoldOff, IconBolt, IconBoltOff, IconBomb, IconBone, IconBoneOff, IconBong, IconBongOff, IconBook, IconBook2, IconBookDownload, IconBookOff, IconBookUpload, IconBookmark, IconBookmarkOff, IconBookmarks, IconBookmarksOff, IconBooks, IconBooksOff, IconBorderAll, IconBorderBottom, IconBorderHorizontal, IconBorderInner, IconBorderLeft, IconBorderNone, IconBorderOuter, IconBorderRadius, IconBorderRight, IconBorderStyle, IconBorderStyle2, IconBorderTop, IconBorderVertical, IconBottle, IconBottleOff, IconBounceLeft, IconBounceRight, IconBow, IconBowl, IconBox, IconBoxAlignBottom, IconBoxAlignBottomLeft, IconBoxAlignBottomRight, IconBoxAlignLeft, IconBoxAlignRight, IconBoxAlignTop, IconBoxAlignTopLeft, IconBoxAlignTopRight, IconBoxMargin, IconBoxModel, IconBoxModel2, IconBoxModel2Off, IconBoxModelOff, IconBoxMultiple, IconBoxMultiple0, IconBoxMultiple1, IconBoxMultiple2, IconBoxMultiple3, IconBoxMultiple4, IconBoxMultiple5, IconBoxMultiple6, IconBoxMultiple7, IconBoxMultiple8, IconBoxMultiple9, IconBoxOff, IconBoxPadding, IconBoxSeam, IconBraces, IconBracesOff, IconBrackets, IconBracketsContain, IconBracketsContainEnd, IconBracketsContainStart, IconBracketsOff, IconBraile, IconBrain, IconBrand4chan, IconBrandAbstract, IconBrandAdobe, IconBrandAdonisJs, IconBrandAirbnb, IconBrandAirtable, IconBrandAlgolia, IconBrandAlpineJs, IconBrandAmazon, IconBrandAmd, IconBrandAmigo, IconBrandAmongus, IconBrandAndroid, IconBrandAngular, IconBrandAo3, IconBrandAppgallery, IconBrandApple, IconBrandAppleArcade, IconBrandApplePodcast, IconBrandAppstore, IconBrandAsana, IconBrandBackbone, IconBrandBadoo, IconBrandBaidu, IconBrandBandcamp, IconBrandBandlab, IconBrandBeats, IconBrandBehance, IconBrandBinance, IconBrandBing, IconBrandBitbucket, IconBrandBlackbery, IconBrandBlender, IconBrandBlogger, IconBrandBooking, IconBrandBootstrap, IconBrandBulma, IconBrandBumble, IconBrandBunpo, IconBrandCampaignmonitor, IconBrandCarbon, IconBrandCashapp, IconBrandChrome, IconBrandCitymapper, IconBrandCodecov, IconBrandCodepen, IconBrandCodesandbox, IconBrandCohost, IconBrandCoinbase, IconBrandComedyCentral, IconBrandCoreos, IconBrandCouchdb, IconBrandCouchsurfing, IconBrandCpp, IconBrandCss3, IconBrandCtemplar, IconBrandCucumber, IconBrandCupra, IconBrandCypress, IconBrandD3, IconBrandDaysCounter, IconBrandDcos, IconBrandDebian, IconBrandDeliveroo, IconBrandDeno, IconBrandDenodo, IconBrandDeviantart, IconBrandDingtalk, IconBrandDiscord, IconBrandDisney, IconBrandDisqus, IconBrandDjango, IconBrandDocker, IconBrandDoctrine, IconBrandDolbyDigital, IconBrandDouban, IconBrandDribbble, IconBrandDrops, IconBrandDrupal, IconBrandEdge, IconBrandElastic, IconBrandEmber, IconBrandEnvato, IconBrandEtsy, IconBrandEvernote, IconBrandFacebook, IconBrandFigma, IconBrandFinder, IconBrandFirebase, IconBrandFirefox, IconBrandFlickr, IconBrandFlightradar24, IconBrandFlipboard, IconBrandFlutter, IconBrandFortnite, IconBrandFoursquare, IconBrandFramer, IconBrandFunimation, IconBrandGatsby, IconBrandGit, IconBrandGithub, IconBrandGithubCopilot, IconBrandGitlab, IconBrandGmail, IconBrandGoogle, IconBrandGoogleAnalytics, IconBrandGoogleBigQuery, IconBrandGoogleDrive, IconBrandGoogleFit, IconBrandGoogleHome, IconBrandGoogleOne, IconBrandGooglePhotos, IconBrandGooglePlay, IconBrandGooglePodcasts, IconBrandGrammarly, IconBrandGraphql, IconBrandGravatar, IconBrandGrindr, IconBrandGuardian, IconBrandGumroad, IconBrandHbo, IconBrandHeadlessui, IconBrandHipchat, IconBrandHtml5, IconBrandInertia, IconBrandInstagram, IconBrandIntercom, IconBrandJavascript, IconBrandKickstarter, IconBrandKotlin, IconBrandLaravel, IconBrandLastfm, IconBrandLinkedin, IconBrandLinktree, IconBrandLinqpad, IconBrandLoom, IconBrandMailgun, IconBrandMantine, IconBrandMastercard, IconBrandMastodon, IconBrandMatrix, IconBrandMcdonalds, IconBrandMedium, IconBrandMercedes, IconBrandMessenger, IconBrandMeta, IconBrandMiniprogram, IconBrandMixpanel, IconBrandMonday, IconBrandMongodb, IconBrandMyOppo, IconBrandMysql, IconBrandNationalGeographic, IconBrandNem, IconBrandNetbeans, IconBrandNeteaseMusic, IconBrandNetflix, IconBrandNexo, IconBrandNextcloud, IconBrandNextjs, IconBrandNordVpn, IconBrandNotion, IconBrandNpm, IconBrandNuxt, IconBrandNytimes, IconBrandOffice, IconBrandOkRu, IconBrandOnedrive, IconBrandOnlyfans, IconBrandOpenSource, IconBrandOpenvpn, IconBrandOpera, IconBrandPagekit, IconBrandPatreon, IconBrandPaypal, IconBrandPaypay, IconBrandPeanut, IconBrandPepsi, IconBrandPhp, IconBrandPicsart, IconBrandPinterest, IconBrandPocket, IconBrandPolymer, IconBrandPowershell, IconBrandPrisma, IconBrandProducthunt, IconBrandPushbullet, IconBrandPushover, IconBrandPython, IconBrandQq, IconBrandReact, IconBrandReactNative, IconBrandReason, IconBrandReddit, IconBrandRedhat, IconBrandRedux, IconBrandRevolut, IconBrandSafari, IconBrandSamsungpass, IconBrandSass, IconBrandSentry, IconBrandSharik, IconBrandShazam, IconBrandShopee, IconBrandSketch, IconBrandSkype, IconBrandSlack, IconBrandSnapchat, IconBrandSnapseed, IconBrandSnowflake, IconBrandSocketIo, IconBrandSolidjs, IconBrandSoundcloud, IconBrandSpacehey, IconBrandSpotify, IconBrandStackoverflow, IconBrandStackshare, IconBrandSteam, IconBrandStorybook, IconBrandStorytel, IconBrandStrava, IconBrandStripe, IconBrandSublimeText, IconBrandSuperhuman, IconBrandSupernova, IconBrandSurfshark, IconBrandSvelte, IconBrandSymfony, IconBrandTabler, IconBrandTailwind, IconBrandTaobao, IconBrandTed, IconBrandTelegram, IconBrandTether, IconBrandThreejs, IconBrandTidal, IconBrandTiktok, IconBrandTinder, IconBrandTopbuzz, IconBrandTorchain, IconBrandToyota, IconBrandTrello, IconBrandTripadvisor, IconBrandTumblr, IconBrandTwilio, IconBrandTwitch, IconBrandTwitter, IconBrandTypescript, IconBrandUber, IconBrandUbuntu, IconBrandUnity, IconBrandUnsplash, IconBrandUpwork, IconBrandValorant, IconBrandVercel, IconBrandVimeo, IconBrandVinted, IconBrandVisa, IconBrandVisualStudio, IconBrandVite, IconBrandVivaldi, IconBrandVk, IconBrandVolkswagen, IconBrandVsco, IconBrandVscode, IconBrandVue, IconBrandWalmart, IconBrandWaze, IconBrandWebflow, IconBrandWechat, IconBrandWeibo, IconBrandWhatsapp, IconBrandWindows, IconBrandWindy, IconBrandWish, IconBrandWix, IconBrandWordpress, IconBrandXbox, IconBrandXing, IconBrandYahoo, IconBrandYatse, IconBrandYcombinator, IconBrandYoutube, IconBrandYoutubeKids, IconBrandZalando, IconBrandZapier, IconBrandZeit, IconBrandZhihu, IconBrandZoom, IconBrandZulip, IconBrandZwift, IconBread, IconBreadOff, IconBriefcase, IconBriefcaseOff, IconBrightness, IconBrightness2, IconBrightnessDown, IconBrightnessHalf, IconBrightnessOff, IconBrightnessUp, IconBroadcast, IconBroadcastOff, IconBrowser, IconBrowserCheck, IconBrowserOff, IconBrowserPlus, IconBrowserX, IconBrush, IconBrushOff, IconBucket, IconBucketDroplet, IconBucketOff, IconBug, IconBugOff, IconBuilding, IconBuildingArch, IconBuildingBank, IconBuildingBridge, IconBuildingBridge2, IconBuildingBroadcastTower, IconBuildingCarousel, IconBuildingCastle, IconBuildingChurch, IconBuildingCircus, IconBuildingCommunity, IconBuildingCottage, IconBuildingEstate, IconBuildingFactory, IconBuildingFactory2, IconBuildingFortress, IconBuildingHospital, IconBuildingLighthouse, IconBuildingMonument, IconBuildingPavilon, IconBuildingSkyscraper, IconBuildingStadium, IconBuildingStore, IconBuildingTunnel, IconBuildingWarehouse, IconBuildingWindTurbine, IconBulb, IconBulbOff, IconBulldozer, IconBus, IconBusOff, IconBusStop, IconBusinessplan, IconButterfly, IconCSharp, IconCactus, IconCactusOff, IconCake, IconCakeOff, IconCalculator, IconCalculatorOff, IconCalendar, IconCalendarDue, IconCalendarEvent, IconCalendarMinus, IconCalendarOff, IconCalendarPlus, IconCalendarStats, IconCalendarTime, IconCamera, IconCameraMinus, IconCameraOff, IconCameraPlus, IconCameraRotate, IconCameraSelfie, IconCampfire, IconCandle, IconCandy, IconCandyOff, IconCane, IconCannabis, IconCapture, IconCaptureOff, IconCar, IconCarCrane, IconCarCrash, IconCarOff, IconCarTurbine, IconCaravan, IconCardboards, IconCardboardsOff, IconCards, IconCaretDown, IconCaretLeft, IconCaretRight, IconCaretUp, IconCarouselHorizontal, IconCarouselVertical, IconCarrot, IconCarrotOff, IconCash, IconCashBanknote, IconCashBanknoteOff, IconCashOff, IconCast, IconCastOff, IconCat, IconCategory, IconCategory2, IconCe, IconCeOff, IconCell, IconCellSignal1, IconCellSignal2, IconCellSignal3, IconCellSignal4, IconCellSignal5, IconCellSignalOff, IconCertificate, IconCertificate2, IconCertificate2Off, IconCertificateOff, IconChairDirector, IconChalkboard, IconChalkboardOff, IconChargingPile, IconChartArcs, IconChartArcs3, IconChartArea, IconChartAreaLine, IconChartArrows, IconChartArrowsVertical, IconChartBar, IconChartBarOff, IconChartBubble, IconChartCandle, IconChartCircles, IconChartDonut, IconChartDonut2, IconChartDonut3, IconChartDonut4, IconChartDots, IconChartDots2, IconChartDots3, IconChartGridDots, IconChartHistogram, IconChartInfographic, IconChartLine, IconChartPie, IconChartPie2, IconChartPie3, IconChartPie4, IconChartPieOff, IconChartPpf, IconChartRadar, IconChartSankey, IconChartTreemap, IconCheck, IconCheckbox, IconChecklist, IconChecks, IconCheckupList, IconCheese, IconChefHat, IconChefHatOff, IconCherry, IconChess, IconChessBishop, IconChessKing, IconChessKnight, IconChessQueen, IconChessRook, IconChevronDown, IconChevronDownLeft, IconChevronDownRight, IconChevronLeft, IconChevronRight, IconChevronUp, IconChevronUpLeft, IconChevronUpRight, IconChevronsDown, IconChevronsDownLeft, IconChevronsDownRight, IconChevronsLeft, IconChevronsRight, IconChevronsUp, IconChevronsUpLeft, IconChevronsUpRight, IconChisel, IconChristmasTree, IconChristmasTreeOff, IconCircle, IconCircleCaretDown, IconCircleCaretLeft, IconCircleCaretRight, IconCircleCaretUp, IconCircleCheck, IconCircleChevronDown, IconCircleChevronLeft, IconCircleChevronRight, IconCircleChevronUp, IconCircleChevronsDown, IconCircleChevronsLeft, IconCircleChevronsRight, IconCircleChevronsUp, IconCircleDashed, IconCircleDot, IconCircleDotted, IconCircleHalf, IconCircleHalf2, IconCircleHalfVertical, IconCircleKey, IconCircleLetterA, IconCircleLetterB, IconCircleLetterC, IconCircleLetterD, IconCircleLetterE, IconCircleLetterF, IconCircleLetterG, IconCircleLetterH, IconCircleLetterI, IconCircleLetterJ, IconCircleLetterK, IconCircleLetterL, IconCircleLetterM, IconCircleLetterN, IconCircleLetterO, IconCircleLetterP, IconCircleLetterQ, IconCircleLetterR, IconCircleLetterS, IconCircleLetterT, IconCircleLetterU, IconCircleLetterV, IconCircleLetterW, IconCircleLetterX, IconCircleLetterY, IconCircleLetterZ, IconCircleMinus, IconCircleNumber0, IconCircleNumber1, IconCircleNumber2, IconCircleNumber3, IconCircleNumber4, IconCircleNumber5, IconCircleNumber6, IconCircleNumber7, IconCircleNumber8, IconCircleNumber9, IconCircleOff, IconCirclePlus, IconCircleRectangle, IconCircleRectangleOff, IconCircleSquare, IconCircleTriangle, IconCircleX, IconCircles, IconCirclesRelation, IconCircuitAmmeter, IconCircuitBattery, IconCircuitBulb, IconCircuitCapacitor, IconCircuitCapacitorPolarized, IconCircuitCell, IconCircuitCellPlus, IconCircuitChangeover, IconCircuitDiode, IconCircuitDiodeZener, IconCircuitGround, IconCircuitGroundDigital, IconCircuitInductor, IconCircuitMotor, IconCircuitPushbutton, IconCircuitResistor, IconCircuitSwitchClosed, IconCircuitSwitchOpen, IconCircuitVoltmeter, IconClearAll, IconClearFormatting, IconClick, IconClipboard, IconClipboardCheck, IconClipboardCopy, IconClipboardData, IconClipboardHeart, IconClipboardList, IconClipboardOff, IconClipboardPlus, IconClipboardText, IconClipboardTypography, IconClipboardX, IconClock, IconClock2, IconClockCancel, IconClockEdit, IconClockHour1, IconClockHour10, IconClockHour11, IconClockHour12, IconClockHour2, IconClockHour3, IconClockHour4, IconClockHour5, IconClockHour6, IconClockHour7, IconClockHour8, IconClockHour9, IconClockOff, IconClockPause, IconClockPlay, IconClockRecord, IconClockStop, IconClothesRack, IconClothesRackOff, IconCloud, IconCloudComputing, IconCloudDataConnection, IconCloudDownload, IconCloudFog, IconCloudLock, IconCloudLockOpen, IconCloudOff, IconCloudRain, IconCloudSnow, IconCloudStorm, IconCloudUpload, IconClover, IconClover2, IconClubs, IconCode, IconCodeAsterix, IconCodeCircle, IconCodeCircle2, IconCodeDots, IconCodeMinus, IconCodeOff, IconCodePlus, IconCoffee, IconCoffeeOff, IconCoffin, IconCoin, IconCoinBitcoin, IconCoinEuro, IconCoinMonero, IconCoinOff, IconCoinPound, IconCoinRupee, IconCoinYen, IconCoinYuan, IconCoins, IconColorFilter, IconColorPicker, IconColorPickerOff, IconColorSwatch, IconColorSwatchOff, IconColumnInsertLeft, IconColumnInsertRight, IconColumns, IconColumnsOff, IconComet, IconCommand, IconCommandOff, IconCompass, IconCompassOff, IconComponents, IconComponentsOff, IconCone, IconCone2, IconConeOff, IconConfetti, IconConfettiOff, IconConfucius, IconContainer, IconContainerOff, IconContrast, IconContrast2, IconContrast2Off, IconContrastOff, IconCooker, IconCookie, IconCookieMan, IconCookieOff, IconCopy, IconCopyOff, IconCopyleft, IconCopyleftOff, IconCopyright, IconCopyrightOff, IconCornerDownLeft, IconCornerDownLeftDouble, IconCornerDownRight, IconCornerDownRightDouble, IconCornerLeftDown, IconCornerLeftDownDouble, IconCornerLeftUp, IconCornerLeftUpDouble, IconCornerRightDown, IconCornerRightDownDouble, IconCornerRightUp, IconCornerRightUpDouble, IconCornerUpLeft, IconCornerUpLeftDouble, IconCornerUpRight, IconCornerUpRightDouble, IconCpu, IconCpu2, IconCpuOff, IconCrane, IconCraneOff, IconCreativeCommons, IconCreativeCommonsBy, IconCreativeCommonsNc, IconCreativeCommonsNd, IconCreativeCommonsOff, IconCreativeCommonsSa, IconCreativeCommonsZero, IconCreditCard, IconCreditCardOff, IconCricket, IconCrop, IconCross, IconCrossOff, IconCrosshair, IconCrown, IconCrownOff, IconCrutches, IconCrutchesOff, IconCrystalBall, IconCubeSend, IconCubeUnfolded, IconCup, IconCupOff, IconCurling, IconCurlyLoop, IconCurrency, IconCurrencyAfghani, IconCurrencyBahraini, IconCurrencyBaht, IconCurrencyBitcoin, IconCurrencyCent, IconCurrencyDinar, IconCurrencyDirham, IconCurrencyDogecoin, IconCurrencyDollar, IconCurrencyDollarAustralian, IconCurrencyDollarBrunei, IconCurrencyDollarCanadian, IconCurrencyDollarGuyanese, IconCurrencyDollarOff, IconCurrencyDollarSingapore, IconCurrencyDollarZimbabwean, IconCurrencyDong, IconCurrencyDram, IconCurrencyEthereum, IconCurrencyEuro, IconCurrencyEuroOff, IconCurrencyForint, IconCurrencyFrank, IconCurrencyGuarani, IconCurrencyHryvnia, IconCurrencyKip, IconCurrencyKroneCzech, IconCurrencyKroneDanish, IconCurrencyKroneSwedish, IconCurrencyLari, IconCurrencyLeu, IconCurrencyLira, IconCurrencyLitecoin, IconCurrencyLyd, IconCurrencyManat, IconCurrencyMonero, IconCurrencyNaira, IconCurrencyOff, IconCurrencyPaanga, IconCurrencyPeso, IconCurrencyPound, IconCurrencyPoundOff, IconCurrencyQuetzal, IconCurrencyReal, IconCurrencyRenminbi, IconCurrencyRipple, IconCurrencyRiyal, IconCurrencyRubel, IconCurrencyRufiyaa, IconCurrencyRupee, IconCurrencyRupeeNepalese, IconCurrencyShekel, IconCurrencySolana, IconCurrencySom, IconCurrencyTaka, IconCurrencyTenge, IconCurrencyTugrik, IconCurrencyWon, IconCurrencyYen, IconCurrencyYenOff, IconCurrencyYuan, IconCurrencyZloty, IconCurrentLocation, IconCurrentLocationOff, IconCursorOff, IconCursorText, IconCut, IconCylinder, IconDashboard, IconDashboardOff, IconDatabase, IconDatabaseExport, IconDatabaseImport, IconDatabaseOff, IconDeer, IconDelta, IconDental, IconDentalBroken, IconDentalOff, IconDetails, IconDetailsOff, IconDeviceAirpods, IconDeviceAirpodsCase, IconDeviceAnalytics, IconDeviceAudioTape, IconDeviceCameraPhone, IconDeviceCctv, IconDeviceCctvOff, IconDeviceComputerCamera, IconDeviceComputerCameraOff, IconDeviceDesktop, IconDeviceDesktopAnalytics, IconDeviceDesktopOff, IconDeviceFloppy, IconDeviceGamepad, IconDeviceGamepad2, IconDeviceHeartMonitor, IconDeviceIpad, IconDeviceIpadHorizontal, IconDeviceLandlinePhone, IconDeviceLaptop, IconDeviceLaptopOff, IconDeviceMobile, IconDeviceMobileCharging, IconDeviceMobileMessage, IconDeviceMobileOff, IconDeviceMobileRotated, IconDeviceMobileVibration, IconDeviceNintendo, IconDeviceNintendoOff, IconDeviceSdCard, IconDeviceSim, IconDeviceSim1, IconDeviceSim2, IconDeviceSim3, IconDeviceSpeaker, IconDeviceSpeakerOff, IconDeviceTablet, IconDeviceTabletOff, IconDeviceTv, IconDeviceTvOff, IconDeviceTvOld, IconDeviceWatch, IconDeviceWatchOff, IconDeviceWatchStats, IconDeviceWatchStats2, IconDevices, IconDevices2, IconDevicesOff, IconDevicesPc, IconDevicesPcOff, IconDialpad, IconDialpadOff, IconDiamond, IconDiamondOff, IconDiamonds, IconDice, IconDice1, IconDice2, IconDice3, IconDice4, IconDice5, IconDice6, IconDimensions, IconDirection, IconDirectionHorizontal, IconDirectionSign, IconDirectionSignOff, IconDirections, IconDirectionsOff, IconDisabled, IconDisabled2, IconDisabledOff, IconDisc, IconDiscGolf, IconDiscOff, IconDiscount, IconDiscount2, IconDiscount2Off, IconDiscountCheck, IconDiscountOff, IconDivide, IconDna, IconDna2, IconDna2Off, IconDnaOff, IconDog, IconDogBowl, IconDoor, IconDoorEnter, IconDoorExit, IconDoorOff, IconDots, IconDotsCircleHorizontal, IconDotsDiagonal, IconDotsDiagonal2, IconDotsVertical, IconDownload, IconDownloadOff, IconDragDrop, IconDragDrop2, IconDrone, IconDroneOff, IconDropCircle, IconDroplet, IconDropletFilled, IconDropletFilled2, IconDropletHalf, IconDropletHalf2, IconDropletOff, IconEPassport, IconEar, IconEarOff, IconEaseIn, IconEaseInControlPoint, IconEaseInOut, IconEaseInOutControlPoints, IconEaseOut, IconEaseOutControlPoint, IconEdit, IconEditCircle, IconEditCircleOff, IconEditOff, IconEgg, IconEggCracked, IconEggFried, IconEggOff, IconEggs, IconElevator, IconElevatorOff, IconEmergencyBed, IconEmpathize, IconEmpathizeOff, IconEmphasis, IconEngine, IconEngineOff, IconEqual, IconEqualDouble, IconEqualNot, IconEraser, IconEraserOff, IconError404, IconError404Off, IconExchange, IconExchangeOff, IconExclamationCircle, IconExclamationMark, IconExclamationMarkOff, IconExplicit, IconExplicitOff, IconExposure, IconExposure0, IconExposureMinus1, IconExposureMinus2, IconExposureOff, IconExposurePlus1, IconExposurePlus2, IconExternalLink, IconExternalLinkOff, IconEye, IconEyeCheck, IconEyeOff, IconEyeTable, IconEyeglass, IconEyeglass2, IconEyeglassOff, IconFaceId, IconFaceIdError, IconFaceMask, IconFaceMaskOff, IconFall, IconFeather, IconFeatherOff, IconFence, IconFenceOff, IconFidgetSpinner, IconFile, IconFile3d, IconFileAlert, IconFileAnalytics, IconFileArrowLeft, IconFileArrowRight, IconFileBarcode, IconFileBroken, IconFileCertificate, IconFileChart, IconFileCheck, IconFileCode, IconFileCode2, IconFileDatabase, IconFileDelta, IconFileDescription, IconFileDiff, IconFileDigit, IconFileDislike, IconFileDollar, IconFileDots, IconFileDownload, IconFileEuro, IconFileExport, IconFileFunction, IconFileHorizontal, IconFileImport, IconFileInfinity, IconFileInfo, IconFileInvoice, IconFileLambda, IconFileLike, IconFileMinus, IconFileMusic, IconFileOff, IconFileOrientation, IconFilePencil, IconFilePercent, IconFilePhone, IconFilePlus, IconFilePower, IconFileReport, IconFileRss, IconFileScissors, IconFileSearch, IconFileSettings, IconFileShredder, IconFileSignal, IconFileSpreadsheet, IconFileStack, IconFileStar, IconFileSymlink, IconFileText, IconFileTime, IconFileTypography, IconFileUnknown, IconFileUpload, IconFileVector, IconFileX, IconFileZip, IconFiles, IconFilesOff, IconFilter, IconFilterOff, IconFingerprint, IconFingerprintOff, IconFireHydrant, IconFireHydrantOff, IconFiretruck, IconFirstAidKit, IconFirstAidKitOff, IconFish, IconFishBone, IconFishChristianity, IconFishHook, IconFishHookOff, IconFishOff, IconFlag, IconFlag2, IconFlag2Off, IconFlag3, IconFlagOff, IconFlame, IconFlameOff, IconFlare, IconFlask, IconFlask2, IconFlask2Off, IconFlaskOff, IconFlipFlops, IconFlipHorizontal, IconFlipVertical, IconFloatCenter, IconFloatLeft, IconFloatNone, IconFloatRight, IconFlower, IconFlowerOff, IconFocus, IconFocus2, IconFocusCentered, IconFold, IconFoldDown, IconFoldUp, IconFolder, IconFolderMinus, IconFolderOff, IconFolderPlus, IconFolderX, IconFolders, IconFoldersOff, IconForbid, IconForbid2, IconForklift, IconForms, IconFountain, IconFountainOff, IconFrame, IconFrameOff, IconFreeRights, IconFridge, IconFridgeOff, IconFriends, IconFriendsOff, IconFunction, IconFunctionOff, IconGardenCart, IconGardenCartOff, IconGasStation, IconGasStationOff, IconGauge, IconGaugeOff, IconGavel, IconGenderAgender, IconGenderAndrogyne, IconGenderBigender, IconGenderDemiboy, IconGenderDemigirl, IconGenderEpicene, IconGenderFemale, IconGenderFemme, IconGenderGenderfluid, IconGenderGenderless, IconGenderGenderqueer, IconGenderHermaphrodite, IconGenderIntergender, IconGenderMale, IconGenderNeutrois, IconGenderThird, IconGenderTransgender, IconGenderTrasvesti, IconGeometry, IconGhost, IconGhost2, IconGhostOff, IconGif, IconGift, IconGiftCard, IconGiftOff, IconGitBranch, IconGitBranchDeleted, IconGitCherryPick, IconGitCommit, IconGitCompare, IconGitFork, IconGitMerge, IconGitPullRequest, IconGitPullRequestClosed, IconGitPullRequestDraft, IconGizmo, IconGlass, IconGlassFull, IconGlassOff, IconGlobe, IconGlobeOff, IconGoGame, IconGolf, IconGolfOff, IconGps, IconGradienter, IconGrain, IconGraph, IconGraphOff, IconGrave, IconGrave2, IconGridDots, IconGridPattern, IconGrill, IconGrillFork, IconGrillOff, IconGrillSpatula, IconGripHorizontal, IconGripVertical, IconGrowth, IconGuitarPick, IconH1, IconH2, IconH3, IconH4, IconH5, IconH6, IconHammer, IconHammerOff, IconHandClick, IconHandFinger, IconHandFingerOff, IconHandGrab, IconHandLittleFinger, IconHandMiddleFinger, IconHandMove, IconHandOff, IconHandRingFinger, IconHandRock, IconHandSanitizer, IconHandStop, IconHandThreeFingers, IconHandTwoFingers, IconHanger, IconHanger2, IconHangerOff, IconHash, IconHaze, IconHeading, IconHeadingOff, IconHeadphones, IconHeadphonesOff, IconHeadset, IconHeadsetOff, IconHealthRecognition, IconHeart, IconHeartBroken, IconHeartHandshake, IconHeartMinus, IconHeartOff, IconHeartPlus, IconHeartRateMonitor, IconHeartbeat, IconHearts, IconHeartsOff, IconHelicopter, IconHelicopterLanding, IconHelmet, IconHelmetOff, IconHelp, IconHelpOff, IconHexagon, IconHexagon3d, IconHexagonLetterA, IconHexagonLetterB, IconHexagonLetterC, IconHexagonLetterD, IconHexagonLetterE, IconHexagonLetterF, IconHexagonLetterG, IconHexagonLetterH, IconHexagonLetterI, IconHexagonLetterJ, IconHexagonLetterK, IconHexagonLetterL, IconHexagonLetterM, IconHexagonLetterN, IconHexagonLetterO, IconHexagonLetterP, IconHexagonLetterQ, IconHexagonLetterR, IconHexagonLetterS, IconHexagonLetterT, IconHexagonLetterU, IconHexagonLetterV, IconHexagonLetterW, IconHexagonLetterX, IconHexagonLetterY, IconHexagonLetterZ, IconHexagonNumber0, IconHexagonNumber1, IconHexagonNumber2, IconHexagonNumber3, IconHexagonNumber4, IconHexagonNumber5, IconHexagonNumber6, IconHexagonNumber7, IconHexagonNumber8, IconHexagonNumber9, IconHexagonOff, IconHexagons, IconHexagonsOff, IconHierarchy, IconHierarchy2, IconHierarchy3, IconHierarchyOff, IconHighlight, IconHighlightOff, IconHistory, IconHistoryOff, IconHistoryToggle, IconHome, IconHome2, IconHomeBolt, IconHomeCancel, IconHomeCheck, IconHomeCog, IconHomeDollar, IconHomeDot, IconHomeDown, IconHomeEco, IconHomeEdit, IconHomeExclamation, IconHomeHand, IconHomeHeart, IconHomeInfinity, IconHomeLink, IconHomeMinus, IconHomeMove, IconHomeOff, IconHomePlus, IconHomeQuestion, IconHomeRibbon, IconHomeSearch, IconHomeShare, IconHomeShield, IconHomeSignal, IconHomeStar, IconHomeStats, IconHomeUp, IconHomeX, IconHorseToy, IconHotelService, IconHourglass, IconHourglassEmpty, IconHourglassHigh, IconHourglassLow, IconHourglassOff, IconIceCream, IconIceCream2, IconIceCreamOff, IconIceSkating, IconIcons, IconIconsOff, IconId, IconIdBadge, IconIdBadge2, IconIdBadgeOff, IconIdOff, IconInbox, IconInboxOff, IconIndentDecrease, IconIndentIncrease, IconInfinity, IconInfinityOff, IconInfoCircle, IconInfoSquare, IconInfoSquareRounded, IconInnerShadowBottom, IconInnerShadowBottomLeft, IconInnerShadowBottomRight, IconInnerShadowLeft, IconInnerShadowRight, IconInnerShadowTop, IconInnerShadowTopLeft, IconInnerShadowTopRight, IconInputSearch, IconIroning1, IconIroning2, IconIroning3, IconIroningOff, IconIroningSteam, IconIroningSteamOff, IconItalic, IconJacket, IconJetpack, IconJewishStar, IconJpg, IconJumpRope, IconKarate, IconKayak, IconKering, IconKey, IconKeyOff, IconKeyboard, IconKeyboardHide, IconKeyboardOff, IconKeyboardShow, IconKeyframe, IconKeyframeAlignCenter, IconKeyframeAlignHorizontal, IconKeyframeAlignVertical, IconKeyframes, IconLadder, IconLadderOff, IconLambda, IconLamp, IconLamp2, IconLampOff, IconLanguage, IconLanguageHiragana, IconLanguageKatakana, IconLanguageOff, IconLasso, IconLassoOff, IconLassoPolygon, IconLayersDifference, IconLayersIntersect, IconLayersIntersect2, IconLayersLinked, IconLayersOff, IconLayersSubtract, IconLayersUnion, IconLayout, IconLayout2, IconLayoutAlignBottom, IconLayoutAlignCenter, IconLayoutAlignLeft, IconLayoutAlignMiddle, IconLayoutAlignRight, IconLayoutAlignTop, IconLayoutBoard, IconLayoutBoardSplit, IconLayoutBottombar, IconLayoutBottombarCollapse, IconLayoutBottombarExpand, IconLayoutCards, IconLayoutCollage, IconLayoutColumns, IconLayoutDashboard, IconLayoutDistributeHorizontal, IconLayoutDistributeVertical, IconLayoutGrid, IconLayoutGridAdd, IconLayoutKanban, IconLayoutList, IconLayoutNavbar, IconLayoutNavbarCollapse, IconLayoutNavbarExpand, IconLayoutOff, IconLayoutRows, IconLayoutSidebar, IconLayoutSidebarLeftCollapse, IconLayoutSidebarLeftExpand, IconLayoutSidebarRight, IconLayoutSidebarRightCollapse, IconLayoutSidebarRightExpand, IconLeaf, IconLeafOff, IconLego, IconLegoOff, IconLemon, IconLemon2, IconLetterA, IconLetterB, IconLetterC, IconLetterCase, IconLetterCaseLower, IconLetterCaseToggle, IconLetterCaseUpper, IconLetterD, IconLetterE, IconLetterF, IconLetterG, IconLetterH, IconLetterI, IconLetterJ, IconLetterK, IconLetterL, IconLetterM, IconLetterN, IconLetterO, IconLetterP, IconLetterQ, IconLetterR, IconLetterS, IconLetterSpacing, IconLetterT, IconLetterU, IconLetterV, IconLetterW, IconLetterX, IconLetterY, IconLetterZ, IconLicense, IconLicenseOff, IconLifebuoy, IconLifebuoyOff, IconLine, IconLineDashed, IconLineDotted, IconLineHeight, IconLink, IconLinkOff, IconList, IconListCheck, IconListDetails, IconListNumbers, IconListSearch, IconLivePhoto, IconLivePhotoOff, IconLiveView, IconLoader, IconLoader2, IconLoader3, IconLoaderQuarter, IconLocation, IconLocationBroken, IconLocationOff, IconLock, IconLockAccess, IconLockAccessOff, IconLockOff, IconLockOpen, IconLockOpenOff, IconLockSquare, IconLockSquareRounded, IconLogicAnd, IconLogicBuffer, IconLogicNand, IconLogicNor, IconLogicNot, IconLogicOr, IconLogicXnor, IconLogicXor, IconLogin, IconLogout, IconLollipop, IconLollipopOff, IconLuggage, IconLuggageOff, IconLungs, IconLungsOff, IconMacro, IconMacroOff, IconMagnet, IconMagnetOff, IconMail, IconMailFast, IconMailForward, IconMailOff, IconMailOpened, IconMailbox, IconMailboxOff, IconMan, IconManualGearbox, IconMap, IconMap2, IconMapOff, IconMapPin, IconMapPinOff, IconMapPins, IconMapSearch, IconMarkdown, IconMarkdownOff, IconMarquee, IconMarquee2, IconMarqueeOff, IconMars, IconMask, IconMaskOff, IconMasksTheater, IconMasksTheaterOff, IconMassage, IconMatchstick, IconMath, IconMath1Divide2, IconMath1Divide3, IconMathAvg, IconMathEqualGreater, IconMathEqualLower, IconMathFunction, IconMathFunctionOff, IconMathFunctionY, IconMathGreater, IconMathIntegral, IconMathIntegralX, IconMathIntegrals, IconMathLower, IconMathMax, IconMathMin, IconMathNot, IconMathOff, IconMathPi, IconMathPiDivide2, IconMathSymbols, IconMathXDivide2, IconMathXDivideY, IconMathXDivideY2, IconMathXMinusX, IconMathXMinusY, IconMathXPlusX, IconMathXPlusY, IconMathXy, IconMathYMinusY, IconMathYPlusY, IconMaximize, IconMaximizeOff, IconMeat, IconMeatOff, IconMedal, IconMedal2, IconMedicalCross, IconMedicalCrossOff, IconMedicineSyrup, IconMeeple, IconMenorah, IconMenu, IconMenu2, IconMenuOrder, IconMessage, IconMessage2, IconMessage2Code, IconMessage2Off, IconMessage2Share, IconMessageChatbot, IconMessageCircle, IconMessageCircle2, IconMessageCircleOff, IconMessageCode, IconMessageDots, IconMessageForward, IconMessageLanguage, IconMessageOff, IconMessagePlus, IconMessageReport, IconMessageShare, IconMessages, IconMessagesOff, IconMeteor, IconMeteorOff, IconMickey, IconMicrophone, IconMicrophone2, IconMicrophone2Off, IconMicrophoneOff, IconMicroscope, IconMicroscopeOff, IconMicrowave, IconMicrowaveOff, IconMilitaryAward, IconMilitaryRank, IconMilk, IconMilkOff, IconMilkshake, IconMinimize, IconMinus, IconMinusVertical, IconMist, IconMistOff, IconMoneybag, IconMoodAngry, IconMoodAnnoyed, IconMoodAnnoyed2, IconMoodBoy, IconMoodConfuzed, IconMoodCrazyHappy, IconMoodCry, IconMoodEmpty, IconMoodHappy, IconMoodKid, IconMoodLookLeft, IconMoodLookRight, IconMoodNerd, IconMoodNervous, IconMoodNeutral, IconMoodOff, IconMoodSad, IconMoodSad2, IconMoodSadDizzy, IconMoodSadSquint, IconMoodSick, IconMoodSilence, IconMoodSing, IconMoodSmile, IconMoodSmileBeam, IconMoodSmileDizzy, IconMoodSuprised, IconMoodTongue, IconMoodTongueWink, IconMoodTongueWink2, IconMoodUnamused, IconMoodWink, IconMoodWink2, IconMoodWrrr, IconMoodXd, IconMoon, IconMoon2, IconMoonOff, IconMoonStars, IconMoped, IconMotorbike, IconMountain, IconMountainOff, IconMouse, IconMouse2, IconMouseOff, IconMoustache, IconMovie, IconMovieOff, IconMug, IconMugOff, IconMultiplier05x, IconMultiplier15x, IconMultiplier1x, IconMultiplier2x, IconMushroom, IconMushroomOff, IconMusic, IconMusicOff, IconNavigation, IconNavigationOff, IconNeedle, IconNeedleThread, IconNetwork, IconNetworkOff, IconNewSection, IconNews, IconNewsOff, IconNfc, IconNfcOff, IconNoCopyright, IconNoCreativeCommons, IconNoDerivatives, IconNorthStar, IconNote, IconNoteOff, IconNotebook, IconNotebookOff, IconNotes, IconNotesOff, IconNotification, IconNotificationOff, IconNumber, IconNumber0, IconNumber1, IconNumber2, IconNumber3, IconNumber4, IconNumber5, IconNumber6, IconNumber7, IconNumber8, IconNumber9, IconNumbers, IconNurse, IconOctagon, IconOctagonOff, IconOld, IconOlympics, IconOlympicsOff, IconOm, IconOmega, IconOutbound, IconOutlet, IconOval, IconOvalVertical, IconOverline, IconPackage, IconPackageOff, IconPackages, IconPackgeExport, IconPackgeImport, IconPacman, IconPageBreak, IconPaint, IconPaintOff, IconPalette, IconPaletteOff, IconPanoramaHorizontal, IconPanoramaHorizontalOff, IconPanoramaVertical, IconPanoramaVerticalOff, IconPaperBag, IconPaperBagOff, IconPaperclip, IconParachute, IconParachuteOff, IconParentheses, IconParenthesesOff, IconParking, IconParkingOff, IconPassword, IconPaw, IconPawOff, IconPeace, IconPencil, IconPencilMinus, IconPencilOff, IconPencilPlus, IconPennant, IconPennant2, IconPennantOff, IconPentagon, IconPentagonOff, IconPentagram, IconPepper, IconPepperOff, IconPercentage, IconPerfume, IconPerspective, IconPerspectiveOff, IconPhone, IconPhoneCall, IconPhoneCalling, IconPhoneCheck, IconPhoneIncoming, IconPhoneOff, IconPhoneOutgoing, IconPhonePause, IconPhonePlus, IconPhoneX, IconPhoto, IconPhotoCancel, IconPhotoCheck, IconPhotoDown, IconPhotoEdit, IconPhotoHeart, IconPhotoMinus, IconPhotoOff, IconPhotoPlus, IconPhotoSearch, IconPhotoShield, IconPhotoStar, IconPhotoUp, IconPhotoX, IconPhysotherapist, IconPictureInPicture, IconPictureInPictureOff, IconPictureInPictureOn, IconPictureInPictureTop, IconPig, IconPigMoney, IconPigOff, IconPilcrow, IconPill, IconPillOff, IconPills, IconPin, IconPingPong, IconPinned, IconPinnedOff, IconPizza, IconPizzaOff, IconPlaceholder, IconPlane, IconPlaneArrival, IconPlaneDeparture, IconPlaneInflight, IconPlaneOff, IconPlaneTilt, IconPlanet, IconPlanetOff, IconPlant, IconPlant2, IconPlant2Off, IconPlantOff, IconPlayCard, IconPlayCardOff, IconPlayerEject, IconPlayerPause, IconPlayerPlay, IconPlayerRecord, IconPlayerSkipBack, IconPlayerSkipForward, IconPlayerStop, IconPlayerTrackNext, IconPlayerTrackPrev, IconPlaylist, IconPlaylistAdd, IconPlaylistOff, IconPlaylistX, IconPlaystationCircle, IconPlaystationSquare, IconPlaystationTriangle, IconPlaystationX, IconPlug, IconPlugConnected, IconPlugConnectedX, IconPlugOff, IconPlugX, IconPlus, IconPng, IconPodium, IconPodiumOff, IconPoint, IconPointOff, IconPointer, IconPokeball, IconPokeballOff, IconPokerChip, IconPolaroid, IconPolygon, IconPolygonOff, IconPoo, IconPool, IconPoolOff, IconPower, IconPray, IconPremiumRights, IconPrescription, IconPresentation, IconPresentationAnalytics, IconPresentationOff, IconPrinter, IconPrinterOff, IconPrison, IconPrompt, IconPropeller, IconPropellerOff, IconPumpkinScary, IconPuzzle, IconPuzzle2, IconPuzzleOff, IconPyramid, IconPyramidOff, IconQrcode, IconQrcodeOff, IconQuestionCircle, IconQuestionMark, IconQuote, IconQuoteOff, IconRadar, IconRadar2, IconRadarOff, IconRadio, IconRadioOff, IconRadioactive, IconRadioactiveOff, IconRadiusBottomLeft, IconRadiusBottomRight, IconRadiusTopLeft, IconRadiusTopRight, IconRainbow, IconRainbowOff, IconRating12Plus, IconRating14Plus, IconRating16Plus, IconRating18Plus, IconRating21Plus, IconRazor, IconRazorElectric, IconReceipt, IconReceipt2, IconReceiptOff, IconReceiptRefund, IconReceiptTax, IconRecharging, IconRecordMail, IconRecordMailOff, IconRectangle, IconRectangleVertical, IconRecycle, IconRecycleOff, IconRefresh, IconRefreshAlert, IconRefreshDot, IconRefreshOff, IconRegex, IconRegexOff, IconRegistered, IconRelationManyToMany, IconRelationOneToMany, IconRelationOneToOne, IconReload, IconRepeat, IconRepeatOff, IconRepeatOnce, IconReplace, IconReplaceOff, IconReport, IconReportAnalytics, IconReportMedical, IconReportMoney, IconReportOff, IconReportSearch, IconResize, IconRibbonHealth, IconRipple, IconRippleOff, IconRoad, IconRoadOff, IconRoadSign, IconRobot, IconRobotOff, IconRocket, IconRocketOff, IconRollerSkating, IconRollercoaster, IconRollercoasterOff, IconRosette, IconRosetteNumber0, IconRosetteNumber1, IconRosetteNumber2, IconRosetteNumber3, IconRosetteNumber4, IconRosetteNumber5, IconRosetteNumber6, IconRosetteNumber7, IconRosetteNumber8, IconRosetteNumber9, IconRotate, IconRotate2, IconRotate360, IconRotateClockwise, IconRotateClockwise2, IconRotateDot, IconRotateRectangle, IconRoute, IconRoute2, IconRouteOff, IconRouter, IconRouterOff, IconRowInsertBottom, IconRowInsertTop, IconRss, IconRubberStamp, IconRubberStampOff, IconRuler, IconRuler2, IconRuler2Off, IconRuler3, IconRulerMeasure, IconRulerOff, IconRun, IconSTurnDown, IconSTurnLeft, IconSTurnRight, IconSTurnUp, IconSailboat, IconSailboat2, IconSailboatOff, IconSalad, IconSalt, IconSatellite, IconSatelliteOff, IconSausage, IconScale, IconScaleOff, IconScaleOutline, IconScaleOutlineOff, IconScan, IconScanEye, IconSchema, IconSchemaOff, IconSchool, IconSchoolBell, IconSchoolOff, IconScissors, IconScissorsOff, IconScooter, IconScooterElectric, IconScreenShare, IconScreenShareOff, IconScreenshot, IconScribble, IconScribbleOff, IconScript, IconScriptMinus, IconScriptPlus, IconScriptX, IconScubaMask, IconScubaMaskOff, IconSdk, IconSearch, IconSearchOff, IconSection, IconSectionSign, IconSeeding, IconSeedingOff, IconSelect, IconSelector, IconSend, IconSendOff, IconSeo, IconSeparator, IconSeparatorHorizontal, IconSeparatorVertical, IconServer, IconServer2, IconServerBolt, IconServerCog, IconServerOff, IconServicemark, IconSettings, IconSettings2, IconSettingsAutomation, IconSettingsOff, IconShadow, IconShadowOff, IconShape, IconShape2, IconShape3, IconShapeOff, IconShare, IconShareOff, IconShield, IconShieldCheck, IconShieldCheckered, IconShieldChevron, IconShieldHalf, IconShieldHalfFilled, IconShieldLock, IconShieldOff, IconShieldX, IconShip, IconShipOff, IconShirt, IconShirtOff, IconShirtSport, IconShoe, IconShoeOff, IconShoppingBag, IconShoppingCart, IconShoppingCartDiscount, IconShoppingCartOff, IconShoppingCartPlus, IconShoppingCartX, IconShovel, IconShredder, IconSignLeft, IconSignRight, IconSignal3g, IconSignal4g, IconSignal4gPlus, IconSignal5g, IconSignature, IconSignatureOff, IconSitemap, IconSitemapOff, IconSkateboard, IconSkateboardOff, IconSkull, IconSlash, IconSlashes, IconSleigh, IconSlice, IconSlideshow, IconSmartHome, IconSmartHomeOff, IconSmoking, IconSmokingNo, IconSnowflake, IconSnowflakeOff, IconSnowman, IconSoccerField, IconSocial, IconSocialOff, IconSock, IconSofa, IconSofaOff, IconSort09, IconSort90, IconSortAZ, IconSortAscending, IconSortAscending2, IconSortAscendingLetters, IconSortAscendingNumbers, IconSortDescending, IconSortDescending2, IconSortDescendingLetters, IconSortDescendingNumbers, IconSortZA, IconSos, IconSoup, IconSoupOff, IconSourceCode, IconSpace, IconSpaceOff, IconSpacingHorizontal, IconSpacingVertical, IconSpade, IconSpeakerphone, IconSpeedboat, IconSpider, IconSpiral, IconSpiralOff, IconSportBillard, IconSpray, IconSpy, IconSpyOff, IconSquare, IconSquareArrowDown, IconSquareArrowLeft, IconSquareArrowRight, IconSquareArrowUp, IconSquareAsterisk, IconSquareCheck, IconSquareChevronDown, IconSquareChevronLeft, IconSquareChevronRight, IconSquareChevronUp, IconSquareChevronsDown, IconSquareChevronsLeft, IconSquareChevronsRight, IconSquareChevronsUp, IconSquareDot, IconSquareF0, IconSquareF1, IconSquareF2, IconSquareF3, IconSquareF4, IconSquareF5, IconSquareF6, IconSquareF7, IconSquareF8, IconSquareF9, IconSquareForbid, IconSquareForbid2, IconSquareHalf, IconSquareKey, IconSquareLetterA, IconSquareLetterB, IconSquareLetterC, IconSquareLetterD, IconSquareLetterE, IconSquareLetterF, IconSquareLetterG, IconSquareLetterH, IconSquareLetterI, IconSquareLetterJ, IconSquareLetterK, IconSquareLetterL, IconSquareLetterM, IconSquareLetterN, IconSquareLetterO, IconSquareLetterP, IconSquareLetterQ, IconSquareLetterR, IconSquareLetterS, IconSquareLetterT, IconSquareLetterU, IconSquareLetterV, IconSquareLetterW, IconSquareLetterX, IconSquareLetterY, IconSquareLetterZ, IconSquareMinus, IconSquareNumber0, IconSquareNumber1, IconSquareNumber2, IconSquareNumber3, IconSquareNumber4, IconSquareNumber5, IconSquareNumber6, IconSquareNumber7, IconSquareNumber8, IconSquareNumber9, IconSquareOff, IconSquarePlus, IconSquareRoot, IconSquareRoot2, IconSquareRotated, IconSquareRotatedForbid, IconSquareRotatedForbid2, IconSquareRotatedOff, IconSquareRounded, IconSquareRoundedArrowDown, IconSquareRoundedArrowLeft, IconSquareRoundedArrowRight, IconSquareRoundedArrowUp, IconSquareRoundedCheck, IconSquareRoundedChevronDown, IconSquareRoundedChevronLeft, IconSquareRoundedChevronRight, IconSquareRoundedChevronUp, IconSquareRoundedChevronsDown, IconSquareRoundedChevronsLeft, IconSquareRoundedChevronsRight, IconSquareRoundedChevronsUp, IconSquareRoundedLetterA, IconSquareRoundedLetterB, IconSquareRoundedLetterC, IconSquareRoundedLetterD, IconSquareRoundedLetterE, IconSquareRoundedLetterF, IconSquareRoundedLetterG, IconSquareRoundedLetterH, IconSquareRoundedLetterI, IconSquareRoundedLetterJ, IconSquareRoundedLetterK, IconSquareRoundedLetterL, IconSquareRoundedLetterM, IconSquareRoundedLetterN, IconSquareRoundedLetterO, IconSquareRoundedLetterP, IconSquareRoundedLetterQ, IconSquareRoundedLetterR, IconSquareRoundedLetterS, IconSquareRoundedLetterT, IconSquareRoundedLetterU, IconSquareRoundedLetterV, IconSquareRoundedLetterW, IconSquareRoundedLetterX, IconSquareRoundedLetterY, IconSquareRoundedLetterZ, IconSquareRoundedMinus, IconSquareRoundedNumber0, IconSquareRoundedNumber1, IconSquareRoundedNumber2, IconSquareRoundedNumber3, IconSquareRoundedNumber4, IconSquareRoundedNumber5, IconSquareRoundedNumber6, IconSquareRoundedNumber7, IconSquareRoundedNumber8, IconSquareRoundedNumber9, IconSquareRoundedPlus, IconSquareRoundedX, IconSquareToggle, IconSquareToggleHorizontal, IconSquareX, IconSquaresDiagonal, IconSquaresFilled, IconStack, IconStack2, IconStack3, IconStackPop, IconStackPush, IconStairs, IconStairsDown, IconStairsUp, IconStar, IconStarHalf, IconStarOff, IconStars, IconStarsOff, IconStatusChange, IconSteam, IconSteeringWheel, IconSteeringWheelOff, IconStepInto, IconStepOut, IconStereoGlasses, IconStethoscope, IconStethoscopeOff, IconSticker, IconStorm, IconStormOff, IconStretching, IconStrikethrough, IconSubmarine, IconSubscript, IconSubtask, IconSum, IconSumOff, IconSun, IconSunHigh, IconSunLow, IconSunMoon, IconSunOff, IconSunWind, IconSunglasses, IconSunrise, IconSunset, IconSunset2, IconSuperscript, IconSvg, IconSwimming, IconSwipe, IconSwitch, IconSwitch2, IconSwitch3, IconSwitchHorizontal, IconSwitchVertical, IconSword, IconSwordOff, IconSwords, IconTable, IconTableAlias, IconTableExport, IconTableImport, IconTableOff, IconTableOptions, IconTableShortcut, IconTag, IconTagOff, IconTags, IconTagsOff, IconTallymark1, IconTallymark2, IconTallymark3, IconTallymark4, IconTallymarks, IconTank, IconTarget, IconTargetArrow, IconTargetOff, IconTeapot, IconTelescope, IconTelescopeOff, IconTemperature, IconTemperatureCelsius, IconTemperatureFahrenheit, IconTemperatureMinus, IconTemperatureOff, IconTemperaturePlus, IconTemplate, IconTemplateOff, IconTent, IconTentOff, IconTerminal, IconTerminal2, IconTestPipe, IconTestPipe2, IconTestPipeOff, IconTex, IconTextCaption, IconTextColor, IconTextDecrease, IconTextDirectionLtr, IconTextDirectionRtl, IconTextIncrease, IconTextOrientation, IconTextPlus, IconTextRecognition, IconTextResize, IconTextSize, IconTextSpellcheck, IconTextWrap, IconTextWrapDisabled, IconTexture, IconThermometer, IconThumbDown, IconThumbDownOff, IconThumbUp, IconThumbUpOff, IconTicTac, IconTicket, IconTicketOff, IconTie, IconTilde, IconTiltShift, IconTiltShiftOff, IconTimeline, IconTimelineEvent, IconTimelineEventExclamation, IconTimelineEventMinus, IconTimelineEventPlus, IconTimelineEventText, IconTimelineEventX, IconTir, IconToggleLeft, IconToggleRight, IconToiletPaper, IconToiletPaperOff, IconTool, IconTools, IconToolsKitchen, IconToolsKitchen2, IconToolsKitchen2Off, IconToolsKitchenOff, IconToolsOff, IconTooltip, IconTopologyBus, IconTopologyComplex, IconTopologyFull, IconTopologyFullHierarchy, IconTopologyRing, IconTopologyRing2, IconTopologyRing3, IconTopologyStar, IconTopologyStar2, IconTopologyStar3, IconTopologyStarRing, IconTopologyStarRing2, IconTopologyStarRing3, IconTorii, IconTornado, IconTournament, IconTower, IconTowerOff, IconTrack, IconTractor, IconTrademark, IconTrafficCone, IconTrafficConeOff, IconTrafficLights, IconTrafficLightsOff, IconTrain, IconTransferIn, IconTransferOut, IconTransform, IconTransitionBottom, IconTransitionLeft, IconTransitionRight, IconTransitionTop, IconTrash, IconTrashOff, IconTrashX, IconTree, IconTrees, IconTrekking, IconTrendingDown, IconTrendingDown2, IconTrendingDown3, IconTrendingUp, IconTrendingUp2, IconTrendingUp3, IconTriangle, IconTriangleInverted, IconTriangleOff, IconTriangleSquareCircle, IconTriangles, IconTrident, IconTrolley, IconTrophy, IconTrophyOff, IconTrowel, IconTruck, IconTruckDelivery, IconTruckLoading, IconTruckOff, IconTruckReturn, IconTxt, IconTypography, IconTypographyOff, IconUfOff, IconUfo, IconUmbrella, IconUmbrellaOff, IconUnderline, IconUnlink, IconUpload, IconUrgent, IconUsb, IconUser, IconUserCheck, IconUserCircle, IconUserExclamation, IconUserMinus, IconUserOff, IconUserPlus, IconUserSearch, IconUserX, IconUsers, IconUvIndex, IconUxCircle, IconVaccine, IconVaccineBottle, IconVaccineBottleOff, IconVaccineOff, IconVacuumCleaner, IconVariable, IconVariableMinus, IconVariableOff, IconVariablePlus, IconVector, IconVectorBezier, IconVectorBezier2, IconVectorBezierArc, IconVectorBezierCircle, IconVectorOff, IconVectorSpline, IconVectorTriangle, IconVectorTriangleOff, IconVenus, IconVersions, IconVersionsOff, IconVideo, IconVideoMinus, IconVideoOff, IconVideoPlus, IconView360, IconView360Off, IconViewfinder, IconViewfinderOff, IconViewportNarrow, IconViewportWide, IconVinyl, IconVip, IconVipOff, IconVirus, IconVirusOff, IconVirusSearch, IconVocabulary, IconVocabularyOff, IconVolume, IconVolume2, IconVolume3, IconVolumeOff, IconWalk, IconWall, IconWallOff, IconWallet, IconWalletOff, IconWallpaper, IconWallpaperOff, IconWand, IconWandOff, IconWash, IconWashDry, IconWashDry1, IconWashDry2, IconWashDry3, IconWashDryA, IconWashDryDip, IconWashDryF, IconWashDryHang, IconWashDryOff, IconWashDryP, IconWashDryShade, IconWashDryW, IconWashDryclean, IconWashDrycleanOff, IconWashGentle, IconWashMachine, IconWashOff, IconWashPress, IconWashTemperature1, IconWashTemperature2, IconWashTemperature3, IconWashTemperature4, IconWashTemperature5, IconWashTemperature6, IconWashTumbleDry, IconWashTumbleOff, IconWaveSawTool, IconWaveSine, IconWaveSquare, IconWebhook, IconWebhookOff, IconWeight, IconWheelchair, IconWheelchairOff, IconWhirl, IconWifi, IconWifi0, IconWifi1, IconWifi2, IconWifiOff, IconWind, IconWindOff, IconWindmill, IconWindmillOff, IconWindow, IconWindowMaximize, IconWindowMinimize, IconWindowOff, IconWindsock, IconWiper, IconWiperWash, IconWoman, IconWood, IconWorld, IconWorldDownload, IconWorldLatitude, IconWorldLongitude, IconWorldOff, IconWorldUpload, IconWorldWww, IconWreckingBall, IconWriting, IconWritingOff, IconWritingSign, IconWritingSignOff, IconX, IconXboxA, IconXboxB, IconXboxX, IconXboxY, IconYinYang, IconYoga, IconZeppelin, IconZeppelinOff, IconZip, IconZodiacAquarius, IconZodiacAries, IconZodiacCancer, IconZodiacCapricorn, IconZodiacGemini, IconZodiacLeo, IconZodiacLibra, IconZodiacPisces, IconZodiacSagittarius, IconZodiacScorpio, IconZodiacTaurus, IconZodiacVirgo, IconZoomCancel, IconZoomCheck, IconZoomCode, IconZoomExclamation, IconZoomIn, IconZoomInArea, IconZoomMoney, IconZoomOut, IconZoomOutArea, IconZoomPan, IconZoomQuestion, IconZoomReplace, IconZoomReset, IconZzz, IconZzzOff };\n","import * as i0 from '@angular/core';\nimport { ElementRef, ChangeDetectorRef, Component, Inject, Input, NgModule, Optional } from '@angular/core';\n\nclass OptionsProvider {\n constructor(options) {\n this.options = options;\n }\n}\n\nfunction uppercamelcase(str) {\n return str.toLowerCase().replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (firstLetter) => {\n return firstLetter.toUpperCase();\n }).replace(/[-_]/g, '');\n}\n\nclass TablerIconComponent {\n constructor(elem, changeDetector, options) {\n this.elem = elem;\n this.changeDetector = changeDetector;\n this.options = options;\n }\n ngOnChanges(changes) {\n var _a, _b;\n const svg = (_b = (_a = this.options.icons) === null || _a === void 0 ? void 0 : _a[`Icon${uppercamelcase(changes.name.currentValue)}`]) !== null && _b !== void 0 ? _b : '';\n if (!svg && !this.options.ignoreWarnings) {\n console.warn(`Tabler Icon not found: ${changes.name.currentValue}\\n` +\n `Refer to documentation on https://github.com/pierreavn/angular-tabler-icons`);\n }\n this.elem.nativeElement.innerHTML = svg;\n this.changeDetector.markForCheck();\n }\n}\nTablerIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: TablerIconComponent, deps: [{ token: ElementRef }, { token: ChangeDetectorRef }, { token: OptionsProvider }], target: i0.ɵɵFactoryTarget.Component });\nTablerIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.11\", type: TablerIconComponent, selector: \"i-tabler, tabler-icon\", inputs: { name: \"name\" }, usesOnChanges: true, ngImport: i0, template: \"\\n\", styles: [\":host{display:inline-block;width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}\\n\"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: TablerIconComponent, decorators: [{\n type: Component,\n args: [{ selector: 'i-tabler, tabler-icon', template: \"\\n\", styles: [\":host{display:inline-block;width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef, decorators: [{\n type: Inject,\n args: [ElementRef]\n }] }, { type: i0.ChangeDetectorRef, decorators: [{\n type: Inject,\n args: [ChangeDetectorRef]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [OptionsProvider]\n }] }];\n }, propDecorators: { name: [{\n type: Input\n }] } });\n\nclass TablerIconsModule {\n constructor(options) {\n this.options = options;\n if (!this.options) {\n throw new Error(`No icon provided. Make sure to use 'TablerIconsModule.pick({ ... })' when importing the module\\n` +\n `Refer to documentation on https://github.com/pierreavn/angular-tabler-icons`);\n }\n }\n /**\n * Initialize module with given icons and options\n * @param icons\n * @returns Module with options\n */\n static pick(icons, options) {\n return {\n ngModule: TablerIconsModule,\n providers: [\n {\n provide: OptionsProvider,\n useValue: Object.assign({ icons }, options)\n }\n ]\n };\n }\n}\nTablerIconsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: TablerIconsModule, deps: [{ token: OptionsProvider, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });\nTablerIconsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: TablerIconsModule, declarations: [TablerIconComponent], exports: [TablerIconComponent] });\nTablerIconsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: TablerIconsModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: TablerIconsModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n TablerIconComponent\n ],\n exports: [\n TablerIconComponent\n ]\n }]\n }], ctorParameters: function () {\n return [{ type: OptionsProvider, decorators: [{\n type: Optional\n }] }];\n } });\n\n/*\n * Public API Surface of angular-tabler-icons\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TablerIconComponent, TablerIconsModule };\n","/*!\n * lightgallery | 2.7.2 | September 20th 2023\n * http://www.lightgalleryjs.com/\n * Copyright (c) 2020 Sachin Neravath;\n * @license GPLv3\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\n/**\r\n * List of lightGallery events\r\n * All events should be documented here\r\n * Below interfaces are used to build the website documentations\r\n * */\r\nvar lGEvents = {\r\n afterAppendSlide: 'lgAfterAppendSlide',\r\n init: 'lgInit',\r\n hasVideo: 'lgHasVideo',\r\n containerResize: 'lgContainerResize',\r\n updateSlides: 'lgUpdateSlides',\r\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\r\n beforeOpen: 'lgBeforeOpen',\r\n afterOpen: 'lgAfterOpen',\r\n slideItemLoad: 'lgSlideItemLoad',\r\n beforeSlide: 'lgBeforeSlide',\r\n afterSlide: 'lgAfterSlide',\r\n posterClick: 'lgPosterClick',\r\n dragStart: 'lgDragStart',\r\n dragMove: 'lgDragMove',\r\n dragEnd: 'lgDragEnd',\r\n beforeNextSlide: 'lgBeforeNextSlide',\r\n beforePrevSlide: 'lgBeforePrevSlide',\r\n beforeClose: 'lgBeforeClose',\r\n afterClose: 'lgAfterClose',\r\n rotateLeft: 'lgRotateLeft',\r\n rotateRight: 'lgRotateRight',\r\n flipHorizontal: 'lgFlipHorizontal',\r\n flipVertical: 'lgFlipVertical',\r\n autoplay: 'lgAutoplay',\r\n autoplayStart: 'lgAutoplayStart',\r\n autoplayStop: 'lgAutoplayStop',\r\n};\n\nvar lightGalleryCoreSettings = {\r\n mode: 'lg-slide',\r\n easing: 'ease',\r\n speed: 400,\r\n licenseKey: '0000-0000-000-0000',\r\n height: '100%',\r\n width: '100%',\r\n addClass: '',\r\n startClass: 'lg-start-zoom',\r\n backdropDuration: 300,\r\n container: '',\r\n startAnimationDuration: 400,\r\n zoomFromOrigin: true,\r\n hideBarsDelay: 0,\r\n showBarsAfter: 10000,\r\n slideDelay: 0,\r\n supportLegacyBrowser: true,\r\n allowMediaOverlap: false,\r\n videoMaxSize: '1280-720',\r\n loadYouTubePoster: true,\r\n defaultCaptionHeight: 0,\r\n ariaLabelledby: '',\r\n ariaDescribedby: '',\r\n resetScrollPosition: true,\r\n hideScrollbar: false,\r\n closable: true,\r\n swipeToClose: true,\r\n closeOnTap: true,\r\n showCloseIcon: true,\r\n showMaximizeIcon: false,\r\n loop: true,\r\n escKey: true,\r\n keyPress: true,\r\n trapFocus: true,\r\n controls: true,\r\n slideEndAnimation: true,\r\n hideControlOnEnd: false,\r\n mousewheel: false,\r\n getCaptionFromTitleOrAlt: true,\r\n appendSubHtmlTo: '.lg-sub-html',\r\n subHtmlSelectorRelative: false,\r\n preload: 2,\r\n numberOfSlideItemsInDom: 10,\r\n selector: '',\r\n selectWithin: '',\r\n nextHtml: '',\r\n prevHtml: '',\r\n index: 0,\r\n iframeWidth: '100%',\r\n iframeHeight: '100%',\r\n iframeMaxWidth: '100%',\r\n iframeMaxHeight: '100%',\r\n download: true,\r\n counter: true,\r\n appendCounterTo: '.lg-toolbar',\r\n swipeThreshold: 50,\r\n enableSwipe: true,\r\n enableDrag: true,\r\n dynamic: false,\r\n dynamicEl: [],\r\n extraProps: [],\r\n exThumbImage: '',\r\n isMobile: undefined,\r\n mobileSettings: {\r\n controls: false,\r\n showCloseIcon: false,\r\n download: false,\r\n },\r\n plugins: [],\r\n strings: {\r\n closeGallery: 'Close gallery',\r\n toggleMaximize: 'Toggle maximize',\r\n previousSlide: 'Previous slide',\r\n nextSlide: 'Next slide',\r\n download: 'Download',\r\n playVideo: 'Play video',\r\n mediaLoadingFailed: 'Oops... Failed to load content...',\r\n },\r\n};\n\nfunction initLgPolyfills() {\r\n (function () {\r\n if (typeof window.CustomEvent === 'function')\r\n return false;\r\n function CustomEvent(event, params) {\r\n params = params || {\r\n bubbles: false,\r\n cancelable: false,\r\n detail: null,\r\n };\r\n var evt = document.createEvent('CustomEvent');\r\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\r\n return evt;\r\n }\r\n window.CustomEvent = CustomEvent;\r\n })();\r\n (function () {\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches =\r\n Element.prototype.msMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector;\r\n }\r\n })();\r\n}\r\nvar lgQuery = /** @class */ (function () {\r\n function lgQuery(selector) {\r\n this.cssVenderPrefixes = [\r\n 'TransitionDuration',\r\n 'TransitionTimingFunction',\r\n 'Transform',\r\n 'Transition',\r\n ];\r\n this.selector = this._getSelector(selector);\r\n this.firstElement = this._getFirstEl();\r\n return this;\r\n }\r\n lgQuery.generateUUID = function () {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n };\r\n lgQuery.prototype._getSelector = function (selector, context) {\r\n if (context === void 0) { context = document; }\r\n if (typeof selector !== 'string') {\r\n return selector;\r\n }\r\n context = context || document;\r\n var fl = selector.substring(0, 1);\r\n if (fl === '#') {\r\n return context.querySelector(selector);\r\n }\r\n else {\r\n return context.querySelectorAll(selector);\r\n }\r\n };\r\n lgQuery.prototype._each = function (func) {\r\n if (!this.selector) {\r\n return this;\r\n }\r\n if (this.selector.length !== undefined) {\r\n [].forEach.call(this.selector, func);\r\n }\r\n else {\r\n func(this.selector, 0);\r\n }\r\n return this;\r\n };\r\n lgQuery.prototype._setCssVendorPrefix = function (el, cssProperty, value) {\r\n // prettier-ignore\r\n var property = cssProperty.replace(/-([a-z])/gi, function (s, group1) {\r\n return group1.toUpperCase();\r\n });\r\n if (this.cssVenderPrefixes.indexOf(property) !== -1) {\r\n el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value;\r\n el.style['webkit' + property] = value;\r\n el.style['moz' + property] = value;\r\n el.style['ms' + property] = value;\r\n el.style['o' + property] = value;\r\n }\r\n else {\r\n el.style[property] = value;\r\n }\r\n };\r\n lgQuery.prototype._getFirstEl = function () {\r\n if (this.selector && this.selector.length !== undefined) {\r\n return this.selector[0];\r\n }\r\n else {\r\n return this.selector;\r\n }\r\n };\r\n lgQuery.prototype.isEventMatched = function (event, eventName) {\r\n var eventNamespace = eventName.split('.');\r\n return event\r\n .split('.')\r\n .filter(function (e) { return e; })\r\n .every(function (e) {\r\n return eventNamespace.indexOf(e) !== -1;\r\n });\r\n };\r\n lgQuery.prototype.attr = function (attr, value) {\r\n if (value === undefined) {\r\n if (!this.firstElement) {\r\n return '';\r\n }\r\n return this.firstElement.getAttribute(attr);\r\n }\r\n this._each(function (el) {\r\n el.setAttribute(attr, value);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.find = function (selector) {\r\n return $LG(this._getSelector(selector, this.selector));\r\n };\r\n lgQuery.prototype.first = function () {\r\n if (this.selector && this.selector.length !== undefined) {\r\n return $LG(this.selector[0]);\r\n }\r\n else {\r\n return $LG(this.selector);\r\n }\r\n };\r\n lgQuery.prototype.eq = function (index) {\r\n return $LG(this.selector[index]);\r\n };\r\n lgQuery.prototype.parent = function () {\r\n return $LG(this.selector.parentElement);\r\n };\r\n lgQuery.prototype.get = function () {\r\n return this._getFirstEl();\r\n };\r\n lgQuery.prototype.removeAttr = function (attributes) {\r\n var attrs = attributes.split(' ');\r\n this._each(function (el) {\r\n attrs.forEach(function (attr) { return el.removeAttribute(attr); });\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.wrap = function (className) {\r\n if (!this.firstElement) {\r\n return this;\r\n }\r\n var wrapper = document.createElement('div');\r\n wrapper.className = className;\r\n this.firstElement.parentNode.insertBefore(wrapper, this.firstElement);\r\n this.firstElement.parentNode.removeChild(this.firstElement);\r\n wrapper.appendChild(this.firstElement);\r\n return this;\r\n };\r\n lgQuery.prototype.addClass = function (classNames) {\r\n if (classNames === void 0) { classNames = ''; }\r\n this._each(function (el) {\r\n // IE doesn't support multiple arguments\r\n classNames.split(' ').forEach(function (className) {\r\n if (className) {\r\n el.classList.add(className);\r\n }\r\n });\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.removeClass = function (classNames) {\r\n this._each(function (el) {\r\n // IE doesn't support multiple arguments\r\n classNames.split(' ').forEach(function (className) {\r\n if (className) {\r\n el.classList.remove(className);\r\n }\r\n });\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.hasClass = function (className) {\r\n if (!this.firstElement) {\r\n return false;\r\n }\r\n return this.firstElement.classList.contains(className);\r\n };\r\n lgQuery.prototype.hasAttribute = function (attribute) {\r\n if (!this.firstElement) {\r\n return false;\r\n }\r\n return this.firstElement.hasAttribute(attribute);\r\n };\r\n lgQuery.prototype.toggleClass = function (className) {\r\n if (!this.firstElement) {\r\n return this;\r\n }\r\n if (this.hasClass(className)) {\r\n this.removeClass(className);\r\n }\r\n else {\r\n this.addClass(className);\r\n }\r\n return this;\r\n };\r\n lgQuery.prototype.css = function (property, value) {\r\n var _this = this;\r\n this._each(function (el) {\r\n _this._setCssVendorPrefix(el, property, value);\r\n });\r\n return this;\r\n };\r\n // Need to pass separate namespaces for separate elements\r\n lgQuery.prototype.on = function (events, listener) {\r\n var _this = this;\r\n if (!this.selector) {\r\n return this;\r\n }\r\n events.split(' ').forEach(function (event) {\r\n if (!Array.isArray(lgQuery.eventListeners[event])) {\r\n lgQuery.eventListeners[event] = [];\r\n }\r\n lgQuery.eventListeners[event].push(listener);\r\n _this.selector.addEventListener(event.split('.')[0], listener);\r\n });\r\n return this;\r\n };\r\n // @todo - test this\r\n lgQuery.prototype.once = function (event, listener) {\r\n var _this = this;\r\n this.on(event, function () {\r\n _this.off(event);\r\n listener(event);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.off = function (event) {\r\n var _this = this;\r\n if (!this.selector) {\r\n return this;\r\n }\r\n Object.keys(lgQuery.eventListeners).forEach(function (eventName) {\r\n if (_this.isEventMatched(event, eventName)) {\r\n lgQuery.eventListeners[eventName].forEach(function (listener) {\r\n _this.selector.removeEventListener(eventName.split('.')[0], listener);\r\n });\r\n lgQuery.eventListeners[eventName] = [];\r\n }\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.trigger = function (event, detail) {\r\n if (!this.firstElement) {\r\n return this;\r\n }\r\n var customEvent = new CustomEvent(event.split('.')[0], {\r\n detail: detail || null,\r\n });\r\n this.firstElement.dispatchEvent(customEvent);\r\n return this;\r\n };\r\n // Does not support IE\r\n lgQuery.prototype.load = function (url) {\r\n var _this = this;\r\n fetch(url)\r\n .then(function (res) { return res.text(); })\r\n .then(function (html) {\r\n _this.selector.innerHTML = html;\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.html = function (html) {\r\n if (html === undefined) {\r\n if (!this.firstElement) {\r\n return '';\r\n }\r\n return this.firstElement.innerHTML;\r\n }\r\n this._each(function (el) {\r\n el.innerHTML = html;\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.append = function (html) {\r\n this._each(function (el) {\r\n if (typeof html === 'string') {\r\n el.insertAdjacentHTML('beforeend', html);\r\n }\r\n else {\r\n el.appendChild(html);\r\n }\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.prepend = function (html) {\r\n this._each(function (el) {\r\n el.insertAdjacentHTML('afterbegin', html);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.remove = function () {\r\n this._each(function (el) {\r\n el.parentNode.removeChild(el);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.empty = function () {\r\n this._each(function (el) {\r\n el.innerHTML = '';\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.scrollTop = function (scrollTop) {\r\n if (scrollTop !== undefined) {\r\n document.body.scrollTop = scrollTop;\r\n document.documentElement.scrollTop = scrollTop;\r\n return this;\r\n }\r\n else {\r\n return (window.pageYOffset ||\r\n document.documentElement.scrollTop ||\r\n document.body.scrollTop ||\r\n 0);\r\n }\r\n };\r\n lgQuery.prototype.scrollLeft = function (scrollLeft) {\r\n if (scrollLeft !== undefined) {\r\n document.body.scrollLeft = scrollLeft;\r\n document.documentElement.scrollLeft = scrollLeft;\r\n return this;\r\n }\r\n else {\r\n return (window.pageXOffset ||\r\n document.documentElement.scrollLeft ||\r\n document.body.scrollLeft ||\r\n 0);\r\n }\r\n };\r\n lgQuery.prototype.offset = function () {\r\n if (!this.firstElement) {\r\n return {\r\n left: 0,\r\n top: 0,\r\n };\r\n }\r\n var rect = this.firstElement.getBoundingClientRect();\r\n var bodyMarginLeft = $LG('body').style().marginLeft;\r\n // Minus body margin - https://stackoverflow.com/questions/30711548/is-getboundingclientrect-left-returning-a-wrong-value\r\n return {\r\n left: rect.left - parseFloat(bodyMarginLeft) + this.scrollLeft(),\r\n top: rect.top + this.scrollTop(),\r\n };\r\n };\r\n lgQuery.prototype.style = function () {\r\n if (!this.firstElement) {\r\n return {};\r\n }\r\n return (this.firstElement.currentStyle ||\r\n window.getComputedStyle(this.firstElement));\r\n };\r\n // Width without padding and border even if box-sizing is used.\r\n lgQuery.prototype.width = function () {\r\n var style = this.style();\r\n return (this.firstElement.clientWidth -\r\n parseFloat(style.paddingLeft) -\r\n parseFloat(style.paddingRight));\r\n };\r\n // Height without padding and border even if box-sizing is used.\r\n lgQuery.prototype.height = function () {\r\n var style = this.style();\r\n return (this.firstElement.clientHeight -\r\n parseFloat(style.paddingTop) -\r\n parseFloat(style.paddingBottom));\r\n };\r\n lgQuery.eventListeners = {};\r\n return lgQuery;\r\n}());\r\nfunction $LG(selector) {\r\n initLgPolyfills();\r\n return new lgQuery(selector);\r\n}\n\nvar defaultDynamicOptions = [\r\n 'src',\r\n 'sources',\r\n 'subHtml',\r\n 'subHtmlUrl',\r\n 'html',\r\n 'video',\r\n 'poster',\r\n 'slideName',\r\n 'responsive',\r\n 'srcset',\r\n 'sizes',\r\n 'iframe',\r\n 'downloadUrl',\r\n 'download',\r\n 'width',\r\n 'facebookShareUrl',\r\n 'tweetText',\r\n 'iframeTitle',\r\n 'twitterShareUrl',\r\n 'pinterestShareUrl',\r\n 'pinterestText',\r\n 'fbHtml',\r\n 'disqusIdentifier',\r\n 'disqusUrl',\r\n];\r\n// Convert html data-attribute to camalcase\r\nfunction convertToData(attr) {\r\n // FInd a way for lgsize\r\n if (attr === 'href') {\r\n return 'src';\r\n }\r\n attr = attr.replace('data-', '');\r\n attr = attr.charAt(0).toLowerCase() + attr.slice(1);\r\n attr = attr.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\r\n return attr;\r\n}\r\nvar utils = {\r\n /**\r\n * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option\r\n */\r\n getSize: function (el, container, spacing, defaultLgSize) {\r\n if (spacing === void 0) { spacing = 0; }\r\n var LGel = $LG(el);\r\n var lgSize = LGel.attr('data-lg-size') || defaultLgSize;\r\n if (!lgSize) {\r\n return;\r\n }\r\n var isResponsiveSizes = lgSize.split(',');\r\n // if at-least two viewport sizes are available\r\n if (isResponsiveSizes[1]) {\r\n var wWidth = window.innerWidth;\r\n for (var i = 0; i < isResponsiveSizes.length; i++) {\r\n var size_1 = isResponsiveSizes[i];\r\n var responsiveWidth = parseInt(size_1.split('-')[2], 10);\r\n if (responsiveWidth > wWidth) {\r\n lgSize = size_1;\r\n break;\r\n }\r\n // take last item as last option\r\n if (i === isResponsiveSizes.length - 1) {\r\n lgSize = size_1;\r\n }\r\n }\r\n }\r\n var size = lgSize.split('-');\r\n var width = parseInt(size[0], 10);\r\n var height = parseInt(size[1], 10);\r\n var cWidth = container.width();\r\n var cHeight = container.height() - spacing;\r\n var maxWidth = Math.min(cWidth, width);\r\n var maxHeight = Math.min(cHeight, height);\r\n var ratio = Math.min(maxWidth / width, maxHeight / height);\r\n return { width: width * ratio, height: height * ratio };\r\n },\r\n /**\r\n * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option\r\n * @param {jQuery Element}\r\n * @returns {String} Transform CSS string\r\n */\r\n getTransform: function (el, container, top, bottom, imageSize) {\r\n if (!imageSize) {\r\n return;\r\n }\r\n var LGel = $LG(el).find('img').first();\r\n if (!LGel.get()) {\r\n return;\r\n }\r\n var containerRect = container.get().getBoundingClientRect();\r\n var wWidth = containerRect.width;\r\n // using innerWidth to include mobile safari bottom bar\r\n var wHeight = container.height() - (top + bottom);\r\n var elWidth = LGel.width();\r\n var elHeight = LGel.height();\r\n var elStyle = LGel.style();\r\n var x = (wWidth - elWidth) / 2 -\r\n LGel.offset().left +\r\n (parseFloat(elStyle.paddingLeft) || 0) +\r\n (parseFloat(elStyle.borderLeft) || 0) +\r\n $LG(window).scrollLeft() +\r\n containerRect.left;\r\n var y = (wHeight - elHeight) / 2 -\r\n LGel.offset().top +\r\n (parseFloat(elStyle.paddingTop) || 0) +\r\n (parseFloat(elStyle.borderTop) || 0) +\r\n $LG(window).scrollTop() +\r\n top;\r\n var scX = elWidth / imageSize.width;\r\n var scY = elHeight / imageSize.height;\r\n var transform = 'translate3d(' +\r\n (x *= -1) +\r\n 'px, ' +\r\n (y *= -1) +\r\n 'px, 0) scale3d(' +\r\n scX +\r\n ', ' +\r\n scY +\r\n ', 1)';\r\n return transform;\r\n },\r\n getIframeMarkup: function (iframeWidth, iframeHeight, iframeMaxWidth, iframeMaxHeight, src, iframeTitle) {\r\n var title = iframeTitle ? 'title=\"' + iframeTitle + '\"' : '';\r\n return \"
    \\n \\n
    \";\r\n },\r\n getImgMarkup: function (index, src, altAttr, srcset, sizes, sources) {\r\n var srcsetAttr = srcset ? \"srcset=\\\"\" + srcset + \"\\\"\" : '';\r\n var sizesAttr = sizes ? \"sizes=\\\"\" + sizes + \"\\\"\" : '';\r\n var imgMarkup = \"\";\r\n var sourceTag = '';\r\n if (sources) {\r\n var sourceObj = typeof sources === 'string' ? JSON.parse(sources) : sources;\r\n sourceTag = sourceObj.map(function (source) {\r\n var attrs = '';\r\n Object.keys(source).forEach(function (key) {\r\n // Do not remove the first space as it is required to separate the attributes\r\n attrs += \" \" + key + \"=\\\"\" + source[key] + \"\\\"\";\r\n });\r\n return \"\";\r\n });\r\n }\r\n return \"\" + sourceTag + imgMarkup;\r\n },\r\n // Get src from responsive src\r\n getResponsiveSrc: function (srcItms) {\r\n var rsWidth = [];\r\n var rsSrc = [];\r\n var src = '';\r\n for (var i = 0; i < srcItms.length; i++) {\r\n var _src = srcItms[i].split(' ');\r\n // Manage empty space\r\n if (_src[0] === '') {\r\n _src.splice(0, 1);\r\n }\r\n rsSrc.push(_src[0]);\r\n rsWidth.push(_src[1]);\r\n }\r\n var wWidth = window.innerWidth;\r\n for (var j = 0; j < rsWidth.length; j++) {\r\n if (parseInt(rsWidth[j], 10) > wWidth) {\r\n src = rsSrc[j];\r\n break;\r\n }\r\n }\r\n return src;\r\n },\r\n isImageLoaded: function (img) {\r\n if (!img)\r\n return false;\r\n // During the onload event, IE correctly identifies any images that\r\n // weren’t downloaded as not complete. Others should too. Gecko-based\r\n // browsers act like NS4 in that they report this incorrectly.\r\n if (!img.complete) {\r\n return false;\r\n }\r\n // However, they do have two very useful properties: naturalWidth and\r\n // naturalHeight. These give the true size of the image. If it failed\r\n // to load, either of these should be zero.\r\n if (img.naturalWidth === 0) {\r\n return false;\r\n }\r\n // No other way of checking: assume it’s ok.\r\n return true;\r\n },\r\n getVideoPosterMarkup: function (_poster, dummyImg, videoContStyle, playVideoString, _isVideo) {\r\n var videoClass = '';\r\n if (_isVideo && _isVideo.youtube) {\r\n videoClass = 'lg-has-youtube';\r\n }\r\n else if (_isVideo && _isVideo.vimeo) {\r\n videoClass = 'lg-has-vimeo';\r\n }\r\n else {\r\n videoClass = 'lg-has-html5';\r\n }\r\n return \"
    \\n
    \\n \\n \" + playVideoString + \"\\n \\n \\n \\n \\n \\n \\n \\n
    \\n \" + (dummyImg || '') + \"\\n \\n
    \";\r\n },\r\n getFocusableElements: function (container) {\r\n var elements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])');\r\n var visibleElements = [].filter.call(elements, function (element) {\r\n var style = window.getComputedStyle(element);\r\n return style.display !== 'none' && style.visibility !== 'hidden';\r\n });\r\n return visibleElements;\r\n },\r\n /**\r\n * @desc Create dynamic elements array from gallery items when dynamic option is false\r\n * It helps to avoid frequent DOM interaction\r\n * and avoid multiple checks for dynamic elments\r\n *\r\n * @returns {Array} dynamicEl\r\n */\r\n getDynamicOptions: function (items, extraProps, getCaptionFromTitleOrAlt, exThumbImage) {\r\n var dynamicElements = [];\r\n var availableDynamicOptions = __spreadArrays(defaultDynamicOptions, extraProps);\r\n [].forEach.call(items, function (item) {\r\n var dynamicEl = {};\r\n for (var i = 0; i < item.attributes.length; i++) {\r\n var attr = item.attributes[i];\r\n if (attr.specified) {\r\n var dynamicAttr = convertToData(attr.name);\r\n var label = '';\r\n if (availableDynamicOptions.indexOf(dynamicAttr) > -1) {\r\n label = dynamicAttr;\r\n }\r\n if (label) {\r\n dynamicEl[label] = attr.value;\r\n }\r\n }\r\n }\r\n var currentItem = $LG(item);\r\n var alt = currentItem.find('img').first().attr('alt');\r\n var title = currentItem.attr('title');\r\n var thumb = exThumbImage\r\n ? currentItem.attr(exThumbImage)\r\n : currentItem.find('img').first().attr('src');\r\n dynamicEl.thumb = thumb;\r\n if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) {\r\n dynamicEl.subHtml = title || alt || '';\r\n }\r\n dynamicEl.alt = alt || title || '';\r\n dynamicElements.push(dynamicEl);\r\n });\r\n return dynamicElements;\r\n },\r\n isMobile: function () {\r\n return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\r\n },\r\n /**\r\n * @desc Check the given src is video\r\n * @param {String} src\r\n * @return {Object} video type\r\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\r\n *\r\n * @todo - this information can be moved to dynamicEl to avoid frequent calls\r\n */\r\n isVideo: function (src, isHTML5VIdeo, index) {\r\n if (!src) {\r\n if (isHTML5VIdeo) {\r\n return {\r\n html5: true,\r\n };\r\n }\r\n else {\r\n console.error('lightGallery :- data-src is not provided on slide item ' +\r\n (index + 1) +\r\n '. Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/');\r\n return;\r\n }\r\n }\r\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)([\\&|?][\\S]*)*/i);\r\n var vimeo = src.match(/\\/\\/(?:www\\.)?(?:player\\.)?vimeo.com\\/(?:video\\/)?([0-9a-z\\-_]+)(.*)?/i);\r\n var wistia = src.match(/https?:\\/\\/(.+)?(wistia\\.com|wi\\.st)\\/(medias|embed)\\/([0-9a-z\\-_]+)(.*)/);\r\n if (youtube) {\r\n return {\r\n youtube: youtube,\r\n };\r\n }\r\n else if (vimeo) {\r\n return {\r\n vimeo: vimeo,\r\n };\r\n }\r\n else if (wistia) {\r\n return {\r\n wistia: wistia,\r\n };\r\n }\r\n },\r\n};\n\n// @ref - https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio\r\n// @ref - https://2ality.com/2017/04/setting-up-multi-platform-packages.html\r\n// Unique id for each gallery\r\nvar lgId = 0;\r\nvar LightGallery = /** @class */ (function () {\r\n function LightGallery(element, options) {\r\n this.lgOpened = false;\r\n this.index = 0;\r\n // lightGallery modules\r\n this.plugins = [];\r\n // false when lightGallery load first slide content;\r\n this.lGalleryOn = false;\r\n // True when a slide animation is in progress\r\n this.lgBusy = false;\r\n this.currentItemsInDom = [];\r\n // Scroll top value before lightGallery is opened\r\n this.prevScrollTop = 0;\r\n this.bodyPaddingRight = 0;\r\n this.isDummyImageRemoved = false;\r\n this.dragOrSwipeEnabled = false;\r\n this.mediaContainerPosition = {\r\n top: 0,\r\n bottom: 0,\r\n };\r\n if (!element) {\r\n return this;\r\n }\r\n lgId++;\r\n this.lgId = lgId;\r\n this.el = element;\r\n this.LGel = $LG(element);\r\n this.generateSettings(options);\r\n this.buildModules();\r\n // When using dynamic mode, ensure dynamicEl is an array\r\n if (this.settings.dynamic &&\r\n this.settings.dynamicEl !== undefined &&\r\n !Array.isArray(this.settings.dynamicEl)) {\r\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\r\n }\r\n this.galleryItems = this.getItems();\r\n this.normalizeSettings();\r\n // Gallery items\r\n this.init();\r\n this.validateLicense();\r\n return this;\r\n }\r\n LightGallery.prototype.generateSettings = function (options) {\r\n // lightGallery settings\r\n this.settings = __assign(__assign({}, lightGalleryCoreSettings), options);\r\n if (this.settings.isMobile &&\r\n typeof this.settings.isMobile === 'function'\r\n ? this.settings.isMobile()\r\n : utils.isMobile()) {\r\n var mobileSettings = __assign(__assign({}, this.settings.mobileSettings), this.settings.mobileSettings);\r\n this.settings = __assign(__assign({}, this.settings), mobileSettings);\r\n }\r\n };\r\n LightGallery.prototype.normalizeSettings = function () {\r\n if (this.settings.slideEndAnimation) {\r\n this.settings.hideControlOnEnd = false;\r\n }\r\n if (!this.settings.closable) {\r\n this.settings.swipeToClose = false;\r\n }\r\n // And reset it on close to get the correct value next time\r\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\r\n // At the moment, Zoom from image doesn't support dynamic options\r\n // @todo add zoomFromOrigin support for dynamic images\r\n if (this.settings.dynamic) {\r\n this.zoomFromOrigin = false;\r\n }\r\n if (!this.settings.container) {\r\n this.settings.container = document.body;\r\n }\r\n // settings.preload should not be grater than $item.length\r\n this.settings.preload = Math.min(this.settings.preload, this.galleryItems.length);\r\n };\r\n LightGallery.prototype.init = function () {\r\n var _this = this;\r\n this.addSlideVideoInfo(this.galleryItems);\r\n this.buildStructure();\r\n this.LGel.trigger(lGEvents.init, {\r\n instance: this,\r\n });\r\n if (this.settings.keyPress) {\r\n this.keyPress();\r\n }\r\n setTimeout(function () {\r\n _this.enableDrag();\r\n _this.enableSwipe();\r\n _this.triggerPosterClick();\r\n }, 50);\r\n this.arrow();\r\n if (this.settings.mousewheel) {\r\n this.mousewheel();\r\n }\r\n if (!this.settings.dynamic) {\r\n this.openGalleryOnItemClick();\r\n }\r\n };\r\n LightGallery.prototype.openGalleryOnItemClick = function () {\r\n var _this = this;\r\n var _loop_1 = function (index) {\r\n var element = this_1.items[index];\r\n var $element = $LG(element);\r\n // Using different namespace for click because click event should not unbind if selector is same object('this')\r\n // @todo manage all event listners - should have namespace that represent element\r\n var uuid = lgQuery.generateUUID();\r\n $element\r\n .attr('data-lg-id', uuid)\r\n .on(\"click.lgcustom-item-\" + uuid, function (e) {\r\n e.preventDefault();\r\n var currentItemIndex = _this.settings.index || index;\r\n _this.openGallery(currentItemIndex, element);\r\n });\r\n };\r\n var this_1 = this;\r\n // Using for loop instead of using bubbling as the items can be any html element.\r\n for (var index = 0; index < this.items.length; index++) {\r\n _loop_1(index);\r\n }\r\n };\r\n /**\r\n * Module constructor\r\n * Modules are build incrementally.\r\n * Gallery should be opened only once all the modules are initialized.\r\n * use moduleBuildTimeout to make sure this\r\n */\r\n LightGallery.prototype.buildModules = function () {\r\n var _this = this;\r\n this.settings.plugins.forEach(function (plugin) {\r\n _this.plugins.push(new plugin(_this, $LG));\r\n });\r\n };\r\n LightGallery.prototype.validateLicense = function () {\r\n if (!this.settings.licenseKey) {\r\n console.error('Please provide a valid license key');\r\n }\r\n else if (this.settings.licenseKey === '0000-0000-000-0000') {\r\n console.warn(\"lightGallery: \" + this.settings.licenseKey + \" license key is not valid for production use\");\r\n }\r\n };\r\n LightGallery.prototype.getSlideItem = function (index) {\r\n return $LG(this.getSlideItemId(index));\r\n };\r\n LightGallery.prototype.getSlideItemId = function (index) {\r\n return \"#lg-item-\" + this.lgId + \"-\" + index;\r\n };\r\n LightGallery.prototype.getIdName = function (id) {\r\n return id + \"-\" + this.lgId;\r\n };\r\n LightGallery.prototype.getElementById = function (id) {\r\n return $LG(\"#\" + this.getIdName(id));\r\n };\r\n LightGallery.prototype.manageSingleSlideClassName = function () {\r\n if (this.galleryItems.length < 2) {\r\n this.outer.addClass('lg-single-item');\r\n }\r\n else {\r\n this.outer.removeClass('lg-single-item');\r\n }\r\n };\r\n LightGallery.prototype.buildStructure = function () {\r\n var _this = this;\r\n var container = this.$container && this.$container.get();\r\n if (container) {\r\n return;\r\n }\r\n var controls = '';\r\n var subHtmlCont = '';\r\n // Create controls\r\n if (this.settings.controls) {\r\n controls = \"\\n \";\r\n }\r\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\r\n subHtmlCont =\r\n '
    ';\r\n }\r\n var addClasses = '';\r\n if (this.settings.allowMediaOverlap) {\r\n // Do not remove space before last single quote\r\n addClasses += 'lg-media-overlap ';\r\n }\r\n var ariaLabelledby = this.settings.ariaLabelledby\r\n ? 'aria-labelledby=\"' + this.settings.ariaLabelledby + '\"'\r\n : '';\r\n var ariaDescribedby = this.settings.ariaDescribedby\r\n ? 'aria-describedby=\"' + this.settings.ariaDescribedby + '\"'\r\n : '';\r\n var containerClassName = \"lg-container \" + this.settings.addClass + \" \" + (document.body !== this.settings.container ? 'lg-inline' : '');\r\n var closeIcon = this.settings.closable && this.settings.showCloseIcon\r\n ? \"\"\r\n : '';\r\n var maximizeIcon = this.settings.showMaximizeIcon\r\n ? \"\"\r\n : '';\r\n var template = \"\\n
    \\n
    \\n\\n
    \\n\\n
    \\n
    \\n
    \\n \" + controls + \"\\n
    \\n
    \\n \" + maximizeIcon + \"\\n \" + closeIcon + \"\\n
    \\n \" + (this.settings.appendSubHtmlTo === '.lg-outer'\r\n ? subHtmlCont\r\n : '') + \"\\n
    \\n \" + (this.settings.appendSubHtmlTo === '.lg-sub-html'\r\n ? subHtmlCont\r\n : '') + \"\\n
    \\n
    \\n
    \\n \";\r\n $LG(this.settings.container).append(template);\r\n if (document.body !== this.settings.container) {\r\n $LG(this.settings.container).css('position', 'relative');\r\n }\r\n this.outer = this.getElementById('lg-outer');\r\n this.$lgComponents = this.getElementById('lg-components');\r\n this.$backdrop = this.getElementById('lg-backdrop');\r\n this.$container = this.getElementById('lg-container');\r\n this.$inner = this.getElementById('lg-inner');\r\n this.$content = this.getElementById('lg-content');\r\n this.$toolbar = this.getElementById('lg-toolbar');\r\n this.$backdrop.css('transition-duration', this.settings.backdropDuration + 'ms');\r\n var outerClassNames = this.settings.mode + \" \";\r\n this.manageSingleSlideClassName();\r\n if (this.settings.enableDrag) {\r\n outerClassNames += 'lg-grab ';\r\n }\r\n this.outer.addClass(outerClassNames);\r\n this.$inner.css('transition-timing-function', this.settings.easing);\r\n this.$inner.css('transition-duration', this.settings.speed + 'ms');\r\n if (this.settings.download) {\r\n this.$toolbar.append(\"\");\r\n }\r\n this.counter();\r\n $LG(window).on(\"resize.lg.global\" + this.lgId + \" orientationchange.lg.global\" + this.lgId, function () {\r\n _this.refreshOnResize();\r\n });\r\n this.hideBars();\r\n this.manageCloseGallery();\r\n this.toggleMaximize();\r\n this.initModules();\r\n };\r\n LightGallery.prototype.refreshOnResize = function () {\r\n if (this.lgOpened) {\r\n var currentGalleryItem = this.galleryItems[this.index];\r\n var __slideVideoInfo = currentGalleryItem.__slideVideoInfo;\r\n this.mediaContainerPosition = this.getMediaContainerPosition();\r\n var _a = this.mediaContainerPosition, top_1 = _a.top, bottom = _a.bottom;\r\n this.currentImageSize = utils.getSize(this.items[this.index], this.outer, top_1 + bottom, __slideVideoInfo && this.settings.videoMaxSize);\r\n if (__slideVideoInfo) {\r\n this.resizeVideoSlide(this.index, this.currentImageSize);\r\n }\r\n if (this.zoomFromOrigin && !this.isDummyImageRemoved) {\r\n var imgStyle = this.getDummyImgStyles(this.currentImageSize);\r\n this.outer\r\n .find('.lg-current .lg-dummy-img')\r\n .first()\r\n .attr('style', imgStyle);\r\n }\r\n this.LGel.trigger(lGEvents.containerResize);\r\n }\r\n };\r\n LightGallery.prototype.resizeVideoSlide = function (index, imageSize) {\r\n var lgVideoStyle = this.getVideoContStyle(imageSize);\r\n var currentSlide = this.getSlideItem(index);\r\n currentSlide.find('.lg-video-cont').attr('style', lgVideoStyle);\r\n };\r\n /**\r\n * Update slides dynamically.\r\n * Add, edit or delete slides dynamically when lightGallery is opened.\r\n * Modify the current gallery items and pass it via updateSlides method\r\n * @note\r\n * - Do not mutate existing lightGallery items directly.\r\n * - Always pass new list of gallery items\r\n * - You need to take care of thumbnails outside the gallery if any\r\n * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method.\r\n * @param items Gallery items\r\n * @param index After the update operation, which slide gallery should navigate to\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n *\r\n * // Adding slides dynamically\r\n * let galleryItems = [\r\n * // Access existing lightGallery items\r\n * // galleryItems are automatically generated internally from the gallery HTML markup\r\n * // or directly from galleryItems when dynamic gallery is used\r\n * ...plugin.galleryItems,\r\n * ...[\r\n * {\r\n * src: 'img/img-1.png',\r\n * thumb: 'img/thumb1.png',\r\n * },\r\n * ],\r\n * ];\r\n * plugin.updateSlides(\r\n * galleryItems,\r\n * plugin.index,\r\n * );\r\n *\r\n *\r\n * // Remove slides dynamically\r\n * galleryItems = JSON.parse(\r\n * JSON.stringify(updateSlideInstance.galleryItems),\r\n * );\r\n * galleryItems.shift();\r\n * updateSlideInstance.updateSlides(galleryItems, 1);\r\n * @see Demo\r\n */\r\n LightGallery.prototype.updateSlides = function (items, index) {\r\n if (this.index > items.length - 1) {\r\n this.index = items.length - 1;\r\n }\r\n if (items.length === 1) {\r\n this.index = 0;\r\n }\r\n if (!items.length) {\r\n this.closeGallery();\r\n return;\r\n }\r\n var currentSrc = this.galleryItems[index].src;\r\n this.galleryItems = items;\r\n this.updateControls();\r\n this.$inner.empty();\r\n this.currentItemsInDom = [];\r\n var _index = 0;\r\n // Find the current index based on source value of the slide\r\n this.galleryItems.some(function (galleryItem, itemIndex) {\r\n if (galleryItem.src === currentSrc) {\r\n _index = itemIndex;\r\n return true;\r\n }\r\n return false;\r\n });\r\n this.currentItemsInDom = this.organizeSlideItems(_index, -1);\r\n this.loadContent(_index, true);\r\n this.getSlideItem(_index).addClass('lg-current');\r\n this.index = _index;\r\n this.updateCurrentCounter(_index);\r\n this.LGel.trigger(lGEvents.updateSlides);\r\n };\r\n // Get gallery items based on multiple conditions\r\n LightGallery.prototype.getItems = function () {\r\n // Gallery items\r\n this.items = [];\r\n if (!this.settings.dynamic) {\r\n if (this.settings.selector === 'this') {\r\n this.items.push(this.el);\r\n }\r\n else if (this.settings.selector) {\r\n if (typeof this.settings.selector === 'string') {\r\n if (this.settings.selectWithin) {\r\n var selectWithin = $LG(this.settings.selectWithin);\r\n this.items = selectWithin\r\n .find(this.settings.selector)\r\n .get();\r\n }\r\n else {\r\n this.items = this.el.querySelectorAll(this.settings.selector);\r\n }\r\n }\r\n else {\r\n this.items = this.settings.selector;\r\n }\r\n }\r\n else {\r\n this.items = this.el.children;\r\n }\r\n return utils.getDynamicOptions(this.items, this.settings.extraProps, this.settings.getCaptionFromTitleOrAlt, this.settings.exThumbImage);\r\n }\r\n else {\r\n return this.settings.dynamicEl || [];\r\n }\r\n };\r\n LightGallery.prototype.shouldHideScrollbar = function () {\r\n return (this.settings.hideScrollbar &&\r\n document.body === this.settings.container);\r\n };\r\n LightGallery.prototype.hideScrollbar = function () {\r\n if (!this.shouldHideScrollbar()) {\r\n return;\r\n }\r\n this.bodyPaddingRight = parseFloat($LG('body').style().paddingRight);\r\n var bodyRect = document.documentElement.getBoundingClientRect();\r\n var scrollbarWidth = window.innerWidth - bodyRect.width;\r\n $LG(document.body).css('padding-right', scrollbarWidth + this.bodyPaddingRight + 'px');\r\n $LG(document.body).addClass('lg-overlay-open');\r\n };\r\n LightGallery.prototype.resetScrollBar = function () {\r\n if (!this.shouldHideScrollbar()) {\r\n return;\r\n }\r\n $LG(document.body).css('padding-right', this.bodyPaddingRight + 'px');\r\n $LG(document.body).removeClass('lg-overlay-open');\r\n };\r\n /**\r\n * Open lightGallery.\r\n * Open gallery with specific slide by passing index of the slide as parameter.\r\n * @category lGPublicMethods\r\n * @param {Number} index - index of the slide\r\n * @param {HTMLElement} element - Which image lightGallery should zoom from\r\n *\r\n * @example\r\n * const $dynamicGallery = document.getElementById('dynamic-gallery-demo');\r\n * const dynamicGallery = lightGallery($dynamicGallery, {\r\n * dynamic: true,\r\n * dynamicEl: [\r\n * {\r\n * src: 'img/1.jpg',\r\n * thumb: 'img/thumb-1.jpg',\r\n * subHtml: '

    Image 1 title

    Image 1 descriptions.

    ',\r\n * },\r\n * ...\r\n * ],\r\n * });\r\n * $dynamicGallery.addEventListener('click', function () {\r\n * // Starts with third item.(Optional).\r\n * // This is useful if you want use dynamic mode with\r\n * // custom thumbnails (thumbnails outside gallery),\r\n * dynamicGallery.openGallery(2);\r\n * });\r\n *\r\n */\r\n LightGallery.prototype.openGallery = function (index, element) {\r\n var _this = this;\r\n if (index === void 0) { index = this.settings.index; }\r\n // prevent accidental double execution\r\n if (this.lgOpened)\r\n return;\r\n this.lgOpened = true;\r\n this.outer.removeClass('lg-hide-items');\r\n this.hideScrollbar();\r\n // Add display block, but still has opacity 0\r\n this.$container.addClass('lg-show');\r\n var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, index);\r\n this.currentItemsInDom = itemsToBeInsertedToDom;\r\n var items = '';\r\n itemsToBeInsertedToDom.forEach(function (item) {\r\n items = items + (\"
    \");\r\n });\r\n this.$inner.append(items);\r\n this.addHtml(index);\r\n var transform = '';\r\n this.mediaContainerPosition = this.getMediaContainerPosition();\r\n var _a = this.mediaContainerPosition, top = _a.top, bottom = _a.bottom;\r\n if (!this.settings.allowMediaOverlap) {\r\n this.setMediaContainerPosition(top, bottom);\r\n }\r\n var __slideVideoInfo = this.galleryItems[index].__slideVideoInfo;\r\n if (this.zoomFromOrigin && element) {\r\n this.currentImageSize = utils.getSize(element, this.outer, top + bottom, __slideVideoInfo && this.settings.videoMaxSize);\r\n transform = utils.getTransform(element, this.outer, top, bottom, this.currentImageSize);\r\n }\r\n if (!this.zoomFromOrigin || !transform) {\r\n this.outer.addClass(this.settings.startClass);\r\n this.getSlideItem(index).removeClass('lg-complete');\r\n }\r\n var timeout = this.settings.zoomFromOrigin\r\n ? 100\r\n : this.settings.backdropDuration;\r\n setTimeout(function () {\r\n _this.outer.addClass('lg-components-open');\r\n }, timeout);\r\n this.index = index;\r\n this.LGel.trigger(lGEvents.beforeOpen);\r\n // add class lg-current to remove initial transition\r\n this.getSlideItem(index).addClass('lg-current');\r\n this.lGalleryOn = false;\r\n // Store the current scroll top value to scroll back after closing the gallery..\r\n this.prevScrollTop = $LG(window).scrollTop();\r\n setTimeout(function () {\r\n // Need to check both zoomFromOrigin and transform values as we need to set set the\r\n // default opening animation if user missed to add the lg-size attribute\r\n if (_this.zoomFromOrigin && transform) {\r\n var currentSlide_1 = _this.getSlideItem(index);\r\n currentSlide_1.css('transform', transform);\r\n setTimeout(function () {\r\n currentSlide_1\r\n .addClass('lg-start-progress lg-start-end-progress')\r\n .css('transition-duration', _this.settings.startAnimationDuration + 'ms');\r\n _this.outer.addClass('lg-zoom-from-image');\r\n });\r\n setTimeout(function () {\r\n currentSlide_1.css('transform', 'translate3d(0, 0, 0)');\r\n }, 100);\r\n }\r\n setTimeout(function () {\r\n _this.$backdrop.addClass('in');\r\n _this.$container.addClass('lg-show-in');\r\n }, 10);\r\n setTimeout(function () {\r\n if (_this.settings.trapFocus &&\r\n document.body === _this.settings.container) {\r\n _this.trapFocus();\r\n }\r\n }, _this.settings.backdropDuration + 50);\r\n // lg-visible class resets gallery opacity to 1\r\n if (!_this.zoomFromOrigin || !transform) {\r\n setTimeout(function () {\r\n _this.outer.addClass('lg-visible');\r\n }, _this.settings.backdropDuration);\r\n }\r\n // initiate slide function\r\n _this.slide(index, false, false, false);\r\n _this.LGel.trigger(lGEvents.afterOpen);\r\n });\r\n if (document.body === this.settings.container) {\r\n $LG('html').addClass('lg-on');\r\n }\r\n };\r\n /**\r\n * Note - Changing the position of the media on every slide transition creates a flickering effect.\r\n * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption.\r\n * if you have dynamic captions for each media,\r\n * you can provide an appropriate height for the captions via allowMediaOverlap option\r\n */\r\n LightGallery.prototype.getMediaContainerPosition = function () {\r\n if (this.settings.allowMediaOverlap) {\r\n return {\r\n top: 0,\r\n bottom: 0,\r\n };\r\n }\r\n var top = this.$toolbar.get().clientHeight || 0;\r\n var subHtml = this.outer.find('.lg-components .lg-sub-html').get();\r\n var captionHeight = this.settings.defaultCaptionHeight ||\r\n (subHtml && subHtml.clientHeight) ||\r\n 0;\r\n var thumbContainer = this.outer.find('.lg-thumb-outer').get();\r\n var thumbHeight = thumbContainer ? thumbContainer.clientHeight : 0;\r\n var bottom = thumbHeight + captionHeight;\r\n return {\r\n top: top,\r\n bottom: bottom,\r\n };\r\n };\r\n LightGallery.prototype.setMediaContainerPosition = function (top, bottom) {\r\n if (top === void 0) { top = 0; }\r\n if (bottom === void 0) { bottom = 0; }\r\n this.$content.css('top', top + 'px').css('bottom', bottom + 'px');\r\n };\r\n LightGallery.prototype.hideBars = function () {\r\n var _this = this;\r\n // Hide controllers if mouse doesn't move for some period\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-hide-items');\r\n if (_this.settings.hideBarsDelay > 0) {\r\n _this.outer.on('mousemove.lg click.lg touchstart.lg', function () {\r\n _this.outer.removeClass('lg-hide-items');\r\n clearTimeout(_this.hideBarTimeout);\r\n // Timeout will be cleared on each slide movement also\r\n _this.hideBarTimeout = setTimeout(function () {\r\n _this.outer.addClass('lg-hide-items');\r\n }, _this.settings.hideBarsDelay);\r\n });\r\n _this.outer.trigger('mousemove.lg');\r\n }\r\n }, this.settings.showBarsAfter);\r\n };\r\n LightGallery.prototype.initPictureFill = function ($img) {\r\n if (this.settings.supportLegacyBrowser) {\r\n try {\r\n picturefill({\r\n elements: [$img.get()],\r\n });\r\n }\r\n catch (e) {\r\n console.warn('lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.');\r\n }\r\n }\r\n };\r\n /**\r\n * @desc Create image counter\r\n * Ex: 1/10\r\n */\r\n LightGallery.prototype.counter = function () {\r\n if (this.settings.counter) {\r\n var counterHtml = \"
    \\n \" + (this.index + 1) + \" /\\n \" + this.galleryItems.length + \"
    \";\r\n this.outer.find(this.settings.appendCounterTo).append(counterHtml);\r\n }\r\n };\r\n /**\r\n * @desc add sub-html into the slide\r\n * @param {Number} index - index of the slide\r\n */\r\n LightGallery.prototype.addHtml = function (index) {\r\n var subHtml;\r\n var subHtmlUrl;\r\n if (this.galleryItems[index].subHtmlUrl) {\r\n subHtmlUrl = this.galleryItems[index].subHtmlUrl;\r\n }\r\n else {\r\n subHtml = this.galleryItems[index].subHtml;\r\n }\r\n if (!subHtmlUrl) {\r\n if (subHtml) {\r\n // get first letter of sub-html\r\n // if first letter starts with . or # get the html form the jQuery object\r\n var fL = subHtml.substring(0, 1);\r\n if (fL === '.' || fL === '#') {\r\n if (this.settings.subHtmlSelectorRelative &&\r\n !this.settings.dynamic) {\r\n subHtml = $LG(this.items)\r\n .eq(index)\r\n .find(subHtml)\r\n .first()\r\n .html();\r\n }\r\n else {\r\n subHtml = $LG(subHtml).first().html();\r\n }\r\n }\r\n }\r\n else {\r\n subHtml = '';\r\n }\r\n }\r\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\r\n if (subHtmlUrl) {\r\n this.outer.find('.lg-sub-html').load(subHtmlUrl);\r\n }\r\n else {\r\n this.outer.find('.lg-sub-html').html(subHtml);\r\n }\r\n }\r\n else {\r\n var currentSlide = $LG(this.getSlideItemId(index));\r\n if (subHtmlUrl) {\r\n currentSlide.load(subHtmlUrl);\r\n }\r\n else {\r\n currentSlide.append(\"
    \" + subHtml + \"
    \");\r\n }\r\n }\r\n // Add lg-empty-html class if title doesn't exist\r\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\r\n if (subHtml === '') {\r\n this.outer\r\n .find(this.settings.appendSubHtmlTo)\r\n .addClass('lg-empty-html');\r\n }\r\n else {\r\n this.outer\r\n .find(this.settings.appendSubHtmlTo)\r\n .removeClass('lg-empty-html');\r\n }\r\n }\r\n this.LGel.trigger(lGEvents.afterAppendSubHtml, {\r\n index: index,\r\n });\r\n };\r\n /**\r\n * @desc Preload slides\r\n * @param {Number} index - index of the slide\r\n * @todo preload not working for the first slide, Also, should work for the first and last slide as well\r\n */\r\n LightGallery.prototype.preload = function (index) {\r\n for (var i = 1; i <= this.settings.preload; i++) {\r\n if (i >= this.galleryItems.length - index) {\r\n break;\r\n }\r\n this.loadContent(index + i, false);\r\n }\r\n for (var j = 1; j <= this.settings.preload; j++) {\r\n if (index - j < 0) {\r\n break;\r\n }\r\n this.loadContent(index - j, false);\r\n }\r\n };\r\n LightGallery.prototype.getDummyImgStyles = function (imageSize) {\r\n if (!imageSize)\r\n return '';\r\n return \"width:\" + imageSize.width + \"px;\\n margin-left: -\" + imageSize.width / 2 + \"px;\\n margin-top: -\" + imageSize.height / 2 + \"px;\\n height:\" + imageSize.height + \"px\";\r\n };\r\n LightGallery.prototype.getVideoContStyle = function (imageSize) {\r\n if (!imageSize)\r\n return '';\r\n return \"width:\" + imageSize.width + \"px;\\n height:\" + imageSize.height + \"px\";\r\n };\r\n LightGallery.prototype.getDummyImageContent = function ($currentSlide, index, alt) {\r\n var $currentItem;\r\n if (!this.settings.dynamic) {\r\n $currentItem = $LG(this.items).eq(index);\r\n }\r\n if ($currentItem) {\r\n var _dummyImgSrc = void 0;\r\n if (!this.settings.exThumbImage) {\r\n _dummyImgSrc = $currentItem.find('img').first().attr('src');\r\n }\r\n else {\r\n _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage);\r\n }\r\n if (!_dummyImgSrc)\r\n return '';\r\n var imgStyle = this.getDummyImgStyles(this.currentImageSize);\r\n var dummyImgContent = \"\";\r\n $currentSlide.addClass('lg-first-slide');\r\n this.outer.addClass('lg-first-slide-loading');\r\n return dummyImgContent;\r\n }\r\n return '';\r\n };\r\n LightGallery.prototype.setImgMarkup = function (src, $currentSlide, index) {\r\n var currentGalleryItem = this.galleryItems[index];\r\n var alt = currentGalleryItem.alt, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;\r\n // Use the thumbnail as dummy image which will be resized to actual image size and\r\n // displayed on top of actual image\r\n var imgContent = '';\r\n var altAttr = alt ? 'alt=\"' + alt + '\"' : '';\r\n if (this.isFirstSlideWithZoomAnimation()) {\r\n imgContent = this.getDummyImageContent($currentSlide, index, altAttr);\r\n }\r\n else {\r\n imgContent = utils.getImgMarkup(index, src, altAttr, srcset, sizes, sources);\r\n }\r\n var imgMarkup = \" \" + imgContent + \"\";\r\n $currentSlide.prepend(imgMarkup);\r\n };\r\n LightGallery.prototype.onSlideObjectLoad = function ($slide, isHTML5VideoWithoutPoster, onLoad, onError) {\r\n var mediaObject = $slide.find('.lg-object').first();\r\n if (utils.isImageLoaded(mediaObject.get()) ||\r\n isHTML5VideoWithoutPoster) {\r\n onLoad();\r\n }\r\n else {\r\n mediaObject.on('load.lg error.lg', function () {\r\n onLoad && onLoad();\r\n });\r\n mediaObject.on('error.lg', function () {\r\n onError && onError();\r\n });\r\n }\r\n };\r\n /**\r\n *\r\n * @param $el Current slide item\r\n * @param index\r\n * @param delay Delay is 0 except first time\r\n * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin\r\n * @param isFirstSlide\r\n */\r\n LightGallery.prototype.onLgObjectLoad = function (currentSlide, index, delay, speed, isFirstSlide, isHTML5VideoWithoutPoster) {\r\n var _this = this;\r\n this.onSlideObjectLoad(currentSlide, isHTML5VideoWithoutPoster, function () {\r\n _this.triggerSlideItemLoad(currentSlide, index, delay, speed, isFirstSlide);\r\n }, function () {\r\n currentSlide.addClass('lg-complete lg-complete_');\r\n currentSlide.html('' +\r\n _this.settings.strings['mediaLoadingFailed'] +\r\n '');\r\n });\r\n };\r\n LightGallery.prototype.triggerSlideItemLoad = function ($currentSlide, index, delay, speed, isFirstSlide) {\r\n var _this = this;\r\n var currentGalleryItem = this.galleryItems[index];\r\n // Adding delay for video slides without poster for better performance and user experience\r\n // Videos should start playing once once the gallery is completely loaded\r\n var _speed = isFirstSlide &&\r\n this.getSlideType(currentGalleryItem) === 'video' &&\r\n !currentGalleryItem.poster\r\n ? speed\r\n : 0;\r\n setTimeout(function () {\r\n $currentSlide.addClass('lg-complete lg-complete_');\r\n _this.LGel.trigger(lGEvents.slideItemLoad, {\r\n index: index,\r\n delay: delay || 0,\r\n isFirstSlide: isFirstSlide,\r\n });\r\n }, _speed);\r\n };\r\n LightGallery.prototype.isFirstSlideWithZoomAnimation = function () {\r\n return !!(!this.lGalleryOn &&\r\n this.zoomFromOrigin &&\r\n this.currentImageSize);\r\n };\r\n // Add video slideInfo\r\n LightGallery.prototype.addSlideVideoInfo = function (items) {\r\n var _this = this;\r\n items.forEach(function (element, index) {\r\n element.__slideVideoInfo = utils.isVideo(element.src, !!element.video, index);\r\n if (element.__slideVideoInfo &&\r\n _this.settings.loadYouTubePoster &&\r\n !element.poster &&\r\n element.__slideVideoInfo.youtube) {\r\n element.poster = \"//img.youtube.com/vi/\" + element.__slideVideoInfo.youtube[1] + \"/maxresdefault.jpg\";\r\n }\r\n });\r\n };\r\n /**\r\n * Load slide content into slide.\r\n * This is used to load content into slides that is not visible too\r\n * @param {Number} index - index of the slide.\r\n * @param {Boolean} rec - if true call loadcontent() function again.\r\n */\r\n LightGallery.prototype.loadContent = function (index, rec) {\r\n var _this = this;\r\n var currentGalleryItem = this.galleryItems[index];\r\n var $currentSlide = $LG(this.getSlideItemId(index));\r\n var poster = currentGalleryItem.poster, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;\r\n var src = currentGalleryItem.src;\r\n var video = currentGalleryItem.video;\r\n var _html5Video = video && typeof video === 'string' ? JSON.parse(video) : video;\r\n if (currentGalleryItem.responsive) {\r\n var srcDyItms = currentGalleryItem.responsive.split(',');\r\n src = utils.getResponsiveSrc(srcDyItms) || src;\r\n }\r\n var videoInfo = currentGalleryItem.__slideVideoInfo;\r\n var lgVideoStyle = '';\r\n var iframe = !!currentGalleryItem.iframe;\r\n var isFirstSlide = !this.lGalleryOn;\r\n // delay for adding complete class. it is 0 except first time.\r\n var delay = 0;\r\n if (isFirstSlide) {\r\n if (this.zoomFromOrigin && this.currentImageSize) {\r\n delay = this.settings.startAnimationDuration + 10;\r\n }\r\n else {\r\n delay = this.settings.backdropDuration + 10;\r\n }\r\n }\r\n if (!$currentSlide.hasClass('lg-loaded')) {\r\n if (videoInfo) {\r\n var _a = this.mediaContainerPosition, top_2 = _a.top, bottom = _a.bottom;\r\n var videoSize = utils.getSize(this.items[index], this.outer, top_2 + bottom, videoInfo && this.settings.videoMaxSize);\r\n lgVideoStyle = this.getVideoContStyle(videoSize);\r\n }\r\n if (iframe) {\r\n var markup = utils.getIframeMarkup(this.settings.iframeWidth, this.settings.iframeHeight, this.settings.iframeMaxWidth, this.settings.iframeMaxHeight, src, currentGalleryItem.iframeTitle);\r\n $currentSlide.prepend(markup);\r\n }\r\n else if (poster) {\r\n var dummyImg = '';\r\n var hasStartAnimation = isFirstSlide &&\r\n this.zoomFromOrigin &&\r\n this.currentImageSize;\r\n if (hasStartAnimation) {\r\n dummyImg = this.getDummyImageContent($currentSlide, index, '');\r\n }\r\n var markup = utils.getVideoPosterMarkup(poster, dummyImg || '', lgVideoStyle, this.settings.strings['playVideo'], videoInfo);\r\n $currentSlide.prepend(markup);\r\n }\r\n else if (videoInfo) {\r\n var markup = \"
    \";\r\n $currentSlide.prepend(markup);\r\n }\r\n else {\r\n this.setImgMarkup(src, $currentSlide, index);\r\n if (srcset || sources) {\r\n var $img = $currentSlide.find('.lg-object');\r\n this.initPictureFill($img);\r\n }\r\n }\r\n if (poster || videoInfo) {\r\n this.LGel.trigger(lGEvents.hasVideo, {\r\n index: index,\r\n src: src,\r\n html5Video: _html5Video,\r\n hasPoster: !!poster,\r\n });\r\n }\r\n this.LGel.trigger(lGEvents.afterAppendSlide, { index: index });\r\n if (this.lGalleryOn &&\r\n this.settings.appendSubHtmlTo === '.lg-item') {\r\n this.addHtml(index);\r\n }\r\n }\r\n // For first time add some delay for displaying the start animation.\r\n var _speed = 0;\r\n // Do not change the delay value because it is required for zoom plugin.\r\n // If gallery opened from direct url (hash) speed value should be 0\r\n if (delay && !$LG(document.body).hasClass('lg-from-hash')) {\r\n _speed = delay;\r\n }\r\n // Only for first slide and zoomFromOrigin is enabled\r\n if (this.isFirstSlideWithZoomAnimation()) {\r\n setTimeout(function () {\r\n $currentSlide\r\n .removeClass('lg-start-end-progress lg-start-progress')\r\n .removeAttr('style');\r\n }, this.settings.startAnimationDuration + 100);\r\n if (!$currentSlide.hasClass('lg-loaded')) {\r\n setTimeout(function () {\r\n if (_this.getSlideType(currentGalleryItem) === 'image') {\r\n var alt = currentGalleryItem.alt;\r\n var altAttr = alt ? 'alt=\"' + alt + '\"' : '';\r\n $currentSlide\r\n .find('.lg-img-wrap')\r\n .append(utils.getImgMarkup(index, src, altAttr, srcset, sizes, currentGalleryItem.sources));\r\n if (srcset || sources) {\r\n var $img = $currentSlide.find('.lg-object');\r\n _this.initPictureFill($img);\r\n }\r\n }\r\n if (_this.getSlideType(currentGalleryItem) === 'image' ||\r\n (_this.getSlideType(currentGalleryItem) === 'video' &&\r\n poster)) {\r\n _this.onLgObjectLoad($currentSlide, index, delay, _speed, true, false);\r\n // load remaining slides once the slide is completely loaded\r\n _this.onSlideObjectLoad($currentSlide, !!(videoInfo && videoInfo.html5 && !poster), function () {\r\n _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);\r\n }, function () {\r\n _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);\r\n });\r\n }\r\n }, this.settings.startAnimationDuration + 100);\r\n }\r\n }\r\n // SLide content has been added to dom\r\n $currentSlide.addClass('lg-loaded');\r\n if (!this.isFirstSlideWithZoomAnimation() ||\r\n (this.getSlideType(currentGalleryItem) === 'video' && !poster)) {\r\n this.onLgObjectLoad($currentSlide, index, delay, _speed, isFirstSlide, !!(videoInfo && videoInfo.html5 && !poster));\r\n }\r\n // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling\r\n if ((!this.zoomFromOrigin || !this.currentImageSize) &&\r\n $currentSlide.hasClass('lg-complete_') &&\r\n !this.lGalleryOn) {\r\n setTimeout(function () {\r\n $currentSlide.addClass('lg-complete');\r\n }, this.settings.backdropDuration);\r\n }\r\n // Content loaded\r\n // Need to set lGalleryOn before calling preload function\r\n this.lGalleryOn = true;\r\n if (rec === true) {\r\n if (!$currentSlide.hasClass('lg-complete_')) {\r\n $currentSlide\r\n .find('.lg-object')\r\n .first()\r\n .on('load.lg error.lg', function () {\r\n _this.preload(index);\r\n });\r\n }\r\n else {\r\n this.preload(index);\r\n }\r\n }\r\n };\r\n /**\r\n * @desc Remove dummy image content and load next slides\r\n * Called only for the first time if zoomFromOrigin animation is enabled\r\n * @param index\r\n * @param $currentSlide\r\n * @param speed\r\n */\r\n LightGallery.prototype.loadContentOnFirstSlideLoad = function (index, $currentSlide, speed) {\r\n var _this = this;\r\n setTimeout(function () {\r\n $currentSlide.find('.lg-dummy-img').remove();\r\n $currentSlide.removeClass('lg-first-slide');\r\n _this.outer.removeClass('lg-first-slide-loading');\r\n _this.isDummyImageRemoved = true;\r\n _this.preload(index);\r\n }, speed + 300);\r\n };\r\n LightGallery.prototype.getItemsToBeInsertedToDom = function (index, prevIndex, numberOfItems) {\r\n var _this = this;\r\n if (numberOfItems === void 0) { numberOfItems = 0; }\r\n var itemsToBeInsertedToDom = [];\r\n // Minimum 2 items should be there\r\n var possibleNumberOfItems = Math.max(numberOfItems, 3);\r\n possibleNumberOfItems = Math.min(possibleNumberOfItems, this.galleryItems.length);\r\n var prevIndexItem = \"lg-item-\" + this.lgId + \"-\" + prevIndex;\r\n if (this.galleryItems.length <= 3) {\r\n this.galleryItems.forEach(function (_element, index) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + _this.lgId + \"-\" + index);\r\n });\r\n return itemsToBeInsertedToDom;\r\n }\r\n if (index < (this.galleryItems.length - 1) / 2) {\r\n for (var idx = index; idx > index - possibleNumberOfItems / 2 && idx >= 0; idx--) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + idx);\r\n }\r\n var numberOfExistingItems = itemsToBeInsertedToDom.length;\r\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index + idx + 1));\r\n }\r\n }\r\n else {\r\n for (var idx = index; idx <= this.galleryItems.length - 1 &&\r\n idx < index + possibleNumberOfItems / 2; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + idx);\r\n }\r\n var numberOfExistingItems = itemsToBeInsertedToDom.length;\r\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index - idx - 1));\r\n }\r\n }\r\n if (this.settings.loop) {\r\n if (index === this.galleryItems.length - 1) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + 0);\r\n }\r\n else if (index === 0) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (this.galleryItems.length - 1));\r\n }\r\n }\r\n if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + prevIndex);\r\n }\r\n return itemsToBeInsertedToDom;\r\n };\r\n LightGallery.prototype.organizeSlideItems = function (index, prevIndex) {\r\n var _this = this;\r\n var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, prevIndex, this.settings.numberOfSlideItemsInDom);\r\n itemsToBeInsertedToDom.forEach(function (item) {\r\n if (_this.currentItemsInDom.indexOf(item) === -1) {\r\n _this.$inner.append(\"
    \");\r\n }\r\n });\r\n this.currentItemsInDom.forEach(function (item) {\r\n if (itemsToBeInsertedToDom.indexOf(item) === -1) {\r\n $LG(\"#\" + item).remove();\r\n }\r\n });\r\n return itemsToBeInsertedToDom;\r\n };\r\n /**\r\n * Get previous index of the slide\r\n */\r\n LightGallery.prototype.getPreviousSlideIndex = function () {\r\n var prevIndex = 0;\r\n try {\r\n var currentItemId = this.outer\r\n .find('.lg-current')\r\n .first()\r\n .attr('id');\r\n prevIndex = parseInt(currentItemId.split('-')[3]) || 0;\r\n }\r\n catch (error) {\r\n prevIndex = 0;\r\n }\r\n return prevIndex;\r\n };\r\n LightGallery.prototype.setDownloadValue = function (index) {\r\n if (this.settings.download) {\r\n var currentGalleryItem = this.galleryItems[index];\r\n var hideDownloadBtn = currentGalleryItem.downloadUrl === false ||\r\n currentGalleryItem.downloadUrl === 'false';\r\n if (hideDownloadBtn) {\r\n this.outer.addClass('lg-hide-download');\r\n }\r\n else {\r\n var $download = this.getElementById('lg-download');\r\n this.outer.removeClass('lg-hide-download');\r\n $download.attr('href', currentGalleryItem.downloadUrl ||\r\n currentGalleryItem.src);\r\n if (currentGalleryItem.download) {\r\n $download.attr('download', currentGalleryItem.download);\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.makeSlideAnimation = function (direction, currentSlideItem, previousSlideItem) {\r\n var _this = this;\r\n if (this.lGalleryOn) {\r\n previousSlideItem.addClass('lg-slide-progress');\r\n }\r\n setTimeout(function () {\r\n // remove all transitions\r\n _this.outer.addClass('lg-no-trans');\r\n _this.outer\r\n .find('.lg-item')\r\n .removeClass('lg-prev-slide lg-next-slide');\r\n if (direction === 'prev') {\r\n //prevslide\r\n currentSlideItem.addClass('lg-prev-slide');\r\n previousSlideItem.addClass('lg-next-slide');\r\n }\r\n else {\r\n // next slide\r\n currentSlideItem.addClass('lg-next-slide');\r\n previousSlideItem.addClass('lg-prev-slide');\r\n }\r\n // give 50 ms for browser to add/remove class\r\n setTimeout(function () {\r\n _this.outer.find('.lg-item').removeClass('lg-current');\r\n currentSlideItem.addClass('lg-current');\r\n // reset all transitions\r\n _this.outer.removeClass('lg-no-trans');\r\n }, 50);\r\n }, this.lGalleryOn ? this.settings.slideDelay : 0);\r\n };\r\n /**\r\n * Goto a specific slide.\r\n * @param {Number} index - index of the slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\r\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\r\n * @param {String} direction - Direction of the slide(next/prev)\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * // to go to 3rd slide\r\n * plugin.slide(2);\r\n *\r\n */\r\n LightGallery.prototype.slide = function (index, fromTouch, fromThumb, direction) {\r\n var _this = this;\r\n var prevIndex = this.getPreviousSlideIndex();\r\n this.currentItemsInDom = this.organizeSlideItems(index, prevIndex);\r\n // Prevent multiple call, Required for hsh plugin\r\n if (this.lGalleryOn && prevIndex === index) {\r\n return;\r\n }\r\n var numberOfGalleryItems = this.galleryItems.length;\r\n if (!this.lgBusy) {\r\n if (this.settings.counter) {\r\n this.updateCurrentCounter(index);\r\n }\r\n var currentSlideItem = this.getSlideItem(index);\r\n var previousSlideItem_1 = this.getSlideItem(prevIndex);\r\n var currentGalleryItem = this.galleryItems[index];\r\n var videoInfo = currentGalleryItem.__slideVideoInfo;\r\n this.outer.attr('data-lg-slide-type', this.getSlideType(currentGalleryItem));\r\n this.setDownloadValue(index);\r\n if (videoInfo) {\r\n var _a = this.mediaContainerPosition, top_3 = _a.top, bottom = _a.bottom;\r\n var videoSize = utils.getSize(this.items[index], this.outer, top_3 + bottom, videoInfo && this.settings.videoMaxSize);\r\n this.resizeVideoSlide(index, videoSize);\r\n }\r\n this.LGel.trigger(lGEvents.beforeSlide, {\r\n prevIndex: prevIndex,\r\n index: index,\r\n fromTouch: !!fromTouch,\r\n fromThumb: !!fromThumb,\r\n });\r\n this.lgBusy = true;\r\n clearTimeout(this.hideBarTimeout);\r\n this.arrowDisable(index);\r\n if (!direction) {\r\n if (index < prevIndex) {\r\n direction = 'prev';\r\n }\r\n else if (index > prevIndex) {\r\n direction = 'next';\r\n }\r\n }\r\n if (!fromTouch) {\r\n this.makeSlideAnimation(direction, currentSlideItem, previousSlideItem_1);\r\n }\r\n else {\r\n this.outer\r\n .find('.lg-item')\r\n .removeClass('lg-prev-slide lg-current lg-next-slide');\r\n var touchPrev = void 0;\r\n var touchNext = void 0;\r\n if (numberOfGalleryItems > 2) {\r\n touchPrev = index - 1;\r\n touchNext = index + 1;\r\n if (index === 0 && prevIndex === numberOfGalleryItems - 1) {\r\n // next slide\r\n touchNext = 0;\r\n touchPrev = numberOfGalleryItems - 1;\r\n }\r\n else if (index === numberOfGalleryItems - 1 &&\r\n prevIndex === 0) {\r\n // prev slide\r\n touchNext = 0;\r\n touchPrev = numberOfGalleryItems - 1;\r\n }\r\n }\r\n else {\r\n touchPrev = 0;\r\n touchNext = 1;\r\n }\r\n if (direction === 'prev') {\r\n this.getSlideItem(touchNext).addClass('lg-next-slide');\r\n }\r\n else {\r\n this.getSlideItem(touchPrev).addClass('lg-prev-slide');\r\n }\r\n currentSlideItem.addClass('lg-current');\r\n }\r\n // Do not put load content in set timeout as it needs to load immediately when the gallery is opened\r\n if (!this.lGalleryOn) {\r\n this.loadContent(index, true);\r\n }\r\n else {\r\n setTimeout(function () {\r\n _this.loadContent(index, true);\r\n // Add title if this.settings.appendSubHtmlTo === lg-sub-html\r\n if (_this.settings.appendSubHtmlTo !== '.lg-item') {\r\n _this.addHtml(index);\r\n }\r\n }, this.settings.speed + 50 + (fromTouch ? 0 : this.settings.slideDelay));\r\n }\r\n setTimeout(function () {\r\n _this.lgBusy = false;\r\n previousSlideItem_1.removeClass('lg-slide-progress');\r\n _this.LGel.trigger(lGEvents.afterSlide, {\r\n prevIndex: prevIndex,\r\n index: index,\r\n fromTouch: fromTouch,\r\n fromThumb: fromThumb,\r\n });\r\n }, (this.lGalleryOn ? this.settings.speed + 100 : 100) + (fromTouch ? 0 : this.settings.slideDelay));\r\n }\r\n this.index = index;\r\n };\r\n LightGallery.prototype.updateCurrentCounter = function (index) {\r\n this.getElementById('lg-counter-current').html(index + 1 + '');\r\n };\r\n LightGallery.prototype.updateCounterTotal = function () {\r\n this.getElementById('lg-counter-all').html(this.galleryItems.length + '');\r\n };\r\n LightGallery.prototype.getSlideType = function (item) {\r\n if (item.__slideVideoInfo) {\r\n return 'video';\r\n }\r\n else if (item.iframe) {\r\n return 'iframe';\r\n }\r\n else {\r\n return 'image';\r\n }\r\n };\r\n LightGallery.prototype.touchMove = function (startCoords, endCoords, e) {\r\n var distanceX = endCoords.pageX - startCoords.pageX;\r\n var distanceY = endCoords.pageY - startCoords.pageY;\r\n var allowSwipe = false;\r\n if (this.swipeDirection) {\r\n allowSwipe = true;\r\n }\r\n else {\r\n if (Math.abs(distanceX) > 15) {\r\n this.swipeDirection = 'horizontal';\r\n allowSwipe = true;\r\n }\r\n else if (Math.abs(distanceY) > 15) {\r\n this.swipeDirection = 'vertical';\r\n allowSwipe = true;\r\n }\r\n }\r\n if (!allowSwipe) {\r\n return;\r\n }\r\n var $currentSlide = this.getSlideItem(this.index);\r\n if (this.swipeDirection === 'horizontal') {\r\n e === null || e === void 0 ? void 0 : e.preventDefault();\r\n // reset opacity and transition duration\r\n this.outer.addClass('lg-dragging');\r\n // move current slide\r\n this.setTranslate($currentSlide, distanceX, 0);\r\n // move next and prev slide with current slide\r\n var width = $currentSlide.get().offsetWidth;\r\n var slideWidthAmount = (width * 15) / 100;\r\n var gutter = slideWidthAmount - Math.abs((distanceX * 10) / 100);\r\n this.setTranslate(this.outer.find('.lg-prev-slide').first(), -width + distanceX - gutter, 0);\r\n this.setTranslate(this.outer.find('.lg-next-slide').first(), width + distanceX + gutter, 0);\r\n }\r\n else if (this.swipeDirection === 'vertical') {\r\n if (this.settings.swipeToClose) {\r\n e === null || e === void 0 ? void 0 : e.preventDefault();\r\n this.$container.addClass('lg-dragging-vertical');\r\n var opacity = 1 - Math.abs(distanceY) / window.innerHeight;\r\n this.$backdrop.css('opacity', opacity);\r\n var scale = 1 - Math.abs(distanceY) / (window.innerWidth * 2);\r\n this.setTranslate($currentSlide, 0, distanceY, scale, scale);\r\n if (Math.abs(distanceY) > 100) {\r\n this.outer\r\n .addClass('lg-hide-items')\r\n .removeClass('lg-components-open');\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.touchEnd = function (endCoords, startCoords, event) {\r\n var _this = this;\r\n var distance;\r\n // keep slide animation for any mode while dragg/swipe\r\n if (this.settings.mode !== 'lg-slide') {\r\n this.outer.addClass('lg-slide');\r\n }\r\n // set transition duration\r\n setTimeout(function () {\r\n _this.$container.removeClass('lg-dragging-vertical');\r\n _this.outer\r\n .removeClass('lg-dragging lg-hide-items')\r\n .addClass('lg-components-open');\r\n var triggerClick = true;\r\n if (_this.swipeDirection === 'horizontal') {\r\n distance = endCoords.pageX - startCoords.pageX;\r\n var distanceAbs = Math.abs(endCoords.pageX - startCoords.pageX);\r\n if (distance < 0 &&\r\n distanceAbs > _this.settings.swipeThreshold) {\r\n _this.goToNextSlide(true);\r\n triggerClick = false;\r\n }\r\n else if (distance > 0 &&\r\n distanceAbs > _this.settings.swipeThreshold) {\r\n _this.goToPrevSlide(true);\r\n triggerClick = false;\r\n }\r\n }\r\n else if (_this.swipeDirection === 'vertical') {\r\n distance = Math.abs(endCoords.pageY - startCoords.pageY);\r\n if (_this.settings.closable &&\r\n _this.settings.swipeToClose &&\r\n distance > 100) {\r\n _this.closeGallery();\r\n return;\r\n }\r\n else {\r\n _this.$backdrop.css('opacity', 1);\r\n }\r\n }\r\n _this.outer.find('.lg-item').removeAttr('style');\r\n if (triggerClick &&\r\n Math.abs(endCoords.pageX - startCoords.pageX) < 5) {\r\n // Trigger click if distance is less than 5 pix\r\n var target = $LG(event.target);\r\n if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n }\r\n _this.swipeDirection = undefined;\r\n });\r\n // remove slide class once drag/swipe is completed if mode is not slide\r\n setTimeout(function () {\r\n if (!_this.outer.hasClass('lg-dragging') &&\r\n _this.settings.mode !== 'lg-slide') {\r\n _this.outer.removeClass('lg-slide');\r\n }\r\n }, this.settings.speed + 100);\r\n };\r\n LightGallery.prototype.enableSwipe = function () {\r\n var _this = this;\r\n var startCoords = {};\r\n var endCoords = {};\r\n var isMoved = false;\r\n var isSwiping = false;\r\n if (this.settings.enableSwipe) {\r\n this.$inner.on('touchstart.lg', function (e) {\r\n _this.dragOrSwipeEnabled = true;\r\n var $item = _this.getSlideItem(_this.index);\r\n if (($LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target)) &&\r\n !_this.outer.hasClass('lg-zoomed') &&\r\n !_this.lgBusy &&\r\n e.touches.length === 1) {\r\n isSwiping = true;\r\n _this.touchAction = 'swipe';\r\n _this.manageSwipeClass();\r\n startCoords = {\r\n pageX: e.touches[0].pageX,\r\n pageY: e.touches[0].pageY,\r\n };\r\n }\r\n });\r\n this.$inner.on('touchmove.lg', function (e) {\r\n if (isSwiping &&\r\n _this.touchAction === 'swipe' &&\r\n e.touches.length === 1) {\r\n endCoords = {\r\n pageX: e.touches[0].pageX,\r\n pageY: e.touches[0].pageY,\r\n };\r\n _this.touchMove(startCoords, endCoords, e);\r\n isMoved = true;\r\n }\r\n });\r\n this.$inner.on('touchend.lg', function (event) {\r\n if (_this.touchAction === 'swipe') {\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords, startCoords, event);\r\n }\r\n else if (isSwiping) {\r\n var target = $LG(event.target);\r\n if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n }\r\n _this.touchAction = undefined;\r\n isSwiping = false;\r\n }\r\n });\r\n }\r\n };\r\n LightGallery.prototype.enableDrag = function () {\r\n var _this = this;\r\n var startCoords = {};\r\n var endCoords = {};\r\n var isDraging = false;\r\n var isMoved = false;\r\n if (this.settings.enableDrag) {\r\n this.outer.on('mousedown.lg', function (e) {\r\n _this.dragOrSwipeEnabled = true;\r\n var $item = _this.getSlideItem(_this.index);\r\n if ($LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target)) {\r\n if (!_this.outer.hasClass('lg-zoomed') && !_this.lgBusy) {\r\n e.preventDefault();\r\n if (!_this.lgBusy) {\r\n _this.manageSwipeClass();\r\n startCoords = {\r\n pageX: e.pageX,\r\n pageY: e.pageY,\r\n };\r\n isDraging = true;\r\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\r\n _this.outer.get().scrollLeft += 1;\r\n _this.outer.get().scrollLeft -= 1;\r\n // *\r\n _this.outer\r\n .removeClass('lg-grab')\r\n .addClass('lg-grabbing');\r\n _this.LGel.trigger(lGEvents.dragStart);\r\n }\r\n }\r\n }\r\n });\r\n $LG(window).on(\"mousemove.lg.global\" + this.lgId, function (e) {\r\n if (isDraging && _this.lgOpened) {\r\n isMoved = true;\r\n endCoords = {\r\n pageX: e.pageX,\r\n pageY: e.pageY,\r\n };\r\n _this.touchMove(startCoords, endCoords);\r\n _this.LGel.trigger(lGEvents.dragMove);\r\n }\r\n });\r\n $LG(window).on(\"mouseup.lg.global\" + this.lgId, function (event) {\r\n if (!_this.lgOpened) {\r\n return;\r\n }\r\n var target = $LG(event.target);\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords, startCoords, event);\r\n _this.LGel.trigger(lGEvents.dragEnd);\r\n }\r\n else if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n // Prevent execution on click\r\n if (isDraging) {\r\n isDraging = false;\r\n _this.outer.removeClass('lg-grabbing').addClass('lg-grab');\r\n }\r\n });\r\n }\r\n };\r\n LightGallery.prototype.triggerPosterClick = function () {\r\n var _this = this;\r\n this.$inner.on('click.lg', function (event) {\r\n if (!_this.dragOrSwipeEnabled &&\r\n _this.isPosterElement($LG(event.target))) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n });\r\n };\r\n LightGallery.prototype.manageSwipeClass = function () {\r\n var _touchNext = this.index + 1;\r\n var _touchPrev = this.index - 1;\r\n if (this.settings.loop && this.galleryItems.length > 2) {\r\n if (this.index === 0) {\r\n _touchPrev = this.galleryItems.length - 1;\r\n }\r\n else if (this.index === this.galleryItems.length - 1) {\r\n _touchNext = 0;\r\n }\r\n }\r\n this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide');\r\n if (_touchPrev > -1) {\r\n this.getSlideItem(_touchPrev).addClass('lg-prev-slide');\r\n }\r\n this.getSlideItem(_touchNext).addClass('lg-next-slide');\r\n };\r\n /**\r\n * Go to next slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.goToNextSlide();\r\n * @see Demo\r\n */\r\n LightGallery.prototype.goToNextSlide = function (fromTouch) {\r\n var _this = this;\r\n var _loop = this.settings.loop;\r\n if (fromTouch && this.galleryItems.length < 3) {\r\n _loop = false;\r\n }\r\n if (!this.lgBusy) {\r\n if (this.index + 1 < this.galleryItems.length) {\r\n this.index++;\r\n this.LGel.trigger(lGEvents.beforeNextSlide, {\r\n index: this.index,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'next');\r\n }\r\n else {\r\n if (_loop) {\r\n this.index = 0;\r\n this.LGel.trigger(lGEvents.beforeNextSlide, {\r\n index: this.index,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'next');\r\n }\r\n else if (this.settings.slideEndAnimation && !fromTouch) {\r\n this.outer.addClass('lg-right-end');\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-right-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Go to previous slides\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery({});\r\n * plugin.goToPrevSlide();\r\n * @see Demo\r\n *\r\n */\r\n LightGallery.prototype.goToPrevSlide = function (fromTouch) {\r\n var _this = this;\r\n var _loop = this.settings.loop;\r\n if (fromTouch && this.galleryItems.length < 3) {\r\n _loop = false;\r\n }\r\n if (!this.lgBusy) {\r\n if (this.index > 0) {\r\n this.index--;\r\n this.LGel.trigger(lGEvents.beforePrevSlide, {\r\n index: this.index,\r\n fromTouch: fromTouch,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'prev');\r\n }\r\n else {\r\n if (_loop) {\r\n this.index = this.galleryItems.length - 1;\r\n this.LGel.trigger(lGEvents.beforePrevSlide, {\r\n index: this.index,\r\n fromTouch: fromTouch,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'prev');\r\n }\r\n else if (this.settings.slideEndAnimation && !fromTouch) {\r\n this.outer.addClass('lg-left-end');\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-left-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.keyPress = function () {\r\n var _this = this;\r\n $LG(window).on(\"keydown.lg.global\" + this.lgId, function (e) {\r\n if (_this.lgOpened &&\r\n _this.settings.escKey === true &&\r\n e.keyCode === 27) {\r\n e.preventDefault();\r\n if (_this.settings.allowMediaOverlap &&\r\n _this.outer.hasClass('lg-can-toggle') &&\r\n _this.outer.hasClass('lg-components-open')) {\r\n _this.outer.removeClass('lg-components-open');\r\n }\r\n else {\r\n _this.closeGallery();\r\n }\r\n }\r\n if (_this.lgOpened && _this.galleryItems.length > 1) {\r\n if (e.keyCode === 37) {\r\n e.preventDefault();\r\n _this.goToPrevSlide();\r\n }\r\n if (e.keyCode === 39) {\r\n e.preventDefault();\r\n _this.goToNextSlide();\r\n }\r\n }\r\n });\r\n };\r\n LightGallery.prototype.arrow = function () {\r\n var _this = this;\r\n this.getElementById('lg-prev').on('click.lg', function () {\r\n _this.goToPrevSlide();\r\n });\r\n this.getElementById('lg-next').on('click.lg', function () {\r\n _this.goToNextSlide();\r\n });\r\n };\r\n LightGallery.prototype.arrowDisable = function (index) {\r\n // Disable arrows if settings.hideControlOnEnd is true\r\n if (!this.settings.loop && this.settings.hideControlOnEnd) {\r\n var $prev = this.getElementById('lg-prev');\r\n var $next = this.getElementById('lg-next');\r\n if (index + 1 === this.galleryItems.length) {\r\n $next.attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n else {\r\n $next.removeAttr('disabled').removeClass('disabled');\r\n }\r\n if (index === 0) {\r\n $prev.attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n else {\r\n $prev.removeAttr('disabled').removeClass('disabled');\r\n }\r\n }\r\n };\r\n LightGallery.prototype.setTranslate = function ($el, xValue, yValue, scaleX, scaleY) {\r\n if (scaleX === void 0) { scaleX = 1; }\r\n if (scaleY === void 0) { scaleY = 1; }\r\n $el.css('transform', 'translate3d(' +\r\n xValue +\r\n 'px, ' +\r\n yValue +\r\n 'px, 0px) scale3d(' +\r\n scaleX +\r\n ', ' +\r\n scaleY +\r\n ', 1)');\r\n };\r\n LightGallery.prototype.mousewheel = function () {\r\n var _this = this;\r\n var lastCall = 0;\r\n this.outer.on('wheel.lg', function (e) {\r\n if (!e.deltaY || _this.galleryItems.length < 2) {\r\n return;\r\n }\r\n e.preventDefault();\r\n var now = new Date().getTime();\r\n if (now - lastCall < 1000) {\r\n return;\r\n }\r\n lastCall = now;\r\n if (e.deltaY > 0) {\r\n _this.goToNextSlide();\r\n }\r\n else if (e.deltaY < 0) {\r\n _this.goToPrevSlide();\r\n }\r\n });\r\n };\r\n LightGallery.prototype.isSlideElement = function (target) {\r\n return (target.hasClass('lg-outer') ||\r\n target.hasClass('lg-item') ||\r\n target.hasClass('lg-img-wrap'));\r\n };\r\n LightGallery.prototype.isPosterElement = function (target) {\r\n var playButton = this.getSlideItem(this.index)\r\n .find('.lg-video-play-button')\r\n .get();\r\n return (target.hasClass('lg-video-poster') ||\r\n target.hasClass('lg-video-play-button') ||\r\n (playButton && playButton.contains(target.get())));\r\n };\r\n /**\r\n * Maximize minimize inline gallery.\r\n * @category lGPublicMethods\r\n */\r\n LightGallery.prototype.toggleMaximize = function () {\r\n var _this = this;\r\n this.getElementById('lg-maximize').on('click.lg', function () {\r\n _this.$container.toggleClass('lg-inline');\r\n _this.refreshOnResize();\r\n });\r\n };\r\n LightGallery.prototype.invalidateItems = function () {\r\n for (var index = 0; index < this.items.length; index++) {\r\n var element = this.items[index];\r\n var $element = $LG(element);\r\n $element.off(\"click.lgcustom-item-\" + $element.attr('data-lg-id'));\r\n }\r\n };\r\n LightGallery.prototype.trapFocus = function () {\r\n var _this = this;\r\n this.$container.get().focus({\r\n preventScroll: true,\r\n });\r\n $LG(window).on(\"keydown.lg.global\" + this.lgId, function (e) {\r\n if (!_this.lgOpened) {\r\n return;\r\n }\r\n var isTabPressed = e.key === 'Tab' || e.keyCode === 9;\r\n if (!isTabPressed) {\r\n return;\r\n }\r\n var focusableEls = utils.getFocusableElements(_this.$container.get());\r\n var firstFocusableEl = focusableEls[0];\r\n var lastFocusableEl = focusableEls[focusableEls.length - 1];\r\n if (e.shiftKey) {\r\n if (document.activeElement === firstFocusableEl) {\r\n lastFocusableEl.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n else {\r\n if (document.activeElement === lastFocusableEl) {\r\n firstFocusableEl.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n };\r\n LightGallery.prototype.manageCloseGallery = function () {\r\n var _this = this;\r\n if (!this.settings.closable)\r\n return;\r\n var mousedown = false;\r\n this.getElementById('lg-close').on('click.lg', function () {\r\n _this.closeGallery();\r\n });\r\n if (this.settings.closeOnTap) {\r\n // If you drag the slide and release outside gallery gets close on chrome\r\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\r\n this.outer.on('mousedown.lg', function (e) {\r\n var target = $LG(e.target);\r\n if (_this.isSlideElement(target)) {\r\n mousedown = true;\r\n }\r\n else {\r\n mousedown = false;\r\n }\r\n });\r\n this.outer.on('mousemove.lg', function () {\r\n mousedown = false;\r\n });\r\n this.outer.on('mouseup.lg', function (e) {\r\n var target = $LG(e.target);\r\n if (_this.isSlideElement(target) && mousedown) {\r\n if (!_this.outer.hasClass('lg-dragging')) {\r\n _this.closeGallery();\r\n }\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Close lightGallery if it is opened.\r\n *\r\n * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery\r\n * @return returns the estimated time to close gallery completely including the close animation duration\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.closeGallery();\r\n *\r\n */\r\n LightGallery.prototype.closeGallery = function (force) {\r\n var _this = this;\r\n if (!this.lgOpened || (!this.settings.closable && !force)) {\r\n return 0;\r\n }\r\n this.LGel.trigger(lGEvents.beforeClose);\r\n if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) {\r\n $LG(window).scrollTop(this.prevScrollTop);\r\n }\r\n var currentItem = this.items[this.index];\r\n var transform;\r\n if (this.zoomFromOrigin && currentItem) {\r\n var _a = this.mediaContainerPosition, top_4 = _a.top, bottom = _a.bottom;\r\n var _b = this.galleryItems[this.index], __slideVideoInfo = _b.__slideVideoInfo, poster = _b.poster;\r\n var imageSize = utils.getSize(currentItem, this.outer, top_4 + bottom, __slideVideoInfo && poster && this.settings.videoMaxSize);\r\n transform = utils.getTransform(currentItem, this.outer, top_4, bottom, imageSize);\r\n }\r\n if (this.zoomFromOrigin && transform) {\r\n this.outer.addClass('lg-closing lg-zoom-from-image');\r\n this.getSlideItem(this.index)\r\n .addClass('lg-start-end-progress')\r\n .css('transition-duration', this.settings.startAnimationDuration + 'ms')\r\n .css('transform', transform);\r\n }\r\n else {\r\n this.outer.addClass('lg-hide-items');\r\n // lg-zoom-from-image is used for setting the opacity to 1 if zoomFromOrigin is true\r\n // If the closing item doesn't have the lg-size attribute, remove this class to avoid the closing css conflicts\r\n this.outer.removeClass('lg-zoom-from-image');\r\n }\r\n // Unbind all events added by lightGallery\r\n // @todo\r\n //this.$el.off('.lg.tm');\r\n this.destroyModules();\r\n this.lGalleryOn = false;\r\n this.isDummyImageRemoved = false;\r\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\r\n clearTimeout(this.hideBarTimeout);\r\n this.hideBarTimeout = false;\r\n $LG('html').removeClass('lg-on');\r\n this.outer.removeClass('lg-visible lg-components-open');\r\n // Resetting opacity to 0 isd required as vertical swipe to close function adds inline opacity.\r\n this.$backdrop.removeClass('in').css('opacity', 0);\r\n var removeTimeout = this.zoomFromOrigin && transform\r\n ? Math.max(this.settings.startAnimationDuration, this.settings.backdropDuration)\r\n : this.settings.backdropDuration;\r\n this.$container.removeClass('lg-show-in');\r\n // Once the closign animation is completed and gallery is invisible\r\n setTimeout(function () {\r\n if (_this.zoomFromOrigin && transform) {\r\n _this.outer.removeClass('lg-zoom-from-image');\r\n }\r\n _this.$container.removeClass('lg-show');\r\n // Reset scrollbar\r\n _this.resetScrollBar();\r\n // Need to remove inline opacity as it is used in the stylesheet as well\r\n _this.$backdrop\r\n .removeAttr('style')\r\n .css('transition-duration', _this.settings.backdropDuration + 'ms');\r\n _this.outer.removeClass(\"lg-closing \" + _this.settings.startClass);\r\n _this.getSlideItem(_this.index).removeClass('lg-start-end-progress');\r\n _this.$inner.empty();\r\n if (_this.lgOpened) {\r\n _this.LGel.trigger(lGEvents.afterClose, {\r\n instance: _this,\r\n });\r\n }\r\n if (_this.$container.get()) {\r\n _this.$container.get().blur();\r\n }\r\n _this.lgOpened = false;\r\n }, removeTimeout + 100);\r\n return removeTimeout + 100;\r\n };\r\n LightGallery.prototype.initModules = function () {\r\n this.plugins.forEach(function (module) {\r\n try {\r\n module.init();\r\n }\r\n catch (err) {\r\n console.warn(\"lightGallery:- make sure lightGallery module is properly initiated\");\r\n }\r\n });\r\n };\r\n LightGallery.prototype.destroyModules = function (destroy) {\r\n this.plugins.forEach(function (module) {\r\n try {\r\n if (destroy) {\r\n module.destroy();\r\n }\r\n else {\r\n module.closeGallery && module.closeGallery();\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"lightGallery:- make sure lightGallery module is properly destroyed\");\r\n }\r\n });\r\n };\r\n /**\r\n * Refresh lightGallery with new set of children.\r\n *\r\n * @description This is useful to update the gallery when the child elements are changed without calling destroy method.\r\n *\r\n * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery\r\n * @see Demo\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * // Delete or add children, then call\r\n * plugin.refresh();\r\n *\r\n */\r\n LightGallery.prototype.refresh = function (galleryItems) {\r\n if (!this.settings.dynamic) {\r\n this.invalidateItems();\r\n }\r\n if (galleryItems) {\r\n this.galleryItems = galleryItems;\r\n }\r\n else {\r\n this.galleryItems = this.getItems();\r\n }\r\n this.updateControls();\r\n this.openGalleryOnItemClick();\r\n this.LGel.trigger(lGEvents.updateSlides);\r\n };\r\n LightGallery.prototype.updateControls = function () {\r\n this.addSlideVideoInfo(this.galleryItems);\r\n this.updateCounterTotal();\r\n this.manageSingleSlideClassName();\r\n };\r\n LightGallery.prototype.destroyGallery = function () {\r\n this.destroyModules(true);\r\n if (!this.settings.dynamic) {\r\n this.invalidateItems();\r\n }\r\n $LG(window).off(\".lg.global\" + this.lgId);\r\n this.LGel.off('.lg');\r\n this.$container.remove();\r\n };\r\n /**\r\n * Destroy lightGallery.\r\n * Destroy lightGallery and its plugin instances completely\r\n *\r\n * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance.\r\n * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed.\r\n * You can use refresh method most of the times.\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.destroy();\r\n *\r\n */\r\n LightGallery.prototype.destroy = function () {\r\n var closeTimeout = this.closeGallery(true);\r\n if (closeTimeout) {\r\n setTimeout(this.destroyGallery.bind(this), closeTimeout);\r\n }\r\n else {\r\n this.destroyGallery();\r\n }\r\n return closeTimeout;\r\n };\r\n return LightGallery;\r\n}());\n\nfunction lightGallery(el, options) {\r\n return new LightGallery(el, options);\r\n}\n\nexport default lightGallery;\n","import * as i0 from '@angular/core';\nimport { Injectable, Component, Input, NgModule } from '@angular/core';\nimport lightGallery from 'lightgallery';\n\nclass LightgalleryService {\n constructor() { }\n}\nLightgalleryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LightgalleryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLightgalleryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LightgalleryService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LightgalleryService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: function () { return []; } });\n\nconst LgMethods = {\n onAfterAppendSlide: 'lgAfterAppendSlide',\n onInit: 'lgInit',\n onHasVideo: 'lgHasVideo',\n onContainerResize: 'lgContainerResize',\n onUpdateSlides: 'lgUpdateSlides',\n onAfterAppendSubHtml: 'lgAfterAppendSubHtml',\n onBeforeOpen: 'lgBeforeOpen',\n onAfterOpen: 'lgAfterOpen',\n onSlideItemLoad: 'lgSlideItemLoad',\n onBeforeSlide: 'lgBeforeSlide',\n onAfterSlide: 'lgAfterSlide',\n onPosterClick: 'lgPosterClick',\n onDragStart: 'lgDragStart',\n onDragMove: 'lgDragMove',\n onDragEnd: 'lgDragEnd',\n onBeforeNextSlide: 'lgBeforeNextSlide',\n onBeforePrevSlide: 'lgBeforePrevSlide',\n onBeforeClose: 'lgBeforeClose',\n onAfterClose: 'lgAfterClose',\n onRotateLeft: 'lgRotateLeft',\n onRotateRight: 'lgRotateRight',\n onFlipHorizontal: 'lgFlipHorizontal',\n onFlipVertical: 'lgFlipVertical',\n};\nclass LightgalleryComponent {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n this.lgInitialized = false;\n this._elementRef = _elementRef;\n }\n ngAfterViewChecked() {\n if (!this.lgInitialized) {\n this.registerEvents();\n this.LG = lightGallery(this._elementRef.nativeElement, this.settings);\n this.lgInitialized = true;\n }\n }\n ngOnDestroy() {\n this.LG.destroy();\n this.lgInitialized = false;\n }\n registerEvents() {\n if (this.onAfterAppendSlide) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onAfterAppendSlide, ((event) => {\n this.onAfterAppendSlide &&\n this.onAfterAppendSlide(event.detail);\n }));\n }\n if (this.onInit) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onInit, ((event) => {\n this.onInit && this.onInit(event.detail);\n }));\n }\n if (this.onHasVideo) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onHasVideo, ((event) => {\n this.onHasVideo && this.onHasVideo(event.detail);\n }));\n }\n if (this.onContainerResize) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onContainerResize, ((event) => {\n this.onContainerResize &&\n this.onContainerResize(event.detail);\n }));\n }\n if (this.onAfterAppendSubHtml) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onAfterAppendSubHtml, ((event) => {\n this.onAfterAppendSubHtml &&\n this.onAfterAppendSubHtml(event.detail);\n }));\n }\n if (this.onBeforeOpen) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onBeforeOpen, ((event) => {\n this.onBeforeOpen && this.onBeforeOpen(event.detail);\n }));\n }\n if (this.onAfterOpen) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onAfterOpen, ((event) => {\n this.onAfterOpen && this.onAfterOpen(event.detail);\n }));\n }\n if (this.onSlideItemLoad) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onSlideItemLoad, ((event) => {\n this.onSlideItemLoad && this.onSlideItemLoad(event.detail);\n }));\n }\n if (this.onBeforeSlide) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onBeforeSlide, ((event) => {\n this.onBeforeSlide && this.onBeforeSlide(event.detail);\n }));\n }\n if (this.onAfterSlide) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onAfterSlide, ((event) => {\n this.onAfterSlide && this.onAfterSlide(event.detail);\n }));\n }\n if (this.onPosterClick) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onPosterClick, ((event) => {\n this.onPosterClick && this.onPosterClick(event.detail);\n }));\n }\n if (this.onDragStart) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onDragStart, ((event) => {\n this.onDragStart && this.onDragStart(event.detail);\n }));\n }\n if (this.onDragMove) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onDragMove, ((event) => {\n this.onDragMove && this.onDragMove(event.detail);\n }));\n }\n if (this.onDragEnd) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onDragEnd, ((event) => {\n this.onDragEnd && this.onDragEnd(event.detail);\n }));\n }\n if (this.onBeforeNextSlide) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onBeforeNextSlide, ((event) => {\n this.onBeforeNextSlide &&\n this.onBeforeNextSlide(event.detail);\n }));\n }\n if (this.onBeforePrevSlide) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onBeforePrevSlide, ((event) => {\n this.onBeforePrevSlide &&\n this.onBeforePrevSlide(event.detail);\n }));\n }\n if (this.onBeforeClose) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onBeforeClose, ((event) => {\n this.onBeforeClose && this.onBeforeClose(event.detail);\n }));\n }\n if (this.onAfterClose) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onAfterClose, ((event) => {\n this.onAfterClose && this.onAfterClose(event.detail);\n }));\n }\n if (this.onRotateLeft) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onRotateLeft, ((event) => {\n this.onRotateLeft && this.onRotateLeft(event.detail);\n }));\n }\n if (this.onRotateRight) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onRotateRight, ((event) => {\n this.onRotateRight && this.onRotateRight(event.detail);\n }));\n }\n if (this.onFlipHorizontal) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onFlipHorizontal, ((event) => {\n this.onFlipHorizontal &&\n this.onFlipHorizontal(event.detail);\n }));\n }\n if (this.onFlipVertical) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onFlipVertical, ((event) => {\n this.onFlipVertical && this.onFlipVertical(event.detail);\n }));\n }\n }\n}\nLightgalleryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LightgalleryComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nLightgalleryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.11\", type: LightgalleryComponent, selector: \"lightgallery\", inputs: { settings: \"settings\", onAfterAppendSlide: \"onAfterAppendSlide\", onInit: \"onInit\", onHasVideo: \"onHasVideo\", onContainerResize: \"onContainerResize\", onAfterAppendSubHtml: \"onAfterAppendSubHtml\", onBeforeOpen: \"onBeforeOpen\", onAfterOpen: \"onAfterOpen\", onSlideItemLoad: \"onSlideItemLoad\", onBeforeSlide: \"onBeforeSlide\", onAfterSlide: \"onAfterSlide\", onPosterClick: \"onPosterClick\", onDragStart: \"onDragStart\", onDragMove: \"onDragMove\", onDragEnd: \"onDragEnd\", onBeforeNextSlide: \"onBeforeNextSlide\", onBeforePrevSlide: \"onBeforePrevSlide\", onBeforeClose: \"onBeforeClose\", onAfterClose: \"onAfterClose\", onRotateLeft: \"onRotateLeft\", onRotateRight: \"onRotateRight\", onFlipHorizontal: \"onFlipHorizontal\", onFlipVertical: \"onFlipVertical\" }, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LightgalleryComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'lightgallery',\n template: '',\n styles: [],\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { settings: [{\n type: Input\n }], onAfterAppendSlide: [{\n type: Input\n }], onInit: [{\n type: Input\n }], onHasVideo: [{\n type: Input\n }], onContainerResize: [{\n type: Input\n }], onAfterAppendSubHtml: [{\n type: Input\n }], onBeforeOpen: [{\n type: Input\n }], onAfterOpen: [{\n type: Input\n }], onSlideItemLoad: [{\n type: Input\n }], onBeforeSlide: [{\n type: Input\n }], onAfterSlide: [{\n type: Input\n }], onPosterClick: [{\n type: Input\n }], onDragStart: [{\n type: Input\n }], onDragMove: [{\n type: Input\n }], onDragEnd: [{\n type: Input\n }], onBeforeNextSlide: [{\n type: Input\n }], onBeforePrevSlide: [{\n type: Input\n }], onBeforeClose: [{\n type: Input\n }], onAfterClose: [{\n type: Input\n }], onRotateLeft: [{\n type: Input\n }], onRotateRight: [{\n type: Input\n }], onFlipHorizontal: [{\n type: Input\n }], onFlipVertical: [{\n type: Input\n }] } });\n\nclass LightgalleryModule {\n}\nLightgalleryModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LightgalleryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLightgalleryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LightgalleryModule, declarations: [LightgalleryComponent], exports: [LightgalleryComponent] });\nLightgalleryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LightgalleryModule, imports: [[]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LightgalleryModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [LightgalleryComponent],\n imports: [],\n exports: [LightgalleryComponent],\n }]\n }] });\n\n/*\n * Public API Surface of lightgallery-angular\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LightgalleryComponent, LightgalleryModule, LightgalleryService };\n","import * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, isDevMode, Component, ChangeDetectionStrategy, ViewChild, Input, HostBinding, Output, HostListener, NgModule } from '@angular/core';\nimport { __awaiter } from 'tslib';\nimport * as i4 from '@angular/platform-browser';\nimport * as i5 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\nclass CropperSettings {\n constructor() {\n // From options\n this.format = 'png';\n this.output = 'blob';\n this.maintainAspectRatio = true;\n this.transform = {};\n this.aspectRatio = 1;\n this.resetCropOnAspectRatioChange = true;\n this.resizeToWidth = 0;\n this.resizeToHeight = 0;\n this.cropperMinWidth = 0;\n this.cropperMinHeight = 0;\n this.cropperMaxHeight = 0;\n this.cropperMaxWidth = 0;\n this.cropperStaticWidth = 0;\n this.cropperStaticHeight = 0;\n this.canvasRotation = 0;\n this.initialStepSize = 3;\n this.roundCropper = false;\n this.onlyScaleDown = false;\n this.imageQuality = 92;\n this.autoCrop = true;\n this.backgroundColor = null;\n this.containWithinAspectRatio = false;\n this.hideResizeSquares = false;\n this.alignImage = 'center';\n // Internal\n this.cropperScaledMinWidth = 20;\n this.cropperScaledMinHeight = 20;\n this.cropperScaledMaxWidth = 20;\n this.cropperScaledMaxHeight = 20;\n this.stepSize = this.initialStepSize;\n }\n setOptions(options) {\n Object.keys(options)\n .filter((k) => k in this)\n .forEach((k) => this[k] = options[k]);\n this.validateOptions();\n }\n setOptionsFromChanges(changes) {\n Object.keys(changes)\n .filter((k) => k in this)\n .forEach((k) => this[k] = changes[k].currentValue);\n this.validateOptions();\n }\n validateOptions() {\n if (this.maintainAspectRatio && !this.aspectRatio) {\n throw new Error('`aspectRatio` should > 0 when `maintainAspectRatio` is enabled');\n }\n }\n}\n\nvar MoveTypes;\n(function (MoveTypes) {\n MoveTypes[\"Drag\"] = \"drag\";\n MoveTypes[\"Move\"] = \"move\";\n MoveTypes[\"Resize\"] = \"resize\";\n MoveTypes[\"Pinch\"] = \"pinch\";\n})(MoveTypes || (MoveTypes = {}));\n\nfunction getPositionForKey(key) {\n switch (key) {\n case 'ArrowUp':\n return 'top';\n case 'ArrowRight':\n return 'right';\n case 'ArrowDown':\n return 'bottom';\n case 'ArrowLeft':\n default:\n return 'left';\n }\n}\nfunction getInvertedPositionForKey(key) {\n switch (key) {\n case 'ArrowUp':\n return 'bottom';\n case 'ArrowRight':\n return 'left';\n case 'ArrowDown':\n return 'top';\n case 'ArrowLeft':\n default:\n return 'right';\n }\n}\nfunction getEventForKey(key, stepSize) {\n switch (key) {\n case 'ArrowUp':\n return { clientX: 0, clientY: stepSize * -1 };\n case 'ArrowRight':\n return { clientX: stepSize, clientY: 0 };\n case 'ArrowDown':\n return { clientX: 0, clientY: stepSize };\n case 'ArrowLeft':\n default:\n return { clientX: stepSize * -1, clientY: 0 };\n }\n}\n\n/*\n * Hermite resize - fast image resize/resample using Hermite filter.\n * https://github.com/viliusle/Hermite-resize\n */\nfunction resizeCanvas(canvas, width, height) {\n const width_source = canvas.width;\n const height_source = canvas.height;\n width = Math.round(width);\n height = Math.round(height);\n const ratio_w = width_source / width;\n const ratio_h = height_source / height;\n const ratio_w_half = Math.ceil(ratio_w / 2);\n const ratio_h_half = Math.ceil(ratio_h / 2);\n const ctx = canvas.getContext('2d');\n if (ctx) {\n const img = ctx.getImageData(0, 0, width_source, height_source);\n const img2 = ctx.createImageData(width, height);\n const data = img.data;\n const data2 = img2.data;\n for (let j = 0; j < height; j++) {\n for (let i = 0; i < width; i++) {\n const x2 = (i + j * width) * 4;\n const center_y = j * ratio_h;\n let weight = 0;\n let weights = 0;\n let weights_alpha = 0;\n let gx_r = 0;\n let gx_g = 0;\n let gx_b = 0;\n let gx_a = 0;\n const xx_start = Math.floor(i * ratio_w);\n const yy_start = Math.floor(j * ratio_h);\n let xx_stop = Math.ceil((i + 1) * ratio_w);\n let yy_stop = Math.ceil((j + 1) * ratio_h);\n xx_stop = Math.min(xx_stop, width_source);\n yy_stop = Math.min(yy_stop, height_source);\n for (let yy = yy_start; yy < yy_stop; yy++) {\n const dy = Math.abs(center_y - yy) / ratio_h_half;\n const center_x = i * ratio_w;\n const w0 = dy * dy; //pre-calc part of w\n for (let xx = xx_start; xx < xx_stop; xx++) {\n const dx = Math.abs(center_x - xx) / ratio_w_half;\n const w = Math.sqrt(w0 + dx * dx);\n if (w >= 1) {\n //pixel too far\n continue;\n }\n //hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n const pos_x = 4 * (xx + yy * width_source);\n //alpha\n gx_a += weight * data[pos_x + 3];\n weights_alpha += weight;\n //colors\n if (data[pos_x + 3] < 255)\n weight = weight * data[pos_x + 3] / 250;\n gx_r += weight * data[pos_x];\n gx_g += weight * data[pos_x + 1];\n gx_b += weight * data[pos_x + 2];\n weights += weight;\n }\n }\n data2[x2] = gx_r / weights;\n data2[x2 + 1] = gx_g / weights;\n data2[x2 + 2] = gx_b / weights;\n data2[x2 + 3] = gx_a / weights_alpha;\n }\n }\n canvas.width = width;\n canvas.height = height;\n //draw\n ctx.putImageData(img2, 0, 0);\n }\n}\n\nfunction percentage(percent, totalValue) {\n return (percent / 100) * totalValue;\n}\n\nclass CropService {\n crop(sourceImage, loadedImage, cropper, settings, output) {\n const imagePosition = this.getImagePosition(sourceImage, loadedImage, cropper, settings);\n const width = imagePosition.x2 - imagePosition.x1;\n const height = imagePosition.y2 - imagePosition.y1;\n const cropCanvas = document.createElement('canvas');\n cropCanvas.width = width;\n cropCanvas.height = height;\n const ctx = cropCanvas.getContext('2d');\n if (!ctx) {\n return null;\n }\n if (settings.backgroundColor != null) {\n ctx.fillStyle = settings.backgroundColor;\n ctx.fillRect(0, 0, width, height);\n }\n const scaleX = (settings.transform.scale || 1) * (settings.transform.flipH ? -1 : 1);\n const scaleY = (settings.transform.scale || 1) * (settings.transform.flipV ? -1 : 1);\n const { translateH, translateV } = this.getCanvasTranslate(sourceImage, loadedImage, settings);\n const transformedImage = loadedImage.transformed;\n ctx.setTransform(scaleX, 0, 0, scaleY, transformedImage.size.width / 2 + translateH, transformedImage.size.height / 2 + translateV);\n ctx.translate(-imagePosition.x1 / scaleX, -imagePosition.y1 / scaleY);\n ctx.rotate((settings.transform.rotate || 0) * Math.PI / 180);\n ctx.drawImage(transformedImage.image, -transformedImage.size.width / 2, -transformedImage.size.height / 2);\n const result = {\n width, height,\n imagePosition,\n cropperPosition: Object.assign({}, cropper)\n };\n if (settings.containWithinAspectRatio) {\n result.offsetImagePosition = this.getOffsetImagePosition(sourceImage, loadedImage, cropper, settings);\n }\n const resizeRatio = this.getResizeRatio(width, height, settings);\n if (resizeRatio !== 1) {\n result.width = Math.round(width * resizeRatio);\n result.height = settings.maintainAspectRatio\n ? Math.round(result.width / settings.aspectRatio)\n : Math.round(height * resizeRatio);\n resizeCanvas(cropCanvas, result.width, result.height);\n }\n if (output === 'blob') {\n return this.cropToBlob(result, cropCanvas, settings);\n }\n else {\n result.base64 = cropCanvas.toDataURL('image/' + settings.format, this.getQuality(settings));\n return result;\n }\n }\n cropToBlob(output, cropCanvas, settings) {\n return __awaiter(this, void 0, void 0, function* () {\n output.blob = yield new Promise(resolve => cropCanvas.toBlob(resolve, 'image/' + settings.format, this.getQuality(settings)));\n if (output.blob) {\n output.objectUrl = URL.createObjectURL(output.blob);\n }\n return output;\n });\n }\n getCanvasTranslate(sourceImage, loadedImage, settings) {\n if (settings.transform.translateUnit === 'px') {\n const ratio = this.getRatio(sourceImage, loadedImage);\n return {\n translateH: (settings.transform.translateH || 0) * ratio,\n translateV: (settings.transform.translateV || 0) * ratio\n };\n }\n else {\n return {\n translateH: settings.transform.translateH ? percentage(settings.transform.translateH, loadedImage.transformed.size.width) : 0,\n translateV: settings.transform.translateV ? percentage(settings.transform.translateV, loadedImage.transformed.size.height) : 0\n };\n }\n }\n getRatio(sourceImage, loadedImage) {\n const sourceImageElement = sourceImage.nativeElement;\n return loadedImage.transformed.size.width / sourceImageElement.offsetWidth;\n }\n getImagePosition(sourceImage, loadedImage, cropper, settings) {\n const ratio = this.getRatio(sourceImage, loadedImage);\n const out = {\n x1: Math.round(cropper.x1 * ratio),\n y1: Math.round(cropper.y1 * ratio),\n x2: Math.round(cropper.x2 * ratio),\n y2: Math.round(cropper.y2 * ratio)\n };\n if (!settings.containWithinAspectRatio) {\n out.x1 = Math.max(out.x1, 0);\n out.y1 = Math.max(out.y1, 0);\n out.x2 = Math.min(out.x2, loadedImage.transformed.size.width);\n out.y2 = Math.min(out.y2, loadedImage.transformed.size.height);\n }\n return out;\n }\n getOffsetImagePosition(sourceImage, loadedImage, cropper, settings) {\n const canvasRotation = settings.canvasRotation + loadedImage.exifTransform.rotate;\n const sourceImageElement = sourceImage.nativeElement;\n const ratio = loadedImage.transformed.size.width / sourceImageElement.offsetWidth;\n let offsetX;\n let offsetY;\n if (canvasRotation % 2) {\n offsetX = (loadedImage.transformed.size.width - loadedImage.original.size.height) / 2;\n offsetY = (loadedImage.transformed.size.height - loadedImage.original.size.width) / 2;\n }\n else {\n offsetX = (loadedImage.transformed.size.width - loadedImage.original.size.width) / 2;\n offsetY = (loadedImage.transformed.size.height - loadedImage.original.size.height) / 2;\n }\n const out = {\n x1: Math.round(cropper.x1 * ratio) - offsetX,\n y1: Math.round(cropper.y1 * ratio) - offsetY,\n x2: Math.round(cropper.x2 * ratio) - offsetX,\n y2: Math.round(cropper.y2 * ratio) - offsetY\n };\n if (!settings.containWithinAspectRatio) {\n out.x1 = Math.max(out.x1, 0);\n out.y1 = Math.max(out.y1, 0);\n out.x2 = Math.min(out.x2, loadedImage.transformed.size.width);\n out.y2 = Math.min(out.y2, loadedImage.transformed.size.height);\n }\n return out;\n }\n getResizeRatio(width, height, settings) {\n const ratioWidth = settings.resizeToWidth / width;\n const ratioHeight = settings.resizeToHeight / height;\n const ratios = new Array();\n if (settings.resizeToWidth > 0) {\n ratios.push(ratioWidth);\n }\n if (settings.resizeToHeight > 0) {\n ratios.push(ratioHeight);\n }\n const result = ratios.length === 0 ? 1 : Math.min(...ratios);\n if (result > 1 && !settings.onlyScaleDown) {\n return result;\n }\n return Math.min(result, 1);\n }\n getQuality(settings) {\n return Math.min(1, Math.max(0, settings.imageQuality / 100));\n }\n}\nCropService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: CropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nCropService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: CropService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: CropService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass CropperPositionService {\n resetCropperPosition(sourceImage, cropperPosition, settings) {\n if (!(sourceImage === null || sourceImage === void 0 ? void 0 : sourceImage.nativeElement)) {\n return;\n }\n const sourceImageElement = sourceImage.nativeElement;\n if (settings.cropperStaticHeight && settings.cropperStaticWidth) {\n cropperPosition.x1 = 0;\n cropperPosition.x2 = sourceImageElement.offsetWidth > settings.cropperStaticWidth ?\n settings.cropperStaticWidth : sourceImageElement.offsetWidth;\n cropperPosition.y1 = 0;\n cropperPosition.y2 = sourceImageElement.offsetHeight > settings.cropperStaticHeight ?\n settings.cropperStaticHeight : sourceImageElement.offsetHeight;\n }\n else {\n const cropperWidth = Math.min(settings.cropperScaledMaxWidth, sourceImageElement.offsetWidth);\n const cropperHeight = Math.min(settings.cropperScaledMaxHeight, sourceImageElement.offsetHeight);\n if (!settings.maintainAspectRatio) {\n cropperPosition.x1 = 0;\n cropperPosition.x2 = cropperWidth;\n cropperPosition.y1 = 0;\n cropperPosition.y2 = cropperHeight;\n }\n else if (sourceImageElement.offsetWidth / settings.aspectRatio < sourceImageElement.offsetHeight) {\n cropperPosition.x1 = 0;\n cropperPosition.x2 = cropperWidth;\n const cropperHeightWithAspectRatio = cropperWidth / settings.aspectRatio;\n cropperPosition.y1 = (sourceImageElement.offsetHeight - cropperHeightWithAspectRatio) / 2;\n cropperPosition.y2 = cropperPosition.y1 + cropperHeightWithAspectRatio;\n }\n else {\n cropperPosition.y1 = 0;\n cropperPosition.y2 = cropperHeight;\n const cropperWidthWithAspectRatio = cropperHeight * settings.aspectRatio;\n cropperPosition.x1 = (sourceImageElement.offsetWidth - cropperWidthWithAspectRatio) / 2;\n cropperPosition.x2 = cropperPosition.x1 + cropperWidthWithAspectRatio;\n }\n }\n }\n move(event, moveStart, cropperPosition) {\n const diffX = this.getClientX(event) - moveStart.clientX;\n const diffY = this.getClientY(event) - moveStart.clientY;\n cropperPosition.x1 = moveStart.x1 + diffX;\n cropperPosition.y1 = moveStart.y1 + diffY;\n cropperPosition.x2 = moveStart.x2 + diffX;\n cropperPosition.y2 = moveStart.y2 + diffY;\n }\n resize(event, moveStart, cropperPosition, maxSize, settings) {\n const moveX = this.getClientX(event) - moveStart.clientX;\n const moveY = this.getClientY(event) - moveStart.clientY;\n switch (moveStart.position) {\n case 'left':\n cropperPosition.x1 = Math.min(Math.max(moveStart.x1 + moveX, cropperPosition.x2 - settings.cropperScaledMaxWidth), cropperPosition.x2 - settings.cropperScaledMinWidth);\n break;\n case 'topleft':\n cropperPosition.x1 = Math.min(Math.max(moveStart.x1 + moveX, cropperPosition.x2 - settings.cropperScaledMaxWidth), cropperPosition.x2 - settings.cropperScaledMinWidth);\n cropperPosition.y1 = Math.min(Math.max(moveStart.y1 + moveY, cropperPosition.y2 - settings.cropperScaledMaxHeight), cropperPosition.y2 - settings.cropperScaledMinHeight);\n break;\n case 'top':\n cropperPosition.y1 = Math.min(Math.max(moveStart.y1 + moveY, cropperPosition.y2 - settings.cropperScaledMaxHeight), cropperPosition.y2 - settings.cropperScaledMinHeight);\n break;\n case 'topright':\n cropperPosition.x2 = Math.max(Math.min(moveStart.x2 + moveX, cropperPosition.x1 + settings.cropperScaledMaxWidth), cropperPosition.x1 + settings.cropperScaledMinWidth);\n cropperPosition.y1 = Math.min(Math.max(moveStart.y1 + moveY, cropperPosition.y2 - settings.cropperScaledMaxHeight), cropperPosition.y2 - settings.cropperScaledMinHeight);\n break;\n case 'right':\n cropperPosition.x2 = Math.max(Math.min(moveStart.x2 + moveX, cropperPosition.x1 + settings.cropperScaledMaxWidth), cropperPosition.x1 + settings.cropperScaledMinWidth);\n break;\n case 'bottomright':\n cropperPosition.x2 = Math.max(Math.min(moveStart.x2 + moveX, cropperPosition.x1 + settings.cropperScaledMaxWidth), cropperPosition.x1 + settings.cropperScaledMinWidth);\n cropperPosition.y2 = Math.max(Math.min(moveStart.y2 + moveY, cropperPosition.y1 + settings.cropperScaledMaxHeight), cropperPosition.y1 + settings.cropperScaledMinHeight);\n break;\n case 'bottom':\n cropperPosition.y2 = Math.max(Math.min(moveStart.y2 + moveY, cropperPosition.y1 + settings.cropperScaledMaxHeight), cropperPosition.y1 + settings.cropperScaledMinHeight);\n break;\n case 'bottomleft':\n cropperPosition.x1 = Math.min(Math.max(moveStart.x1 + moveX, cropperPosition.x2 - settings.cropperScaledMaxWidth), cropperPosition.x2 - settings.cropperScaledMinWidth);\n cropperPosition.y2 = Math.max(Math.min(moveStart.y2 + moveY, cropperPosition.y1 + settings.cropperScaledMaxHeight), cropperPosition.y1 + settings.cropperScaledMinHeight);\n break;\n case 'center':\n const scale = event.scale;\n const newWidth = Math.min(Math.max(settings.cropperScaledMinWidth, (Math.abs(moveStart.x2 - moveStart.x1)) * scale), settings.cropperScaledMaxWidth);\n const newHeight = Math.min(Math.max(settings.cropperScaledMinHeight, (Math.abs(moveStart.y2 - moveStart.y1)) * scale), settings.cropperScaledMaxHeight);\n cropperPosition.x1 = moveStart.clientX - newWidth / 2;\n cropperPosition.x2 = moveStart.clientX + newWidth / 2;\n cropperPosition.y1 = moveStart.clientY - newHeight / 2;\n cropperPosition.y2 = moveStart.clientY + newHeight / 2;\n if (cropperPosition.x1 < 0) {\n cropperPosition.x2 -= cropperPosition.x1;\n cropperPosition.x1 = 0;\n }\n else if (cropperPosition.x2 > maxSize.width) {\n cropperPosition.x1 -= (cropperPosition.x2 - maxSize.width);\n cropperPosition.x2 = maxSize.width;\n }\n if (cropperPosition.y1 < 0) {\n cropperPosition.y2 -= cropperPosition.y1;\n cropperPosition.y1 = 0;\n }\n else if (cropperPosition.y2 > maxSize.height) {\n cropperPosition.y1 -= (cropperPosition.y2 - maxSize.height);\n cropperPosition.y2 = maxSize.height;\n }\n break;\n }\n if (settings.maintainAspectRatio) {\n this.checkAspectRatio(moveStart.position, cropperPosition, maxSize, settings);\n }\n }\n checkAspectRatio(position, cropperPosition, maxSize, settings) {\n let overflowX = 0;\n let overflowY = 0;\n switch (position) {\n case 'top':\n cropperPosition.x2 = cropperPosition.x1 + (cropperPosition.y2 - cropperPosition.y1) * settings.aspectRatio;\n overflowX = Math.max(cropperPosition.x2 - maxSize.width, 0);\n overflowY = Math.max(0 - cropperPosition.y1, 0);\n if (overflowX > 0 || overflowY > 0) {\n cropperPosition.x2 -= (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;\n cropperPosition.y1 += (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;\n }\n break;\n case 'bottom':\n cropperPosition.x2 = cropperPosition.x1 + (cropperPosition.y2 - cropperPosition.y1) * settings.aspectRatio;\n overflowX = Math.max(cropperPosition.x2 - maxSize.width, 0);\n overflowY = Math.max(cropperPosition.y2 - maxSize.height, 0);\n if (overflowX > 0 || overflowY > 0) {\n cropperPosition.x2 -= (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;\n cropperPosition.y2 -= (overflowY * settings.aspectRatio) > overflowX ? overflowY : (overflowX / settings.aspectRatio);\n }\n break;\n case 'topleft':\n cropperPosition.y1 = cropperPosition.y2 - (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;\n overflowX = Math.max(0 - cropperPosition.x1, 0);\n overflowY = Math.max(0 - cropperPosition.y1, 0);\n if (overflowX > 0 || overflowY > 0) {\n cropperPosition.x1 += (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;\n cropperPosition.y1 += (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;\n }\n break;\n case 'topright':\n cropperPosition.y1 = cropperPosition.y2 - (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;\n overflowX = Math.max(cropperPosition.x2 - maxSize.width, 0);\n overflowY = Math.max(0 - cropperPosition.y1, 0);\n if (overflowX > 0 || overflowY > 0) {\n cropperPosition.x2 -= (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;\n cropperPosition.y1 += (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;\n }\n break;\n case 'right':\n case 'bottomright':\n cropperPosition.y2 = cropperPosition.y1 + (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;\n overflowX = Math.max(cropperPosition.x2 - maxSize.width, 0);\n overflowY = Math.max(cropperPosition.y2 - maxSize.height, 0);\n if (overflowX > 0 || overflowY > 0) {\n cropperPosition.x2 -= (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;\n cropperPosition.y2 -= (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;\n }\n break;\n case 'left':\n case 'bottomleft':\n cropperPosition.y2 = cropperPosition.y1 + (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;\n overflowX = Math.max(0 - cropperPosition.x1, 0);\n overflowY = Math.max(cropperPosition.y2 - maxSize.height, 0);\n if (overflowX > 0 || overflowY > 0) {\n cropperPosition.x1 += (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;\n cropperPosition.y2 -= (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;\n }\n break;\n case 'center':\n cropperPosition.x2 = cropperPosition.x1 + (cropperPosition.y2 - cropperPosition.y1) * settings.aspectRatio;\n cropperPosition.y2 = cropperPosition.y1 + (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;\n const overflowX1 = Math.max(0 - cropperPosition.x1, 0);\n const overflowX2 = Math.max(cropperPosition.x2 - maxSize.width, 0);\n const overflowY1 = Math.max(cropperPosition.y2 - maxSize.height, 0);\n const overflowY2 = Math.max(0 - cropperPosition.y1, 0);\n if (overflowX1 > 0 || overflowX2 > 0 || overflowY1 > 0 || overflowY2 > 0) {\n cropperPosition.x1 += (overflowY1 * settings.aspectRatio) > overflowX1 ? (overflowY1 * settings.aspectRatio) : overflowX1;\n cropperPosition.x2 -= (overflowY2 * settings.aspectRatio) > overflowX2 ? (overflowY2 * settings.aspectRatio) : overflowX2;\n cropperPosition.y1 += (overflowY2 * settings.aspectRatio) > overflowX2 ? overflowY2 : overflowX2 / settings.aspectRatio;\n cropperPosition.y2 -= (overflowY1 * settings.aspectRatio) > overflowX1 ? overflowY1 : overflowX1 / settings.aspectRatio;\n }\n break;\n }\n }\n getClientX(event) {\n var _a;\n return ((_a = event.touches) === null || _a === void 0 ? void 0 : _a[0].clientX) || event.clientX || 0;\n }\n getClientY(event) {\n var _a;\n return ((_a = event.touches) === null || _a === void 0 ? void 0 : _a[0].clientY) || event.clientY || 0;\n }\n}\nCropperPositionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: CropperPositionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nCropperPositionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: CropperPositionService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: CropperPositionService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n// Black 2x1 JPEG, with the following meta information set:\n// - EXIF Orientation: 6 (Rotated 90° CCW)\n// Source: https://github.com/blueimp/JavaScript-Load-Image\nconst testAutoOrientationImageURL = 'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' +\n 'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' +\n 'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' +\n 'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/x' +\n 'ABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAA' +\n 'AAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==';\nfunction supportsAutomaticRotation() {\n return new Promise((resolve) => {\n const img = new Image();\n img.onload = () => {\n // Check if browser supports automatic image orientation:\n const supported = img.width === 1 && img.height === 2;\n resolve(supported);\n };\n img.src = testAutoOrientationImageURL;\n });\n}\nfunction getTransformationsFromExifData(exifRotationOrArrayBuffer) {\n if (typeof exifRotationOrArrayBuffer === 'object') {\n exifRotationOrArrayBuffer = getExifRotation(exifRotationOrArrayBuffer);\n }\n switch (exifRotationOrArrayBuffer) {\n case 2:\n return { rotate: 0, flip: true };\n case 3:\n return { rotate: 2, flip: false };\n case 4:\n return { rotate: 2, flip: true };\n case 5:\n return { rotate: 1, flip: true };\n case 6:\n return { rotate: 1, flip: false };\n case 7:\n return { rotate: 3, flip: true };\n case 8:\n return { rotate: 3, flip: false };\n default:\n return { rotate: 0, flip: false };\n }\n}\nfunction getExifRotation(arrayBuffer) {\n const view = new DataView(arrayBuffer);\n if (view.getUint16(0, false) !== 0xFFD8) {\n return -2;\n }\n const length = view.byteLength;\n let offset = 2;\n while (offset < length) {\n if (view.getUint16(offset + 2, false) <= 8)\n return -1;\n const marker = view.getUint16(offset, false);\n offset += 2;\n if (marker == 0xFFE1) {\n if (view.getUint32(offset += 2, false) !== 0x45786966) {\n return -1;\n }\n const little = view.getUint16(offset += 6, false) == 0x4949;\n offset += view.getUint32(offset + 4, little);\n const tags = view.getUint16(offset, little);\n offset += 2;\n for (let i = 0; i < tags; i++) {\n if (view.getUint16(offset + (i * 12), little) == 0x0112) {\n return view.getUint16(offset + (i * 12) + 8, little);\n }\n }\n }\n else if ((marker & 0xFF00) !== 0xFF00) {\n break;\n }\n else {\n offset += view.getUint16(offset, false);\n }\n }\n return -1;\n}\n\nclass LoadImageService {\n constructor() {\n this.autoRotateSupported = supportsAutomaticRotation();\n }\n loadImageFile(file, cropperSettings) {\n return file.arrayBuffer()\n .then(arrayBuffer => this.checkImageTypeAndLoadImageFromArrayBuffer(arrayBuffer, file.type, cropperSettings));\n }\n checkImageTypeAndLoadImageFromArrayBuffer(arrayBuffer, imageType, cropperSettings) {\n if (!this.isValidImageType(imageType)) {\n return Promise.reject(new Error('Invalid image type'));\n }\n return this.loadImageFromArrayBuffer(arrayBuffer, cropperSettings);\n }\n isValidImageType(type) {\n return /image\\/(png|jpg|jpeg|bmp|gif|tiff|webp|x-icon|vnd.microsoft.icon)/.test(type);\n }\n loadImageFromURL(url, cropperSettings) {\n return fetch(url)\n .then(res => res.arrayBuffer())\n .then(buffer => this.loadImageFromArrayBuffer(buffer, cropperSettings));\n }\n loadBase64Image(imageBase64, cropperSettings) {\n const arrayBuffer = this.base64ToArrayBuffer(imageBase64);\n return this.loadImageFromArrayBuffer(arrayBuffer, cropperSettings);\n }\n base64ToArrayBuffer(imageBase64) {\n imageBase64 = imageBase64.replace(/^data\\:([^\\;]+)\\;base64,/gmi, '');\n const binaryString = atob(imageBase64);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes.buffer;\n }\n loadImageFromArrayBuffer(arrayBuffer, cropperSettings) {\n return new Promise((resolve, reject) => {\n const blob = new Blob([arrayBuffer]);\n const objectUrl = URL.createObjectURL(blob);\n const originalImage = new Image();\n originalImage.onload = () => resolve({\n originalImage,\n originalObjectUrl: objectUrl,\n originalArrayBuffer: arrayBuffer\n });\n originalImage.onerror = reject;\n originalImage.src = objectUrl;\n }).then((res) => this.transformImageFromArrayBuffer(res, cropperSettings));\n }\n transformImageFromArrayBuffer(res, cropperSettings) {\n return __awaiter(this, void 0, void 0, function* () {\n const autoRotate = yield this.autoRotateSupported;\n const exifTransform = yield getTransformationsFromExifData(autoRotate ? -1 : res.originalArrayBuffer);\n if (!res.originalImage || !res.originalImage.complete) {\n return Promise.reject(new Error('No image loaded'));\n }\n const loadedImage = {\n original: {\n objectUrl: res.originalObjectUrl,\n image: res.originalImage,\n size: {\n width: res.originalImage.naturalWidth,\n height: res.originalImage.naturalHeight\n }\n },\n exifTransform\n };\n return this.transformLoadedImage(loadedImage, cropperSettings);\n });\n }\n transformLoadedImage(loadedImage, cropperSettings) {\n return __awaiter(this, void 0, void 0, function* () {\n const canvasRotation = cropperSettings.canvasRotation + loadedImage.exifTransform.rotate;\n const originalSize = {\n width: loadedImage.original.image.naturalWidth,\n height: loadedImage.original.image.naturalHeight\n };\n if (canvasRotation === 0 && !loadedImage.exifTransform.flip && !cropperSettings.containWithinAspectRatio) {\n return {\n original: {\n objectUrl: loadedImage.original.objectUrl,\n image: loadedImage.original.image,\n size: Object.assign({}, originalSize)\n },\n transformed: {\n objectUrl: loadedImage.original.objectUrl,\n image: loadedImage.original.image,\n size: Object.assign({}, originalSize)\n },\n exifTransform: loadedImage.exifTransform\n };\n }\n const transformedSize = this.getTransformedSize(originalSize, loadedImage.exifTransform, cropperSettings);\n const canvas = document.createElement('canvas');\n canvas.width = transformedSize.width;\n canvas.height = transformedSize.height;\n const ctx = canvas.getContext('2d');\n ctx === null || ctx === void 0 ? void 0 : ctx.setTransform(loadedImage.exifTransform.flip ? -1 : 1, 0, 0, 1, canvas.width / 2, canvas.height / 2);\n ctx === null || ctx === void 0 ? void 0 : ctx.rotate(Math.PI * (canvasRotation / 2));\n ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(loadedImage.original.image, -originalSize.width / 2, -originalSize.height / 2);\n const blob = yield new Promise(resolve => canvas.toBlob(resolve, cropperSettings.format));\n if (!blob) {\n throw new Error('Failed to get Blob for transformed image.');\n }\n const objectUrl = URL.createObjectURL(blob);\n const transformedImage = yield this.loadImageFromObjectUrl(objectUrl);\n return {\n original: {\n objectUrl: loadedImage.original.objectUrl,\n image: loadedImage.original.image,\n size: Object.assign({}, originalSize)\n },\n transformed: {\n objectUrl: objectUrl,\n image: transformedImage,\n size: {\n width: transformedImage.width,\n height: transformedImage.height\n }\n },\n exifTransform: loadedImage.exifTransform\n };\n });\n }\n loadImageFromObjectUrl(objectUrl) {\n return new Promise(((resolve, reject) => {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = reject;\n image.src = objectUrl;\n }));\n }\n getTransformedSize(originalSize, exifTransform, cropperSettings) {\n const canvasRotation = cropperSettings.canvasRotation + exifTransform.rotate;\n if (cropperSettings.containWithinAspectRatio) {\n if (canvasRotation % 2) {\n const minWidthToContain = originalSize.width * cropperSettings.aspectRatio;\n const minHeightToContain = originalSize.height / cropperSettings.aspectRatio;\n return {\n width: Math.max(originalSize.height, minWidthToContain),\n height: Math.max(originalSize.width, minHeightToContain)\n };\n }\n else {\n const minWidthToContain = originalSize.height * cropperSettings.aspectRatio;\n const minHeightToContain = originalSize.width / cropperSettings.aspectRatio;\n return {\n width: Math.max(originalSize.width, minWidthToContain),\n height: Math.max(originalSize.height, minHeightToContain)\n };\n }\n }\n if (canvasRotation % 2) {\n return {\n height: originalSize.width,\n width: originalSize.height\n };\n }\n return {\n width: originalSize.width,\n height: originalSize.height\n };\n }\n}\nLoadImageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LoadImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLoadImageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LoadImageService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: LoadImageService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass ImageCropperComponent {\n constructor(cropService, cropperPositionService, loadImageService, sanitizer, cd) {\n this.cropService = cropService;\n this.cropperPositionService = cropperPositionService;\n this.loadImageService = loadImageService;\n this.sanitizer = sanitizer;\n this.cd = cd;\n this.Hammer = (window === null || window === void 0 ? void 0 : window['Hammer']) || null;\n this.settings = new CropperSettings();\n this.setImageMaxSizeRetries = 0;\n this.resizedWhileHidden = false;\n this.marginLeft = '0px';\n this.maxSize = {\n width: 0,\n height: 0\n };\n this.moveTypes = MoveTypes;\n this.imageVisible = false;\n this.output = this.settings.output;\n this.format = this.settings.format;\n this.transform = {};\n this.maintainAspectRatio = this.settings.maintainAspectRatio;\n this.aspectRatio = this.settings.aspectRatio;\n this.resetCropOnAspectRatioChange = this.settings.resetCropOnAspectRatioChange;\n this.resizeToWidth = this.settings.resizeToWidth;\n this.resizeToHeight = this.settings.resizeToHeight;\n this.cropperMinWidth = this.settings.cropperMinWidth;\n this.cropperMinHeight = this.settings.cropperMinHeight;\n this.cropperMaxHeight = this.settings.cropperMaxHeight;\n this.cropperMaxWidth = this.settings.cropperMaxWidth;\n this.cropperStaticWidth = this.settings.cropperStaticWidth;\n this.cropperStaticHeight = this.settings.cropperStaticHeight;\n this.canvasRotation = this.settings.canvasRotation;\n this.initialStepSize = this.settings.initialStepSize;\n this.roundCropper = this.settings.roundCropper;\n this.onlyScaleDown = this.settings.onlyScaleDown;\n this.imageQuality = this.settings.imageQuality;\n this.autoCrop = this.settings.autoCrop;\n this.backgroundColor = this.settings.backgroundColor;\n this.containWithinAspectRatio = this.settings.containWithinAspectRatio;\n this.hideResizeSquares = this.settings.hideResizeSquares;\n this.allowMoveImage = false;\n this.cropper = {\n x1: -100,\n y1: -100,\n x2: 10000,\n y2: 10000\n };\n this.alignImage = this.settings.alignImage;\n this.disabled = false;\n this.hidden = false;\n this.imageCropped = new EventEmitter();\n this.startCropImage = new EventEmitter();\n this.imageLoaded = new EventEmitter();\n this.cropperReady = new EventEmitter();\n this.loadImageFailed = new EventEmitter();\n this.transformChange = new EventEmitter();\n this.reset();\n }\n ngOnChanges(changes) {\n var _a;\n this.onChangesUpdateSettings(changes);\n this.onChangesInputImage(changes);\n if (((_a = this.loadedImage) === null || _a === void 0 ? void 0 : _a.original.image.complete) && (changes['containWithinAspectRatio'] || changes['canvasRotation'])) {\n this.loadImageService\n .transformLoadedImage(this.loadedImage, this.settings)\n .then((res) => this.setLoadedImage(res))\n .catch((err) => this.loadImageError(err));\n }\n if (changes['cropper'] || changes['maintainAspectRatio'] || changes['aspectRatio']) {\n this.setMaxSize();\n this.setCropperScaledMinSize();\n this.setCropperScaledMaxSize();\n if (this.maintainAspectRatio &&\n (this.resetCropOnAspectRatioChange || !this.aspectRatioIsCorrect()) &&\n (changes['maintainAspectRatio'] || changes['aspectRatio'])) {\n this.resetCropperPosition();\n }\n else if (changes['cropper']) {\n this.checkCropperPosition(false);\n this.doAutoCrop();\n }\n this.cd.markForCheck();\n }\n if (changes['transform']) {\n this.transform = this.transform || {};\n this.setCssTransform();\n this.doAutoCrop();\n this.cd.markForCheck();\n }\n if (changes['hidden'] && this.resizedWhileHidden && !this.hidden) {\n setTimeout(() => {\n this.onResize();\n this.resizedWhileHidden = false;\n });\n }\n }\n onChangesUpdateSettings(changes) {\n this.settings.setOptionsFromChanges(changes);\n if (this.settings.cropperStaticHeight && this.settings.cropperStaticWidth) {\n this.settings.setOptions({\n hideResizeSquares: true,\n cropperMinWidth: this.settings.cropperStaticWidth,\n cropperMinHeight: this.settings.cropperStaticHeight,\n cropperMaxHeight: this.settings.cropperStaticHeight,\n cropperMaxWidth: this.settings.cropperStaticWidth,\n maintainAspectRatio: false\n });\n }\n }\n onChangesInputImage(changes) {\n if (changes['imageChangedEvent'] || changes['imageURL'] || changes['imageBase64'] || changes['imageFile']) {\n this.reset();\n }\n if (changes['imageChangedEvent'] && this.isValidImageChangedEvent()) {\n this.loadImageFile(this.imageChangedEvent.target.files[0]);\n }\n if (changes['imageURL'] && this.imageURL) {\n this.loadImageFromURL(this.imageURL);\n }\n if (changes['imageBase64'] && this.imageBase64) {\n this.loadBase64Image(this.imageBase64);\n }\n if (changes['imageFile'] && this.imageFile) {\n this.loadImageFile(this.imageFile);\n }\n }\n isValidImageChangedEvent() {\n var _a, _b, _c;\n return ((_c = (_b = (_a = this.imageChangedEvent) === null || _a === void 0 ? void 0 : _a.target) === null || _b === void 0 ? void 0 : _b.files) === null || _c === void 0 ? void 0 : _c.length) > 0;\n }\n setCssTransform() {\n var _a;\n const translateUnit = ((_a = this.transform) === null || _a === void 0 ? void 0 : _a.translateUnit) || '%';\n this.safeTransformStyle = this.sanitizer.bypassSecurityTrustStyle(`translate(${this.transform.translateH || 0}${translateUnit}, ${this.transform.translateV || 0}${translateUnit})` +\n ' scaleX(' + (this.transform.scale || 1) * (this.transform.flipH ? -1 : 1) + ')' +\n ' scaleY(' + (this.transform.scale || 1) * (this.transform.flipV ? -1 : 1) + ')' +\n ' rotate(' + (this.transform.rotate || 0) + 'deg)');\n }\n ngOnInit() {\n this.settings.stepSize = this.initialStepSize;\n this.activatePinchGesture();\n }\n reset() {\n this.imageVisible = false;\n this.loadedImage = undefined;\n this.safeImgDataUrl = 'data:image/png;base64,iVBORw0KGg'\n + 'oAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAU'\n + 'AAarVyFEAAAAASUVORK5CYII=';\n this.moveStart = {\n active: false,\n type: null,\n position: null,\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n clientX: 0,\n clientY: 0\n };\n this.maxSize = {\n width: 0,\n height: 0\n };\n this.cropper.x1 = -100;\n this.cropper.y1 = -100;\n this.cropper.x2 = 10000;\n this.cropper.y2 = 10000;\n }\n loadImageFile(file) {\n this.loadImageService\n .loadImageFile(file, this.settings)\n .then((res) => this.setLoadedImage(res))\n .catch((err) => this.loadImageError(err));\n }\n loadBase64Image(imageBase64) {\n this.loadImageService\n .loadBase64Image(imageBase64, this.settings)\n .then((res) => this.setLoadedImage(res))\n .catch((err) => this.loadImageError(err));\n }\n loadImageFromURL(url) {\n this.loadImageService\n .loadImageFromURL(url, this.settings)\n .then((res) => this.setLoadedImage(res))\n .catch((err) => this.loadImageError(err));\n }\n setLoadedImage(loadedImage) {\n this.loadedImage = loadedImage;\n this.safeImgDataUrl = this.sanitizer.bypassSecurityTrustResourceUrl(loadedImage.transformed.objectUrl);\n this.cd.markForCheck();\n }\n loadImageError(error) {\n console.error(error);\n this.loadImageFailed.emit();\n }\n imageLoadedInView() {\n if (this.loadedImage != null) {\n this.imageLoaded.emit(this.loadedImage);\n this.setImageMaxSizeRetries = 0;\n setTimeout(() => this.checkImageMaxSizeRecursively());\n }\n }\n checkImageMaxSizeRecursively() {\n if (this.setImageMaxSizeRetries > 40) {\n this.loadImageFailed.emit();\n }\n else if (this.sourceImageLoaded()) {\n this.setMaxSize();\n this.setCropperScaledMinSize();\n this.setCropperScaledMaxSize();\n this.resetCropperPosition();\n this.cropperReady.emit(Object.assign({}, this.maxSize));\n this.cd.markForCheck();\n }\n else {\n this.setImageMaxSizeRetries++;\n setTimeout(() => this.checkImageMaxSizeRecursively(), 50);\n }\n }\n sourceImageLoaded() {\n var _a, _b;\n return ((_b = (_a = this.sourceImage) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.offsetWidth) > 0;\n }\n onResize() {\n if (!this.loadedImage) {\n return;\n }\n if (this.hidden) {\n this.resizedWhileHidden = true;\n }\n else {\n this.resizeCropperPosition();\n this.setMaxSize();\n this.setCropperScaledMinSize();\n this.setCropperScaledMaxSize();\n }\n }\n activatePinchGesture() {\n if (this.Hammer) {\n const hammer = new this.Hammer(this.wrapper.nativeElement);\n hammer.get('pinch').set({ enable: true });\n hammer.on('pinchmove', this.onPinch.bind(this));\n hammer.on('pinchend', this.pinchStop.bind(this));\n hammer.on('pinchstart', this.startPinch.bind(this));\n }\n else if (isDevMode()) {\n console.warn('[NgxImageCropper] Could not find HammerJS - Pinch Gesture won\\'t work');\n }\n }\n resizeCropperPosition() {\n const sourceImageElement = this.sourceImage.nativeElement;\n if (this.maxSize.width !== sourceImageElement.offsetWidth || this.maxSize.height !== sourceImageElement.offsetHeight) {\n this.cropper.x1 = this.cropper.x1 * sourceImageElement.offsetWidth / this.maxSize.width;\n this.cropper.x2 = this.cropper.x2 * sourceImageElement.offsetWidth / this.maxSize.width;\n this.cropper.y1 = this.cropper.y1 * sourceImageElement.offsetHeight / this.maxSize.height;\n this.cropper.y2 = this.cropper.y2 * sourceImageElement.offsetHeight / this.maxSize.height;\n }\n }\n resetCropperPosition() {\n this.cropperPositionService.resetCropperPosition(this.sourceImage, this.cropper, this.settings);\n this.doAutoCrop();\n this.imageVisible = true;\n }\n keyboardAccess(event) {\n this.changeKeyboardStepSize(event);\n this.keyboardMoveCropper(event);\n }\n changeKeyboardStepSize(event) {\n const key = +event.key;\n if (key >= 1 && key <= 9) {\n this.settings.stepSize = key;\n }\n }\n keyboardMoveCropper(event) {\n const keyboardWhiteList = ['ArrowUp', 'ArrowDown', 'ArrowRight', 'ArrowLeft'];\n if (!(keyboardWhiteList.includes(event.key))) {\n return;\n }\n const moveType = event.shiftKey ? MoveTypes.Resize : MoveTypes.Move;\n const position = event.altKey ? getInvertedPositionForKey(event.key) : getPositionForKey(event.key);\n const moveEvent = getEventForKey(event.key, this.settings.stepSize);\n event.preventDefault();\n event.stopPropagation();\n this.startMove({ clientX: 0, clientY: 0 }, moveType, position);\n this.moveImg(moveEvent);\n this.moveStop();\n }\n startMove(event, moveType, position = null) {\n var _a, _b;\n if (this.disabled\n || ((_a = this.moveStart) === null || _a === void 0 ? void 0 : _a.active) && ((_b = this.moveStart) === null || _b === void 0 ? void 0 : _b.type) === MoveTypes.Pinch\n || moveType === MoveTypes.Drag && !this.allowMoveImage) {\n return;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n this.moveStart = Object.assign({ active: true, type: moveType, position, transform: Object.assign({}, this.transform), clientX: this.cropperPositionService.getClientX(event), clientY: this.cropperPositionService.getClientY(event) }, this.cropper);\n }\n startPinch(event) {\n if (!this.safeImgDataUrl) {\n return;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n this.moveStart = Object.assign({ active: true, type: MoveTypes.Pinch, position: 'center', clientX: this.cropper.x1 + (this.cropper.x2 - this.cropper.x1) / 2, clientY: this.cropper.y1 + (this.cropper.y2 - this.cropper.y1) / 2 }, this.cropper);\n }\n moveImg(event) {\n var _a, _b;\n if (this.moveStart.active) {\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n if (this.moveStart.type === MoveTypes.Move) {\n this.cropperPositionService.move(event, this.moveStart, this.cropper);\n this.checkCropperPosition(true);\n }\n else if (this.moveStart.type === MoveTypes.Resize) {\n if (!this.cropperStaticWidth && !this.cropperStaticHeight) {\n this.cropperPositionService.resize(event, this.moveStart, this.cropper, this.maxSize, this.settings);\n }\n this.checkCropperPosition(false);\n }\n else if (this.moveStart.type === MoveTypes.Drag) {\n const diffX = this.cropperPositionService.getClientX(event) - this.moveStart.clientX;\n const diffY = this.cropperPositionService.getClientY(event) - this.moveStart.clientY;\n this.transform = Object.assign(Object.assign({}, this.transform), { translateH: (((_a = this.moveStart.transform) === null || _a === void 0 ? void 0 : _a.translateH) || 0) + diffX, translateV: (((_b = this.moveStart.transform) === null || _b === void 0 ? void 0 : _b.translateV) || 0) + diffY });\n this.setCssTransform();\n }\n this.cd.detectChanges();\n }\n }\n onPinch(event) {\n if (this.moveStart.active) {\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n if (this.moveStart.type === MoveTypes.Pinch) {\n this.cropperPositionService.resize(event, this.moveStart, this.cropper, this.maxSize, this.settings);\n this.checkCropperPosition(false);\n }\n this.cd.detectChanges();\n }\n }\n setMaxSize() {\n if (this.sourceImage) {\n const sourceImageElement = this.sourceImage.nativeElement;\n this.maxSize.width = sourceImageElement.offsetWidth;\n this.maxSize.height = sourceImageElement.offsetHeight;\n this.marginLeft = this.sanitizer.bypassSecurityTrustStyle('calc(50% - ' + this.maxSize.width / 2 + 'px)');\n }\n }\n setCropperScaledMinSize() {\n var _a, _b;\n if ((_b = (_a = this.loadedImage) === null || _a === void 0 ? void 0 : _a.transformed) === null || _b === void 0 ? void 0 : _b.image) {\n this.setCropperScaledMinWidth();\n this.setCropperScaledMinHeight();\n }\n else {\n this.settings.cropperScaledMinWidth = 20;\n this.settings.cropperScaledMinHeight = 20;\n }\n }\n setCropperScaledMinWidth() {\n this.settings.cropperScaledMinWidth = this.cropperMinWidth > 0\n ? Math.max(20, this.cropperMinWidth / this.loadedImage.transformed.image.width * this.maxSize.width)\n : 20;\n }\n setCropperScaledMinHeight() {\n if (this.maintainAspectRatio) {\n this.settings.cropperScaledMinHeight = Math.max(20, this.settings.cropperScaledMinWidth / this.aspectRatio);\n }\n else if (this.cropperMinHeight > 0) {\n this.settings.cropperScaledMinHeight = Math.max(20, this.cropperMinHeight / this.loadedImage.transformed.image.height * this.maxSize.height);\n }\n else {\n this.settings.cropperScaledMinHeight = 20;\n }\n }\n setCropperScaledMaxSize() {\n var _a, _b;\n if ((_b = (_a = this.loadedImage) === null || _a === void 0 ? void 0 : _a.transformed) === null || _b === void 0 ? void 0 : _b.image) {\n const ratio = this.loadedImage.transformed.size.width / this.maxSize.width;\n this.settings.cropperScaledMaxWidth = this.cropperMaxWidth > 20 ? this.cropperMaxWidth / ratio : this.maxSize.width;\n this.settings.cropperScaledMaxHeight = this.cropperMaxHeight > 20 ? this.cropperMaxHeight / ratio : this.maxSize.height;\n if (this.maintainAspectRatio) {\n if (this.settings.cropperScaledMaxWidth > this.settings.cropperScaledMaxHeight * this.aspectRatio) {\n this.settings.cropperScaledMaxWidth = this.settings.cropperScaledMaxHeight * this.aspectRatio;\n }\n else if (this.settings.cropperScaledMaxWidth < this.settings.cropperScaledMaxHeight * this.aspectRatio) {\n this.settings.cropperScaledMaxHeight = this.settings.cropperScaledMaxWidth / this.aspectRatio;\n }\n }\n }\n else {\n this.settings.cropperScaledMaxWidth = this.maxSize.width;\n this.settings.cropperScaledMaxHeight = this.maxSize.height;\n }\n }\n checkCropperPosition(maintainSize = false) {\n if (this.cropper.x1 < 0) {\n this.cropper.x2 -= maintainSize ? this.cropper.x1 : 0;\n this.cropper.x1 = 0;\n }\n if (this.cropper.y1 < 0) {\n this.cropper.y2 -= maintainSize ? this.cropper.y1 : 0;\n this.cropper.y1 = 0;\n }\n if (this.cropper.x2 > this.maxSize.width) {\n this.cropper.x1 -= maintainSize ? (this.cropper.x2 - this.maxSize.width) : 0;\n this.cropper.x2 = this.maxSize.width;\n }\n if (this.cropper.y2 > this.maxSize.height) {\n this.cropper.y1 -= maintainSize ? (this.cropper.y2 - this.maxSize.height) : 0;\n this.cropper.y2 = this.maxSize.height;\n }\n }\n moveStop() {\n var _a;\n if (this.moveStart.active) {\n this.moveStart.active = false;\n if (((_a = this.moveStart) === null || _a === void 0 ? void 0 : _a.type) === MoveTypes.Drag) {\n this.transformChange.emit(this.transform);\n }\n else {\n this.doAutoCrop();\n }\n }\n }\n pinchStop() {\n if (this.moveStart.active) {\n this.moveStart.active = false;\n this.doAutoCrop();\n }\n }\n doAutoCrop() {\n if (this.autoCrop) {\n void this.crop();\n }\n }\n crop(output = this.settings.output) {\n var _a, _b;\n if (((_b = (_a = this.loadedImage) === null || _a === void 0 ? void 0 : _a.transformed) === null || _b === void 0 ? void 0 : _b.image) != null) {\n this.startCropImage.emit();\n if (output === 'blob') {\n return this.cropToBlob();\n }\n else if (output === 'base64') {\n return this.cropToBase64();\n }\n }\n return null;\n }\n cropToBlob() {\n const result = this.cropService.crop(this.sourceImage, this.loadedImage, this.cropper, this.settings, 'blob');\n if (result) {\n return Promise.resolve(result)\n .then((output) => {\n this.imageCropped.emit(output);\n return result;\n });\n }\n return null;\n }\n cropToBase64() {\n const result = this.cropService.crop(this.sourceImage, this.loadedImage, this.cropper, this.settings, 'base64');\n if (result) {\n this.imageCropped.emit(result);\n return result;\n }\n return null;\n }\n aspectRatioIsCorrect() {\n const currentCropAspectRatio = (this.cropper.x2 - this.cropper.x1) / (this.cropper.y2 - this.cropper.y1);\n return currentCropAspectRatio === this.aspectRatio;\n }\n}\nImageCropperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: ImageCropperComponent, deps: [{ token: CropService }, { token: CropperPositionService }, { token: LoadImageService }, { token: i4.DomSanitizer }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nImageCropperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.11\", type: ImageCropperComponent, selector: \"image-cropper\", inputs: { imageChangedEvent: \"imageChangedEvent\", imageURL: \"imageURL\", imageBase64: \"imageBase64\", imageFile: \"imageFile\", imageAltText: \"imageAltText\", output: \"output\", format: \"format\", transform: \"transform\", maintainAspectRatio: \"maintainAspectRatio\", aspectRatio: \"aspectRatio\", resetCropOnAspectRatioChange: \"resetCropOnAspectRatioChange\", resizeToWidth: \"resizeToWidth\", resizeToHeight: \"resizeToHeight\", cropperMinWidth: \"cropperMinWidth\", cropperMinHeight: \"cropperMinHeight\", cropperMaxHeight: \"cropperMaxHeight\", cropperMaxWidth: \"cropperMaxWidth\", cropperStaticWidth: \"cropperStaticWidth\", cropperStaticHeight: \"cropperStaticHeight\", canvasRotation: \"canvasRotation\", initialStepSize: \"initialStepSize\", roundCropper: \"roundCropper\", onlyScaleDown: \"onlyScaleDown\", imageQuality: \"imageQuality\", autoCrop: \"autoCrop\", backgroundColor: \"backgroundColor\", containWithinAspectRatio: \"containWithinAspectRatio\", hideResizeSquares: \"hideResizeSquares\", allowMoveImage: \"allowMoveImage\", cropper: \"cropper\", alignImage: \"alignImage\", disabled: \"disabled\", hidden: \"hidden\" }, outputs: { imageCropped: \"imageCropped\", startCropImage: \"startCropImage\", imageLoaded: \"imageLoaded\", cropperReady: \"cropperReady\", loadImageFailed: \"loadImageFailed\", transformChange: \"transformChange\" }, host: { listeners: { \"window:resize\": \"onResize()\", \"document:mousemove\": \"moveImg($event)\", \"document:touchmove\": \"moveImg($event)\", \"document:mouseup\": \"moveStop()\", \"document:touchend\": \"moveStop()\" }, properties: { \"style.text-align\": \"this.alignImage\", \"class.disabled\": \"this.disabled\", \"class.ngx-ix-hidden\": \"this.hidden\" } }, viewQueries: [{ propertyName: \"wrapper\", first: true, predicate: [\"wrapper\"], descendants: true, static: true }, { propertyName: \"sourceImage\", first: true, predicate: [\"sourceImage\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: \"\\n \\n \\n
    \\n \\n
    \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\", styles: [\":host{display:flex;position:relative;width:100%;max-width:100%;max-height:100%;overflow:hidden;padding:5px;text-align:center}:host>div{width:100%;position:relative}:host>div img.ngx-ic-source-image{max-width:100%;max-height:100%;transform-origin:center}:host>div img.ngx-ic-source-image.ngx-ic-draggable{user-drag:none;-webkit-user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;cursor:grab}:host .ngx-ic-overlay{position:absolute;pointer-events:none;touch-action:none;outline:var(--cropper-overlay-color, white) solid 100vw;top:0;left:0}:host .ngx-ic-cropper{position:absolute;display:flex;color:#53535c;background:transparent;outline:rgba(255,255,255,.3) solid 100vw;outline:var(--cropper-outline-color, rgba(255, 255, 255, .3)) solid 100vw;touch-action:none}@media (orientation: portrait){:host .ngx-ic-cropper{outline-width:100vh}}:host .ngx-ic-cropper:after{position:absolute;content:\\\"\\\";inset:0;pointer-events:none;border:dashed 1px;opacity:.75;color:inherit;z-index:1}:host .ngx-ic-cropper .ngx-ic-move{width:100%;cursor:move;border:1px solid rgba(255,255,255,.5)}:host .ngx-ic-cropper:focus .ngx-ic-move{border-color:#1e90ff;border-width:2px}:host .ngx-ic-cropper .ngx-ic-resize{position:absolute;display:inline-block;line-height:6px;padding:8px;opacity:.85;z-index:1}:host .ngx-ic-cropper .ngx-ic-resize .ngx-ic-square{display:inline-block;background:#53535C;width:6px;height:6px;border:1px solid rgba(255,255,255,.5);box-sizing:content-box}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-topleft{top:-12px;left:-12px;cursor:nwse-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-top{top:-12px;left:calc(50% - 12px);cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-topright{top:-12px;right:-12px;cursor:nesw-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-right{top:calc(50% - 12px);right:-12px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottomright{bottom:-12px;right:-12px;cursor:nwse-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottom{bottom:-12px;left:calc(50% - 12px);cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottomleft{bottom:-12px;left:-12px;cursor:nesw-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-left{top:calc(50% - 12px);left:-12px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar{position:absolute;z-index:1}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-top{top:-11px;left:11px;width:calc(100% - 22px);height:22px;cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-right{top:11px;right:-11px;height:calc(100% - 22px);width:22px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-bottom{bottom:-11px;left:11px;width:calc(100% - 22px);height:22px;cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-left{top:11px;left:-11px;height:calc(100% - 22px);width:22px;cursor:ew-resize}:host .ngx-ic-cropper.ngx-ic-round{outline-color:transparent}:host .ngx-ic-cropper.ngx-ic-round:after{border-radius:100%;box-shadow:0 0 0 100vw #ffffff4d;box-shadow:0 0 0 100vw var(--cropper-outline-color, rgba(255, 255, 255, .3))}@media (orientation: portrait){:host .ngx-ic-cropper.ngx-ic-round:after{box-shadow:0 0 0 100vh #ffffff4d;box-shadow:0 0 0 100vh var(--cropper-outline-color, rgba(255, 255, 255, .3))}}:host .ngx-ic-cropper.ngx-ic-round .ngx-ic-move{border-radius:100%}:host.disabled .ngx-ic-cropper .ngx-ic-resize,:host.disabled .ngx-ic-cropper .ngx-ic-resize-bar,:host.disabled .ngx-ic-cropper .ngx-ic-move{display:none}:host.ngx-ix-hidden{display:none}\\n\"], directives: [{ type: i5.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: ImageCropperComponent, decorators: [{\n type: Component,\n args: [{ selector: 'image-cropper', changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n \\n \\n
    \\n \\n
    \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\", styles: [\":host{display:flex;position:relative;width:100%;max-width:100%;max-height:100%;overflow:hidden;padding:5px;text-align:center}:host>div{width:100%;position:relative}:host>div img.ngx-ic-source-image{max-width:100%;max-height:100%;transform-origin:center}:host>div img.ngx-ic-source-image.ngx-ic-draggable{user-drag:none;-webkit-user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;cursor:grab}:host .ngx-ic-overlay{position:absolute;pointer-events:none;touch-action:none;outline:var(--cropper-overlay-color, white) solid 100vw;top:0;left:0}:host .ngx-ic-cropper{position:absolute;display:flex;color:#53535c;background:transparent;outline:rgba(255,255,255,.3) solid 100vw;outline:var(--cropper-outline-color, rgba(255, 255, 255, .3)) solid 100vw;touch-action:none}@media (orientation: portrait){:host .ngx-ic-cropper{outline-width:100vh}}:host .ngx-ic-cropper:after{position:absolute;content:\\\"\\\";inset:0;pointer-events:none;border:dashed 1px;opacity:.75;color:inherit;z-index:1}:host .ngx-ic-cropper .ngx-ic-move{width:100%;cursor:move;border:1px solid rgba(255,255,255,.5)}:host .ngx-ic-cropper:focus .ngx-ic-move{border-color:#1e90ff;border-width:2px}:host .ngx-ic-cropper .ngx-ic-resize{position:absolute;display:inline-block;line-height:6px;padding:8px;opacity:.85;z-index:1}:host .ngx-ic-cropper .ngx-ic-resize .ngx-ic-square{display:inline-block;background:#53535C;width:6px;height:6px;border:1px solid rgba(255,255,255,.5);box-sizing:content-box}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-topleft{top:-12px;left:-12px;cursor:nwse-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-top{top:-12px;left:calc(50% - 12px);cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-topright{top:-12px;right:-12px;cursor:nesw-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-right{top:calc(50% - 12px);right:-12px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottomright{bottom:-12px;right:-12px;cursor:nwse-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottom{bottom:-12px;left:calc(50% - 12px);cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottomleft{bottom:-12px;left:-12px;cursor:nesw-resize}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-left{top:calc(50% - 12px);left:-12px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar{position:absolute;z-index:1}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-top{top:-11px;left:11px;width:calc(100% - 22px);height:22px;cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-right{top:11px;right:-11px;height:calc(100% - 22px);width:22px;cursor:ew-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-bottom{bottom:-11px;left:11px;width:calc(100% - 22px);height:22px;cursor:ns-resize}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-left{top:11px;left:-11px;height:calc(100% - 22px);width:22px;cursor:ew-resize}:host .ngx-ic-cropper.ngx-ic-round{outline-color:transparent}:host .ngx-ic-cropper.ngx-ic-round:after{border-radius:100%;box-shadow:0 0 0 100vw #ffffff4d;box-shadow:0 0 0 100vw var(--cropper-outline-color, rgba(255, 255, 255, .3))}@media (orientation: portrait){:host .ngx-ic-cropper.ngx-ic-round:after{box-shadow:0 0 0 100vh #ffffff4d;box-shadow:0 0 0 100vh var(--cropper-outline-color, rgba(255, 255, 255, .3))}}:host .ngx-ic-cropper.ngx-ic-round .ngx-ic-move{border-radius:100%}:host.disabled .ngx-ic-cropper .ngx-ic-resize,:host.disabled .ngx-ic-cropper .ngx-ic-resize-bar,:host.disabled .ngx-ic-cropper .ngx-ic-move{display:none}:host.ngx-ix-hidden{display:none}\\n\"] }]\n }], ctorParameters: function () { return [{ type: CropService }, { type: CropperPositionService }, { type: LoadImageService }, { type: i4.DomSanitizer }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], sourceImage: [{\n type: ViewChild,\n args: ['sourceImage', { static: false }]\n }], imageChangedEvent: [{\n type: Input\n }], imageURL: [{\n type: Input\n }], imageBase64: [{\n type: Input\n }], imageFile: [{\n type: Input\n }], imageAltText: [{\n type: Input\n }], output: [{\n type: Input\n }], format: [{\n type: Input\n }], transform: [{\n type: Input\n }], maintainAspectRatio: [{\n type: Input\n }], aspectRatio: [{\n type: Input\n }], resetCropOnAspectRatioChange: [{\n type: Input\n }], resizeToWidth: [{\n type: Input\n }], resizeToHeight: [{\n type: Input\n }], cropperMinWidth: [{\n type: Input\n }], cropperMinHeight: [{\n type: Input\n }], cropperMaxHeight: [{\n type: Input\n }], cropperMaxWidth: [{\n type: Input\n }], cropperStaticWidth: [{\n type: Input\n }], cropperStaticHeight: [{\n type: Input\n }], canvasRotation: [{\n type: Input\n }], initialStepSize: [{\n type: Input\n }], roundCropper: [{\n type: Input\n }], onlyScaleDown: [{\n type: Input\n }], imageQuality: [{\n type: Input\n }], autoCrop: [{\n type: Input\n }], backgroundColor: [{\n type: Input\n }], containWithinAspectRatio: [{\n type: Input\n }], hideResizeSquares: [{\n type: Input\n }], allowMoveImage: [{\n type: Input\n }], cropper: [{\n type: Input\n }], alignImage: [{\n type: HostBinding,\n args: ['style.text-align']\n }, {\n type: Input\n }], disabled: [{\n type: HostBinding,\n args: ['class.disabled']\n }, {\n type: Input\n }], hidden: [{\n type: HostBinding,\n args: ['class.ngx-ix-hidden']\n }, {\n type: Input\n }], imageCropped: [{\n type: Output\n }], startCropImage: [{\n type: Output\n }], imageLoaded: [{\n type: Output\n }], cropperReady: [{\n type: Output\n }], loadImageFailed: [{\n type: Output\n }], transformChange: [{\n type: Output\n }], onResize: [{\n type: HostListener,\n args: ['window:resize']\n }], moveImg: [{\n type: HostListener,\n args: ['document:mousemove', ['$event']]\n }, {\n type: HostListener,\n args: ['document:touchmove', ['$event']]\n }], moveStop: [{\n type: HostListener,\n args: ['document:mouseup']\n }, {\n type: HostListener,\n args: ['document:touchend']\n }] } });\n\nclass ImageCropperModule {\n}\nImageCropperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: ImageCropperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nImageCropperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: ImageCropperModule, declarations: [ImageCropperComponent], imports: [CommonModule], exports: [ImageCropperComponent] });\nImageCropperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: ImageCropperModule, imports: [[\n CommonModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: ImageCropperModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule\n ],\n declarations: [\n ImageCropperComponent,\n ],\n exports: [\n ImageCropperComponent\n ]\n }]\n }] });\n\nfunction base64ToFile(base64Image) {\n const split = base64Image.split(',');\n const type = split[0].replace('data:', '').replace(';base64', '');\n const byteString = atob(split[1]);\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i += 1) {\n ia[i] = byteString.charCodeAt(i);\n }\n return new Blob([ab], { type });\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CropService, CropperSettings, ImageCropperComponent, ImageCropperModule, LoadImageService, base64ToFile, resizeCanvas };\n","import { Injectable, ɵɵdefineInjectable, EventEmitter, Component, ChangeDetectionStrategy, ChangeDetectorRef, Renderer2, ElementRef, Directive, ViewContainerRef, Input, Output, TemplateRef, HostBinding, HostListener, NgModule } from '@angular/core';\nimport { filter } from 'rxjs/operators';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport { style, animate, AnimationBuilder } from '@angular/animations';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Default dropdown configuration\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/animations';\nimport * as ɵngcc2 from 'ngx-bootstrap/component-loader';\n\nconst _c0 = [\"*\"];\nclass BsDropdownConfig {\n constructor() {\n /**\n * default dropdown auto closing behavior\n */\n this.autoClose = true;\n /**\n * default dropdown auto closing behavior\n */\n this.insideClick = false;\n /**\n * turn on/off animation\n */\n this.isAnimated = false;\n }\n}\nBsDropdownConfig.ɵfac = function BsDropdownConfig_Factory(t) { return new (t || BsDropdownConfig)(); };\n/** @nocollapse */ BsDropdownConfig.ɵprov = ɵɵdefineInjectable({ factory: function BsDropdownConfig_Factory() { return new BsDropdownConfig(); }, token: BsDropdownConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownConfig, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return []; }, null); })();\nif (false) {\n /**\n * default dropdown auto closing behavior\n * @type {?}\n */\n BsDropdownConfig.prototype.autoClose;\n /**\n * default dropdown auto closing behavior\n * @type {?}\n */\n BsDropdownConfig.prototype.insideClick;\n /**\n * turn on/off animation\n * @type {?}\n */\n BsDropdownConfig.prototype.isAnimated;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass BsDropdownState {\n constructor() {\n this.direction = 'down';\n this.isOpenChange = new EventEmitter();\n this.isDisabledChange = new EventEmitter();\n this.toggleClick = new EventEmitter();\n this.dropdownMenu = new Promise((/**\n * @param {?} resolve\n * @return {?}\n */\n resolve => {\n this.resolveDropdownMenu = resolve;\n }));\n }\n}\nBsDropdownState.ɵfac = function BsDropdownState_Factory(t) { return new (t || BsDropdownState)(); };\nBsDropdownState.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: BsDropdownState, factory: BsDropdownState.ɵfac });\n/** @nocollapse */\nBsDropdownState.ctorParameters = () => [];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownState, [{\n type: Injectable\n }], function () { return []; }, null); })();\nif (false) {\n /** @type {?} */\n BsDropdownState.prototype.direction;\n /** @type {?} */\n BsDropdownState.prototype.autoClose;\n /** @type {?} */\n BsDropdownState.prototype.insideClick;\n /** @type {?} */\n BsDropdownState.prototype.isAnimated;\n /** @type {?} */\n BsDropdownState.prototype.isOpenChange;\n /** @type {?} */\n BsDropdownState.prototype.isDisabledChange;\n /** @type {?} */\n BsDropdownState.prototype.toggleClick;\n /**\n * Content to be displayed as popover.\n * @type {?}\n */\n BsDropdownState.prototype.dropdownMenu;\n /** @type {?} */\n BsDropdownState.prototype.resolveDropdownMenu;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DROPDOWN_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\n/** @type {?} */\nconst dropdownAnimation = [\n style({ height: 0, overflow: 'hidden' }),\n animate(DROPDOWN_ANIMATION_TIMING, style({ height: '*', overflow: 'hidden' }))\n];\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass BsDropdownContainerComponent {\n /**\n * @param {?} _state\n * @param {?} cd\n * @param {?} _renderer\n * @param {?} _element\n * @param {?} _builder\n */\n constructor(_state, cd, _renderer, _element, _builder) {\n this._state = _state;\n this.cd = cd;\n this._renderer = _renderer;\n this._element = _element;\n this.isOpen = false;\n this._factoryDropDownAnimation = _builder.build(dropdownAnimation);\n this._subscription = _state.isOpenChange.subscribe((/**\n * @param {?} value\n * @return {?}\n */\n (value) => {\n this.isOpen = value;\n /** @type {?} */\n const dropdown = this._element.nativeElement.querySelector('.dropdown-menu');\n this._renderer.addClass(this._element.nativeElement.querySelector('div'), 'open');\n if (dropdown && !isBs3()) {\n this._renderer.addClass(dropdown, 'show');\n if (dropdown.classList.contains('dropdown-menu-right')) {\n this._renderer.setStyle(dropdown, 'left', 'auto');\n this._renderer.setStyle(dropdown, 'right', '0');\n }\n if (this.direction === 'up') {\n this._renderer.setStyle(dropdown, 'top', 'auto');\n this._renderer.setStyle(dropdown, 'transform', 'translateY(-101%)');\n }\n }\n if (dropdown && this._state.isAnimated) {\n this._factoryDropDownAnimation.create(dropdown)\n .play();\n }\n this.cd.markForCheck();\n this.cd.detectChanges();\n }));\n }\n /**\n * @return {?}\n */\n get direction() {\n return this._state.direction;\n }\n /**\n * \\@internal\n * @param {?} el\n * @return {?}\n */\n _contains(el) {\n return this._element.nativeElement.contains(el);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n}\nBsDropdownContainerComponent.ɵfac = function BsDropdownContainerComponent_Factory(t) { return new (t || BsDropdownContainerComponent)(ɵngcc0.ɵɵdirectiveInject(BsDropdownState), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.AnimationBuilder)); };\nBsDropdownContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsDropdownContainerComponent, selectors: [[\"bs-dropdown-container\"]], hostAttrs: [2, \"display\", \"block\", \"position\", \"absolute\", \"z-index\", \"1040\"], ngContentSelectors: _c0, decls: 2, vars: 8, template: function BsDropdownContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵprojection(1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"dropup\", ctx.direction === \"up\")(\"dropdown\", ctx.direction === \"down\")(\"show\", ctx.isOpen)(\"open\", ctx.isOpen);\n } }, directives: function () { return [BsDropdownDirective]; }, encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nBsDropdownContainerComponent.ctorParameters = () => [\n { type: BsDropdownState },\n { type: ChangeDetectorRef },\n { type: Renderer2 },\n { type: ElementRef },\n { type: AnimationBuilder }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownContainerComponent, [{\n type: Component,\n args: [{\n selector: 'bs-dropdown-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display:block;position: absolute;z-index: 1040'\n },\n template: `\n
    \n
    \n `\n }]\n }], function () { return [{ type: BsDropdownState }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc1.AnimationBuilder }]; }, null); })();\nif (false) {\n /** @type {?} */\n BsDropdownContainerComponent.prototype.isOpen;\n /**\n * @type {?}\n * @private\n */\n BsDropdownContainerComponent.prototype._factoryDropDownAnimation;\n /**\n * @type {?}\n * @private\n */\n BsDropdownContainerComponent.prototype._subscription;\n /**\n * @type {?}\n * @private\n */\n BsDropdownContainerComponent.prototype._state;\n /**\n * @type {?}\n * @private\n */\n BsDropdownContainerComponent.prototype.cd;\n /**\n * @type {?}\n * @private\n */\n BsDropdownContainerComponent.prototype._renderer;\n /**\n * @type {?}\n * @private\n */\n BsDropdownContainerComponent.prototype._element;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass BsDropdownDirective {\n /**\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} _viewContainerRef\n * @param {?} _cis\n * @param {?} _state\n * @param {?} _config\n * @param {?} _builder\n */\n constructor(_elementRef, _renderer, _viewContainerRef, _cis, _state, _config, _builder) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._viewContainerRef = _viewContainerRef;\n this._cis = _cis;\n this._state = _state;\n this._config = _config;\n // todo: move to component loader\n this._isInlineOpen = false;\n this._subscriptions = [];\n this._isInited = false;\n // set initial dropdown state from config\n this._state.autoClose = this._config.autoClose;\n this._state.insideClick = this._config.insideClick;\n this._state.isAnimated = this._config.isAnimated;\n this._factoryDropDownAnimation = _builder.build(dropdownAnimation);\n // create dropdown component loader\n this._dropdown = this._cis\n .createLoader(this._elementRef, this._viewContainerRef, this._renderer)\n .provide({ provide: BsDropdownState, useValue: this._state });\n this.onShown = this._dropdown.onShown;\n this.onHidden = this._dropdown.onHidden;\n this.isOpenChange = this._state.isOpenChange;\n }\n /**\n * Indicates that dropdown will be closed on item or document click,\n * and after pressing ESC\n * @param {?} value\n * @return {?}\n */\n set autoClose(value) {\n this._state.autoClose = value;\n }\n /**\n * @return {?}\n */\n get autoClose() {\n return this._state.autoClose;\n }\n /**\n * Indicates that dropdown will be animated\n * @param {?} value\n * @return {?}\n */\n set isAnimated(value) {\n this._state.isAnimated = value;\n }\n /**\n * @return {?}\n */\n get isAnimated() {\n return this._state.isAnimated;\n }\n /**\n * This attribute indicates that the dropdown shouldn't close on inside click when autoClose is set to true\n * @param {?} value\n * @return {?}\n */\n set insideClick(value) {\n this._state.insideClick = value;\n }\n /**\n * @return {?}\n */\n get insideClick() {\n return this._state.insideClick;\n }\n /**\n * Disables dropdown toggle and hides dropdown menu if opened\n * @param {?} value\n * @return {?}\n */\n set isDisabled(value) {\n this._isDisabled = value;\n this._state.isDisabledChange.emit(value);\n if (value) {\n this.hide();\n }\n }\n /**\n * @return {?}\n */\n get isDisabled() {\n return this._isDisabled;\n }\n /**\n * Returns whether or not the popover is currently being shown\n * @return {?}\n */\n get isOpen() {\n if (this._showInline) {\n return this._isInlineOpen;\n }\n return this._dropdown.isShown;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set isOpen(value) {\n if (value) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n /**\n * @return {?}\n */\n get isBs4() {\n return !isBs3();\n }\n /**\n * @private\n * @return {?}\n */\n get _showInline() {\n return !this.container;\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n // fix: seems there are an issue with `routerLinkActive`\n // which result in duplicated call ngOnInit without call to ngOnDestroy\n // read more: https://github.com/valor-software/ngx-bootstrap/issues/1885\n if (this._isInited) {\n return;\n }\n this._isInited = true;\n // attach DOM listeners\n this._dropdown.listen({\n // because of dropdown inline mode\n outsideClick: false,\n triggers: this.triggers,\n show: (/**\n * @return {?}\n */\n () => this.show())\n });\n // toggle visibility on toggle element click\n this._subscriptions.push(this._state.toggleClick.subscribe((/**\n * @param {?} value\n * @return {?}\n */\n (value) => this.toggle(value))));\n // hide dropdown if set disabled while opened\n this._subscriptions.push(this._state.isDisabledChange\n .pipe(filter((/**\n * @param {?} value\n * @return {?}\n */\n (value) => value)))\n .subscribe((/**\n * @param {?} value\n * @return {?}\n */\n (value) => this.hide())));\n }\n /**\n * Opens an element’s popover. This is considered a “manual” triggering of\n * the popover.\n * @return {?}\n */\n show() {\n if (this.isOpen || this.isDisabled) {\n return;\n }\n if (this._showInline) {\n if (!this._inlinedMenu) {\n this._state.dropdownMenu.then((/**\n * @param {?} dropdownMenu\n * @return {?}\n */\n (dropdownMenu) => {\n this._dropdown.attachInline(dropdownMenu.viewContainer, dropdownMenu.templateRef);\n this._inlinedMenu = this._dropdown._inlineViewRef;\n this.addBs4Polyfills();\n this._renderer.addClass(this._inlinedMenu.rootNodes[0].parentNode, 'open');\n this.playAnimation();\n }))\n // swallow errors\n .catch();\n }\n this.addBs4Polyfills();\n this._isInlineOpen = true;\n this.onShown.emit(true);\n this._state.isOpenChange.emit(true);\n this.playAnimation();\n return;\n }\n this._state.dropdownMenu.then((/**\n * @param {?} dropdownMenu\n * @return {?}\n */\n dropdownMenu => {\n // check direction in which dropdown should be opened\n /** @type {?} */\n const _dropup = this.dropup ||\n (typeof this.dropup !== 'undefined' && this.dropup);\n this._state.direction = _dropup ? 'up' : 'down';\n /** @type {?} */\n const _placement = this.placement || (_dropup ? 'top start' : 'bottom start');\n // show dropdown\n this._dropdown\n .attach(BsDropdownContainerComponent)\n .to(this.container)\n .position({ attachment: _placement })\n .show({\n content: dropdownMenu.templateRef,\n placement: _placement\n });\n this._state.isOpenChange.emit(true);\n }))\n // swallow error\n .catch();\n }\n /**\n * Closes an element’s popover. This is considered a “manual” triggering of\n * the popover.\n * @return {?}\n */\n hide() {\n if (!this.isOpen) {\n return;\n }\n if (this._showInline) {\n this.removeShowClass();\n this.removeDropupStyles();\n this._isInlineOpen = false;\n this.onHidden.emit(true);\n }\n else {\n this._dropdown.hide();\n }\n this._state.isOpenChange.emit(false);\n }\n /**\n * Toggles an element’s popover. This is considered a “manual” triggering of\n * the popover. With parameter true allows toggling, with parameter false\n * only hides opened dropdown. Parameter usage will be removed in ngx-bootstrap v3\n * @param {?=} value\n * @return {?}\n */\n toggle(value) {\n if (this.isOpen || !value) {\n return this.hide();\n }\n return this.show();\n }\n /**\n * \\@internal\n * @param {?} event\n * @return {?}\n */\n _contains(event) {\n return this._elementRef.nativeElement.contains(event.target) ||\n (this._dropdown.instance && this._dropdown.instance._contains(event.target));\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n // clean up subscriptions and destroy dropdown\n for (const sub of this._subscriptions) {\n sub.unsubscribe();\n }\n this._dropdown.dispose();\n }\n /**\n * @private\n * @return {?}\n */\n addBs4Polyfills() {\n if (!isBs3()) {\n this.addShowClass();\n this.checkRightAlignment();\n this.addDropupStyles();\n }\n }\n /**\n * @private\n * @return {?}\n */\n playAnimation() {\n if (this._state.isAnimated && this._inlinedMenu) {\n setTimeout((/**\n * @return {?}\n */\n () => {\n this._factoryDropDownAnimation.create(this._inlinedMenu.rootNodes[0])\n .play();\n }));\n }\n }\n /**\n * @private\n * @return {?}\n */\n addShowClass() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n this._renderer.addClass(this._inlinedMenu.rootNodes[0], 'show');\n }\n }\n /**\n * @private\n * @return {?}\n */\n removeShowClass() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n this._renderer.removeClass(this._inlinedMenu.rootNodes[0], 'show');\n }\n }\n /**\n * @private\n * @return {?}\n */\n checkRightAlignment() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n /** @type {?} */\n const isRightAligned = this._inlinedMenu.rootNodes[0].classList.contains('dropdown-menu-right');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'left', isRightAligned ? 'auto' : '0');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'right', isRightAligned ? '0' : 'auto');\n }\n }\n /**\n * @private\n * @return {?}\n */\n addDropupStyles() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n // a little hack to not break support of bootstrap 4 beta\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'top', this.dropup ? 'auto' : '100%');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'transform', this.dropup ? 'translateY(-101%)' : 'translateY(0)');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'bottom', 'auto');\n }\n }\n /**\n * @private\n * @return {?}\n */\n removeDropupStyles() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n this._renderer.removeStyle(this._inlinedMenu.rootNodes[0], 'top');\n this._renderer.removeStyle(this._inlinedMenu.rootNodes[0], 'transform');\n this._renderer.removeStyle(this._inlinedMenu.rootNodes[0], 'bottom');\n }\n }\n}\nBsDropdownDirective.ɵfac = function BsDropdownDirective_Factory(t) { return new (t || BsDropdownDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.ComponentLoaderFactory), ɵngcc0.ɵɵdirectiveInject(BsDropdownState), ɵngcc0.ɵɵdirectiveInject(BsDropdownConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.AnimationBuilder)); };\nBsDropdownDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BsDropdownDirective, selectors: [[\"\", \"bsDropdown\", \"\"], [\"\", \"dropdown\", \"\"]], hostVars: 6, hostBindings: function BsDropdownDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"dropup\", ctx.dropup)(\"open\", ctx.isOpen)(\"show\", ctx.isOpen && ctx.isBs4);\n } }, inputs: { autoClose: \"autoClose\", isAnimated: \"isAnimated\", insideClick: \"insideClick\", isDisabled: \"isDisabled\", isOpen: \"isOpen\", placement: \"placement\", triggers: \"triggers\", container: \"container\", dropup: \"dropup\" }, outputs: { onShown: \"onShown\", onHidden: \"onHidden\", isOpenChange: \"isOpenChange\" }, exportAs: [\"bs-dropdown\"], features: [ɵngcc0.ɵɵProvidersFeature([BsDropdownState])] });\n/** @nocollapse */\nBsDropdownDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: ViewContainerRef },\n { type: ComponentLoaderFactory },\n { type: BsDropdownState },\n { type: BsDropdownConfig },\n { type: AnimationBuilder }\n];\nBsDropdownDirective.propDecorators = {\n placement: [{ type: Input }],\n triggers: [{ type: Input }],\n container: [{ type: Input }],\n dropup: [{ type: Input }],\n autoClose: [{ type: Input }],\n isAnimated: [{ type: Input }],\n insideClick: [{ type: Input }],\n isDisabled: [{ type: Input }],\n isOpen: [{ type: Input }],\n isOpenChange: [{ type: Output }],\n onShown: [{ type: Output }],\n onHidden: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownDirective, [{\n type: Directive,\n args: [{\n selector: '[bsDropdown],[dropdown]',\n exportAs: 'bs-dropdown',\n providers: [BsDropdownState],\n host: {\n '[class.dropup]': 'dropup',\n '[class.open]': 'isOpen',\n '[class.show]': 'isOpen && isBs4'\n }\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc2.ComponentLoaderFactory }, { type: BsDropdownState }, { type: BsDropdownConfig }, { type: ɵngcc1.AnimationBuilder }]; }, { onShown: [{\n type: Output\n }], onHidden: [{\n type: Output\n }], isOpenChange: [{\n type: Output\n }], autoClose: [{\n type: Input\n }], isAnimated: [{\n type: Input\n }], insideClick: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isOpen: [{\n type: Input\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], dropup: [{\n type: Input\n }] }); })();\nif (false) {\n /**\n * Placement of a popover. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n * @type {?}\n */\n BsDropdownDirective.prototype.placement;\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n * @type {?}\n */\n BsDropdownDirective.prototype.triggers;\n /**\n * A selector specifying the element the popover should be appended to.\n * @type {?}\n */\n BsDropdownDirective.prototype.container;\n /**\n * This attribute indicates that the dropdown should be opened upwards\n * @type {?}\n */\n BsDropdownDirective.prototype.dropup;\n /**\n * Emits an event when isOpen change\n * @type {?}\n */\n BsDropdownDirective.prototype.isOpenChange;\n /**\n * Emits an event when the popover is shown\n * @type {?}\n */\n BsDropdownDirective.prototype.onShown;\n /**\n * Emits an event when the popover is hidden\n * @type {?}\n */\n BsDropdownDirective.prototype.onHidden;\n /**\n * @type {?}\n * @private\n */\n BsDropdownDirective.prototype._dropdown;\n /**\n * @type {?}\n * @private\n */\n BsDropdownDirective.prototype._isInlineOpen;\n /**\n * @type {?}\n * @private\n */\n BsDropdownDirective.prototype._inlinedMenu;\n /**\n * @type {?}\n * @private\n */\n BsDropdownDirective.prototype._isDisabled;\n /**\n * @type {?}\n * @private\n */\n BsDropdownDirective.prototype._subscriptions;\n /**\n * @type {?}\n * @private\n */\n BsDropdownDirective.prototype._isInited;\n /**\n * @type {?}\n * @private\n */\n BsDropdownDirective.prototype._factoryDropDownAnimation;\n /**\n * @type {?}\n * @private\n */\n BsDropdownDirective.prototype._elementRef;\n /**\n * @type {?}\n * @private\n */\n BsDropdownDirective.prototype._renderer;\n /**\n * @type {?}\n * @private\n */\n BsDropdownDirective.prototype._viewContainerRef;\n /**\n * @type {?}\n * @private\n */\n BsDropdownDirective.prototype._cis;\n /**\n * @type {?}\n * @private\n */\n BsDropdownDirective.prototype._state;\n /**\n * @type {?}\n * @private\n */\n BsDropdownDirective.prototype._config;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass BsDropdownMenuDirective {\n // tslint:disable:no-any\n /**\n * @param {?} _state\n * @param {?} _viewContainer\n * @param {?} _templateRef\n */\n constructor(_state, _viewContainer, _templateRef) {\n _state.resolveDropdownMenu({\n templateRef: _templateRef,\n viewContainer: _viewContainer\n });\n }\n}\nBsDropdownMenuDirective.ɵfac = function BsDropdownMenuDirective_Factory(t) { return new (t || BsDropdownMenuDirective)(ɵngcc0.ɵɵdirectiveInject(BsDropdownState), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nBsDropdownMenuDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BsDropdownMenuDirective, selectors: [[\"\", \"bsDropdownMenu\", \"\"], [\"\", \"dropdownMenu\", \"\"]], exportAs: [\"bs-dropdown-menu\"] });\n/** @nocollapse */\nBsDropdownMenuDirective.ctorParameters = () => [\n { type: BsDropdownState },\n { type: ViewContainerRef },\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownMenuDirective, [{\n type: Directive,\n args: [{\n selector: '[bsDropdownMenu],[dropdownMenu]',\n exportAs: 'bs-dropdown-menu'\n }]\n }], function () { return [{ type: BsDropdownState }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.TemplateRef }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass BsDropdownToggleDirective {\n /**\n * @param {?} _changeDetectorRef\n * @param {?} _dropdown\n * @param {?} _element\n * @param {?} _renderer\n * @param {?} _state\n */\n constructor(_changeDetectorRef, _dropdown, _element, _renderer, _state) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dropdown = _dropdown;\n this._element = _element;\n this._renderer = _renderer;\n this._state = _state;\n this.isDisabled = null;\n this._subscriptions = [];\n // sync is open value with state\n this._subscriptions.push(this._state.isOpenChange.subscribe((/**\n * @param {?} value\n * @return {?}\n */\n (value) => {\n this.isOpen = value;\n if (value) {\n this._documentClickListener = this._renderer.listen('document', 'click', (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n if (this._state.autoClose && event.button !== 2 &&\n !this._element.nativeElement.contains(event.target) &&\n !(this._state.insideClick && this._dropdown._contains(event))) {\n this._state.toggleClick.emit(false);\n this._changeDetectorRef.detectChanges();\n }\n }));\n this._escKeyUpListener = this._renderer.listen(this._element.nativeElement, 'keyup.esc', (/**\n * @return {?}\n */\n () => {\n if (this._state.autoClose) {\n this._state.toggleClick.emit(false);\n this._changeDetectorRef.detectChanges();\n }\n }));\n }\n else {\n this._documentClickListener();\n this._escKeyUpListener();\n }\n })));\n // populate disabled state\n this._subscriptions.push(this._state.isDisabledChange.subscribe((/**\n * @param {?} value\n * @return {?}\n */\n (value) => (this.isDisabled = value || null))));\n }\n /**\n * @return {?}\n */\n onClick() {\n if (this.isDisabled) {\n return;\n }\n this._state.toggleClick.emit(true);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n if (this._documentClickListener) {\n this._documentClickListener();\n }\n if (this._escKeyUpListener) {\n this._escKeyUpListener();\n }\n for (const sub of this._subscriptions) {\n sub.unsubscribe();\n }\n }\n}\nBsDropdownToggleDirective.ɵfac = function BsDropdownToggleDirective_Factory(t) { return new (t || BsDropdownToggleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(BsDropdownDirective), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(BsDropdownState)); };\nBsDropdownToggleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BsDropdownToggleDirective, selectors: [[\"\", \"bsDropdownToggle\", \"\"], [\"\", \"dropdownToggle\", \"\"]], hostVars: 3, hostBindings: function BsDropdownToggleDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function BsDropdownToggleDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-haspopup\", true)(\"disabled\", ctx.isDisabled)(\"aria-expanded\", ctx.isOpen);\n } }, exportAs: [\"bs-dropdown-toggle\"] });\n/** @nocollapse */\nBsDropdownToggleDirective.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: BsDropdownDirective },\n { type: ElementRef },\n { type: Renderer2 },\n { type: BsDropdownState }\n];\nBsDropdownToggleDirective.propDecorators = {\n isDisabled: [{ type: HostBinding, args: ['attr.disabled',] }],\n isOpen: [{ type: HostBinding, args: ['attr.aria-expanded',] }],\n onClick: [{ type: HostListener, args: ['click', [],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownToggleDirective, [{\n type: Directive,\n args: [{\n selector: '[bsDropdownToggle],[dropdownToggle]',\n exportAs: 'bs-dropdown-toggle',\n host: {\n '[attr.aria-haspopup]': 'true'\n }\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: BsDropdownDirective }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: BsDropdownState }]; }, { isDisabled: [{\n type: HostBinding,\n args: ['attr.disabled']\n }], isOpen: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], \n /**\n * @return {?}\n */\n onClick: [{\n type: HostListener,\n args: ['click', []]\n }] }); })();\nif (false) {\n /** @type {?} */\n BsDropdownToggleDirective.prototype.isDisabled;\n /** @type {?} */\n BsDropdownToggleDirective.prototype.isOpen;\n /**\n * @type {?}\n * @private\n */\n BsDropdownToggleDirective.prototype._subscriptions;\n /**\n * @type {?}\n * @private\n */\n BsDropdownToggleDirective.prototype._documentClickListener;\n /**\n * @type {?}\n * @private\n */\n BsDropdownToggleDirective.prototype._escKeyUpListener;\n /**\n * @type {?}\n * @private\n */\n BsDropdownToggleDirective.prototype._changeDetectorRef;\n /**\n * @type {?}\n * @private\n */\n BsDropdownToggleDirective.prototype._dropdown;\n /**\n * @type {?}\n * @private\n */\n BsDropdownToggleDirective.prototype._element;\n /**\n * @type {?}\n * @private\n */\n BsDropdownToggleDirective.prototype._renderer;\n /**\n * @type {?}\n * @private\n */\n BsDropdownToggleDirective.prototype._state;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass BsDropdownModule {\n // tslint:disable-next-line:no-any\n /**\n * @param {?=} config\n * @return {?}\n */\n static forRoot(config) {\n return {\n ngModule: BsDropdownModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n BsDropdownState\n ]\n };\n }\n}\nBsDropdownModule.ɵfac = function BsDropdownModule_Factory(t) { return new (t || BsDropdownModule)(); };\nBsDropdownModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: BsDropdownModule });\nBsDropdownModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownModule, [{\n type: NgModule,\n args: [{\n declarations: [\n BsDropdownMenuDirective,\n BsDropdownToggleDirective,\n BsDropdownContainerComponent,\n BsDropdownDirective\n ],\n exports: [\n BsDropdownMenuDirective,\n BsDropdownToggleDirective,\n BsDropdownDirective\n ],\n entryComponents: [BsDropdownContainerComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BsDropdownModule, { declarations: [BsDropdownMenuDirective, BsDropdownToggleDirective, BsDropdownContainerComponent, BsDropdownDirective], exports: [BsDropdownMenuDirective, BsDropdownToggleDirective, BsDropdownDirective] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { BsDropdownConfig, BsDropdownContainerComponent, BsDropdownDirective, BsDropdownMenuDirective, BsDropdownModule, BsDropdownState, BsDropdownToggleDirective };\n\n","import * as lpn from 'google-libphonenumber';\nimport * as i0 from '@angular/core';\nimport { Injectable, Directive, EventEmitter, forwardRef, Component, Input, Output, ViewChild, NgModule } from '@angular/core';\nimport * as i4 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { setTheme } from 'ngx-bootstrap/utils';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from 'ngx-bootstrap/dropdown';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\n\nvar CountryISO;\n(function (CountryISO) {\n CountryISO[\"Afghanistan\"] = \"af\";\n CountryISO[\"Albania\"] = \"al\";\n CountryISO[\"Algeria\"] = \"dz\";\n CountryISO[\"AmericanSamoa\"] = \"as\";\n CountryISO[\"Andorra\"] = \"ad\";\n CountryISO[\"Angola\"] = \"ao\";\n CountryISO[\"Anguilla\"] = \"ai\";\n CountryISO[\"AntiguaAndBarbuda\"] = \"ag\";\n CountryISO[\"Argentina\"] = \"ar\";\n CountryISO[\"Armenia\"] = \"am\";\n CountryISO[\"Aruba\"] = \"aw\";\n CountryISO[\"Australia\"] = \"au\";\n CountryISO[\"Austria\"] = \"at\";\n CountryISO[\"Azerbaijan\"] = \"az\";\n CountryISO[\"Bahamas\"] = \"bs\";\n CountryISO[\"Bahrain\"] = \"bh\";\n CountryISO[\"Bangladesh\"] = \"bd\";\n CountryISO[\"Barbados\"] = \"bb\";\n CountryISO[\"Belarus\"] = \"by\";\n CountryISO[\"Belgium\"] = \"be\";\n CountryISO[\"Belize\"] = \"bz\";\n CountryISO[\"Benin\"] = \"bj\";\n CountryISO[\"Bermuda\"] = \"bm\";\n CountryISO[\"Bhutan\"] = \"bt\";\n CountryISO[\"Bolivia\"] = \"bo\";\n CountryISO[\"BosniaAndHerzegovina\"] = \"ba\";\n CountryISO[\"Botswana\"] = \"bw\";\n CountryISO[\"Brazil\"] = \"br\";\n CountryISO[\"BritishIndianOceanTerritory\"] = \"io\";\n CountryISO[\"BritishVirginIslands\"] = \"vg\";\n CountryISO[\"Brunei\"] = \"bn\";\n CountryISO[\"Bulgaria\"] = \"bg\";\n CountryISO[\"BurkinaFaso\"] = \"bf\";\n CountryISO[\"Burundi\"] = \"bi\";\n CountryISO[\"Cambodia\"] = \"kh\";\n CountryISO[\"Cameroon\"] = \"cm\";\n CountryISO[\"Canada\"] = \"ca\";\n CountryISO[\"CapeVerde\"] = \"cv\";\n CountryISO[\"CaribbeanNetherlands\"] = \"bq\";\n CountryISO[\"CaymanIslands\"] = \"ky\";\n CountryISO[\"CentralAfricanRepublic\"] = \"cf\";\n CountryISO[\"Chad\"] = \"td\";\n CountryISO[\"Chile\"] = \"cl\";\n CountryISO[\"China\"] = \"cn\";\n CountryISO[\"ChristmasIsland\"] = \"cx\";\n CountryISO[\"Cocos\"] = \"cc\";\n CountryISO[\"Colombia\"] = \"co\";\n CountryISO[\"Comoros\"] = \"km\";\n CountryISO[\"CongoDRCJamhuriYaKidemokrasiaYaKongo\"] = \"cd\";\n CountryISO[\"CongoRepublicCongoBrazzaville\"] = \"cg\";\n CountryISO[\"CookIslands\"] = \"ck\";\n CountryISO[\"CostaRica\"] = \"cr\";\n CountryISO[\"C\\u00F4teDIvoire\"] = \"ci\";\n CountryISO[\"Croatia\"] = \"hr\";\n CountryISO[\"Cuba\"] = \"cu\";\n CountryISO[\"Cura\\u00E7ao\"] = \"cw\";\n CountryISO[\"Cyprus\"] = \"cy\";\n CountryISO[\"CzechRepublic\"] = \"cz\";\n CountryISO[\"Denmark\"] = \"dk\";\n CountryISO[\"Djibouti\"] = \"dj\";\n CountryISO[\"Dominica\"] = \"dm\";\n CountryISO[\"DominicanRepublic\"] = \"do\";\n CountryISO[\"Ecuador\"] = \"ec\";\n CountryISO[\"Egypt\"] = \"eg\";\n CountryISO[\"ElSalvador\"] = \"sv\";\n CountryISO[\"EquatorialGuinea\"] = \"gq\";\n CountryISO[\"Eritrea\"] = \"er\";\n CountryISO[\"Estonia\"] = \"ee\";\n CountryISO[\"Ethiopia\"] = \"et\";\n CountryISO[\"FalklandIslands\"] = \"fk\";\n CountryISO[\"FaroeIslands\"] = \"fo\";\n CountryISO[\"Fiji\"] = \"fj\";\n CountryISO[\"Finland\"] = \"fi\";\n CountryISO[\"France\"] = \"fr\";\n CountryISO[\"FrenchGuiana\"] = \"gf\";\n CountryISO[\"FrenchPolynesia\"] = \"pf\";\n CountryISO[\"Gabon\"] = \"ga\";\n CountryISO[\"Gambia\"] = \"gm\";\n CountryISO[\"Georgia\"] = \"ge\";\n CountryISO[\"Germany\"] = \"de\";\n CountryISO[\"Ghana\"] = \"gh\";\n CountryISO[\"Gibraltar\"] = \"gi\";\n CountryISO[\"Greece\"] = \"gr\";\n CountryISO[\"Greenland\"] = \"gl\";\n CountryISO[\"Grenada\"] = \"gd\";\n CountryISO[\"Guadeloupe\"] = \"gp\";\n CountryISO[\"Guam\"] = \"gu\";\n CountryISO[\"Guatemala\"] = \"gt\";\n CountryISO[\"Guernsey\"] = \"gg\";\n CountryISO[\"Guinea\"] = \"gn\";\n CountryISO[\"GuineaBissau\"] = \"gw\";\n CountryISO[\"Guyana\"] = \"gy\";\n CountryISO[\"Haiti\"] = \"ht\";\n CountryISO[\"Honduras\"] = \"hn\";\n CountryISO[\"HongKong\"] = \"hk\";\n CountryISO[\"Hungary\"] = \"hu\";\n CountryISO[\"Iceland\"] = \"is\";\n CountryISO[\"India\"] = \"in\";\n CountryISO[\"Indonesia\"] = \"id\";\n CountryISO[\"Iran\"] = \"ir\";\n CountryISO[\"Iraq\"] = \"iq\";\n CountryISO[\"Ireland\"] = \"ie\";\n CountryISO[\"IsleOfMan\"] = \"im\";\n CountryISO[\"Israel\"] = \"il\";\n CountryISO[\"Italy\"] = \"it\";\n CountryISO[\"Jamaica\"] = \"jm\";\n CountryISO[\"Japan\"] = \"jp\";\n CountryISO[\"Jersey\"] = \"je\";\n CountryISO[\"Jordan\"] = \"jo\";\n CountryISO[\"Kazakhstan\"] = \"kz\";\n CountryISO[\"Kenya\"] = \"ke\";\n CountryISO[\"Kiribati\"] = \"ki\";\n CountryISO[\"Kosovo\"] = \"xk\";\n CountryISO[\"Kuwait\"] = \"kw\";\n CountryISO[\"Kyrgyzstan\"] = \"kg\";\n CountryISO[\"Laos\"] = \"la\";\n CountryISO[\"Latvia\"] = \"lv\";\n CountryISO[\"Lebanon\"] = \"lb\";\n CountryISO[\"Lesotho\"] = \"ls\";\n CountryISO[\"Liberia\"] = \"lr\";\n CountryISO[\"Libya\"] = \"ly\";\n CountryISO[\"Liechtenstein\"] = \"li\";\n CountryISO[\"Lithuania\"] = \"lt\";\n CountryISO[\"Luxembourg\"] = \"lu\";\n CountryISO[\"Macau\"] = \"mo\";\n CountryISO[\"Macedonia\"] = \"mk\";\n CountryISO[\"Madagascar\"] = \"mg\";\n CountryISO[\"Malawi\"] = \"mw\";\n CountryISO[\"Malaysia\"] = \"my\";\n CountryISO[\"Maldives\"] = \"mv\";\n CountryISO[\"Mali\"] = \"ml\";\n CountryISO[\"Malta\"] = \"mt\";\n CountryISO[\"MarshallIslands\"] = \"mh\";\n CountryISO[\"Martinique\"] = \"mq\";\n CountryISO[\"Mauritania\"] = \"mr\";\n CountryISO[\"Mauritius\"] = \"mu\";\n CountryISO[\"Mayotte\"] = \"yt\";\n CountryISO[\"Mexico\"] = \"mx\";\n CountryISO[\"Micronesia\"] = \"fm\";\n CountryISO[\"Moldova\"] = \"md\";\n CountryISO[\"Monaco\"] = \"mc\";\n CountryISO[\"Mongolia\"] = \"mn\";\n CountryISO[\"Montenegro\"] = \"me\";\n CountryISO[\"Montserrat\"] = \"ms\";\n CountryISO[\"Morocco\"] = \"ma\";\n CountryISO[\"Mozambique\"] = \"mz\";\n CountryISO[\"Myanmar\"] = \"mm\";\n CountryISO[\"Namibia\"] = \"na\";\n CountryISO[\"Nauru\"] = \"nr\";\n CountryISO[\"Nepal\"] = \"np\";\n CountryISO[\"Netherlands\"] = \"nl\";\n CountryISO[\"NewCaledonia\"] = \"nc\";\n CountryISO[\"NewZealand\"] = \"nz\";\n CountryISO[\"Nicaragua\"] = \"ni\";\n CountryISO[\"Niger\"] = \"ne\";\n CountryISO[\"Nigeria\"] = \"ng\";\n CountryISO[\"Niue\"] = \"nu\";\n CountryISO[\"NorfolkIsland\"] = \"nf\";\n CountryISO[\"NorthKorea\"] = \"kp\";\n CountryISO[\"NorthernMarianaIslands\"] = \"mp\";\n CountryISO[\"Norway\"] = \"no\";\n CountryISO[\"Oman\"] = \"om\";\n CountryISO[\"Pakistan\"] = \"pk\";\n CountryISO[\"Palau\"] = \"pw\";\n CountryISO[\"Palestine\"] = \"ps\";\n CountryISO[\"Panama\"] = \"pa\";\n CountryISO[\"PapuaNewGuinea\"] = \"pg\";\n CountryISO[\"Paraguay\"] = \"py\";\n CountryISO[\"Peru\"] = \"pe\";\n CountryISO[\"Philippines\"] = \"ph\";\n CountryISO[\"Poland\"] = \"pl\";\n CountryISO[\"Portugal\"] = \"pt\";\n CountryISO[\"PuertoRico\"] = \"pr\";\n CountryISO[\"Qatar\"] = \"qa\";\n CountryISO[\"R\\u00E9union\"] = \"re\";\n CountryISO[\"Romania\"] = \"ro\";\n CountryISO[\"Russia\"] = \"ru\";\n CountryISO[\"Rwanda\"] = \"rw\";\n CountryISO[\"SaintBarth\\u00E9lemy\"] = \"bl\";\n CountryISO[\"SaintHelena\"] = \"sh\";\n CountryISO[\"SaintKittsAndNevis\"] = \"kn\";\n CountryISO[\"SaintLucia\"] = \"lc\";\n CountryISO[\"SaintMartin\"] = \"mf\";\n CountryISO[\"SaintPierreAndMiquelon\"] = \"pm\";\n CountryISO[\"SaintVincentAndTheGrenadines\"] = \"vc\";\n CountryISO[\"Samoa\"] = \"ws\";\n CountryISO[\"SanMarino\"] = \"sm\";\n CountryISO[\"S\\u00E3oTom\\u00E9AndPr\\u00EDncipe\"] = \"st\";\n CountryISO[\"SaudiArabia\"] = \"sa\";\n CountryISO[\"Senegal\"] = \"sn\";\n CountryISO[\"Serbia\"] = \"rs\";\n CountryISO[\"Seychelles\"] = \"sc\";\n CountryISO[\"SierraLeone\"] = \"sl\";\n CountryISO[\"Singapore\"] = \"sg\";\n CountryISO[\"SintMaarten\"] = \"sx\";\n CountryISO[\"Slovakia\"] = \"sk\";\n CountryISO[\"Slovenia\"] = \"si\";\n CountryISO[\"SolomonIslands\"] = \"sb\";\n CountryISO[\"Somalia\"] = \"so\";\n CountryISO[\"SouthAfrica\"] = \"za\";\n CountryISO[\"SouthKorea\"] = \"kr\";\n CountryISO[\"SouthSudan\"] = \"ss\";\n CountryISO[\"Spain\"] = \"es\";\n CountryISO[\"SriLanka\"] = \"lk\";\n CountryISO[\"Sudan\"] = \"sd\";\n CountryISO[\"Suriname\"] = \"sr\";\n CountryISO[\"SvalbardAndJanMayen\"] = \"sj\";\n CountryISO[\"Swaziland\"] = \"sz\";\n CountryISO[\"Sweden\"] = \"se\";\n CountryISO[\"Switzerland\"] = \"ch\";\n CountryISO[\"Syria\"] = \"sy\";\n CountryISO[\"Taiwan\"] = \"tw\";\n CountryISO[\"Tajikistan\"] = \"tj\";\n CountryISO[\"Tanzania\"] = \"tz\";\n CountryISO[\"Thailand\"] = \"th\";\n CountryISO[\"TimorLeste\"] = \"tl\";\n CountryISO[\"Togo\"] = \"tg\";\n CountryISO[\"Tokelau\"] = \"tk\";\n CountryISO[\"Tonga\"] = \"to\";\n CountryISO[\"TrinidadAndTobago\"] = \"tt\";\n CountryISO[\"Tunisia\"] = \"tn\";\n CountryISO[\"Turkey\"] = \"tr\";\n CountryISO[\"Turkmenistan\"] = \"tm\";\n CountryISO[\"TurksAndCaicosIslands\"] = \"tc\";\n CountryISO[\"Tuvalu\"] = \"tv\";\n CountryISO[\"USVirginIslands\"] = \"vi\";\n CountryISO[\"Uganda\"] = \"ug\";\n CountryISO[\"Ukraine\"] = \"ua\";\n CountryISO[\"UnitedArabEmirates\"] = \"ae\";\n CountryISO[\"UnitedKingdom\"] = \"gb\";\n CountryISO[\"UnitedStates\"] = \"us\";\n CountryISO[\"Uruguay\"] = \"uy\";\n CountryISO[\"Uzbekistan\"] = \"uz\";\n CountryISO[\"Vanuatu\"] = \"vu\";\n CountryISO[\"VaticanCity\"] = \"va\";\n CountryISO[\"Venezuela\"] = \"ve\";\n CountryISO[\"Vietnam\"] = \"vn\";\n CountryISO[\"WallisAndFutuna\"] = \"wf\";\n CountryISO[\"WesternSahara\"] = \"eh\";\n CountryISO[\"Yemen\"] = \"ye\";\n CountryISO[\"Zambia\"] = \"zm\";\n CountryISO[\"Zimbabwe\"] = \"zw\";\n CountryISO[\"\\u00C5landIslands\"] = \"ax\";\n})(CountryISO || (CountryISO = {}));\n\nclass CountryCode {\n constructor() {\n this.allCountries = [\n [\n 'Afghanistan (‫افغانستان‬‎)',\n CountryISO.Afghanistan,\n '93'\n ],\n [\n 'Albania (Shqipëri)',\n CountryISO.Albania,\n '355'\n ],\n [\n 'Algeria (‫الجزائر‬‎)',\n CountryISO.Algeria,\n '213'\n ],\n [\n 'American Samoa',\n 'as',\n '1',\n 1,\n [\n '684',\n ]\n ],\n [\n 'Andorra',\n CountryISO.Andorra,\n '376'\n ],\n [\n 'Angola',\n CountryISO.Angola,\n '244'\n ],\n [\n 'Anguilla',\n 'ai',\n '1',\n 1,\n [\n '264',\n ]\n ],\n [\n 'Antigua and Barbuda',\n 'ag',\n '1',\n 1,\n [\n '268',\n ]\n ],\n [\n 'Argentina',\n CountryISO.Argentina,\n '54'\n ],\n [\n 'Armenia (Հայաստան)',\n CountryISO.Armenia,\n '374'\n ],\n [\n 'Aruba',\n CountryISO.Aruba,\n '297'\n ],\n [\n 'Australia',\n CountryISO.Australia,\n '61',\n 0\n ],\n [\n 'Austria (Österreich)',\n CountryISO.Austria,\n '43'\n ],\n [\n 'Azerbaijan (Azərbaycan)',\n CountryISO.Azerbaijan,\n '994'\n ],\n [\n 'Bahamas',\n 'bs',\n '1',\n 1,\n [\n '242',\n ]\n ],\n [\n 'Bahrain (‫البحرين‬‎)',\n CountryISO.Bahrain,\n '973'\n ],\n [\n 'Bangladesh (বাংলাদেশ)',\n CountryISO.Bangladesh,\n '880'\n ],\n [\n 'Barbados',\n 'bb',\n '1',\n 1,\n [\n '246',\n ]\n ],\n [\n 'Belarus (Беларусь)',\n CountryISO.Belarus,\n '375'\n ],\n [\n 'Belgium (België)',\n CountryISO.Belgium,\n '32'\n ],\n [\n 'Belize',\n CountryISO.Belize,\n '501'\n ],\n [\n 'Benin (Bénin)',\n CountryISO.Benin,\n '229'\n ],\n [\n 'Bermuda',\n 'bm',\n '1',\n 1,\n [\n '441',\n ]\n ],\n [\n 'Bhutan (འབྲུག)',\n CountryISO.Bhutan,\n '975'\n ],\n [\n 'Bolivia',\n CountryISO.Bolivia,\n '591'\n ],\n [\n 'Bosnia and Herzegovina (Босна и Херцеговина)',\n CountryISO.BosniaAndHerzegovina,\n '387'\n ],\n [\n 'Botswana',\n CountryISO.Botswana,\n '267'\n ],\n [\n 'Brazil (Brasil)',\n CountryISO.Brazil,\n '55'\n ],\n [\n 'British Indian Ocean Territory',\n CountryISO.BritishIndianOceanTerritory,\n '246'\n ],\n [\n 'British Virgin Islands',\n 'vg',\n '1',\n 1,\n [\n '284',\n ]\n ],\n [\n 'Brunei',\n CountryISO.Brunei,\n '673'\n ],\n [\n 'Bulgaria (България)',\n CountryISO.Bulgaria,\n '359'\n ],\n [\n 'Burkina Faso',\n CountryISO.BurkinaFaso,\n '226'\n ],\n [\n 'Burundi (Uburundi)',\n CountryISO.Burundi,\n '257'\n ],\n [\n 'Cambodia (កម្ពុជា)',\n CountryISO.Cambodia,\n '855'\n ],\n [\n 'Cameroon (Cameroun)',\n CountryISO.Cameroon,\n '237'\n ],\n [\n 'Canada',\n CountryISO.Canada,\n '1',\n 1,\n [\n '204', '226', '236', '249', '250', '289', '306', '343', '365', '387', '403', '416',\n '418', '431', '437', '438', '450', '506', '514', '519', '548', '579', '581', '587',\n '604', '613', '639', '647', '672', '705', '709', '742', '778', '780', '782', '807',\n '819', '825', '867', '873', '902', '905'\n ]\n ],\n [\n 'Cape Verde (Kabu Verdi)',\n CountryISO.CapeVerde,\n '238'\n ],\n [\n 'Caribbean Netherlands',\n CountryISO.CaribbeanNetherlands,\n '599',\n 1\n ],\n [\n 'Cayman Islands',\n 'ky',\n '1',\n 1,\n [\n '345',\n ]\n ],\n [\n 'Central African Republic (République centrafricaine)',\n CountryISO.CentralAfricanRepublic,\n '236'\n ],\n [\n 'Chad (Tchad)',\n CountryISO.Chad,\n '235'\n ],\n [\n 'Chile',\n CountryISO.Chile,\n '56'\n ],\n [\n 'China (中国)',\n CountryISO.China,\n '86'\n ],\n [\n 'Christmas Island',\n CountryISO.ChristmasIsland,\n '61',\n 2\n ],\n [\n 'Cocos (Keeling) Islands',\n CountryISO.Cocos,\n '61',\n 1\n ],\n [\n 'Colombia',\n CountryISO.Colombia,\n '57'\n ],\n [\n 'Comoros (‫جزر القمر‬‎)',\n CountryISO.Comoros,\n '269'\n ],\n [\n 'Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)',\n CountryISO.CongoDRCJamhuriYaKidemokrasiaYaKongo,\n '243'\n ],\n [\n 'Congo (Republic) (Congo-Brazzaville)',\n CountryISO.CongoRepublicCongoBrazzaville,\n '242'\n ],\n [\n 'Cook Islands',\n CountryISO.CookIslands,\n '682'\n ],\n [\n 'Costa Rica',\n CountryISO.CostaRica,\n '506'\n ],\n [\n 'Côte d’Ivoire',\n CountryISO.CôteDIvoire,\n '225'\n ],\n [\n 'Croatia (Hrvatska)',\n CountryISO.Croatia,\n '385'\n ],\n [\n 'Cuba',\n CountryISO.Cuba,\n '53'\n ],\n [\n 'Curaçao',\n CountryISO.Curaçao,\n '599',\n 0\n ],\n [\n 'Cyprus (Κύπρος)',\n CountryISO.Cyprus,\n '357'\n ],\n [\n 'Czech Republic (Česká republika)',\n CountryISO.CzechRepublic,\n '420'\n ],\n [\n 'Denmark (Danmark)',\n CountryISO.Denmark,\n '45'\n ],\n [\n 'Djibouti',\n CountryISO.Djibouti,\n '253'\n ],\n [\n 'Dominica',\n CountryISO.Dominica,\n '1767'\n ],\n [\n 'Dominican Republic (República Dominicana)',\n CountryISO.DominicanRepublic,\n '1',\n 2,\n ['809', '829', '849']\n ],\n [\n 'Ecuador',\n CountryISO.Ecuador,\n '593'\n ],\n [\n 'Egypt (‫مصر‬‎)',\n CountryISO.Egypt,\n '20'\n ],\n [\n 'El Salvador',\n CountryISO.ElSalvador,\n '503'\n ],\n [\n 'Equatorial Guinea (Guinea Ecuatorial)',\n CountryISO.EquatorialGuinea,\n '240'\n ],\n [\n 'Eritrea',\n CountryISO.Eritrea,\n '291'\n ],\n [\n 'Estonia (Eesti)',\n CountryISO.Estonia,\n '372'\n ],\n [\n 'Ethiopia',\n CountryISO.Ethiopia,\n '251'\n ],\n [\n 'Falkland Islands (Islas Malvinas)',\n CountryISO.FalklandIslands,\n '500'\n ],\n [\n 'Faroe Islands (Føroyar)',\n CountryISO.FaroeIslands,\n '298'\n ],\n [\n 'Fiji',\n CountryISO.Fiji,\n '679'\n ],\n [\n 'Finland (Suomi)',\n CountryISO.Finland,\n '358',\n 0\n ],\n [\n 'France',\n CountryISO.France,\n '33'\n ],\n [\n 'French Guiana (Guyane française)',\n CountryISO.FrenchGuiana,\n '594'\n ],\n [\n 'French Polynesia (Polynésie française)',\n CountryISO.FrenchPolynesia,\n '689'\n ],\n [\n 'Gabon',\n CountryISO.Gabon,\n '241'\n ],\n [\n 'Gambia',\n CountryISO.Gambia,\n '220'\n ],\n [\n 'Georgia (საქართველო)',\n CountryISO.Georgia,\n '995'\n ],\n [\n 'Germany (Deutschland)',\n CountryISO.Germany,\n '49'\n ],\n [\n 'Ghana (Gaana)',\n CountryISO.Ghana,\n '233'\n ],\n [\n 'Gibraltar',\n CountryISO.Gibraltar,\n '350'\n ],\n [\n 'Greece (Ελλάδα)',\n CountryISO.Greece,\n '30'\n ],\n [\n 'Greenland (Kalaallit Nunaat)',\n CountryISO.Greenland,\n '299'\n ],\n [\n 'Grenada',\n CountryISO.Grenada,\n '1473'\n ],\n [\n 'Guadeloupe',\n CountryISO.Guadeloupe,\n '590',\n 0\n ],\n [\n 'Guam',\n 'gu',\n '1',\n 1,\n [\n '671',\n ]\n ],\n [\n 'Guatemala',\n CountryISO.Guatemala,\n '502'\n ],\n [\n 'Guernsey',\n CountryISO.Guernsey,\n '44',\n 1,\n [1481]\n ],\n [\n 'Guinea (Guinée)',\n CountryISO.Guinea,\n '224'\n ],\n [\n 'Guinea-Bissau (Guiné Bissau)',\n CountryISO.GuineaBissau,\n '245'\n ],\n [\n 'Guyana',\n CountryISO.Guyana,\n '592'\n ],\n [\n 'Haiti',\n CountryISO.Haiti,\n '509'\n ],\n [\n 'Honduras',\n CountryISO.Honduras,\n '504'\n ],\n [\n 'Hong Kong (香港)',\n CountryISO.HongKong,\n '852'\n ],\n [\n 'Hungary (Magyarország)',\n CountryISO.Hungary,\n '36'\n ],\n [\n 'Iceland (Ísland)',\n CountryISO.Iceland,\n '354'\n ],\n [\n 'India (भारत)',\n CountryISO.India,\n '91'\n ],\n [\n 'Indonesia',\n CountryISO.Indonesia,\n '62'\n ],\n [\n 'Iran (‫ایران‬‎)',\n CountryISO.Iran,\n '98'\n ],\n [\n 'Iraq (‫العراق‬‎)',\n CountryISO.Iraq,\n '964'\n ],\n [\n 'Ireland',\n CountryISO.Ireland,\n '353'\n ],\n [\n 'Isle of Man',\n CountryISO.IsleOfMan,\n '44',\n 2,\n [1624]\n ],\n [\n 'Israel (‫ישראל‬‎)',\n CountryISO.Israel,\n '972'\n ],\n [\n 'Italy (Italia)',\n CountryISO.Italy,\n '39',\n 0\n ],\n [\n 'Jamaica',\n 'jm',\n '1',\n 1,\n [\n '876',\n ]\n ],\n [\n 'Japan (日本)',\n CountryISO.Japan,\n '81'\n ],\n [\n 'Jersey',\n CountryISO.Jersey,\n '44',\n 3,\n [1534]\n ],\n [\n 'Jordan (‫الأردن‬‎)',\n CountryISO.Jordan,\n '962'\n ],\n [\n 'Kazakhstan (Казахстан)',\n CountryISO.Kazakhstan,\n '7',\n 1\n ],\n [\n 'Kenya',\n CountryISO.Kenya,\n '254'\n ],\n [\n 'Kiribati',\n CountryISO.Kiribati,\n '686'\n ],\n [\n 'Kosovo',\n CountryISO.Kosovo,\n '383'\n ],\n [\n 'Kuwait (‫الكويت‬‎)',\n CountryISO.Kuwait,\n '965'\n ],\n [\n 'Kyrgyzstan (Кыргызстан)',\n CountryISO.Kyrgyzstan,\n '996'\n ],\n [\n 'Laos (ລາວ)',\n CountryISO.Laos,\n '856'\n ],\n [\n 'Latvia (Latvija)',\n CountryISO.Latvia,\n '371'\n ],\n [\n 'Lebanon (‫لبنان‬‎)',\n CountryISO.Lebanon,\n '961'\n ],\n [\n 'Lesotho',\n CountryISO.Lesotho,\n '266'\n ],\n [\n 'Liberia',\n CountryISO.Liberia,\n '231'\n ],\n [\n 'Libya (‫ليبيا‬‎)',\n CountryISO.Libya,\n '218'\n ],\n [\n 'Liechtenstein',\n CountryISO.Liechtenstein,\n '423'\n ],\n [\n 'Lithuania (Lietuva)',\n CountryISO.Lithuania,\n '370'\n ],\n [\n 'Luxembourg',\n CountryISO.Luxembourg,\n '352'\n ],\n [\n 'Macau (澳門)',\n CountryISO.Macau,\n '853'\n ],\n [\n 'Macedonia (FYROM) (Македонија)',\n CountryISO.Macedonia,\n '389'\n ],\n [\n 'Madagascar (Madagasikara)',\n CountryISO.Madagascar,\n '261'\n ],\n [\n 'Malawi',\n CountryISO.Malawi,\n '265'\n ],\n [\n 'Malaysia',\n CountryISO.Malaysia,\n '60'\n ],\n [\n 'Maldives',\n CountryISO.Maldives,\n '960'\n ],\n [\n 'Mali',\n CountryISO.Mali,\n '223'\n ],\n [\n 'Malta',\n CountryISO.Malta,\n '356'\n ],\n [\n 'Marshall Islands',\n CountryISO.MarshallIslands,\n '692'\n ],\n [\n 'Martinique',\n CountryISO.Martinique,\n '596'\n ],\n [\n 'Mauritania (‫موريتانيا‬‎)',\n CountryISO.Mauritania,\n '222'\n ],\n [\n 'Mauritius (Moris)',\n CountryISO.Mauritius,\n '230'\n ],\n [\n 'Mayotte',\n CountryISO.Mayotte,\n '262',\n 1\n ],\n [\n 'Mexico (México)',\n CountryISO.Mexico,\n '52'\n ],\n [\n 'Micronesia',\n CountryISO.Micronesia,\n '691'\n ],\n [\n 'Moldova (Republica Moldova)',\n CountryISO.Moldova,\n '373'\n ],\n [\n 'Monaco',\n CountryISO.Monaco,\n '377'\n ],\n [\n 'Mongolia (Монгол)',\n CountryISO.Mongolia,\n '976'\n ],\n [\n 'Montenegro (Crna Gora)',\n CountryISO.Montenegro,\n '382'\n ],\n [\n 'Montserrat',\n 'ms',\n '1',\n 1,\n [\n '664',\n ]\n ],\n [\n 'Morocco (‫المغرب‬‎)',\n CountryISO.Morocco,\n '212',\n 0\n ],\n [\n 'Mozambique (Moçambique)',\n CountryISO.Mozambique,\n '258'\n ],\n [\n 'Myanmar (Burma) (မြန်မာ)',\n CountryISO.Myanmar,\n '95'\n ],\n [\n 'Namibia (Namibië)',\n CountryISO.Namibia,\n '264'\n ],\n [\n 'Nauru',\n CountryISO.Nauru,\n '674'\n ],\n [\n 'Nepal (नेपाल)',\n CountryISO.Nepal,\n '977'\n ],\n [\n 'Netherlands (Nederland)',\n CountryISO.Netherlands,\n '31'\n ],\n [\n 'New Caledonia (Nouvelle-Calédonie)',\n CountryISO.NewCaledonia,\n '687'\n ],\n [\n 'New Zealand',\n CountryISO.NewZealand,\n '64'\n ],\n [\n 'Nicaragua',\n CountryISO.Nicaragua,\n '505'\n ],\n [\n 'Niger (Nijar)',\n CountryISO.Niger,\n '227'\n ],\n [\n 'Nigeria',\n CountryISO.Nigeria,\n '234'\n ],\n [\n 'Niue',\n CountryISO.Niue,\n '683'\n ],\n [\n 'Norfolk Island',\n CountryISO.NorfolkIsland,\n '672'\n ],\n [\n 'North Korea (조선 민주주의 인민 공화국)',\n CountryISO.NorthKorea,\n '850'\n ],\n [\n 'Northern Mariana Islands',\n CountryISO.NorthernMarianaIslands,\n '1670'\n ],\n [\n 'Norway (Norge)',\n CountryISO.Norway,\n '47',\n 0\n ],\n [\n 'Oman (‫عُمان‬‎)',\n CountryISO.Oman,\n '968'\n ],\n [\n 'Pakistan (‫پاکستان‬‎)',\n CountryISO.Pakistan,\n '92'\n ],\n [\n 'Palau',\n CountryISO.Palau,\n '680'\n ],\n [\n 'Palestine (‫فلسطين‬‎)',\n CountryISO.Palestine,\n '970'\n ],\n [\n 'Panama (Panamá)',\n CountryISO.Panama,\n '507'\n ],\n [\n 'Papua New Guinea',\n CountryISO.PapuaNewGuinea,\n '675'\n ],\n [\n 'Paraguay',\n CountryISO.Paraguay,\n '595'\n ],\n [\n 'Peru (Perú)',\n CountryISO.Peru,\n '51'\n ],\n [\n 'Philippines',\n CountryISO.Philippines,\n '63'\n ],\n [\n 'Poland (Polska)',\n CountryISO.Poland,\n '48'\n ],\n [\n 'Portugal',\n CountryISO.Portugal,\n '351'\n ],\n [\n 'Puerto Rico',\n CountryISO.PuertoRico,\n '1',\n 3,\n ['787', '939']\n ],\n [\n 'Qatar (‫قطر‬‎)',\n CountryISO.Qatar,\n '974'\n ],\n [\n 'Réunion (La Réunion)',\n CountryISO.Réunion,\n '262',\n 0\n ],\n [\n 'Romania (România)',\n CountryISO.Romania,\n '40'\n ],\n [\n 'Russia (Россия)',\n CountryISO.Russia,\n '7',\n 0\n ],\n [\n 'Rwanda',\n CountryISO.Rwanda,\n '250'\n ],\n [\n 'Saint Barthélemy (Saint-Barthélemy)',\n CountryISO.SaintBarthélemy,\n '590',\n 1\n ],\n [\n 'Saint Helena',\n CountryISO.SaintHelena,\n '290'\n ],\n [\n 'Saint Kitts and Nevis',\n CountryISO.SaintKittsAndNevis,\n '1869'\n ],\n [\n 'Saint Lucia',\n 'lc',\n '1',\n 1,\n [\n '758',\n ]\n ],\n [\n 'Saint Martin (Saint-Martin (partie française))',\n CountryISO.SaintMartin,\n '590',\n 2\n ],\n [\n 'Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)',\n CountryISO.SaintPierreAndMiquelon,\n '508'\n ],\n [\n 'Saint Vincent and the Grenadines',\n 'vc',\n '1',\n 1,\n [\n '784',\n ]\n ],\n [\n 'Samoa',\n CountryISO.Samoa,\n '685'\n ],\n [\n 'San Marino',\n CountryISO.SanMarino,\n '378'\n ],\n [\n 'São Tomé and Príncipe (São Tomé e Príncipe)',\n CountryISO.SãoToméAndPríncipe,\n '239'\n ],\n [\n 'Saudi Arabia (‫المملكة العربية السعودية‬‎)',\n CountryISO.SaudiArabia,\n '966'\n ],\n [\n 'Senegal (Sénégal)',\n CountryISO.Senegal,\n '221'\n ],\n [\n 'Serbia (Србија)',\n CountryISO.Serbia,\n '381'\n ],\n [\n 'Seychelles',\n CountryISO.Seychelles,\n '248'\n ],\n [\n 'Sierra Leone',\n CountryISO.SierraLeone,\n '232'\n ],\n [\n 'Singapore',\n CountryISO.Singapore,\n '65'\n ],\n [\n 'Sint Maarten',\n 'sx',\n '1',\n 1,\n [\n '721',\n ]\n ],\n [\n 'Slovakia (Slovensko)',\n CountryISO.Slovakia,\n '421'\n ],\n [\n 'Slovenia (Slovenija)',\n CountryISO.Slovenia,\n '386'\n ],\n [\n 'Solomon Islands',\n CountryISO.SolomonIslands,\n '677'\n ],\n [\n 'Somalia (Soomaaliya)',\n CountryISO.Somalia,\n '252'\n ],\n [\n 'South Africa',\n CountryISO.SouthAfrica,\n '27'\n ],\n [\n 'South Korea (대한민국)',\n CountryISO.SouthKorea,\n '82'\n ],\n [\n 'South Sudan (‫جنوب السودان‬‎)',\n CountryISO.SouthSudan,\n '211'\n ],\n [\n 'Spain (España)',\n CountryISO.Spain,\n '34'\n ],\n [\n 'Sri Lanka (ශ්‍රී ලංකාව)',\n CountryISO.SriLanka,\n '94'\n ],\n [\n 'Sudan (‫السودان‬‎)',\n CountryISO.Sudan,\n '249'\n ],\n [\n 'Suriname',\n CountryISO.Suriname,\n '597'\n ],\n [\n 'Svalbard and Jan Mayen',\n CountryISO.SvalbardAndJanMayen,\n '47',\n 1\n ],\n [\n 'Swaziland',\n CountryISO.Swaziland,\n '268'\n ],\n [\n 'Sweden (Sverige)',\n CountryISO.Sweden,\n '46'\n ],\n [\n 'Switzerland (Schweiz)',\n CountryISO.Switzerland,\n '41'\n ],\n [\n 'Syria (‫سوريا‬‎)',\n CountryISO.Syria,\n '963'\n ],\n [\n 'Taiwan (台灣)',\n CountryISO.Taiwan,\n '886'\n ],\n [\n 'Tajikistan',\n CountryISO.Tajikistan,\n '992'\n ],\n [\n 'Tanzania',\n CountryISO.Tanzania,\n '255'\n ],\n [\n 'Thailand (ไทย)',\n CountryISO.Thailand,\n '66'\n ],\n [\n 'Timor-Leste',\n CountryISO.TimorLeste,\n '670'\n ],\n [\n 'Togo',\n CountryISO.Togo,\n '228'\n ],\n [\n 'Tokelau',\n CountryISO.Tokelau,\n '690'\n ],\n [\n 'Tonga',\n CountryISO.Tonga,\n '676'\n ],\n [\n 'Trinidad and Tobago',\n 'tt',\n '1',\n 1,\n [\n '868',\n ]\n ],\n [\n 'Tunisia (‫تونس‬‎)',\n CountryISO.Tunisia,\n '216'\n ],\n [\n 'Turkey (Türkiye)',\n CountryISO.Turkey,\n '90'\n ],\n [\n 'Turkmenistan',\n CountryISO.Turkmenistan,\n '993'\n ],\n [\n 'Turks and Caicos Islands',\n CountryISO.TurksAndCaicosIslands,\n '1649'\n ],\n [\n 'Tuvalu',\n CountryISO.Tuvalu,\n '688'\n ],\n [\n 'U.S. Virgin Islands',\n 'vi',\n '1',\n 1,\n [\n '340',\n ]\n ],\n [\n 'Uganda',\n CountryISO.Uganda,\n '256'\n ],\n [\n 'Ukraine (Україна)',\n CountryISO.Ukraine,\n '380'\n ],\n [\n 'United Arab Emirates (‫الإمارات العربية المتحدة‬‎)',\n CountryISO.UnitedArabEmirates,\n '971'\n ],\n [\n 'United Kingdom',\n CountryISO.UnitedKingdom,\n '44',\n 0\n ],\n [\n 'United States',\n CountryISO.UnitedStates,\n '1',\n 0\n ],\n [\n 'Uruguay',\n CountryISO.Uruguay,\n '598'\n ],\n [\n 'Uzbekistan (Oʻzbekiston)',\n CountryISO.Uzbekistan,\n '998'\n ],\n [\n 'Vanuatu',\n CountryISO.Vanuatu,\n '678'\n ],\n [\n 'Vatican City (Città del Vaticano)',\n CountryISO.VaticanCity,\n '39',\n 1\n ],\n [\n 'Venezuela',\n CountryISO.Venezuela,\n '58'\n ],\n [\n 'Vietnam (Việt Nam)',\n CountryISO.Vietnam,\n '84'\n ],\n [\n 'Wallis and Futuna',\n CountryISO.WallisAndFutuna,\n '681'\n ],\n [\n 'Western Sahara (‫الصحراء الغربية‬‎)',\n CountryISO.WesternSahara,\n '212',\n 1\n ],\n [\n 'Yemen (‫اليمن‬‎)',\n CountryISO.Yemen,\n '967'\n ],\n [\n 'Zambia',\n CountryISO.Zambia,\n '260'\n ],\n [\n 'Zimbabwe',\n CountryISO.Zimbabwe,\n '263'\n ],\n [\n 'Åland Islands',\n CountryISO.ÅlandIslands,\n '358',\n 1\n ]\n ];\n }\n}\nCountryCode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.1\", ngImport: i0, type: CountryCode, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nCountryCode.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.1\", ngImport: i0, type: CountryCode });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.1\", ngImport: i0, type: CountryCode, decorators: [{\n type: Injectable\n }] });\n\nvar SearchCountryField;\n(function (SearchCountryField) {\n SearchCountryField[\"DialCode\"] = \"dialCode\";\n SearchCountryField[\"Iso2\"] = \"iso2\";\n SearchCountryField[\"Name\"] = \"name\";\n SearchCountryField[\"All\"] = \"all\";\n})(SearchCountryField || (SearchCountryField = {}));\n\n/*\nWe use \"control: any\" instead of \"control: FormControl\" to silence:\n\"Property 'nativeElement' does not exist on type 'FormControl'\".\nThis happens because I've expanded control with nativeElement via\n'NativeElementInjectorDirective' to get an access to the element.\nMore about this approach and reasons for this:\nhttps://github.com/angular/angular/issues/18025\nhttps://stackoverflow.com/a/54075119/1617590\n*/\nconst phoneNumberValidator = (control) => {\n if (!control.value) {\n return;\n }\n // Find inside injected nativeElement and get its \"id\".\n const el = control.nativeElement;\n const inputBox = el\n ? el.querySelector('input[type=\"tel\"]')\n : undefined;\n if (inputBox) {\n const id = inputBox.id;\n const isCheckValidation = inputBox.getAttribute('validation');\n if (isCheckValidation === 'true') {\n const isRequired = control.errors && control.errors.required === true;\n const error = { validatePhoneNumber: { valid: false } };\n inputBox.setCustomValidity('Invalid field.');\n let number;\n try {\n number = lpn.PhoneNumberUtil.getInstance().parse(control.value.number, control.value.countryCode);\n }\n catch (e) {\n if (isRequired) {\n return error;\n }\n else {\n inputBox.setCustomValidity('');\n }\n }\n if (control.value) {\n // @ts-ignore\n if (!number) {\n return error;\n }\n else {\n if (!lpn.PhoneNumberUtil.getInstance().isValidNumberForRegion(number, control.value.countryCode)) {\n return error;\n }\n else {\n inputBox.setCustomValidity('');\n }\n }\n }\n }\n else if (isCheckValidation === 'false') {\n inputBox.setCustomValidity('');\n control.clearValidators();\n }\n }\n return;\n};\n\nvar PhoneNumberFormat;\n(function (PhoneNumberFormat) {\n PhoneNumberFormat[\"International\"] = \"INTERNATIONAL\";\n PhoneNumberFormat[\"National\"] = \"NATIONAL\";\n})(PhoneNumberFormat || (PhoneNumberFormat = {}));\n\n/*\n\"Property 'nativeElement' does not exist on type 'FormControl'\".\n'NativeElementInjectorDirective' injects nativeElement to each control,\nso we can access it from inside validator for example.\nMore about this approach and reasons for this:\nhttps://github.com/angular/angular/issues/18025\nhttps://stackoverflow.com/a/54075119/1617590\n*/\nclass NativeElementInjectorDirective {\n constructor(controlDir, host) {\n this.controlDir = controlDir;\n this.host = host;\n }\n ngOnInit() {\n if (this.controlDir.control) {\n // @ts-ignore\n this.controlDir.control['nativeElement'] = this.host.nativeElement;\n }\n }\n}\nNativeElementInjectorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.1\", ngImport: i0, type: NativeElementInjectorDirective, deps: [{ token: i4.NgControl }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNativeElementInjectorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.1\", type: NativeElementInjectorDirective, selector: \"[ngModel], [formControl], [formControlName]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.1\", ngImport: i0, type: NativeElementInjectorDirective, decorators: [{\n type: Directive,\n args: [{\n // tslint:disable-next-line: directive-selector\n selector: '[ngModel], [formControl], [formControlName]',\n }]\n }], ctorParameters: function () { return [{ type: i4.NgControl }, { type: i0.ElementRef }]; } });\n\nclass NgxIntlTelInputComponent {\n constructor(countryCodeData) {\n this.countryCodeData = countryCodeData;\n this.value = '';\n this.preferredCountries = [];\n this.enablePlaceholder = true;\n this.numberFormat = PhoneNumberFormat.International;\n this.cssClass = 'form-control';\n this.onlyCountries = [];\n this.enableAutoCountrySelect = true;\n this.searchCountryFlag = false;\n this.searchCountryField = [SearchCountryField.All];\n this.searchCountryPlaceholder = 'Search Country';\n this.selectFirstCountry = true;\n this.phoneValidation = true;\n this.inputId = 'phone';\n this.separateDialCode = false;\n this.countryChange = new EventEmitter();\n this.selectedCountry = {\n areaCodes: undefined,\n dialCode: '',\n htmlId: '',\n flagClass: '',\n iso2: '',\n name: '',\n placeHolder: '',\n priority: 0,\n };\n this.phoneNumber = '';\n this.allCountries = [];\n this.preferredCountriesInDropDown = [];\n // Has to be 'any' to prevent a need to install @types/google-libphonenumber by the package user...\n this.phoneUtil = lpn.PhoneNumberUtil.getInstance();\n this.disabled = false;\n this.errors = ['Phone number is required.'];\n this.countrySearchText = '';\n this.onTouched = () => { };\n this.propagateChange = (_) => { };\n // If this is not set, ngx-bootstrap will try to use the bs3 CSS (which is not what we've embedded) and will\n // Add the wrong classes and such\n setTheme('bs4');\n }\n ngOnInit() {\n this.init();\n }\n ngOnChanges(changes) {\n const selectedISO = changes['selectedCountryISO'];\n if (this.allCountries &&\n selectedISO &&\n selectedISO.currentValue !== selectedISO.previousValue) {\n this.updateSelectedCountry();\n }\n if (changes['preferredCountries']) {\n this.updatePreferredCountries();\n }\n this.checkSeparateDialCodeStyle();\n }\n /*\n This is a wrapper method to avoid calling this.ngOnInit() in writeValue().\n Ref: http://codelyzer.com/rules/no-life-cycle-call/\n */\n init() {\n this.fetchCountryData();\n if (this.preferredCountries.length) {\n this.updatePreferredCountries();\n }\n if (this.onlyCountries.length) {\n this.allCountries = this.allCountries.filter((c) => this.onlyCountries.includes(c.iso2));\n }\n if (this.selectFirstCountry) {\n if (this.preferredCountriesInDropDown.length) {\n this.setSelectedCountry(this.preferredCountriesInDropDown[0]);\n }\n else {\n this.setSelectedCountry(this.allCountries[0]);\n }\n }\n this.updateSelectedCountry();\n this.checkSeparateDialCodeStyle();\n }\n setSelectedCountry(country) {\n this.selectedCountry = country;\n this.countryChange.emit(country);\n }\n /**\n * Search country based on country name, iso2, dialCode or all of them.\n */\n searchCountry() {\n if (!this.countrySearchText) {\n this.countryList.nativeElement\n .querySelector('.iti__country-list li')\n .scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n return;\n }\n const countrySearchTextLower = this.countrySearchText.toLowerCase();\n // @ts-ignore\n const country = this.allCountries.filter((c) => {\n if (this.searchCountryField.indexOf(SearchCountryField.All) > -1) {\n // Search in all fields\n if (c.iso2.toLowerCase().startsWith(countrySearchTextLower)) {\n return c;\n }\n if (c.name.toLowerCase().startsWith(countrySearchTextLower)) {\n return c;\n }\n if (c.dialCode.startsWith(this.countrySearchText)) {\n return c;\n }\n }\n else {\n // Or search by specific SearchCountryField(s)\n if (this.searchCountryField.indexOf(SearchCountryField.Iso2) > -1) {\n if (c.iso2.toLowerCase().startsWith(countrySearchTextLower)) {\n return c;\n }\n }\n if (this.searchCountryField.indexOf(SearchCountryField.Name) > -1) {\n if (c.name.toLowerCase().startsWith(countrySearchTextLower)) {\n return c;\n }\n }\n if (this.searchCountryField.indexOf(SearchCountryField.DialCode) > -1) {\n if (c.dialCode.startsWith(this.countrySearchText)) {\n return c;\n }\n }\n }\n });\n if (country.length > 0) {\n const el = this.countryList.nativeElement.querySelector('#' + country[0].htmlId);\n if (el) {\n el.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n this.checkSeparateDialCodeStyle();\n }\n onPhoneNumberChange() {\n let countryCode;\n // Handle the case where the user sets the value programatically based on a persisted ChangeData obj.\n if (this.phoneNumber && typeof this.phoneNumber === 'object') {\n const numberObj = this.phoneNumber;\n this.phoneNumber = numberObj.number;\n countryCode = numberObj.countryCode;\n }\n this.value = this.phoneNumber;\n countryCode = countryCode || this.selectedCountry.iso2;\n // @ts-ignore\n const number = this.getParsedNumber(this.phoneNumber, countryCode);\n // auto select country based on the extension (and areaCode if needed) (e.g select Canada if number starts with +1 416)\n if (this.enableAutoCountrySelect) {\n countryCode =\n number && number.getCountryCode()\n // @ts-ignore\n ? this.getCountryIsoCode(number.getCountryCode(), number)\n : this.selectedCountry.iso2;\n if (countryCode && countryCode !== this.selectedCountry.iso2) {\n const newCountry = this.allCountries\n .sort((a, b) => {\n return a.priority - b.priority;\n })\n .find((c) => c.iso2 === countryCode);\n if (newCountry) {\n this.selectedCountry = newCountry;\n }\n }\n }\n countryCode = countryCode ? countryCode : this.selectedCountry.iso2;\n this.checkSeparateDialCodeStyle();\n if (!this.value) {\n // Reason: avoid https://stackoverflow.com/a/54358133/1617590\n // tslint:disable-next-line: no-null-keyword\n // @ts-ignore\n this.propagateChange(null);\n }\n else {\n const intlNo = number\n ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.INTERNATIONAL)\n : '';\n // parse phoneNumber if separate dial code is needed\n if (this.separateDialCode && intlNo) {\n this.value = this.removeDialCode(intlNo);\n }\n this.propagateChange({\n number: this.value,\n internationalNumber: intlNo,\n nationalNumber: number\n ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.NATIONAL)\n : '',\n e164Number: number\n ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.E164)\n : '',\n countryCode: countryCode.toUpperCase(),\n dialCode: '+' + this.selectedCountry.dialCode,\n });\n }\n }\n onCountrySelect(country, el) {\n this.setSelectedCountry(country);\n this.checkSeparateDialCodeStyle();\n if (this.phoneNumber && this.phoneNumber.length > 0) {\n this.value = this.phoneNumber;\n const number = this.getParsedNumber(this.phoneNumber, this.selectedCountry.iso2);\n const intlNo = number\n ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.INTERNATIONAL)\n : '';\n // parse phoneNumber if separate dial code is needed\n if (this.separateDialCode && intlNo) {\n this.value = this.removeDialCode(intlNo);\n }\n this.propagateChange({\n number: this.value,\n internationalNumber: intlNo,\n nationalNumber: number\n ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.NATIONAL)\n : '',\n e164Number: number\n ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.E164)\n : '',\n countryCode: this.selectedCountry.iso2.toUpperCase(),\n dialCode: '+' + this.selectedCountry.dialCode,\n });\n }\n else {\n // Reason: avoid https://stackoverflow.com/a/54358133/1617590\n // tslint:disable-next-line: no-null-keyword\n // @ts-ignore\n this.propagateChange(null);\n }\n el.focus();\n }\n onInputKeyPress(event) {\n const allowedChars = /[0-9\\+\\-\\(\\)\\ ]/;\n const allowedCtrlChars = /[axcv]/; // Allows copy-pasting\n const allowedOtherKeys = [\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowRight',\n 'ArrowDown',\n 'Home',\n 'End',\n 'Insert',\n 'Delete',\n 'Backspace',\n ];\n if (!allowedChars.test(event.key) &&\n !(event.ctrlKey && allowedCtrlChars.test(event.key)) &&\n !allowedOtherKeys.includes(event.key)) {\n event.preventDefault();\n }\n }\n registerOnChange(fn) {\n this.propagateChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n writeValue(obj) {\n if (obj === undefined) {\n this.init();\n }\n this.phoneNumber = obj;\n setTimeout(() => {\n this.onPhoneNumberChange();\n }, 1);\n }\n resolvePlaceholder() {\n let placeholder = '';\n if (this.customPlaceholder) {\n placeholder = this.customPlaceholder;\n }\n else if (this.selectedCountry.placeHolder) {\n placeholder = this.selectedCountry.placeHolder;\n if (this.separateDialCode) {\n placeholder = this.removeDialCode(placeholder);\n }\n }\n return placeholder;\n }\n /* --------------------------------- Helpers -------------------------------- */\n /**\n * Returns parse PhoneNumber object.\n * @param phoneNumber string\n * @param countryCode string\n */\n getParsedNumber(phoneNumber, countryCode) {\n let number;\n try {\n number = this.phoneUtil.parse(phoneNumber, countryCode.toUpperCase());\n }\n catch (e) { }\n // @ts-ignore\n return number;\n }\n /**\n * Adjusts input alignment based on the dial code presentation style.\n */\n checkSeparateDialCodeStyle() {\n if (this.separateDialCode && this.selectedCountry) {\n const cntryCd = this.selectedCountry.dialCode;\n this.separateDialCodeClass =\n 'separate-dial-code iti-sdc-' + (cntryCd.length + 1);\n }\n else {\n this.separateDialCodeClass = '';\n }\n }\n /**\n * Cleans dialcode from phone number string.\n * @param phoneNumber string\n */\n removeDialCode(phoneNumber) {\n const number = this.getParsedNumber(phoneNumber, this.selectedCountry.iso2);\n phoneNumber = this.phoneUtil.format(number, lpn.PhoneNumberFormat[this.numberFormat]);\n if (phoneNumber.startsWith('+') && this.separateDialCode) {\n phoneNumber = phoneNumber.substr(phoneNumber.indexOf(' ') + 1);\n }\n return phoneNumber;\n }\n /**\n * Sifts through all countries and returns iso code of the primary country\n * based on the number provided.\n * @param countryCode country code in number format\n * @param number PhoneNumber object\n */\n getCountryIsoCode(countryCode, number) {\n // Will use this to match area code from the first numbers\n // @ts-ignore\n const rawNumber = number['values_']['2'].toString();\n // List of all countries with countryCode (can be more than one. e.x. US, CA, DO, PR all have +1 countryCode)\n const countries = this.allCountries.filter((c) => c.dialCode === countryCode.toString());\n // Main country is the country, which has no areaCodes specified in country-code.ts file.\n const mainCountry = countries.find((c) => c.areaCodes === undefined);\n // Secondary countries are all countries, which have areaCodes specified in country-code.ts file.\n const secondaryCountries = countries.filter((c) => c.areaCodes !== undefined);\n let matchedCountry = mainCountry ? mainCountry.iso2 : undefined;\n /*\n Iterate over each secondary country and check if nationalNumber starts with any of areaCodes available.\n If no matches found, fallback to the main country.\n */\n secondaryCountries.forEach((country) => {\n // @ts-ignore\n country.areaCodes.forEach((areaCode) => {\n if (rawNumber.startsWith(areaCode)) {\n matchedCountry = country.iso2;\n }\n });\n });\n return matchedCountry;\n }\n /**\n * Gets formatted example phone number from phoneUtil.\n * @param countryCode string\n */\n getPhoneNumberPlaceHolder(countryCode) {\n try {\n return this.phoneUtil.format(this.phoneUtil.getExampleNumber(countryCode), lpn.PhoneNumberFormat[this.numberFormat]);\n }\n catch (e) {\n // @ts-ignore\n return e;\n }\n }\n /**\n * Clearing the list to avoid duplicates (https://github.com/webcat12345/ngx-intl-tel-input/issues/248)\n */\n fetchCountryData() {\n this.allCountries = [];\n this.countryCodeData.allCountries.forEach((c) => {\n const country = {\n name: c[0].toString(),\n iso2: c[1].toString(),\n dialCode: c[2].toString(),\n priority: +c[3] || 0,\n areaCodes: c[4] || undefined,\n htmlId: `iti-0__item-${c[1].toString()}`,\n flagClass: `iti__${c[1].toString().toLocaleLowerCase()}`,\n placeHolder: '',\n };\n if (this.enablePlaceholder) {\n country.placeHolder = this.getPhoneNumberPlaceHolder(country.iso2.toUpperCase());\n }\n this.allCountries.push(country);\n });\n }\n /**\n * Populates preferredCountriesInDropDown with prefferred countries.\n */\n updatePreferredCountries() {\n if (this.preferredCountries.length) {\n this.preferredCountriesInDropDown = [];\n this.preferredCountries.forEach((iso2) => {\n const preferredCountry = this.allCountries.filter((c) => {\n return c.iso2 === iso2;\n });\n this.preferredCountriesInDropDown.push(preferredCountry[0]);\n });\n }\n }\n /**\n * Updates selectedCountry.\n */\n updateSelectedCountry() {\n if (this.selectedCountryISO) {\n // @ts-ignore\n this.selectedCountry = this.allCountries.find((c) => {\n return c.iso2.toLowerCase() === this.selectedCountryISO.toLowerCase();\n });\n if (this.selectedCountry) {\n if (this.phoneNumber) {\n this.onPhoneNumberChange();\n }\n else {\n // Reason: avoid https://stackoverflow.com/a/54358133/1617590\n // tslint:disable-next-line: no-null-keyword\n // @ts-ignore\n this.propagateChange(null);\n }\n }\n }\n }\n}\nNgxIntlTelInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.1\", ngImport: i0, type: NgxIntlTelInputComponent, deps: [{ token: CountryCode }], target: i0.ɵɵFactoryTarget.Component });\nNgxIntlTelInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.1\", type: NgxIntlTelInputComponent, selector: \"ngx-intl-tel-input\", inputs: { value: \"value\", preferredCountries: \"preferredCountries\", enablePlaceholder: \"enablePlaceholder\", customPlaceholder: \"customPlaceholder\", numberFormat: \"numberFormat\", cssClass: \"cssClass\", onlyCountries: \"onlyCountries\", enableAutoCountrySelect: \"enableAutoCountrySelect\", searchCountryFlag: \"searchCountryFlag\", searchCountryField: \"searchCountryField\", searchCountryPlaceholder: \"searchCountryPlaceholder\", maxLength: \"maxLength\", selectFirstCountry: \"selectFirstCountry\", selectedCountryISO: \"selectedCountryISO\", phoneValidation: \"phoneValidation\", inputId: \"inputId\", separateDialCode: \"separateDialCode\" }, outputs: { countryChange: \"countryChange\" }, providers: [\n CountryCode,\n {\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line:no-forward-ref\n useExisting: forwardRef(() => NgxIntlTelInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useValue: phoneNumberValidator,\n multi: true,\n },\n ], viewQueries: [{ propertyName: \"countryList\", first: true, predicate: [\"countryList\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: \"
    \\n\\t
    \\n\\t\\t
    \\n\\t\\t\\t
    \\n\\t\\t\\t
    +{{selectedCountry.dialCode}}
    \\n\\t\\t\\t
    \\n\\t\\t
    \\n\\t\\t
    \\n\\t\\t\\t
    \\n\\t\\t\\t\\t\\n\\t\\t\\t
    \\n\\t\\t\\t
      \\n\\t\\t\\t\\t
    • \\n\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t{{country.name}}\\n\\t\\t\\t\\t\\t+{{country.dialCode}}\\n\\t\\t\\t\\t
    • \\n\\t\\t\\t\\t
    • \\n\\t\\t\\t\\t
    • \\n\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t{{country.name}}\\n\\t\\t\\t\\t\\t+{{country.dialCode}}\\n\\t\\t\\t\\t
    • \\n\\t\\t\\t
    \\n\\t\\t
    \\n\\t
    \\n\\t\\n
    \\n\", styles: [\".dropup,.dropright,.dropdown,.dropleft{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\"}.dropleft .dropdown-toggle:after{display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=top],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}\\n\", \"li.iti__country:hover{background-color:#0000000d}.iti__selected-flag.dropdown-toggle:after{content:none}.iti__flag-container.disabled{cursor:default!important}.iti.iti--allow-dropdown .flag-container.disabled:hover .iti__selected-flag{background:none}.country-dropdown{border:1px solid #ccc;width:-moz-fit-content;width:fit-content;padding:1px;border-collapse:collapse}.search-container{position:relative}.search-container input{width:100%;border:none;border-bottom:1px solid #ccc;padding-left:10px}.search-icon{position:absolute;z-index:2;width:25px;margin:1px 10px}.iti__country-list{position:relative;border:none}.iti input#country-search-box{padding-left:6px}.iti .selected-dial-code{margin-left:6px}.iti.separate-dial-code .iti__selected-flag,.iti.separate-dial-code.iti--allow-dropdown.iti-sdc-2 .iti__selected-flag,.iti.separate-dial-code.iti--allow-dropdown.iti-sdc-3 .iti__selected-flag,.iti.separate-dial-code.iti--allow-dropdown.iti-sdc-4 .iti__selected-flag{width:93px}.iti.separate-dial-code input,.iti.separate-dial-code.iti--allow-dropdown.iti-sdc-2 input,.iti.separate-dial-code.iti--allow-dropdown.iti-sdc-3 input,.iti.separate-dial-code.iti--allow-dropdown.iti-sdc-4 input{padding-left:98px}\\n\"], directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.BsDropdownDirective, selector: \"[bsDropdown],[dropdown]\", inputs: [\"autoClose\", \"isAnimated\", \"insideClick\", \"isDisabled\", \"isOpen\", \"placement\", \"triggers\", \"container\", \"dropup\"], outputs: [\"onShown\", \"onHidden\", \"isOpenChange\"], exportAs: [\"bs-dropdown\"] }, { type: i3.BsDropdownToggleDirective, selector: \"[bsDropdownToggle],[dropdownToggle]\", exportAs: [\"bs-dropdown-toggle\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.BsDropdownMenuDirective, selector: \"[bsDropdownMenu],[dropdownMenu]\", exportAs: [\"bs-dropdown-menu\"] }, { type: i4.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: i4.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i4.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { type: NativeElementInjectorDirective, selector: \"[ngModel], [formControl], [formControlName]\" }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.1\", ngImport: i0, type: NgxIntlTelInputComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ngx-intl-tel-input', providers: [\n CountryCode,\n {\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line:no-forward-ref\n useExisting: forwardRef(() => NgxIntlTelInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useValue: phoneNumberValidator,\n multi: true,\n },\n ], template: \"
    \\n\\t
    \\n\\t\\t
    \\n\\t\\t\\t
    \\n\\t\\t\\t
    +{{selectedCountry.dialCode}}
    \\n\\t\\t\\t
    \\n\\t\\t
    \\n\\t\\t
    \\n\\t\\t\\t
    \\n\\t\\t\\t\\t\\n\\t\\t\\t
    \\n\\t\\t\\t
      \\n\\t\\t\\t\\t
    • \\n\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t{{country.name}}\\n\\t\\t\\t\\t\\t+{{country.dialCode}}\\n\\t\\t\\t\\t
    • \\n\\t\\t\\t\\t
    • \\n\\t\\t\\t\\t
    • \\n\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t{{country.name}}\\n\\t\\t\\t\\t\\t+{{country.dialCode}}\\n\\t\\t\\t\\t
    • \\n\\t\\t\\t
    \\n\\t\\t
    \\n\\t
    \\n\\t\\n
    \\n\", styles: [\".dropup,.dropright,.dropdown,.dropleft{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\"}.dropleft .dropdown-toggle:after{display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=top],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}\\n\", \"li.iti__country:hover{background-color:#0000000d}.iti__selected-flag.dropdown-toggle:after{content:none}.iti__flag-container.disabled{cursor:default!important}.iti.iti--allow-dropdown .flag-container.disabled:hover .iti__selected-flag{background:none}.country-dropdown{border:1px solid #ccc;width:-moz-fit-content;width:fit-content;padding:1px;border-collapse:collapse}.search-container{position:relative}.search-container input{width:100%;border:none;border-bottom:1px solid #ccc;padding-left:10px}.search-icon{position:absolute;z-index:2;width:25px;margin:1px 10px}.iti__country-list{position:relative;border:none}.iti input#country-search-box{padding-left:6px}.iti .selected-dial-code{margin-left:6px}.iti.separate-dial-code .iti__selected-flag,.iti.separate-dial-code.iti--allow-dropdown.iti-sdc-2 .iti__selected-flag,.iti.separate-dial-code.iti--allow-dropdown.iti-sdc-3 .iti__selected-flag,.iti.separate-dial-code.iti--allow-dropdown.iti-sdc-4 .iti__selected-flag{width:93px}.iti.separate-dial-code input,.iti.separate-dial-code.iti--allow-dropdown.iti-sdc-2 input,.iti.separate-dial-code.iti--allow-dropdown.iti-sdc-3 input,.iti.separate-dial-code.iti--allow-dropdown.iti-sdc-4 input{padding-left:98px}\\n\"] }]\n }], ctorParameters: function () { return [{ type: CountryCode }]; }, propDecorators: { value: [{\n type: Input\n }], preferredCountries: [{\n type: Input\n }], enablePlaceholder: [{\n type: Input\n }], customPlaceholder: [{\n type: Input\n }], numberFormat: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], onlyCountries: [{\n type: Input\n }], enableAutoCountrySelect: [{\n type: Input\n }], searchCountryFlag: [{\n type: Input\n }], searchCountryField: [{\n type: Input\n }], searchCountryPlaceholder: [{\n type: Input\n }], maxLength: [{\n type: Input\n }], selectFirstCountry: [{\n type: Input\n }], selectedCountryISO: [{\n type: Input\n }], phoneValidation: [{\n type: Input\n }], inputId: [{\n type: Input\n }], separateDialCode: [{\n type: Input\n }], countryChange: [{\n type: Output\n }], countryList: [{\n type: ViewChild,\n args: ['countryList']\n }] } });\n\nconst dropdownModuleForRoot = BsDropdownModule.forRoot();\nclass NgxIntlTelInputModule {\n}\nNgxIntlTelInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.1\", ngImport: i0, type: NgxIntlTelInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgxIntlTelInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.1\", ngImport: i0, type: NgxIntlTelInputModule, declarations: [NgxIntlTelInputComponent, NativeElementInjectorDirective], imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule, i3.BsDropdownModule], exports: [NgxIntlTelInputComponent, NativeElementInjectorDirective] });\nNgxIntlTelInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.1\", ngImport: i0, type: NgxIntlTelInputModule, imports: [[\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n dropdownModuleForRoot,\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.1\", ngImport: i0, type: NgxIntlTelInputModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [NgxIntlTelInputComponent, NativeElementInjectorDirective],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n dropdownModuleForRoot,\n ],\n exports: [NgxIntlTelInputComponent, NativeElementInjectorDirective],\n }]\n }] });\n\n/*\n * Public API Surface of ngx-intl-tel-input\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CountryISO, NativeElementInjectorDirective, NgxIntlTelInputComponent, NgxIntlTelInputModule, PhoneNumberFormat, SearchCountryField, dropdownModuleForRoot };\n","import * as i0 from '@angular/core';\nimport { Injectable, Optional, Inject, Component, Input, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\nclass NgxLoadingConfig {\n constructor(config = {}) {\n this.backdropBorderRadius = config.backdropBorderRadius;\n this.backdropBackgroundColour = config.backdropBackgroundColour;\n this.fullScreenBackdrop = config.fullScreenBackdrop;\n this.animationType = config.animationType;\n this.primaryColour = config.primaryColour;\n this.secondaryColour = config.secondaryColour;\n this.tertiaryColour = config.tertiaryColour;\n }\n}\nconst ngxLoadingAnimationTypes = {\n chasingDots: 'chasing-dots',\n circle: 'sk-circle',\n circleSwish: 'circleSwish',\n cubeGrid: 'sk-cube-grid',\n doubleBounce: 'double-bounce',\n none: 'none',\n pulse: 'pulse',\n rectangleBounce: 'rectangle-bounce',\n rotatingPlane: 'rotating-plane',\n threeBounce: 'three-bounce',\n wanderingCubes: 'wandering-cubes',\n};\n\nclass NgxLoadingService {\n constructor(config) {\n this.config = config;\n this.loadingConfig = this.config || new NgxLoadingConfig();\n }\n}\nNgxLoadingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: NgxLoadingService, deps: [{ token: 'loadingConfig', optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nNgxLoadingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: NgxLoadingService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: NgxLoadingService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: ['loadingConfig']\n }] }];\n } });\n\nclass NgxLoadingComponent {\n constructor(LoadingService) {\n this.LoadingService = LoadingService;\n this.show = false;\n this.config = new NgxLoadingConfig();\n this.defaultConfig = {\n animationType: ngxLoadingAnimationTypes.threeBounce,\n backdropBackgroundColour: 'rgba(0, 0, 0, 0.3)',\n backdropBorderRadius: '0px',\n fullScreenBackdrop: false,\n primaryColour: '#ffffff',\n secondaryColour: '#ffffff',\n tertiaryColour: '#ffffff',\n };\n this.ngxLoadingAnimationTypes = ngxLoadingAnimationTypes;\n }\n ngOnInit() {\n this.setupConfig();\n }\n setupConfig() {\n for (const option in this.defaultConfig) {\n if (this.config[option] != null) {\n continue;\n }\n this.config[option] =\n this.LoadingService.loadingConfig[option] != null\n ? this.LoadingService.loadingConfig[option]\n : this.defaultConfig[option];\n }\n }\n}\nNgxLoadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: NgxLoadingComponent, deps: [{ token: NgxLoadingService }], target: i0.ɵɵFactoryTarget.Component });\nNgxLoadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.2\", type: NgxLoadingComponent, selector: \"ngx-loading\", inputs: { show: \"show\", config: \"config\", template: \"template\" }, ngImport: i0, template: `\n
    \n
    \n\n
    \n
    \n\n \n \n \n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n\n \n \n \n \n\n \n\n \n\n \n \n \n \n \n\n \n \n \n \n \n `, isInline: true, styles: [\".backdrop{z-index:1999;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#0000004d}.spinner-circle,.spinner-circle:after{border-radius:50%;width:10em;height:10em}.spinner-circle{font-size:6px;border-top:1.1em solid rgba(255,255,255,.2);border-right:1.1em solid rgba(255,255,255,.2);border-bottom:1.1em solid rgba(255,255,255,.2);border-left:1.1em solid #ffffff;position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;z-index:2000;transform:translateZ(0);animation:load8 1.1s infinite linear}@keyframes load8{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinner-circle-swish{font-size:60px;overflow:hidden;width:1em;height:1em;border-radius:50%;position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;z-index:2000;transform:translateZ(0);animation:load6 1.7s infinite ease,round 1.7s infinite ease}@keyframes load6{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}to{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@keyframes round{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sk-cube-grid{width:40px;height:40px;position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;z-index:2000}.sk-cube-grid .sk-cube{width:33%;height:33%;background-color:#333;float:left;animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out}.sk-cube-grid .sk-cube1{animation-delay:.2s}.sk-cube-grid .sk-cube2{animation-delay:.3s}.sk-cube-grid .sk-cube3{animation-delay:.4s}.sk-cube-grid .sk-cube4{animation-delay:.1s}.sk-cube-grid .sk-cube5{animation-delay:.2s}.sk-cube-grid .sk-cube6{animation-delay:.3s}.sk-cube-grid .sk-cube7{animation-delay:0s}.sk-cube-grid .sk-cube8{animation-delay:.1s}.sk-cube-grid .sk-cube9{animation-delay:.2s}@keyframes sk-cubeGridScaleDelay{0%,70%,to{transform:scale(1)}35%{transform:scale(0)}}.spinner-double-bounce{width:40px;height:40px;position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;z-index:2000}.double-bounce1,.double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#333;opacity:.6;position:absolute;top:0;left:0;animation:sk-bounce 2s infinite ease-in-out}.double-bounce2{animation-delay:-1s}.spinner-pulse{width:40px;height:40px;background-color:#333;position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;z-index:2000;border-radius:100%;animation:sk-scaleout 1s infinite ease-in-out}@keyframes sk-scaleout{0%{transform:scale(0)}to{transform:scale(1);opacity:0}}.spinner-three-bounce{width:70px;text-align:center;position:absolute;top:0;left:0;right:0;bottom:0;height:20px;margin:auto;z-index:2000}.spinner-three-bounce>div{width:18px;height:18px;background-color:#fff;border-radius:100%;display:inline-block;animation:sk-bouncedelay 1.4s infinite ease-in-out both}.spinner-three-bounce .bounce1{animation-delay:-.32s}.spinner-three-bounce .bounce2{animation-delay:-.16s}@keyframes sk-bouncedelay{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.spinner-sk-rotateplane{width:40px;height:40px;background-color:#fff;text-align:center;position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;z-index:2000;animation:sk-rotateplane 1.2s infinite ease-in-out}@keyframes sk-rotateplane{0%{transform:perspective(120px) rotateX(0) rotateY(0);-webkit-transform:perspective(120px) rotateX(0deg) rotateY(0deg)}50%{transform:perspective(120px) rotateX(-180.1deg) rotateY(0);-webkit-transform:perspective(120px) rotateX(-180.1deg) rotateY(0deg)}to{transform:perspective(120px) rotateX(-180deg) rotateY(-179.9deg);-webkit-transform:perspective(120px) rotateX(-180deg) rotateY(-179.9deg)}}.spinner-rectangle-bounce{width:50px;height:40px;font-size:10px;text-align:center;position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;z-index:2000}.spinner-rectangle-bounce>div{background-color:#fff;height:100%;width:6px;display:inline-block;animation:sk-stretchdelay 1.2s infinite ease-in-out}.spinner-rectangle-bounce .rect2{animation-delay:-1.1s}.spinner-rectangle-bounce .rect3{animation-delay:-1s}.spinner-rectangle-bounce .rect4{animation-delay:-.9s}.spinner-rectangle-bounce .rect5{animation-delay:-.8s}@keyframes sk-stretchdelay{0%,40%,to{transform:scaleY(.4);-webkit-transform:scaleY(.4)}20%{transform:scaleY(1);-webkit-transform:scaleY(1)}}.spinner-wandering-cubes{width:60px;height:58px;font-size:10px;text-align:center;position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;z-index:2000}.cube1,.cube2{background-color:#fff;width:15px;height:15px;position:absolute;top:0;left:0;animation:sk-cubemove 1.8s infinite ease-in-out}.cube2{animation-delay:-.9s}@keyframes sk-cubemove{25%{transform:translate(42px) rotate(-90deg) scale(.5);-webkit-transform:translateX(42px) rotate(-90deg) scale(.5)}50%{transform:translate(42px) translateY(42px) rotate(-179deg);-webkit-transform:translateX(42px) translateY(42px) rotate(-179deg)}50.1%{transform:translate(42px) translateY(42px) rotate(-180deg);-webkit-transform:translateX(42px) translateY(42px) rotate(-180deg)}75%{transform:translate(0) translateY(42px) rotate(-270deg) scale(.5);-webkit-transform:translateX(0px) translateY(42px) rotate(-270deg) scale(.5)}to{transform:rotate(-360deg);-webkit-transform:rotate(-360deg)}}.sk-circle{width:40px;height:40px;position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;z-index:2000}.sk-circle .sk-child{width:100%;height:100%;position:absolute;left:0;top:0}.sk-circle .sk-child:before{content:\\\"\\\";display:block;margin:0 auto;width:15%;height:15%;background-color:#333;border-radius:100%;animation:sk-circleBounceDelay 1.2s infinite ease-in-out both}.sk-circle .sk-circle2{transform:rotate(30deg)}.sk-circle .sk-circle3{transform:rotate(60deg)}.sk-circle .sk-circle4{transform:rotate(90deg)}.sk-circle .sk-circle5{transform:rotate(120deg)}.sk-circle .sk-circle6{transform:rotate(150deg)}.sk-circle .sk-circle7{transform:rotate(180deg)}.sk-circle .sk-circle8{transform:rotate(210deg)}.sk-circle .sk-circle9{transform:rotate(240deg)}.sk-circle .sk-circle10{transform:rotate(270deg)}.sk-circle .sk-circle11{transform:rotate(300deg)}.sk-circle .sk-circle12{transform:rotate(330deg)}.sk-circle .sk-circle2:before{animation-delay:-1.1s}.sk-circle .sk-circle3:before{animation-delay:-1s}.sk-circle .sk-circle4:before{animation-delay:-.9s}.sk-circle .sk-circle5:before{animation-delay:-.8s}.sk-circle .sk-circle6:before{animation-delay:-.7s}.sk-circle .sk-circle7:before{animation-delay:-.6s}.sk-circle .sk-circle8:before{animation-delay:-.5s}.sk-circle .sk-circle9:before{animation-delay:-.4s}.sk-circle .sk-circle10:before{animation-delay:-.3s}.sk-circle .sk-circle11:before{animation-delay:-.2s}.sk-circle .sk-circle12:before{animation-delay:-.1s}@keyframes sk-circleBounceDelay{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.spinner-chasing-dots{width:40px;height:40px;position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;z-index:2000;text-align:center;animation:sk-rotate 2s infinite linear}.dot1,.dot2{width:60%;height:60%;display:inline-block;position:absolute;top:0;background-color:#333;border-radius:100%;animation:sk-bounce 2s infinite ease-in-out}.dot2{top:auto;bottom:0;animation-delay:-1s}@keyframes sk-rotate{to{transform:rotate(360deg);-webkit-transform:rotate(360deg)}}@keyframes sk-bounce{0%,to{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.full-screen{position:fixed;position:-ms-page}\\n\"], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i2.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i2.NgSwitchDefault, selector: \"[ngSwitchDefault]\" }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: NgxLoadingComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ngx-loading',\n template: `\n
    \n
    \n\n
    \n
    \n\n \n \n \n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n\n \n \n \n \n\n \n\n \n\n \n \n \n \n \n\n \n \n \n \n \n `,\n styles: [\n `\n .backdrop {\n z-index: 1999;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.3);\n }\n\n /* Spinner Circle styles */\n .spinner-circle,\n .spinner-circle:after {\n border-radius: 50%;\n width: 10em;\n height: 10em;\n }\n\n .spinner-circle {\n font-size: 6px;\n border-top: 1.1em solid rgba(255, 255, 255, 0.2);\n border-right: 1.1em solid rgba(255, 255, 255, 0.2);\n border-bottom: 1.1em solid rgba(255, 255, 255, 0.2);\n border-left: 1.1em solid #ffffff;\n margin: auto;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n z-index: 2000;\n -webkit-transform: translateZ(0);\n -ms-transform: translateZ(0);\n transform: translateZ(0);\n -webkit-animation: load8 1.1s infinite linear;\n animation: load8 1.1s infinite linear;\n }\n @-webkit-keyframes load8 {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n }\n @keyframes load8 {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n }\n\n /* Circle Swish styles */\n .spinner-circle-swish {\n font-size: 60px;\n overflow: hidden;\n width: 1em;\n height: 1em;\n z-index: 2000;\n border-radius: 50%;\n margin: auto;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n z-index: 2000;\n -webkit-transform: translateZ(0);\n -ms-transform: translateZ(0);\n transform: translateZ(0);\n -webkit-animation: load6 1.7s infinite ease, round 1.7s infinite ease;\n animation: load6 1.7s infinite ease, round 1.7s infinite ease;\n }\n @-webkit-keyframes load6 {\n 0% {\n box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em,\n 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;\n }\n 5%,\n 95% {\n box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em,\n 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;\n }\n 10%,\n 59% {\n box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em,\n -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em,\n -0.297em -0.775em 0 -0.477em;\n }\n 20% {\n box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em,\n -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em,\n -0.749em -0.34em 0 -0.477em;\n }\n 38% {\n box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em,\n -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em,\n -0.82em -0.09em 0 -0.477em;\n }\n 100% {\n box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em,\n 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;\n }\n }\n @keyframes load6 {\n 0% {\n box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em,\n 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;\n }\n 5%,\n 95% {\n box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em,\n 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;\n }\n 10%,\n 59% {\n box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em,\n -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em,\n -0.297em -0.775em 0 -0.477em;\n }\n 20% {\n box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em,\n -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em,\n -0.749em -0.34em 0 -0.477em;\n }\n 38% {\n box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em,\n -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em,\n -0.82em -0.09em 0 -0.477em;\n }\n 100% {\n box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em,\n 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;\n }\n }\n @-webkit-keyframes round {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n }\n @keyframes round {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n }\n\n /* Cube Grid styles */\n .sk-cube-grid {\n width: 40px;\n height: 40px;\n\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n z-index: 2000;\n }\n\n .sk-cube-grid .sk-cube {\n width: 33%;\n height: 33%;\n background-color: #333;\n float: left;\n -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;\n animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;\n }\n\n .sk-cube-grid .sk-cube1 {\n -webkit-animation-delay: 0.2s;\n animation-delay: 0.2s;\n }\n\n .sk-cube-grid .sk-cube2 {\n -webkit-animation-delay: 0.3s;\n animation-delay: 0.3s;\n }\n\n .sk-cube-grid .sk-cube3 {\n -webkit-animation-delay: 0.4s;\n animation-delay: 0.4s;\n }\n\n .sk-cube-grid .sk-cube4 {\n -webkit-animation-delay: 0.1s;\n animation-delay: 0.1s;\n }\n\n .sk-cube-grid .sk-cube5 {\n -webkit-animation-delay: 0.2s;\n animation-delay: 0.2s;\n }\n\n .sk-cube-grid .sk-cube6 {\n -webkit-animation-delay: 0.3s;\n animation-delay: 0.3s;\n }\n\n .sk-cube-grid .sk-cube7 {\n -webkit-animation-delay: 0s;\n animation-delay: 0s;\n }\n\n .sk-cube-grid .sk-cube8 {\n -webkit-animation-delay: 0.1s;\n animation-delay: 0.1s;\n }\n\n .sk-cube-grid .sk-cube9 {\n -webkit-animation-delay: 0.2s;\n animation-delay: 0.2s;\n }\n\n @-webkit-keyframes sk-cubeGridScaleDelay {\n 0%,\n 70%,\n 100% {\n -webkit-transform: scale3D(1, 1, 1);\n transform: scale3D(1, 1, 1);\n }\n 35% {\n -webkit-transform: scale3D(0, 0, 1);\n transform: scale3D(0, 0, 1);\n }\n }\n\n @keyframes sk-cubeGridScaleDelay {\n 0%,\n 70%,\n 100% {\n -webkit-transform: scale3D(1, 1, 1);\n transform: scale3D(1, 1, 1);\n }\n 35% {\n -webkit-transform: scale3D(0, 0, 1);\n transform: scale3D(0, 0, 1);\n }\n }\n\n /* Double Bounce styles */\n .spinner-double-bounce {\n width: 40px;\n height: 40px;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n z-index: 2000;\n }\n\n .double-bounce1,\n .double-bounce2 {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: #333;\n opacity: 0.6;\n position: absolute;\n top: 0;\n left: 0;\n -webkit-animation: sk-bounce 2s infinite ease-in-out;\n animation: sk-bounce 2s infinite ease-in-out;\n }\n\n .double-bounce2 {\n -webkit-animation-delay: -1s;\n animation-delay: -1s;\n }\n\n @-webkit-keyframes sk-bounce {\n 0%,\n 100% {\n -webkit-transform: scale(0);\n }\n 50% {\n -webkit-transform: scale(1);\n }\n }\n\n @keyframes sk-bounce {\n 0%,\n 100% {\n transform: scale(0);\n -webkit-transform: scale(0);\n }\n 50% {\n transform: scale(1);\n -webkit-transform: scale(1);\n }\n }\n\n /* Pulse styles */\n .spinner-pulse {\n width: 40px;\n height: 40px;\n background-color: #333;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n z-index: 2000;\n border-radius: 100%;\n -webkit-animation: sk-scaleout 1s infinite ease-in-out;\n animation: sk-scaleout 1s infinite ease-in-out;\n }\n\n @-webkit-keyframes sk-scaleout {\n 0% {\n -webkit-transform: scale(0);\n }\n 100% {\n -webkit-transform: scale(1);\n opacity: 0;\n }\n }\n\n @keyframes sk-scaleout {\n 0% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 100% {\n -webkit-transform: scale(1);\n transform: scale(1);\n opacity: 0;\n }\n }\n\n /* Three Bounce styles */\n .spinner-three-bounce {\n width: 70px;\n text-align: center;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n height: 20px;\n margin: auto;\n z-index: 2000;\n }\n\n .spinner-three-bounce > div {\n width: 18px;\n height: 18px;\n background-color: #ffffff;\n\n border-radius: 100%;\n display: inline-block;\n -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;\n animation: sk-bouncedelay 1.4s infinite ease-in-out both;\n }\n\n .spinner-three-bounce .bounce1 {\n -webkit-animation-delay: -0.32s;\n animation-delay: -0.32s;\n }\n\n .spinner-three-bounce .bounce2 {\n -webkit-animation-delay: -0.16s;\n animation-delay: -0.16s;\n }\n\n @-webkit-keyframes sk-bouncedelay {\n 0%,\n 80%,\n 100% {\n -webkit-transform: scale(0);\n }\n 40% {\n -webkit-transform: scale(1);\n }\n }\n\n @keyframes sk-bouncedelay {\n 0%,\n 80%,\n 100% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 40% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n }\n\n /* Rotate Plane styles */\n .spinner-sk-rotateplane {\n width: 40px;\n height: 40px;\n background-color: #ffffff;\n text-align: center;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n z-index: 2000;\n -webkit-animation: sk-rotateplane 1.2s infinite ease-in-out;\n animation: sk-rotateplane 1.2s infinite ease-in-out;\n }\n\n @-webkit-keyframes sk-rotateplane {\n 0% {\n -webkit-transform: perspective(120px);\n }\n 50% {\n -webkit-transform: perspective(120px) rotateY(180deg);\n }\n 100% {\n -webkit-transform: perspective(120px) rotateY(180deg) rotateX(180deg);\n }\n }\n\n @keyframes sk-rotateplane {\n 0% {\n transform: perspective(120px) rotateX(0deg) rotateY(0deg);\n -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg);\n }\n 50% {\n transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);\n -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);\n }\n 100% {\n transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);\n -webkit-transform: perspective(120px) rotateX(-180deg)\n rotateY(-179.9deg);\n }\n }\n\n /* Rectangle Bounce styles*/\n .spinner-rectangle-bounce {\n width: 50px;\n height: 40px;\n font-size: 10px;\n text-align: center;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n z-index: 2000;\n }\n\n .spinner-rectangle-bounce > div {\n background-color: #ffffff;\n height: 100%;\n width: 6px;\n display: inline-block;\n -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;\n animation: sk-stretchdelay 1.2s infinite ease-in-out;\n }\n\n .spinner-rectangle-bounce .rect2 {\n -webkit-animation-delay: -1.1s;\n animation-delay: -1.1s;\n }\n\n .spinner-rectangle-bounce .rect3 {\n -webkit-animation-delay: -1s;\n animation-delay: -1s;\n }\n\n .spinner-rectangle-bounce .rect4 {\n -webkit-animation-delay: -0.9s;\n animation-delay: -0.9s;\n }\n\n .spinner-rectangle-bounce .rect5 {\n -webkit-animation-delay: -0.8s;\n animation-delay: -0.8s;\n }\n\n @-webkit-keyframes sk-stretchdelay {\n 0%,\n 40%,\n 100% {\n -webkit-transform: scaleY(0.4);\n }\n 20% {\n -webkit-transform: scaleY(1);\n }\n }\n\n @keyframes sk-stretchdelay {\n 0%,\n 40%,\n 100% {\n transform: scaleY(0.4);\n -webkit-transform: scaleY(0.4);\n }\n 20% {\n transform: scaleY(1);\n -webkit-transform: scaleY(1);\n }\n }\n\n /* Wandering Cubes styles */\n .spinner-wandering-cubes {\n width: 60px;\n height: 58px;\n font-size: 10px;\n text-align: center;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n z-index: 2000;\n }\n\n .cube1,\n .cube2 {\n background-color: #ffffff;\n width: 15px;\n height: 15px;\n position: absolute;\n top: 0;\n left: 0;\n -webkit-animation: sk-cubemove 1.8s infinite ease-in-out;\n animation: sk-cubemove 1.8s infinite ease-in-out;\n }\n\n .cube2 {\n -webkit-animation-delay: -0.9s;\n animation-delay: -0.9s;\n }\n\n @-webkit-keyframes sk-cubemove {\n 25% {\n -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5);\n }\n 50% {\n -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg);\n }\n 75% {\n -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg)\n scale(0.5);\n }\n 100% {\n -webkit-transform: rotate(-360deg);\n }\n }\n\n @keyframes sk-cubemove {\n 25% {\n transform: translateX(42px) rotate(-90deg) scale(0.5);\n -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5);\n }\n 50% {\n transform: translateX(42px) translateY(42px) rotate(-179deg);\n -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg);\n }\n 50.1% {\n transform: translateX(42px) translateY(42px) rotate(-180deg);\n -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg);\n }\n 75% {\n transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);\n -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg)\n scale(0.5);\n }\n 100% {\n transform: rotate(-360deg);\n -webkit-transform: rotate(-360deg);\n }\n }\n\n /* Circle styles */\n .sk-circle {\n width: 40px;\n height: 40px;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n z-index: 2000;\n }\n .sk-circle .sk-child {\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n }\n .sk-circle .sk-child:before {\n content: '';\n display: block;\n margin: 0 auto;\n width: 15%;\n height: 15%;\n background-color: #333;\n border-radius: 100%;\n -webkit-animation: sk-circleBounceDelay 1.2s infinite ease-in-out both;\n animation: sk-circleBounceDelay 1.2s infinite ease-in-out both;\n }\n .sk-circle .sk-circle2 {\n -webkit-transform: rotate(30deg);\n -ms-transform: rotate(30deg);\n transform: rotate(30deg);\n }\n .sk-circle .sk-circle3 {\n -webkit-transform: rotate(60deg);\n -ms-transform: rotate(60deg);\n transform: rotate(60deg);\n }\n .sk-circle .sk-circle4 {\n -webkit-transform: rotate(90deg);\n -ms-transform: rotate(90deg);\n transform: rotate(90deg);\n }\n .sk-circle .sk-circle5 {\n -webkit-transform: rotate(120deg);\n -ms-transform: rotate(120deg);\n transform: rotate(120deg);\n }\n .sk-circle .sk-circle6 {\n -webkit-transform: rotate(150deg);\n -ms-transform: rotate(150deg);\n transform: rotate(150deg);\n }\n .sk-circle .sk-circle7 {\n -webkit-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n }\n .sk-circle .sk-circle8 {\n -webkit-transform: rotate(210deg);\n -ms-transform: rotate(210deg);\n transform: rotate(210deg);\n }\n .sk-circle .sk-circle9 {\n -webkit-transform: rotate(240deg);\n -ms-transform: rotate(240deg);\n transform: rotate(240deg);\n }\n .sk-circle .sk-circle10 {\n -webkit-transform: rotate(270deg);\n -ms-transform: rotate(270deg);\n transform: rotate(270deg);\n }\n .sk-circle .sk-circle11 {\n -webkit-transform: rotate(300deg);\n -ms-transform: rotate(300deg);\n transform: rotate(300deg);\n }\n .sk-circle .sk-circle12 {\n -webkit-transform: rotate(330deg);\n -ms-transform: rotate(330deg);\n transform: rotate(330deg);\n }\n .sk-circle .sk-circle2:before {\n -webkit-animation-delay: -1.1s;\n animation-delay: -1.1s;\n }\n .sk-circle .sk-circle3:before {\n -webkit-animation-delay: -1s;\n animation-delay: -1s;\n }\n .sk-circle .sk-circle4:before {\n -webkit-animation-delay: -0.9s;\n animation-delay: -0.9s;\n }\n .sk-circle .sk-circle5:before {\n -webkit-animation-delay: -0.8s;\n animation-delay: -0.8s;\n }\n .sk-circle .sk-circle6:before {\n -webkit-animation-delay: -0.7s;\n animation-delay: -0.7s;\n }\n .sk-circle .sk-circle7:before {\n -webkit-animation-delay: -0.6s;\n animation-delay: -0.6s;\n }\n .sk-circle .sk-circle8:before {\n -webkit-animation-delay: -0.5s;\n animation-delay: -0.5s;\n }\n .sk-circle .sk-circle9:before {\n -webkit-animation-delay: -0.4s;\n animation-delay: -0.4s;\n }\n .sk-circle .sk-circle10:before {\n -webkit-animation-delay: -0.3s;\n animation-delay: -0.3s;\n }\n .sk-circle .sk-circle11:before {\n -webkit-animation-delay: -0.2s;\n animation-delay: -0.2s;\n }\n .sk-circle .sk-circle12:before {\n -webkit-animation-delay: -0.1s;\n animation-delay: -0.1s;\n }\n\n @-webkit-keyframes sk-circleBounceDelay {\n 0%,\n 80%,\n 100% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 40% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n }\n\n @keyframes sk-circleBounceDelay {\n 0%,\n 80%,\n 100% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 40% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n }\n\n /* Chasing Dots styles */\n .spinner-chasing-dots {\n width: 40px;\n height: 40px;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n z-index: 2000;\n text-align: center;\n -webkit-animation: sk-rotate 2s infinite linear;\n animation: sk-rotate 2s infinite linear;\n }\n\n .dot1,\n .dot2 {\n width: 60%;\n height: 60%;\n display: inline-block;\n position: absolute;\n top: 0;\n background-color: #333;\n border-radius: 100%;\n -webkit-animation: sk-bounce 2s infinite ease-in-out;\n animation: sk-bounce 2s infinite ease-in-out;\n }\n\n .dot2 {\n top: auto;\n bottom: 0;\n -webkit-animation-delay: -1s;\n animation-delay: -1s;\n }\n\n @-webkit-keyframes sk-rotate {\n 100% {\n -webkit-transform: rotate(360deg);\n }\n }\n @keyframes sk-rotate {\n 100% {\n transform: rotate(360deg);\n -webkit-transform: rotate(360deg);\n }\n }\n\n @-webkit-keyframes sk-bounce {\n 0%,\n 100% {\n -webkit-transform: scale(0);\n }\n 50% {\n -webkit-transform: scale(1);\n }\n }\n\n @keyframes sk-bounce {\n 0%,\n 100% {\n transform: scale(0);\n -webkit-transform: scale(0);\n }\n 50% {\n transform: scale(1);\n -webkit-transform: scale(1);\n }\n }\n\n .full-screen {\n position: fixed;\n position: -ms-page;\n }\n `,\n ],\n }]\n }], ctorParameters: function () { return [{ type: NgxLoadingService }]; }, propDecorators: { show: [{\n type: Input\n }], config: [{\n type: Input\n }], template: [{\n type: Input\n }] } });\n\nclass NgxLoadingModule {\n static forRoot(loadingConfig) {\n return {\n ngModule: NgxLoadingModule,\n providers: [{ provide: 'loadingConfig', useValue: loadingConfig }],\n };\n }\n}\nNgxLoadingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: NgxLoadingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgxLoadingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: NgxLoadingModule, declarations: [NgxLoadingComponent], imports: [CommonModule], exports: [NgxLoadingComponent] });\nNgxLoadingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: NgxLoadingModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: NgxLoadingModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [NgxLoadingComponent],\n imports: [CommonModule],\n exports: [NgxLoadingComponent],\n }]\n }] });\n\n/*\n * Public API Surface of ngx-loading\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NgxLoadingComponent, NgxLoadingConfig, NgxLoadingModule, NgxLoadingService, ngxLoadingAnimationTypes };\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}"]}